diff --git a/docker-compose-prod.yml b/docker-compose-prod.yml index 704d274..048613e 100644 --- a/docker-compose-prod.yml +++ b/docker-compose-prod.yml @@ -14,7 +14,6 @@ services: build: . runtime: nvidia volumes: - - .:/comixify - static_volume:/comixify/static - media_volume:/comixify/media networks: diff --git a/docker-compose.yml b/docker-compose.yml index 9d70339..cd7904c 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -14,7 +14,6 @@ services: build: . runtime: nvidia volumes: - - .:/comixify - static_volume:/comixify/static - media_volume:/comixify/media networks: diff --git a/dockerfile b/dockerfile index 34daad4..c48b236 100644 --- a/dockerfile +++ b/dockerfile @@ -9,7 +9,7 @@ RUN apt-get update && apt-get install -y apt-utils software-properties-common && liblmdb-dev libopencv-dev libprotobuf-dev \ libsnappy-dev protobuf-compiler \ python-numpy python-setuptools python-scipy \ - libavformat-dev libswscale-dev && \ + libavformat-dev libswscale-dev unzip && \ python3.6 -m pip install --upgrade pip && \ python3.6 -m pip install jupyter ipywidgets jupyterlab && \ python3.6 -m pip install tensorflow-gpu h5py keras && \ @@ -44,7 +44,9 @@ RUN echo "$CAFFE_ROOT/build/lib" >> /etc/ld.so.conf.d/caffe.conf && ldconfig && WORKDIR /comixify COPY . /comixify -RUN python3.6 -m pip install -r requirements.txt +RUN unzip popularity/pretrained_model/svr_test_11.10.sk.zip -d popularity/pretrained_model/ && \ + python3.6 -m pip install -r requirements.txt + # Port to expose EXPOSE 8008 diff --git a/frontend/client/App.js b/frontend/client/App.js index a5ee575..275c605 100644 --- a/frontend/client/App.js +++ b/frontend/client/App.js @@ -95,7 +95,7 @@ class App extends React.Component { console.error(rejected); this.setState({ drop_errors: ["Maximum size for single video is 50MB"], - stata: App.appStates.DROP_ERROR + state: App.appStates.DROP_ERROR }); return; } diff --git a/frontend/static/frontend/js/app.client.js b/frontend/static/frontend/js/app.client.js index 6b71c76..57535f9 100644 --- a/frontend/static/frontend/js/app.client.js +++ b/frontend/static/frontend/js/app.client.js @@ -29,4 +29,4 @@ object-assign * * @author Feross Aboukhadijeh * @license MIT - */e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){"use strict";var r=n(43),o=n(7),a=n(200),i=n(201);function u(e){this.defaults=e,this.interceptors={request:new a,response:new a}}u.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),(e=o.merge(r,{method:"get"},this.defaults,e)).method=e.method.toLowerCase();var t=[i,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},o.forEach(["delete","get","head","options"],function(e){u.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){u.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=u},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(78);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e}},function(e,t,n){"use strict";var r=n(7);function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(r.isURLSearchParams(t))a=t.toString();else{var i=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),i.push(o(t)+"="+o(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(7),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=r.trim(e.substr(0,a)).toLowerCase(),n=r.trim(e.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(7);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";function r(){this.message="String contains an invalid character"}r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,o=String(e),a="",i=0,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";o.charAt(0|i)||(u="=",i%1);a+=u.charAt(63&t>>8-i%1*8)){if((n=o.charCodeAt(i+=.75))>255)throw new r;t=t<<8|n}return a}},function(e,t,n){"use strict";var r=n(7);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),!0===i&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(7);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=o},function(e,t,n){"use strict";var r=n(7),o=n(202),a=n(79),i=n(43),u=n(203),l=n(204);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.baseURL&&!u(e.url)&&(e.url=l(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||i.adapter)(e).then(function(t){return s(e),t.data=o(t.data,t.headers,e.transformResponse),t},function(t){return a(t)||(s(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(80);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o(function(t){e=t}),cancel:e}},e.exports=o},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){var r,o,a;o=[t,n(0),n(1),n(2),n(4),n(92)],void 0===(a="function"==typeof(r=function(e,t,n,r,o,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Loader=void 0;var i=l(t),u=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(e,t){for(var n=0;ns;)for(var p,d=u(arguments[s++]),h=c?r(d).concat(c(d)):r(d),m=h.length,y=0;m>y;)f.call(d,p=h[y++])&&(n[p]=d[p]);return n}:l},function(e,t,n){var r=n(21),o=n(214),a=n(215);e.exports=function(e){return function(t,n,i){var u,l=r(t),s=o(l.length),c=a(i,s);if(e&&n!=n){for(;s>c;)if((u=l[c++])!=u)return!0}else for(;s>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var r=n(46),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(46),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):a(e,t)}},function(e,t,n){e.exports={default:n(217),__esModule:!0}},function(e,t,n){n(218),n(224),e.exports=n(55).f("iterator")},function(e,t,n){"use strict";var r=n(219)(!0);n(88)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(46),o=n(45);e.exports=function(e){return function(t,n){var a,i,u=String(o(t)),l=r(n),s=u.length;return l<0||l>=s?e?"":void 0:(a=u.charCodeAt(l))<55296||a>56319||l+1===s||(i=u.charCodeAt(l+1))<56320||i>57343?e?u.charAt(l):a:e?u.slice(l,l+2):i-56320+(a-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(53),o=n(32),a=n(54),i={};n(16)(i,n(22)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},function(e,t,n){var r=n(17),o=n(24),a=n(25);e.exports=n(19)?Object.defineProperties:function(e,t){o(e);for(var n,i=a(t),u=i.length,l=0;u>l;)r.f(e,n=i[l++],t[n]);return e}},function(e,t,n){var r=n(11).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(12),o=n(51),a=n(47)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){n(225);for(var r=n(11),o=n(16),a=n(52),i=n(22)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(229),__esModule:!0}},function(e,t,n){n(230),n(235),n(236),n(237),e.exports=n(10).Symbol},function(e,t,n){"use strict";var r=n(11),o=n(12),a=n(19),i=n(15),u=n(89),l=n(231).KEY,s=n(20),c=n(48),f=n(54),p=n(34),d=n(22),h=n(55),m=n(56),y=n(232),v=n(233),g=n(24),b=n(18),w=n(21),x=n(44),_=n(32),k=n(53),E=n(234),S=n(91),P=n(17),O=n(25),C=S.f,T=P.f,N=E.f,j=r.Symbol,A=r.JSON,U=A&&A.stringify,z=d("_hidden"),R=d("toPrimitive"),D={}.propertyIsEnumerable,M=c("symbol-registry"),F=c("symbols"),I=c("op-symbols"),L=Object.prototype,V="function"==typeof j,B=r.QObject,W=!B||!B.prototype||!B.prototype.findChild,H=a&&s(function(){return 7!=k(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=C(L,t);r&&delete L[t],T(e,t,n),r&&e!==L&&T(L,t,r)}:T,$=function(e){var t=F[e]=k(j.prototype);return t._k=e,t},q=V&&"symbol"==typeof j.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof j},Y=function(e,t,n){return e===L&&Y(I,t,n),g(e),t=x(t,!0),g(n),o(F,t)?(n.enumerable?(o(e,z)&&e[z][t]&&(e[z][t]=!1),n=k(n,{enumerable:_(0,!1)})):(o(e,z)||T(e,z,_(1,{})),e[z][t]=!0),H(e,t,n)):T(e,t,n)},K=function(e,t){g(e);for(var n,r=y(t=w(t)),o=0,a=r.length;a>o;)Y(e,n=r[o++],t[n]);return e},G=function(e){var t=D.call(this,e=x(e,!0));return!(this===L&&o(F,e)&&!o(I,e))&&(!(t||!o(this,e)||!o(F,e)||o(this,z)&&this[z][e])||t)},X=function(e,t){if(e=w(e),t=x(t,!0),e!==L||!o(F,t)||o(I,t)){var n=C(e,t);return!n||!o(F,t)||o(e,z)&&e[z][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=N(w(e)),r=[],a=0;n.length>a;)o(F,t=n[a++])||t==z||t==l||r.push(t);return r},Z=function(e){for(var t,n=e===L,r=N(n?I:w(e)),a=[],i=0;r.length>i;)!o(F,t=r[i++])||n&&!o(L,t)||a.push(F[t]);return a};V||(u((j=function(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(n){this===L&&t.call(I,n),o(this,z)&&o(this[z],e)&&(this[z][e]=!1),H(this,e,_(1,n))};return a&&W&&H(L,e,{configurable:!0,set:t}),$(e)}).prototype,"toString",function(){return this._k}),S.f=X,P.f=Y,n(90).f=E.f=Q,n(35).f=G,n(50).f=Z,a&&!n(33)&&u(L,"propertyIsEnumerable",G,!0),h.f=function(e){return $(d(e))}),i(i.G+i.W+i.F*!V,{Symbol:j});for(var J="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;J.length>ee;)d(J[ee++]);for(var te=O(d.store),ne=0;te.length>ne;)m(te[ne++]);i(i.S+i.F*!V,"Symbol",{for:function(e){return o(M,e+="")?M[e]:M[e]=j(e)},keyFor:function(e){if(!q(e))throw TypeError(e+" is not a symbol!");for(var t in M)if(M[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),i(i.S+i.F*!V,"Object",{create:function(e,t){return void 0===t?k(e):K(k(e),t)},defineProperty:Y,defineProperties:K,getOwnPropertyDescriptor:X,getOwnPropertyNames:Q,getOwnPropertySymbols:Z}),A&&i(i.S+i.F*(!V||s(function(){var e=j();return"[null]"!=U([e])||"{}"!=U({a:e})||"{}"!=U(Object(e))})),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!q(e))return v(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!q(t))return t}),r[1]=t,U.apply(A,r)}}),j.prototype[R]||n(16)(j.prototype,R,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(34)("meta"),o=n(18),a=n(12),i=n(17).f,u=0,l=Object.isExtensible||function(){return!0},s=!n(20)(function(){return l(Object.preventExtensions({}))}),c=function(e){i(e,r,{value:{i:"O"+ ++u,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!a(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return s&&f.NEED&&l(e)&&!a(e,r)&&c(e),e}}},function(e,t,n){var r=n(25),o=n(50),a=n(35);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var i,u=n(e),l=a.f,s=0;u.length>s;)l.call(e,i=u[s++])&&t.push(i);return t}},function(e,t,n){var r=n(86);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(21),o=n(90).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?function(e){try{return o(e)}catch(e){return i.slice()}}(e):o(r(e))}},function(e,t){},function(e,t,n){n(56)("asyncIterator")},function(e,t,n){n(56)("observable")},function(e,t,n){e.exports={default:n(239),__esModule:!0}},function(e,t,n){n(240),e.exports=n(10).Object.setPrototypeOf},function(e,t,n){var r=n(15);r(r.S,"Object",{setPrototypeOf:n(241).set})},function(e,t,n){var r=n(18),o=n(24),a=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(81)(Function.call,n(91).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){e.exports={default:n(243),__esModule:!0}},function(e,t,n){n(244);var r=n(10).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(15);r(r.S,"Object",{create:n(53)})},function(e,t,n){n(246),e.exports=n(10).Object.keys},function(e,t,n){var r=n(51),o=n(25);n(247)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(15),o=n(10),a=n(20);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],i={};i[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",i)}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){var r,o,a;o=[t,n(0),n(1),n(2),n(4)],void 0===(a="function"==typeof(r=function(e,t,n,r,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=u(t),i=u(n);function u(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var E=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.renderChildren=function(e,t,n,o){return"function"==typeof e?e(x({},r.state,{isDragActive:t,isDragAccept:n,isDragReject:o})):e},r.composeHandlers=r.composeHandlers.bind(r),r.onClick=r.onClick.bind(r),r.onDocumentDrop=r.onDocumentDrop.bind(r),r.onDragEnter=r.onDragEnter.bind(r),r.onDragLeave=r.onDragLeave.bind(r),r.onDragOver=r.onDragOver.bind(r),r.onDragStart=r.onDragStart.bind(r),r.onDrop=r.onDrop.bind(r),r.onFileDialogCancel=r.onFileDialogCancel.bind(r),r.onInputElementClick=r.onInputElementClick.bind(r),r.setRef=r.setRef.bind(r),r.setRefs=r.setRefs.bind(r),r.isFileDialogActive=!1,r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.a.Component),_(t,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",y,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),null!=this.fileInputEl&&this.fileInputEl.addEventListener("click",this.onInputElementClick,!1),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",y),document.removeEventListener("drop",this.onDocumentDrop)),null!=this.fileInputEl&&this.fileInputEl.removeEventListener("click",this.onInputElementClick,!1),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"composeHandlers",value:function(e){return this.props.disabled?null:e}},{key:"onDocumentDrop",value:function(e){this.node&&this.node.contains(e.target)||(e.preventDefault(),this.dragTargets=[])}},{key:"onDragStart",value:function(e){this.props.onDragStart&&this.props.onDragStart.call(this,e)}},{key:"onDragEnter",value:function(e){var t=this;e.preventDefault(),-1===this.dragTargets.indexOf(e.target)&&this.dragTargets.push(e.target),Promise.resolve(this.props.getDataTransferItems(e)).then(function(e){t.setState({isDragActive:!0,draggedFiles:e})}),this.props.onDragEnter&&this.props.onDragEnter.call(this,e)}},{key:"onDragOver",value:function(e){e.preventDefault(),e.stopPropagation();try{e.dataTransfer.dropEffect=this.isFileDialogActive?"none":"copy"}catch(e){}return this.props.onDragOver&&this.props.onDragOver.call(this,e),!1}},{key:"onDragLeave",value:function(e){var t=this;e.preventDefault(),this.dragTargets=this.dragTargets.filter(function(n){return n!==e.target&&t.node.contains(n)}),this.dragTargets.length>0||(this.setState({isDragActive:!1,draggedFiles:[]}),this.props.onDragLeave&&this.props.onDragLeave.call(this,e))}},{key:"onDrop",value:function(e){var t=this,n=this.props,r=n.onDrop,o=n.onDropAccepted,a=n.onDropRejected,i=n.multiple,u=n.disablePreview,l=n.accept,s=n.getDataTransferItems;e.preventDefault(),this.dragTargets=[],this.isFileDialogActive=!1,this.draggedFiles=null,this.setState({isDragActive:!1,draggedFiles:[]}),Promise.resolve(s(e)).then(function(n){var s=[],c=[];n.forEach(function(e){if(!u)try{e.preview=window.URL.createObjectURL(e)}catch(e){}m(e,l)&&function(e,t,n){return e.size<=t&&e.size>=n}(e,t.props.maxSize,t.props.minSize)?s.push(e):c.push(e)}),!i&&s.length>1&&c.push.apply(c,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&a&&a.call(t,c,e),s.length>0&&o&&o.call(t,s,e)})}},{key:"onClick",value:function(e){var t=this.props,n=t.onClick;t.disableClick||(e.stopPropagation(),n&&n.call(this,e),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?setTimeout(this.open.bind(this),0):this.open())}},{key:"onInputElementClick",value:function(e){e.stopPropagation(),this.props.inputProps&&this.props.inputProps.onClick&&this.props.inputProps.onClick()}},{key:"onFileDialogCancel",value:function(){var e=this,t=this.props.onFileDialogCancel;this.isFileDialogActive&&setTimeout(function(){null!=e.fileInputEl&&(e.fileInputEl.files.length||(e.isFileDialogActive=!1)),"function"==typeof t&&t()},300)}},{key:"setRef",value:function(e){this.node=e}},{key:"setRefs",value:function(e){this.fileInputEl=e}},{key:"open",value:function(){this.isFileDialogActive=!0,this.fileInputEl.value=null,this.fileInputEl.click()}},{key:"render",value:function(){var e=this.props,t=e.accept,n=e.acceptClassName,r=e.activeClassName,a=e.children,i=e.disabled,u=e.disabledClassName,l=e.inputProps,s=e.multiple,c=e.name,f=e.rejectClassName,p=k(e,["accept","acceptClassName","activeClassName","children","disabled","disabledClassName","inputProps","multiple","name","rejectClassName"]),d=p.acceptStyle,y=p.activeStyle,_=p.className,E=void 0===_?"":_,S=p.disabledStyle,P=p.rejectStyle,O=p.style,C=k(p,["acceptStyle","activeStyle","className","disabledStyle","rejectStyle","style"]),T=this.state,N=T.isDragActive,j=T.draggedFiles,A=j.length,U=s||A<=1,z=A>0&&function(e,t){return e.every(function(e){return m(e,t)})}(j,this.props.accept),R=A>0&&(!z||!U),D=!(E||O||y||d||P||S);N&&r&&(E+=" "+r),z&&n&&(E+=" "+n),R&&f&&(E+=" "+f),i&&u&&(E+=" "+u),D&&(O=w,y=b,d=b,P=v,S=g);var M=x({position:"relative"},O);y&&N&&(M=x({},M,y)),d&&z&&(M=x({},M,d)),P&&R&&(M=x({},M,P)),S&&i&&(M=x({},M,S));var F={accept:t,disabled:i,type:"file",style:x({position:"absolute",top:0,right:0,bottom:0,left:0,opacity:1e-5,pointerEvents:"none"},l.style),multiple:h&&s,ref:this.setRefs,onChange:this.onDrop,autoComplete:"off"};c&&c.length&&(F.name=c),C.acceptedFiles,C.preventDropOnDocument,C.disablePreview,C.disableClick,C.onDropAccepted,C.onDropRejected,C.onFileDialogCancel,C.maxSize,C.minSize,C.getDataTransferItems;var I=k(C,["acceptedFiles","preventDropOnDocument","disablePreview","disableClick","onDropAccepted","onDropRejected","onFileDialogCancel","maxSize","minSize","getDataTransferItems"]);return o.a.createElement("div",x({className:E,style:M},I,{onClick:this.composeHandlers(this.onClick),onDragStart:this.composeHandlers(this.onDragStart),onDragEnter:this.composeHandlers(this.onDragEnter),onDragOver:this.composeHandlers(this.onDragOver),onDragLeave:this.composeHandlers(this.onDragLeave),onDrop:this.composeHandlers(this.onDrop),ref:this.setRef,"aria-disabled":i}),this.renderChildren(a,N,z,R),o.a.createElement("input",x({},l,F)))}}]),t}(),S=E;E.propTypes={accept:f.a.oneOfType([f.a.string,f.a.arrayOf(f.a.string)]),children:f.a.oneOfType([f.a.node,f.a.func]),disableClick:f.a.bool,disabled:f.a.bool,disablePreview:f.a.bool,preventDropOnDocument:f.a.bool,inputProps:f.a.object,multiple:f.a.bool,name:f.a.string,maxSize:f.a.number,minSize:f.a.number,className:f.a.string,activeClassName:f.a.string,acceptClassName:f.a.string,rejectClassName:f.a.string,disabledClassName:f.a.string,style:f.a.object,activeStyle:f.a.object,acceptStyle:f.a.object,rejectStyle:f.a.object,disabledStyle:f.a.object,getDataTransferItems:f.a.func,onClick:f.a.func,onDrop:f.a.func,onDropAccepted:f.a.func,onDropRejected:f.a.func,onDragStart:f.a.func,onDragEnter:f.a.func,onDragOver:f.a.func,onDragLeave:f.a.func,onFileDialogCancel:f.a.func},E.defaultProps={preventDropOnDocument:!0,disabled:!1,disablePreview:!1,disableClick:!1,inputProps:{},multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&&n.files.length?t=n.files:n.items&&n.items.length&&(t=n.items)}else e.target&&e.target.files&&(t=e.target.files);return Array.prototype.slice.call(t)}};var P,O=n(95),C=n(2),T=n(36),N=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class)|(on[A-Z].*)|((data|aria|x)-.*))$/i,j=(Object(T.a)(N.test.bind(N)),"__EMOTION_THEMING__");(P={})[j]=f.a.object;o.a;const A="/comixify/",U="/comixify/from_yt/",z=5e7,R="video/*";class D extends o.a.Component{constructor(e){super(e),this.ytInput=o.a.createRef(),this.state={state:D.appStates.INITIAL,videoId:null,drop_errors:[],result_comics:null,framesMode:"0",rlMode:"0"},this.onVideoDrop=this.onVideoDrop.bind(this),this.onModelChange=this.onModelChange.bind(this),this.handleResponse=this.handleResponse.bind(this),this.onYouTubeSubmit=this.onYouTubeSubmit.bind(this),this.onSamplingChange=this.onSamplingChange.bind(this)}static onVideoUploadProgress(e){let t=Math.round(100*e.loaded/e.total);console.log(t)}onModelChange(e){let t=e.currentTarget.value;this.setState({rlMode:t})}onSamplingChange(e){let t=e.currentTarget.value;this.setState({framesMode:t})}handleResponse(e){"ok"===e.data.status_message?this.setState({state:D.appStates.FINISHED,result_comics:e.data.comic}):this.setState({state:D.appStates.UPLOAD_ERROR})}processVideo(e){let{framesMode:t,rlMode:n}=this.state,r=new FormData;r.append("file",e),r.set("frames_mode",parseInt(t)),r.set("rl_mode",parseInt(n)),Object(s.post)(A,r,{headers:{"content-type":"multipart/form-data"},onUploadProgress:D.onVideoUploadProgress}).then(this.handleResponse).catch(e=>{console.error(e),this.setState({state:D.appStates.UPLOAD_ERROR})}),this.setState({state:D.appStates.PROCESSING})}onVideoDrop(e,t){if(0!==t.length)return console.error(t),void this.setState({drop_errors:["Maximum size for single video is 50MB"],stata:D.appStates.DROP_ERROR});this.processVideo(e[0])}submitYouTube(e){let{framesMode:t,rlMode:n}=this.state;Object(s.post)(U,{url:e,frames_mode:parseInt(t),rl_mode:parseInt(n)}).then(this.handleResponse).catch(e=>{console.error(e),this.setState({state:D.appStates.UPLOAD_ERROR})})}onYouTubeSubmit(){let e=this.ytInput.current.value;this.submitYouTube(e),this.setState({state:D.appStates.PROCESSING})}onSamplePlay(e){let t="https://www.youtube.com/watch?v="+e;this.submitYouTube(t),this.setState({videoId:e,state:D.appStates.SAMPLE_PROCESSING})}render(){let{state:e,drop_errors:t,result_comics:n,framesMode:r,rlMode:a,videoId:i}=this.state,u=[D.appStates.INITIAL,D.appStates.UPLOAD_ERROR,D.appStates.DROP_ERROR,D.appStates.FINISHED].includes(e),s=[D.appStates.SAMPLE_PROCESSING,D.appStates.PROCESSING].includes(e);return o.a.createElement("div",null,e===D.appStates.FINISHED&&[o.a.createElement("img",{key:"1",src:n}),o.a.createElement("p",{key:"2"},"Go again:")],e===D.appStates.DROP_ERROR&&t.map((e,t)=>o.a.createElement("p",{key:t},e)),e===D.appStates.UPLOAD_ERROR&&o.a.createElement("p",null,"Server Error: Please try again later."),u&&o.a.createElement("div",null,o.a.createElement("div",null,"Pipeline settings:"),o.a.createElement("div",null,o.a.createElement("span",null,"Frame sampling:"),o.a.createElement("input",{type:"radio",name:"sampling",id:"sampling-0",value:"0",checked:"0"===r,onChange:this.onSamplingChange}),o.a.createElement("label",{htmlFor:"sampling-0"},"2fps sampling"),o.a.createElement("input",{type:"radio",name:"sampling",id:"sampling-1",value:"1",checked:"1"===r,onChange:this.onSamplingChange}),o.a.createElement("label",{htmlFor:"sampling-1"},"I-frame sampling")),o.a.createElement("div",null,o.a.createElement("span",null,"Extraction model:"),o.a.createElement("input",{type:"radio",name:"model",id:"model-0",value:"0",checked:"0"===a,onChange:this.onModelChange}),o.a.createElement("label",{htmlFor:"model-0"},"Basic model"),o.a.createElement("input",{type:"radio",name:"model",id:"model-1",value:"1",checked:"1"===a,onChange:this.onModelChange}),o.a.createElement("label",{htmlFor:"model-1"},"+VTW model"))),u&&o.a.createElement(S,{onDrop:this.onVideoDrop,accept:R,maxSize:z,className:"dropzone",acceptClassName:"dropzone--accepted",rejectClassName:"dropzone--rejected",multiple:!1},o.a.createElement("p",null,"Drop video here, or click to select manually")),u&&o.a.createElement("div",null,o.a.createElement("label",{htmlFor:"yt-link",className:"yt-label"},"Or use YouTube link:"),o.a.createElement("input",{type:"url",id:"yt-link",ref:this.ytInput}),o.a.createElement("button",{onClick:this.onYouTubeSubmit},"Run"),o.a.createElement("div",{className:"yt-clips-label"},"Or select one of sample videos:"),o.a.createElement("div",{className:"youtube-clips"},o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Documentary"),o.a.createElement(l.a,{videoId:"gr1ps0ooDhU",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"gr1ps0ooDhU")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Sports"),o.a.createElement(l.a,{videoId:"MqqyD0nP1LQ",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"MqqyD0nP1LQ")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Music video"),o.a.createElement(l.a,{videoId:"kJQP7kiw5Fk",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"kJQP7kiw5Fk")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Politics"),o.a.createElement(l.a,{videoId:"F2b-2YnfZso",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"F2b-2YnfZso")})))),e===D.appStates.SAMPLE_PROCESSING&&o.a.createElement(l.a,{videoId:i,opts:{height:"390",width:"640",playerVars:{autoplay:1}}}),s&&o.a.createElement(O.BarLoader,{color:"rgb(54, 215, 183)",className:Object(C.css)("margin:20px auto 0 auto;"),width:10,widthUnit:"rem"}))}}D.appStates={INITIAL:0,PROCESSING:1,FINISHED:2,UPLOAD_ERROR:3,DROP_ERROR:4,SAMPLE_PROCESSING:5},i.a.render(o.a.createElement(D,null),document.getElementById("demo"))}]); \ No newline at end of file + */e.exports=function(e){return null!=e&&(n(e)||function(e){return"function"==typeof e.readFloatLE&&"function"==typeof e.slice&&n(e.slice(0,0))}(e)||!!e._isBuffer)}},function(e,t,n){"use strict";var r=n(43),o=n(7),a=n(200),i=n(201);function u(e){this.defaults=e,this.interceptors={request:new a,response:new a}}u.prototype.request=function(e){"string"==typeof e&&(e=o.merge({url:arguments[0]},arguments[1])),(e=o.merge(r,{method:"get"},this.defaults,e)).method=e.method.toLowerCase();var t=[i,void 0],n=Promise.resolve(e);for(this.interceptors.request.forEach(function(e){t.unshift(e.fulfilled,e.rejected)}),this.interceptors.response.forEach(function(e){t.push(e.fulfilled,e.rejected)});t.length;)n=n.then(t.shift(),t.shift());return n},o.forEach(["delete","get","head","options"],function(e){u.prototype[e]=function(t,n){return this.request(o.merge(n||{},{method:e,url:t}))}}),o.forEach(["post","put","patch"],function(e){u.prototype[e]=function(t,n,r){return this.request(o.merge(r||{},{method:e,url:t,data:n}))}}),e.exports=u},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t){r.forEach(e,function(n,r){r!==t&&r.toUpperCase()===t.toUpperCase()&&(e[t]=n,delete e[r])})}},function(e,t,n){"use strict";var r=n(78);e.exports=function(e,t,n){var o=n.config.validateStatus;n.status&&o&&!o(n.status)?t(r("Request failed with status code "+n.status,n.config,null,n.request,n)):e(n)}},function(e,t,n){"use strict";e.exports=function(e,t,n,r,o){return e.config=t,n&&(e.code=n),e.request=r,e.response=o,e}},function(e,t,n){"use strict";var r=n(7);function o(e){return encodeURIComponent(e).replace(/%40/gi,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}e.exports=function(e,t,n){if(!t)return e;var a;if(n)a=n(t);else if(r.isURLSearchParams(t))a=t.toString();else{var i=[];r.forEach(t,function(e,t){null!==e&&void 0!==e&&(r.isArray(e)?t+="[]":e=[e],r.forEach(e,function(e){r.isDate(e)?e=e.toISOString():r.isObject(e)&&(e=JSON.stringify(e)),i.push(o(t)+"="+o(e))}))}),a=i.join("&")}return a&&(e+=(-1===e.indexOf("?")?"?":"&")+a),e}},function(e,t,n){"use strict";var r=n(7),o=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"];e.exports=function(e){var t,n,a,i={};return e?(r.forEach(e.split("\n"),function(e){if(a=e.indexOf(":"),t=r.trim(e.substr(0,a)).toLowerCase(),n=r.trim(e.substr(a+1)),t){if(i[t]&&o.indexOf(t)>=0)return;i[t]="set-cookie"===t?(i[t]?i[t]:[]).concat([n]):i[t]?i[t]+", "+n:n}}),i):i}},function(e,t,n){"use strict";var r=n(7);e.exports=r.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),n=document.createElement("a");function o(e){var r=e;return t&&(n.setAttribute("href",r),r=n.href),n.setAttribute("href",r),{href:n.href,protocol:n.protocol?n.protocol.replace(/:$/,""):"",host:n.host,search:n.search?n.search.replace(/^\?/,""):"",hash:n.hash?n.hash.replace(/^#/,""):"",hostname:n.hostname,port:n.port,pathname:"/"===n.pathname.charAt(0)?n.pathname:"/"+n.pathname}}return e=o(window.location.href),function(t){var n=r.isString(t)?o(t):t;return n.protocol===e.protocol&&n.host===e.host}}():function(){return!0}},function(e,t,n){"use strict";function r(){this.message="String contains an invalid character"}r.prototype=new Error,r.prototype.code=5,r.prototype.name="InvalidCharacterError",e.exports=function(e){for(var t,n,o=String(e),a="",i=0,u="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";o.charAt(0|i)||(u="=",i%1);a+=u.charAt(63&t>>8-i%1*8)){if((n=o.charCodeAt(i+=.75))>255)throw new r;t=t<<8|n}return a}},function(e,t,n){"use strict";var r=n(7);e.exports=r.isStandardBrowserEnv()?{write:function(e,t,n,o,a,i){var u=[];u.push(e+"="+encodeURIComponent(t)),r.isNumber(n)&&u.push("expires="+new Date(n).toGMTString()),r.isString(o)&&u.push("path="+o),r.isString(a)&&u.push("domain="+a),!0===i&&u.push("secure"),document.cookie=u.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}}},function(e,t,n){"use strict";var r=n(7);function o(){this.handlers=[]}o.prototype.use=function(e,t){return this.handlers.push({fulfilled:e,rejected:t}),this.handlers.length-1},o.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},o.prototype.forEach=function(e){r.forEach(this.handlers,function(t){null!==t&&e(t)})},e.exports=o},function(e,t,n){"use strict";var r=n(7),o=n(202),a=n(79),i=n(43),u=n(203),l=n(204);function s(e){e.cancelToken&&e.cancelToken.throwIfRequested()}e.exports=function(e){return s(e),e.baseURL&&!u(e.url)&&(e.url=l(e.baseURL,e.url)),e.headers=e.headers||{},e.data=o(e.data,e.headers,e.transformRequest),e.headers=r.merge(e.headers.common||{},e.headers[e.method]||{},e.headers||{}),r.forEach(["delete","get","head","post","put","patch","common"],function(t){delete e.headers[t]}),(e.adapter||i.adapter)(e).then(function(t){return s(e),t.data=o(t.data,t.headers,e.transformResponse),t},function(t){return a(t)||(s(e),t&&t.response&&(t.response.data=o(t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)})}},function(e,t,n){"use strict";var r=n(7);e.exports=function(e,t,n){return r.forEach(n,function(n){e=n(e,t)}),e}},function(e,t,n){"use strict";e.exports=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)}},function(e,t,n){"use strict";e.exports=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e}},function(e,t,n){"use strict";var r=n(80);function o(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise(function(e){t=e});var n=this;e(function(e){n.reason||(n.reason=new r(e),t(n.reason))})}o.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},o.source=function(){var e;return{token:new o(function(t){e=t}),cancel:e}},e.exports=o},function(e,t,n){"use strict";e.exports=function(e){return function(t){return e.apply(null,t)}}},function(e,t,n){var r,o,a;o=[t,n(0),n(1),n(2),n(4),n(92)],void 0===(a="function"==typeof(r=function(e,t,n,r,o,a){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Loader=void 0;var i=l(t),u=l(n);function l(e){return e&&e.__esModule?e:{default:e}}var s=function(){function e(e,t){for(var n=0;ns;)for(var p,d=u(arguments[s++]),h=c?r(d).concat(c(d)):r(d),m=h.length,y=0;m>y;)f.call(d,p=h[y++])&&(n[p]=d[p]);return n}:l},function(e,t,n){var r=n(21),o=n(214),a=n(215);e.exports=function(e){return function(t,n,i){var u,l=r(t),s=o(l.length),c=a(i,s);if(e&&n!=n){for(;s>c;)if((u=l[c++])!=u)return!0}else for(;s>c;c++)if((e||c in l)&&l[c]===n)return e||c||0;return!e&&-1}}},function(e,t,n){var r=n(46),o=Math.min;e.exports=function(e){return e>0?o(r(e),9007199254740991):0}},function(e,t,n){var r=n(46),o=Math.max,a=Math.min;e.exports=function(e,t){return(e=r(e))<0?o(e+t,0):a(e,t)}},function(e,t,n){e.exports={default:n(217),__esModule:!0}},function(e,t,n){n(218),n(224),e.exports=n(55).f("iterator")},function(e,t,n){"use strict";var r=n(219)(!0);n(88)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=r(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){var r=n(46),o=n(45);e.exports=function(e){return function(t,n){var a,i,u=String(o(t)),l=r(n),s=u.length;return l<0||l>=s?e?"":void 0:(a=u.charCodeAt(l))<55296||a>56319||l+1===s||(i=u.charCodeAt(l+1))<56320||i>57343?e?u.charAt(l):a:e?u.slice(l,l+2):i-56320+(a-55296<<10)+65536}}},function(e,t,n){"use strict";var r=n(53),o=n(32),a=n(54),i={};n(16)(i,n(22)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=r(i,{next:o(1,n)}),a(e,t+" Iterator")}},function(e,t,n){var r=n(17),o=n(24),a=n(25);e.exports=n(19)?Object.defineProperties:function(e,t){o(e);for(var n,i=a(t),u=i.length,l=0;u>l;)r.f(e,n=i[l++],t[n]);return e}},function(e,t,n){var r=n(11).document;e.exports=r&&r.documentElement},function(e,t,n){var r=n(12),o=n(51),a=n(47)("IE_PROTO"),i=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=o(e),r(e,a)?e[a]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?i:null}},function(e,t,n){n(225);for(var r=n(11),o=n(16),a=n(52),i=n(22)("toStringTag"),u="CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","),l=0;l=e.length?(this._t=void 0,o(1)):o(0,"keys"==t?n:"values"==t?e[n]:[n,e[n]])},"values"),a.Arguments=a.Array,r("keys"),r("values"),r("entries")},function(e,t){e.exports=function(){}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){e.exports={default:n(229),__esModule:!0}},function(e,t,n){n(230),n(235),n(236),n(237),e.exports=n(10).Symbol},function(e,t,n){"use strict";var r=n(11),o=n(12),a=n(19),i=n(15),u=n(89),l=n(231).KEY,s=n(20),c=n(48),f=n(54),p=n(34),d=n(22),h=n(55),m=n(56),y=n(232),v=n(233),g=n(24),b=n(18),w=n(21),x=n(44),_=n(32),k=n(53),E=n(234),S=n(91),P=n(17),O=n(25),C=S.f,T=P.f,N=E.f,j=r.Symbol,A=r.JSON,U=A&&A.stringify,z=d("_hidden"),R=d("toPrimitive"),D={}.propertyIsEnumerable,M=c("symbol-registry"),F=c("symbols"),I=c("op-symbols"),L=Object.prototype,V="function"==typeof j,B=r.QObject,W=!B||!B.prototype||!B.prototype.findChild,H=a&&s(function(){return 7!=k(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,n){var r=C(L,t);r&&delete L[t],T(e,t,n),r&&e!==L&&T(L,t,r)}:T,$=function(e){var t=F[e]=k(j.prototype);return t._k=e,t},q=V&&"symbol"==typeof j.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof j},Y=function(e,t,n){return e===L&&Y(I,t,n),g(e),t=x(t,!0),g(n),o(F,t)?(n.enumerable?(o(e,z)&&e[z][t]&&(e[z][t]=!1),n=k(n,{enumerable:_(0,!1)})):(o(e,z)||T(e,z,_(1,{})),e[z][t]=!0),H(e,t,n)):T(e,t,n)},K=function(e,t){g(e);for(var n,r=y(t=w(t)),o=0,a=r.length;a>o;)Y(e,n=r[o++],t[n]);return e},G=function(e){var t=D.call(this,e=x(e,!0));return!(this===L&&o(F,e)&&!o(I,e))&&(!(t||!o(this,e)||!o(F,e)||o(this,z)&&this[z][e])||t)},X=function(e,t){if(e=w(e),t=x(t,!0),e!==L||!o(F,t)||o(I,t)){var n=C(e,t);return!n||!o(F,t)||o(e,z)&&e[z][t]||(n.enumerable=!0),n}},Q=function(e){for(var t,n=N(w(e)),r=[],a=0;n.length>a;)o(F,t=n[a++])||t==z||t==l||r.push(t);return r},Z=function(e){for(var t,n=e===L,r=N(n?I:w(e)),a=[],i=0;r.length>i;)!o(F,t=r[i++])||n&&!o(L,t)||a.push(F[t]);return a};V||(u((j=function(){if(this instanceof j)throw TypeError("Symbol is not a constructor!");var e=p(arguments.length>0?arguments[0]:void 0),t=function(n){this===L&&t.call(I,n),o(this,z)&&o(this[z],e)&&(this[z][e]=!1),H(this,e,_(1,n))};return a&&W&&H(L,e,{configurable:!0,set:t}),$(e)}).prototype,"toString",function(){return this._k}),S.f=X,P.f=Y,n(90).f=E.f=Q,n(35).f=G,n(50).f=Z,a&&!n(33)&&u(L,"propertyIsEnumerable",G,!0),h.f=function(e){return $(d(e))}),i(i.G+i.W+i.F*!V,{Symbol:j});for(var J="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ee=0;J.length>ee;)d(J[ee++]);for(var te=O(d.store),ne=0;te.length>ne;)m(te[ne++]);i(i.S+i.F*!V,"Symbol",{for:function(e){return o(M,e+="")?M[e]:M[e]=j(e)},keyFor:function(e){if(!q(e))throw TypeError(e+" is not a symbol!");for(var t in M)if(M[t]===e)return t},useSetter:function(){W=!0},useSimple:function(){W=!1}}),i(i.S+i.F*!V,"Object",{create:function(e,t){return void 0===t?k(e):K(k(e),t)},defineProperty:Y,defineProperties:K,getOwnPropertyDescriptor:X,getOwnPropertyNames:Q,getOwnPropertySymbols:Z}),A&&i(i.S+i.F*(!V||s(function(){var e=j();return"[null]"!=U([e])||"{}"!=U({a:e})||"{}"!=U(Object(e))})),"JSON",{stringify:function(e){for(var t,n,r=[e],o=1;arguments.length>o;)r.push(arguments[o++]);if(n=t=r[1],(b(t)||void 0!==e)&&!q(e))return v(t)||(t=function(e,t){if("function"==typeof n&&(t=n.call(this,e,t)),!q(t))return t}),r[1]=t,U.apply(A,r)}}),j.prototype[R]||n(16)(j.prototype,R,j.prototype.valueOf),f(j,"Symbol"),f(Math,"Math",!0),f(r.JSON,"JSON",!0)},function(e,t,n){var r=n(34)("meta"),o=n(18),a=n(12),i=n(17).f,u=0,l=Object.isExtensible||function(){return!0},s=!n(20)(function(){return l(Object.preventExtensions({}))}),c=function(e){i(e,r,{value:{i:"O"+ ++u,w:{}}})},f=e.exports={KEY:r,NEED:!1,fastKey:function(e,t){if(!o(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!a(e,r)){if(!l(e))return"F";if(!t)return"E";c(e)}return e[r].i},getWeak:function(e,t){if(!a(e,r)){if(!l(e))return!0;if(!t)return!1;c(e)}return e[r].w},onFreeze:function(e){return s&&f.NEED&&l(e)&&!a(e,r)&&c(e),e}}},function(e,t,n){var r=n(25),o=n(50),a=n(35);e.exports=function(e){var t=r(e),n=o.f;if(n)for(var i,u=n(e),l=a.f,s=0;u.length>s;)l.call(e,i=u[s++])&&t.push(i);return t}},function(e,t,n){var r=n(86);e.exports=Array.isArray||function(e){return"Array"==r(e)}},function(e,t,n){var r=n(21),o=n(90).f,a={}.toString,i="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];e.exports.f=function(e){return i&&"[object Window]"==a.call(e)?function(e){try{return o(e)}catch(e){return i.slice()}}(e):o(r(e))}},function(e,t){},function(e,t,n){n(56)("asyncIterator")},function(e,t,n){n(56)("observable")},function(e,t,n){e.exports={default:n(239),__esModule:!0}},function(e,t,n){n(240),e.exports=n(10).Object.setPrototypeOf},function(e,t,n){var r=n(15);r(r.S,"Object",{setPrototypeOf:n(241).set})},function(e,t,n){var r=n(18),o=n(24),a=function(e,t){if(o(e),!r(t)&&null!==t)throw TypeError(t+": can't set as prototype!")};e.exports={set:Object.setPrototypeOf||("__proto__"in{}?function(e,t,r){try{(r=n(81)(Function.call,n(91).f(Object.prototype,"__proto__").set,2))(e,[]),t=!(e instanceof Array)}catch(e){t=!0}return function(e,n){return a(e,n),t?e.__proto__=n:r(e,n),e}}({},!1):void 0),check:a}},function(e,t,n){e.exports={default:n(243),__esModule:!0}},function(e,t,n){n(244);var r=n(10).Object;e.exports=function(e,t){return r.create(e,t)}},function(e,t,n){var r=n(15);r(r.S,"Object",{create:n(53)})},function(e,t,n){n(246),e.exports=n(10).Object.keys},function(e,t,n){var r=n(51),o=n(25);n(247)("keys",function(){return function(e){return o(r(e))}})},function(e,t,n){var r=n(15),o=n(10),a=n(20);e.exports=function(e,t){var n=(o.Object||{})[e]||Object[e],i={};i[e]=t(n),r(r.S+r.F*a(function(){n(1)}),"Object",i)}},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,n){var r,o,a;o=[t,n(0),n(1),n(2),n(4)],void 0===(a="function"==typeof(r=function(e,t,n,r,o){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a=u(t),i=u(n);function u(e){return e&&e.__esModule?e:{default:e}}var l=function(){function e(e,t){for(var n=0;n=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n}var E=function(e){function t(e,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var r=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,e,n));return r.renderChildren=function(e,t,n,o){return"function"==typeof e?e(x({},r.state,{isDragActive:t,isDragAccept:n,isDragReject:o})):e},r.composeHandlers=r.composeHandlers.bind(r),r.onClick=r.onClick.bind(r),r.onDocumentDrop=r.onDocumentDrop.bind(r),r.onDragEnter=r.onDragEnter.bind(r),r.onDragLeave=r.onDragLeave.bind(r),r.onDragOver=r.onDragOver.bind(r),r.onDragStart=r.onDragStart.bind(r),r.onDrop=r.onDrop.bind(r),r.onFileDialogCancel=r.onFileDialogCancel.bind(r),r.onInputElementClick=r.onInputElementClick.bind(r),r.setRef=r.setRef.bind(r),r.setRefs=r.setRefs.bind(r),r.isFileDialogActive=!1,r.state={draggedFiles:[],acceptedFiles:[],rejectedFiles:[]},r}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,o.a.Component),_(t,[{key:"componentDidMount",value:function(){var e=this.props.preventDropOnDocument;this.dragTargets=[],e&&(document.addEventListener("dragover",y,!1),document.addEventListener("drop",this.onDocumentDrop,!1)),null!=this.fileInputEl&&this.fileInputEl.addEventListener("click",this.onInputElementClick,!1),window.addEventListener("focus",this.onFileDialogCancel,!1)}},{key:"componentWillUnmount",value:function(){this.props.preventDropOnDocument&&(document.removeEventListener("dragover",y),document.removeEventListener("drop",this.onDocumentDrop)),null!=this.fileInputEl&&this.fileInputEl.removeEventListener("click",this.onInputElementClick,!1),window.removeEventListener("focus",this.onFileDialogCancel,!1)}},{key:"composeHandlers",value:function(e){return this.props.disabled?null:e}},{key:"onDocumentDrop",value:function(e){this.node&&this.node.contains(e.target)||(e.preventDefault(),this.dragTargets=[])}},{key:"onDragStart",value:function(e){this.props.onDragStart&&this.props.onDragStart.call(this,e)}},{key:"onDragEnter",value:function(e){var t=this;e.preventDefault(),-1===this.dragTargets.indexOf(e.target)&&this.dragTargets.push(e.target),Promise.resolve(this.props.getDataTransferItems(e)).then(function(e){t.setState({isDragActive:!0,draggedFiles:e})}),this.props.onDragEnter&&this.props.onDragEnter.call(this,e)}},{key:"onDragOver",value:function(e){e.preventDefault(),e.stopPropagation();try{e.dataTransfer.dropEffect=this.isFileDialogActive?"none":"copy"}catch(e){}return this.props.onDragOver&&this.props.onDragOver.call(this,e),!1}},{key:"onDragLeave",value:function(e){var t=this;e.preventDefault(),this.dragTargets=this.dragTargets.filter(function(n){return n!==e.target&&t.node.contains(n)}),this.dragTargets.length>0||(this.setState({isDragActive:!1,draggedFiles:[]}),this.props.onDragLeave&&this.props.onDragLeave.call(this,e))}},{key:"onDrop",value:function(e){var t=this,n=this.props,r=n.onDrop,o=n.onDropAccepted,a=n.onDropRejected,i=n.multiple,u=n.disablePreview,l=n.accept,s=n.getDataTransferItems;e.preventDefault(),this.dragTargets=[],this.isFileDialogActive=!1,this.draggedFiles=null,this.setState({isDragActive:!1,draggedFiles:[]}),Promise.resolve(s(e)).then(function(n){var s=[],c=[];n.forEach(function(e){if(!u)try{e.preview=window.URL.createObjectURL(e)}catch(e){}m(e,l)&&function(e,t,n){return e.size<=t&&e.size>=n}(e,t.props.maxSize,t.props.minSize)?s.push(e):c.push(e)}),!i&&s.length>1&&c.push.apply(c,function(e){if(Array.isArray(e)){for(var t=0,n=Array(e.length);t0&&a&&a.call(t,c,e),s.length>0&&o&&o.call(t,s,e)})}},{key:"onClick",value:function(e){var t=this.props,n=t.onClick;t.disableClick||(e.stopPropagation(),n&&n.call(this,e),function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:window.navigator.userAgent;return function(e){return-1!==e.indexOf("MSIE")||-1!==e.indexOf("Trident/")}(e)||function(e){return-1!==e.indexOf("Edge/")}(e)}()?setTimeout(this.open.bind(this),0):this.open())}},{key:"onInputElementClick",value:function(e){e.stopPropagation(),this.props.inputProps&&this.props.inputProps.onClick&&this.props.inputProps.onClick()}},{key:"onFileDialogCancel",value:function(){var e=this,t=this.props.onFileDialogCancel;this.isFileDialogActive&&setTimeout(function(){null!=e.fileInputEl&&(e.fileInputEl.files.length||(e.isFileDialogActive=!1)),"function"==typeof t&&t()},300)}},{key:"setRef",value:function(e){this.node=e}},{key:"setRefs",value:function(e){this.fileInputEl=e}},{key:"open",value:function(){this.isFileDialogActive=!0,this.fileInputEl.value=null,this.fileInputEl.click()}},{key:"render",value:function(){var e=this.props,t=e.accept,n=e.acceptClassName,r=e.activeClassName,a=e.children,i=e.disabled,u=e.disabledClassName,l=e.inputProps,s=e.multiple,c=e.name,f=e.rejectClassName,p=k(e,["accept","acceptClassName","activeClassName","children","disabled","disabledClassName","inputProps","multiple","name","rejectClassName"]),d=p.acceptStyle,y=p.activeStyle,_=p.className,E=void 0===_?"":_,S=p.disabledStyle,P=p.rejectStyle,O=p.style,C=k(p,["acceptStyle","activeStyle","className","disabledStyle","rejectStyle","style"]),T=this.state,N=T.isDragActive,j=T.draggedFiles,A=j.length,U=s||A<=1,z=A>0&&function(e,t){return e.every(function(e){return m(e,t)})}(j,this.props.accept),R=A>0&&(!z||!U),D=!(E||O||y||d||P||S);N&&r&&(E+=" "+r),z&&n&&(E+=" "+n),R&&f&&(E+=" "+f),i&&u&&(E+=" "+u),D&&(O=w,y=b,d=b,P=v,S=g);var M=x({position:"relative"},O);y&&N&&(M=x({},M,y)),d&&z&&(M=x({},M,d)),P&&R&&(M=x({},M,P)),S&&i&&(M=x({},M,S));var F={accept:t,disabled:i,type:"file",style:x({position:"absolute",top:0,right:0,bottom:0,left:0,opacity:1e-5,pointerEvents:"none"},l.style),multiple:h&&s,ref:this.setRefs,onChange:this.onDrop,autoComplete:"off"};c&&c.length&&(F.name=c),C.acceptedFiles,C.preventDropOnDocument,C.disablePreview,C.disableClick,C.onDropAccepted,C.onDropRejected,C.onFileDialogCancel,C.maxSize,C.minSize,C.getDataTransferItems;var I=k(C,["acceptedFiles","preventDropOnDocument","disablePreview","disableClick","onDropAccepted","onDropRejected","onFileDialogCancel","maxSize","minSize","getDataTransferItems"]);return o.a.createElement("div",x({className:E,style:M},I,{onClick:this.composeHandlers(this.onClick),onDragStart:this.composeHandlers(this.onDragStart),onDragEnter:this.composeHandlers(this.onDragEnter),onDragOver:this.composeHandlers(this.onDragOver),onDragLeave:this.composeHandlers(this.onDragLeave),onDrop:this.composeHandlers(this.onDrop),ref:this.setRef,"aria-disabled":i}),this.renderChildren(a,N,z,R),o.a.createElement("input",x({},l,F)))}}]),t}(),S=E;E.propTypes={accept:f.a.oneOfType([f.a.string,f.a.arrayOf(f.a.string)]),children:f.a.oneOfType([f.a.node,f.a.func]),disableClick:f.a.bool,disabled:f.a.bool,disablePreview:f.a.bool,preventDropOnDocument:f.a.bool,inputProps:f.a.object,multiple:f.a.bool,name:f.a.string,maxSize:f.a.number,minSize:f.a.number,className:f.a.string,activeClassName:f.a.string,acceptClassName:f.a.string,rejectClassName:f.a.string,disabledClassName:f.a.string,style:f.a.object,activeStyle:f.a.object,acceptStyle:f.a.object,rejectStyle:f.a.object,disabledStyle:f.a.object,getDataTransferItems:f.a.func,onClick:f.a.func,onDrop:f.a.func,onDropAccepted:f.a.func,onDropRejected:f.a.func,onDragStart:f.a.func,onDragEnter:f.a.func,onDragOver:f.a.func,onDragLeave:f.a.func,onFileDialogCancel:f.a.func},E.defaultProps={preventDropOnDocument:!0,disabled:!1,disablePreview:!1,disableClick:!1,inputProps:{},multiple:!0,maxSize:1/0,minSize:0,getDataTransferItems:function(e){var t=[];if(e.dataTransfer){var n=e.dataTransfer;n.files&&n.files.length?t=n.files:n.items&&n.items.length&&(t=n.items)}else e.target&&e.target.files&&(t=e.target.files);return Array.prototype.slice.call(t)}};var P,O=n(95),C=n(2),T=n(36),N=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|valueLink|accept|acceptCharset|accessKey|action|allow|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|default|defer|dir|disabled|download|draggable|encType|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|itemProp|itemScope|itemType|itemID|itemRef|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class)|(on[A-Z].*)|((data|aria|x)-.*))$/i,j=(Object(T.a)(N.test.bind(N)),"__EMOTION_THEMING__");(P={})[j]=f.a.object;o.a;const A="/comixify/",U="/comixify/from_yt/",z=5e7,R="video/*";class D extends o.a.Component{constructor(e){super(e),this.ytInput=o.a.createRef(),this.state={state:D.appStates.INITIAL,videoId:null,drop_errors:[],result_comics:null,framesMode:"0",rlMode:"0"},this.onVideoDrop=this.onVideoDrop.bind(this),this.onModelChange=this.onModelChange.bind(this),this.handleResponse=this.handleResponse.bind(this),this.onYouTubeSubmit=this.onYouTubeSubmit.bind(this),this.onSamplingChange=this.onSamplingChange.bind(this)}static onVideoUploadProgress(e){let t=Math.round(100*e.loaded/e.total);console.log(t)}onModelChange(e){let t=e.currentTarget.value;this.setState({rlMode:t})}onSamplingChange(e){let t=e.currentTarget.value;this.setState({framesMode:t})}handleResponse(e){"ok"===e.data.status_message?this.setState({state:D.appStates.FINISHED,result_comics:e.data.comic}):this.setState({state:D.appStates.UPLOAD_ERROR})}processVideo(e){let{framesMode:t,rlMode:n}=this.state,r=new FormData;r.append("file",e),r.set("frames_mode",parseInt(t)),r.set("rl_mode",parseInt(n)),Object(s.post)(A,r,{headers:{"content-type":"multipart/form-data"},onUploadProgress:D.onVideoUploadProgress}).then(this.handleResponse).catch(e=>{console.error(e),this.setState({state:D.appStates.UPLOAD_ERROR})}),this.setState({state:D.appStates.PROCESSING})}onVideoDrop(e,t){if(0!==t.length)return console.error(t),void this.setState({drop_errors:["Maximum size for single video is 50MB"],state:D.appStates.DROP_ERROR});this.processVideo(e[0])}submitYouTube(e){let{framesMode:t,rlMode:n}=this.state;Object(s.post)(U,{url:e,frames_mode:parseInt(t),rl_mode:parseInt(n)}).then(this.handleResponse).catch(e=>{console.error(e),this.setState({state:D.appStates.UPLOAD_ERROR})})}onYouTubeSubmit(){let e=this.ytInput.current.value;this.submitYouTube(e),this.setState({state:D.appStates.PROCESSING})}onSamplePlay(e){let t="https://www.youtube.com/watch?v="+e;this.submitYouTube(t),this.setState({videoId:e,state:D.appStates.SAMPLE_PROCESSING})}render(){let{state:e,drop_errors:t,result_comics:n,framesMode:r,rlMode:a,videoId:i}=this.state,u=[D.appStates.INITIAL,D.appStates.UPLOAD_ERROR,D.appStates.DROP_ERROR,D.appStates.FINISHED].includes(e),s=[D.appStates.SAMPLE_PROCESSING,D.appStates.PROCESSING].includes(e);return o.a.createElement("div",null,e===D.appStates.FINISHED&&[o.a.createElement("img",{key:"1",src:n}),o.a.createElement("p",{key:"2"},"Go again:")],e===D.appStates.DROP_ERROR&&t.map((e,t)=>o.a.createElement("p",{key:t},e)),e===D.appStates.UPLOAD_ERROR&&o.a.createElement("p",null,"Server Error: Please try again later."),u&&o.a.createElement("div",null,o.a.createElement("div",null,"Pipeline settings:"),o.a.createElement("div",null,o.a.createElement("span",null,"Frame sampling:"),o.a.createElement("input",{type:"radio",name:"sampling",id:"sampling-0",value:"0",checked:"0"===r,onChange:this.onSamplingChange}),o.a.createElement("label",{htmlFor:"sampling-0"},"2fps sampling"),o.a.createElement("input",{type:"radio",name:"sampling",id:"sampling-1",value:"1",checked:"1"===r,onChange:this.onSamplingChange}),o.a.createElement("label",{htmlFor:"sampling-1"},"I-frame sampling")),o.a.createElement("div",null,o.a.createElement("span",null,"Extraction model:"),o.a.createElement("input",{type:"radio",name:"model",id:"model-0",value:"0",checked:"0"===a,onChange:this.onModelChange}),o.a.createElement("label",{htmlFor:"model-0"},"Basic model"),o.a.createElement("input",{type:"radio",name:"model",id:"model-1",value:"1",checked:"1"===a,onChange:this.onModelChange}),o.a.createElement("label",{htmlFor:"model-1"},"+VTW model"))),u&&o.a.createElement(S,{onDrop:this.onVideoDrop,accept:R,maxSize:z,className:"dropzone",acceptClassName:"dropzone--accepted",rejectClassName:"dropzone--rejected",multiple:!1},o.a.createElement("p",null,"Drop video here, or click to select manually")),u&&o.a.createElement("div",null,o.a.createElement("label",{htmlFor:"yt-link",className:"yt-label"},"Or use YouTube link:"),o.a.createElement("input",{type:"url",id:"yt-link",ref:this.ytInput}),o.a.createElement("button",{onClick:this.onYouTubeSubmit},"Run"),o.a.createElement("div",{className:"yt-clips-label"},"Or select one of sample videos:"),o.a.createElement("div",{className:"youtube-clips"},o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Documentary"),o.a.createElement(l.a,{videoId:"gr1ps0ooDhU",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"gr1ps0ooDhU")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Sports"),o.a.createElement(l.a,{videoId:"MqqyD0nP1LQ",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"MqqyD0nP1LQ")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Music video"),o.a.createElement(l.a,{videoId:"kJQP7kiw5Fk",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"kJQP7kiw5Fk")})),o.a.createElement("div",null,o.a.createElement("div",{className:"yt-clip-label"},"Politics"),o.a.createElement(l.a,{videoId:"F2b-2YnfZso",opts:{height:"90",width:"150"},onPlay:this.onSamplePlay.bind(this,"F2b-2YnfZso")})))),e===D.appStates.SAMPLE_PROCESSING&&o.a.createElement(l.a,{videoId:i,opts:{height:"390",width:"640",playerVars:{autoplay:1}}}),s&&o.a.createElement(O.BarLoader,{color:"rgb(54, 215, 183)",className:Object(C.css)("margin:20px auto 0 auto;"),width:10,widthUnit:"rem"}))}}D.appStates={INITIAL:0,PROCESSING:1,FINISHED:2,UPLOAD_ERROR:3,DROP_ERROR:4,SAMPLE_PROCESSING:5},i.a.render(o.a.createElement(D,null),document.getElementById("demo"))}]); \ No newline at end of file diff --git a/keyframes/keyframes.py b/keyframes/keyframes.py index 066cf84..72e7088 100644 --- a/keyframes/keyframes.py +++ b/keyframes/keyframes.py @@ -17,6 +17,7 @@ import logging from utils import jj from keyframes_rl.models import DSN +from popularity.models import PopularityPredictor from keyframes.kts import cpd_auto from keyframes.utils import batch @@ -30,9 +31,11 @@ class KeyFramesExtractor: frames_paths, all_frames_tmp_dir = cls._get_all_frames(video, mode=frames_mode) frames = cls._get_frames(frames_paths) features = cls._get_features(frames, gpu, features_batch_size) - change_points, frames_per_segment = cls._get_segments(features) - probs = cls._get_probs(features, gpu, mode=rl_mode) - chosen_frames = cls._get_chosen_frames(frames, probs, change_points, frames_per_segment) + norm_features = normalize(features) + change_points, frames_per_segment = cls._get_segments(norm_features) + probs = cls._get_probs(norm_features, gpu, mode=rl_mode) + keyframes = cls._get_keyframes(frames, probs, change_points, frames_per_segment) + chosen_frames = cls._get_popularity_chosen_frames(keyframes, features) return chosen_frames @staticmethod @@ -97,7 +100,6 @@ class KeyFramesExtractor: temp = net.blobs["pool5/7x7_s1"].data[0:n_batch] temp = temp.squeeze().copy() features[idx_batch * batch_size:idx_batch * batch_size + n_batch] = temp - normalize(features, copy=False) return features.astype(np.float32) @staticmethod @@ -128,7 +130,7 @@ class KeyFramesExtractor: return probs @staticmethod - def _get_chosen_frames(frames, probs, change_points, frames_per_segment, min_keyframes=10): + def _get_keyframes(frames, probs, change_points, frames_per_segment, min_keyframes=20): gts = [] s = 0 for q in frames_per_segment: @@ -146,20 +148,37 @@ class KeyFramesExtractor: x = low + np.argmax(probs[low:high]) chosen_frames.append({ "index": x, - "frame": frames[x] + "frame": img_as_ubyte(frames[x])[..., ::-1] }) chosen_frames.sort(key=lambda k: k['index']) - chosen_frames = [img_as_ubyte(o["frame"])[..., ::-1] for o in chosen_frames] return chosen_frames + @staticmethod + def _get_popularity_chosen_frames(frames, features, n_frames=10): + model_cache_key = "popularity_model_cache" + model = cache.get(model_cache_key) # get model from cache + + if model is None: + model = PopularityPredictor() + cache.set(model_cache_key, model, None) + + for frame in frames: + x = features[frame["index"]] + frame["popularity"] = model.get_popularity_score(x).squeeze() + + chosen_frames = sorted(frames, key=lambda k: k['popularity'], reverse=True) + chosen_frames = chosen_frames[0:n_frames] + chosen_frames.sort(key=lambda k: k['index']) + return [o["frame"] for o in chosen_frames] + @staticmethod def _get_segments(features): K = np.dot(features, features.T) n_frames = int(K.shape[0]) - min_segments = int(ceil(n_frames / 10)) - min_segments = max(10, min_segments) + min_segments = int(ceil(n_frames / 20)) + min_segments = max(20, min_segments) min_segments = min(n_frames - 1, min_segments) - cps, scores = cpd_auto(K, min_segments, 1) + cps, scores = cpd_auto(K, min_segments, 1, min_segments=min_segments) change_points = [ [0, cps[0] - 1] ] @@ -169,4 +188,5 @@ class KeyFramesExtractor: frames_per_segment.append(int(cps[j + 1] - cps[j])) frames_per_segment.append(int(len(features) - cps[len(cps) - 1])) change_points.append([cps[len(cps) - 1], len(features) - 1]) + print("Number of segments: " + str(len(frames_per_segment))) return change_points, frames_per_segment diff --git a/keyframes/kts/__init__.py b/keyframes/kts/__init__.py index 6ee03d4..d7ed140 100644 --- a/keyframes/kts/__init__.py +++ b/keyframes/kts/__init__.py @@ -85,7 +85,7 @@ def cpd_nonlin(K, ncp, lmin=1, lmax=100000, backtrack=True, verbose=True, out_sc return cps, scores -def cpd_auto(K, ncp, vmax, desc_rate=15, min_segments=10, **kwargs): +def cpd_auto(K, ncp, vmax, desc_rate=15, min_segments=20, **kwargs): """Main interface Detect change points automatically selecting their number K - kernel between each pair of frames in video diff --git a/keyframes_rl/pretrained_model/model_1.pth.tar b/keyframes_rl/pretrained_model/model_1.pth.tar index 11d8c27..bf96dfa 100644 Binary files a/keyframes_rl/pretrained_model/model_1.pth.tar and b/keyframes_rl/pretrained_model/model_1.pth.tar differ diff --git a/popularity/models.py b/popularity/models.py new file mode 100644 index 0000000..82e2005 --- /dev/null +++ b/popularity/models.py @@ -0,0 +1,16 @@ +import pickle +import os.path + +MODEL_PATH = 'popularity/pretrained_model/svr_test_11.10.sk' + + +class PopularityPredictor: + def __init__(self): + if not os.path.exists(MODEL_PATH): + print("Model file does not exist.") + with open(MODEL_PATH, 'rb') as fp: + self.svr = pickle.load(fp, encoding='latin1') + + def get_popularity_score(self, image_feature): + image_feature = image_feature.reshape(1, -1) + return self.svr.predict(image_feature) diff --git a/popularity/pretrained_model/svr_test_11.10.sk.zip b/popularity/pretrained_model/svr_test_11.10.sk.zip new file mode 100644 index 0000000..044f849 Binary files /dev/null and b/popularity/pretrained_model/svr_test_11.10.sk.zip differ