From 578b417e4637a0c9171484526c6668c922c80a2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Thu, 15 Oct 2020 14:57:16 +0200 Subject: [PATCH 1/3] Inject files sorting config MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- lib/Listener/LoadViewerScript.php | 33 +++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/lib/Listener/LoadViewerScript.php b/lib/Listener/LoadViewerScript.php index 5de8c2119..a1523336d 100644 --- a/lib/Listener/LoadViewerScript.php +++ b/lib/Listener/LoadViewerScript.php @@ -29,15 +29,48 @@ use OCA\Viewer\Event\LoadViewer; use OCA\Files\Event\LoadAdditionalScriptsEvent; use OCP\EventDispatcher\Event; +use OCP\AppFramework\Services\IInitialState; +use OCP\IUserSession; use OCP\EventDispatcher\IEventListener; +use OCP\IConfig; use OCP\Util; class LoadViewerScript implements IEventListener { + + /** @var IInitialState */ + private $initialStateService; + + /** @var IUserSession */ + private $userSession; + + /** @var IConfig */ + private $config; + + public function __construct(IInitialState $initialStateService, + IUserSession $userSession, + IConfig $config) { + $this->initialStateService = $initialStateService; + $this->userSession = $userSession; + $this->config = $config; + } + public function handle(Event $event): void { if (!($event instanceof LoadViewer || $event instanceof LoadAdditionalScriptsEvent)) { return; } + $fileSorting = 'name'; + $fileSortingDirection = 'asc'; + + $user = $this->userSession->getUser(); + if ($user !== null) { + $fileSorting = $this->config->getUserValue($user->getUID(), 'files', 'file_sorting', 'name'); + $fileSortingDirection = $this->config->getUserValue($user->getUID(), 'files', 'file_sorting_direction', 'asc'); + } + + $this->initialStateService->provideInitialState('file-sorting', $fileSorting); + $this->initialStateService->provideInitialState('file-sorting-direction', $fileSortingDirection); + Util::addScript(Application::APP_ID, 'viewer-main'); } } From f67181dbbf3180f4257c7c0a1e0f64a702d5df18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakob=20R=C3=B6hrl?= Date: Tue, 20 Oct 2020 08:26:46 +0200 Subject: [PATCH 2/3] show sort in viewer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Jakob Röhrl --- js/viewer-main.js | 79350 ++++++++++++++++++++++++++++++++++++++- js/viewer-main.js.map | 2 +- package.json | 1 + src/utils/fileUtils.js | 7 + 4 files changed, 79243 insertions(+), 117 deletions(-) diff --git a/js/viewer-main.js b/js/viewer-main.js index e02021910..b10b6f9bd 100644 --- a/js/viewer-main.js +++ b/js/viewer-main.js @@ -1,50 +1,78009 @@ -!function(e){var t={};function r(n){if(t[n])return t[n].exports;var i=t[n]={i:n,l:!1,exports:{}};return e[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}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 i in e)r.d(n,i,function(t){return e[t]}.bind(null,i));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="/js/",r(r.s=459)}([function(e,t){"function"==typeof Object.create?e.exports=function(e,t){t&&(e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:e.exports=function(e,t){if(t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}}},function(e,t,r){var n=r(11),i=n.Buffer;function o(e,t){for(var r in e)t[r]=e[r]}function s(e,t,r){return i(e,t,r)}i.from&&i.alloc&&i.allocUnsafe&&i.allocUnsafeSlow?e.exports=n:(o(n,t),t.Buffer=s),o(i,s),s.from=function(e,t,r){if("number"==typeof e)throw new TypeError("Argument must not be a number");return i(e,t,r)},s.alloc=function(e,t,r){if("number"!=typeof e)throw new TypeError("Argument must be a number");var n=i(e);return void 0!==t?"string"==typeof r?n.fill(t,r):n.fill(t):n.fill(0),n},s.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i(e)},s.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return n.SlowBuffer(e)}},function(e,t,r){var n=r(7),i=r(92),o=r(8),s=r(66),a=r(94),u=r(137),c=i("wks"),l=n.Symbol,f=u?l:l&&l.withoutSetter||s;e.exports=function(e){return o(c,e)||(a&&o(l,e)?c[e]=l[e]:c[e]=f("Symbol."+e)),c[e]}},function(e,t){e.exports=function(e){try{return!!e()}catch(e){return!0}}},function(e,t){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(e){"object"==typeof window&&(r=window)}e.exports=r},function(e,t,r){(function(e){!function(e,t){"use strict";function n(e,t){if(!e)throw new Error(t||"Assertion failed")}function i(e,t){e.super_=t;var r=function(){};r.prototype=t.prototype,e.prototype=new r,e.prototype.constructor=e}function o(e,t,r){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(r=t,t=10),this._init(e||0,t||10,r||"be"))}var s;"object"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{s=r(377).Buffer}catch(e){}function a(e,t,r){for(var n=0,i=Math.min(e.length,r),o=t;o=49&&s<=54?s-49+10:s>=17&&s<=22?s-17+10:15&s}return n}function u(e,t,r,n){for(var i=0,o=Math.min(e.length,r),s=t;s=49?a-49+10:a>=17?a-17+10:a}return i}o.isBN=function(e){return e instanceof o||null!==e&&"object"==typeof e&&e.constructor.wordSize===o.wordSize&&Array.isArray(e.words)},o.max=function(e,t){return e.cmp(t)>0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,r){if("number"==typeof e)return this._initNumber(e,t,r);if("object"==typeof e)return this._initArray(e,t,r);"hex"===t&&(t=16),n(t===(0|t)&&t>=2&&t<=36);var i=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&i++,16===t?this._parseHex(e,i):this._parseBase(e,t,i),"-"===e[0]&&(this.negative=1),this.strip(),"le"===r&&this._initArray(this.toArray(),t,r)},o.prototype._initNumber=function(e,t,r){e<0&&(this.negative=1,e=-e),e<67108864?(this.words=[67108863&e],this.length=1):e<4503599627370496?(this.words=[67108863&e,e/67108864&67108863],this.length=2):(n(e<9007199254740992),this.words=[67108863&e,e/67108864&67108863,1],this.length=3),"le"===r&&this._initArray(this.toArray(),t,r)},o.prototype._initArray=function(e,t,r){if(n("number"==typeof e.length),e.length<=0)return this.words=[0],this.length=1,this;this.length=Math.ceil(e.length/3),this.words=new Array(this.length);for(var i=0;i=0;i-=3)s=e[i]|e[i-1]<<8|e[i-2]<<16,this.words[o]|=s<>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);else if("le"===r)for(i=0,o=0;i>>26-a&67108863,(a+=24)>=26&&(a-=26,o++);return this.strip()},o.prototype._parseHex=function(e,t){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var r=0;r=t;r-=6)i=a(e,r,r+6),this.words[n]|=i<>>26-o&4194303,(o+=24)>=26&&(o-=26,n++);r+6!==t&&(i=a(e,t,r+6),this.words[n]|=i<>>26-o&4194303),this.strip()},o.prototype._parseBase=function(e,t,r){this.words=[0],this.length=1;for(var n=0,i=1;i<=67108863;i*=t)n++;n--,i=i/t|0;for(var o=e.length-r,s=o%n,a=Math.min(o,o-s)+r,c=0,l=r;l1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},o.prototype.inspect=function(){return(this.red?""};var c=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],l=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],f=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(e,t,r){r.negative=t.negative^e.negative;var n=e.length+t.length|0;r.length=n,n=n-1|0;var i=0|e.words[0],o=0|t.words[0],s=i*o,a=67108863&s,u=s/67108864|0;r.words[0]=a;for(var c=1;c>>26,f=67108863&u,p=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=p;d++){var h=c-d|0;l+=(s=(i=0|e.words[h])*(o=0|t.words[d])+f)/67108864|0,f=67108863&s}r.words[c]=0|f,u=0|l}return 0!==u?r.words[c]=0|u:r.length--,r.strip()}o.prototype.toString=function(e,t){var r;if(t=0|t||1,16===(e=e||10)||"hex"===e){r="";for(var i=0,o=0,s=0;s>>24-i&16777215)||s!==this.length-1?c[6-u.length]+u+r:u+r,(i+=2)>=26&&(i-=26,s--)}for(0!==o&&(r=o.toString(16)+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}if(e===(0|e)&&e>=2&&e<=36){var p=l[e],d=f[e];r="";var h=this.clone();for(h.negative=0;!h.isZero();){var m=h.modn(d).toString(e);r=(h=h.idivn(d)).isZero()?m+r:c[p-m.length]+m+r}for(this.isZero()&&(r="0"+r);r.length%t!=0;)r="0"+r;return 0!==this.negative&&(r="-"+r),r}n(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16)},o.prototype.toBuffer=function(e,t){return n(void 0!==s),this.toArrayLike(s,e,t)},o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,r){var i=this.byteLength(),o=r||Math.max(1,i);n(i<=o,"byte array longer than desired length"),n(o>0,"Requested array length <= 0"),this.strip();var s,a,u="le"===t,c=new e(o),l=this.clone();if(u){for(a=0;!l.isZero();a++)s=l.andln(255),l.iushrn(8),c[a]=s;for(;a=4096&&(r+=13,t>>>=13),t>=64&&(r+=7,t>>>=7),t>=8&&(r+=4,t>>>=4),t>=2&&(r+=2,t>>>=2),r+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,r=0;return 0==(8191&t)&&(r+=13,t>>>=13),0==(127&t)&&(r+=7,t>>>=7),0==(15&t)&&(r+=4,t>>>=4),0==(3&t)&&(r+=2,t>>>=2),0==(1&t)&&r++,r},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var r=0;re.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,r;this.length>e.length?(t=this,r=e):(t=e,r=this);for(var n=0;ne.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){n("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),r=e%26;this._expand(t),r>0&&t--;for(var i=0;i0&&(this.words[i]=~this.words[i]&67108863>>26-r),this.strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){n("number"==typeof e&&e>=0);var r=e/26|0,i=e%26;return this._expand(r+1),this.words[r]=t?this.words[r]|1<e.length?(r=this,n=e):(r=e,n=this);for(var i=0,o=0;o>>26;for(;0!==i&&o>>26;if(this.length=r.length,0!==i)this.words[this.length]=i,this.length++;else if(r!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var r,n,i=this.cmp(e);if(0===i)return this.negative=0,this.length=1,this.words[0]=0,this;i>0?(r=this,n=e):(r=e,n=this);for(var o=0,s=0;s>26,this.words[s]=67108863&t;for(;0!==o&&s>26,this.words[s]=67108863&t;if(0===o&&s>>13,d=0|s[1],h=8191&d,m=d>>>13,g=0|s[2],v=8191&g,b=g>>>13,y=0|s[3],A=8191&y,w=y>>>13,E=0|s[4],x=8191&E,D=E>>>13,C=0|s[5],_=8191&C,T=C>>>13,k=0|s[6],S=8191&k,M=k>>>13,F=0|s[7],B=8191&F,P=F>>>13,j=0|s[8],I=8191&j,N=j>>>13,L=0|s[9],O=8191&L,R=L>>>13,U=0|a[0],z=8191&U,q=U>>>13,H=0|a[1],V=8191&H,G=H>>>13,Y=0|a[2],Q=8191&Y,$=Y>>>13,W=0|a[3],X=8191&W,J=W>>>13,K=0|a[4],Z=8191&K,ee=K>>>13,te=0|a[5],re=8191&te,ne=te>>>13,ie=0|a[6],oe=8191&ie,se=ie>>>13,ae=0|a[7],ue=8191&ae,ce=ae>>>13,le=0|a[8],fe=8191&le,pe=le>>>13,de=0|a[9],he=8191&de,me=de>>>13;r.negative=e.negative^t.negative,r.length=19;var ge=(c+(n=Math.imul(f,z))|0)+((8191&(i=(i=Math.imul(f,q))+Math.imul(p,z)|0))<<13)|0;c=((o=Math.imul(p,q))+(i>>>13)|0)+(ge>>>26)|0,ge&=67108863,n=Math.imul(h,z),i=(i=Math.imul(h,q))+Math.imul(m,z)|0,o=Math.imul(m,q);var ve=(c+(n=n+Math.imul(f,V)|0)|0)+((8191&(i=(i=i+Math.imul(f,G)|0)+Math.imul(p,V)|0))<<13)|0;c=((o=o+Math.imul(p,G)|0)+(i>>>13)|0)+(ve>>>26)|0,ve&=67108863,n=Math.imul(v,z),i=(i=Math.imul(v,q))+Math.imul(b,z)|0,o=Math.imul(b,q),n=n+Math.imul(h,V)|0,i=(i=i+Math.imul(h,G)|0)+Math.imul(m,V)|0,o=o+Math.imul(m,G)|0;var be=(c+(n=n+Math.imul(f,Q)|0)|0)+((8191&(i=(i=i+Math.imul(f,$)|0)+Math.imul(p,Q)|0))<<13)|0;c=((o=o+Math.imul(p,$)|0)+(i>>>13)|0)+(be>>>26)|0,be&=67108863,n=Math.imul(A,z),i=(i=Math.imul(A,q))+Math.imul(w,z)|0,o=Math.imul(w,q),n=n+Math.imul(v,V)|0,i=(i=i+Math.imul(v,G)|0)+Math.imul(b,V)|0,o=o+Math.imul(b,G)|0,n=n+Math.imul(h,Q)|0,i=(i=i+Math.imul(h,$)|0)+Math.imul(m,Q)|0,o=o+Math.imul(m,$)|0;var ye=(c+(n=n+Math.imul(f,X)|0)|0)+((8191&(i=(i=i+Math.imul(f,J)|0)+Math.imul(p,X)|0))<<13)|0;c=((o=o+Math.imul(p,J)|0)+(i>>>13)|0)+(ye>>>26)|0,ye&=67108863,n=Math.imul(x,z),i=(i=Math.imul(x,q))+Math.imul(D,z)|0,o=Math.imul(D,q),n=n+Math.imul(A,V)|0,i=(i=i+Math.imul(A,G)|0)+Math.imul(w,V)|0,o=o+Math.imul(w,G)|0,n=n+Math.imul(v,Q)|0,i=(i=i+Math.imul(v,$)|0)+Math.imul(b,Q)|0,o=o+Math.imul(b,$)|0,n=n+Math.imul(h,X)|0,i=(i=i+Math.imul(h,J)|0)+Math.imul(m,X)|0,o=o+Math.imul(m,J)|0;var Ae=(c+(n=n+Math.imul(f,Z)|0)|0)+((8191&(i=(i=i+Math.imul(f,ee)|0)+Math.imul(p,Z)|0))<<13)|0;c=((o=o+Math.imul(p,ee)|0)+(i>>>13)|0)+(Ae>>>26)|0,Ae&=67108863,n=Math.imul(_,z),i=(i=Math.imul(_,q))+Math.imul(T,z)|0,o=Math.imul(T,q),n=n+Math.imul(x,V)|0,i=(i=i+Math.imul(x,G)|0)+Math.imul(D,V)|0,o=o+Math.imul(D,G)|0,n=n+Math.imul(A,Q)|0,i=(i=i+Math.imul(A,$)|0)+Math.imul(w,Q)|0,o=o+Math.imul(w,$)|0,n=n+Math.imul(v,X)|0,i=(i=i+Math.imul(v,J)|0)+Math.imul(b,X)|0,o=o+Math.imul(b,J)|0,n=n+Math.imul(h,Z)|0,i=(i=i+Math.imul(h,ee)|0)+Math.imul(m,Z)|0,o=o+Math.imul(m,ee)|0;var we=(c+(n=n+Math.imul(f,re)|0)|0)+((8191&(i=(i=i+Math.imul(f,ne)|0)+Math.imul(p,re)|0))<<13)|0;c=((o=o+Math.imul(p,ne)|0)+(i>>>13)|0)+(we>>>26)|0,we&=67108863,n=Math.imul(S,z),i=(i=Math.imul(S,q))+Math.imul(M,z)|0,o=Math.imul(M,q),n=n+Math.imul(_,V)|0,i=(i=i+Math.imul(_,G)|0)+Math.imul(T,V)|0,o=o+Math.imul(T,G)|0,n=n+Math.imul(x,Q)|0,i=(i=i+Math.imul(x,$)|0)+Math.imul(D,Q)|0,o=o+Math.imul(D,$)|0,n=n+Math.imul(A,X)|0,i=(i=i+Math.imul(A,J)|0)+Math.imul(w,X)|0,o=o+Math.imul(w,J)|0,n=n+Math.imul(v,Z)|0,i=(i=i+Math.imul(v,ee)|0)+Math.imul(b,Z)|0,o=o+Math.imul(b,ee)|0,n=n+Math.imul(h,re)|0,i=(i=i+Math.imul(h,ne)|0)+Math.imul(m,re)|0,o=o+Math.imul(m,ne)|0;var Ee=(c+(n=n+Math.imul(f,oe)|0)|0)+((8191&(i=(i=i+Math.imul(f,se)|0)+Math.imul(p,oe)|0))<<13)|0;c=((o=o+Math.imul(p,se)|0)+(i>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,n=Math.imul(B,z),i=(i=Math.imul(B,q))+Math.imul(P,z)|0,o=Math.imul(P,q),n=n+Math.imul(S,V)|0,i=(i=i+Math.imul(S,G)|0)+Math.imul(M,V)|0,o=o+Math.imul(M,G)|0,n=n+Math.imul(_,Q)|0,i=(i=i+Math.imul(_,$)|0)+Math.imul(T,Q)|0,o=o+Math.imul(T,$)|0,n=n+Math.imul(x,X)|0,i=(i=i+Math.imul(x,J)|0)+Math.imul(D,X)|0,o=o+Math.imul(D,J)|0,n=n+Math.imul(A,Z)|0,i=(i=i+Math.imul(A,ee)|0)+Math.imul(w,Z)|0,o=o+Math.imul(w,ee)|0,n=n+Math.imul(v,re)|0,i=(i=i+Math.imul(v,ne)|0)+Math.imul(b,re)|0,o=o+Math.imul(b,ne)|0,n=n+Math.imul(h,oe)|0,i=(i=i+Math.imul(h,se)|0)+Math.imul(m,oe)|0,o=o+Math.imul(m,se)|0;var xe=(c+(n=n+Math.imul(f,ue)|0)|0)+((8191&(i=(i=i+Math.imul(f,ce)|0)+Math.imul(p,ue)|0))<<13)|0;c=((o=o+Math.imul(p,ce)|0)+(i>>>13)|0)+(xe>>>26)|0,xe&=67108863,n=Math.imul(I,z),i=(i=Math.imul(I,q))+Math.imul(N,z)|0,o=Math.imul(N,q),n=n+Math.imul(B,V)|0,i=(i=i+Math.imul(B,G)|0)+Math.imul(P,V)|0,o=o+Math.imul(P,G)|0,n=n+Math.imul(S,Q)|0,i=(i=i+Math.imul(S,$)|0)+Math.imul(M,Q)|0,o=o+Math.imul(M,$)|0,n=n+Math.imul(_,X)|0,i=(i=i+Math.imul(_,J)|0)+Math.imul(T,X)|0,o=o+Math.imul(T,J)|0,n=n+Math.imul(x,Z)|0,i=(i=i+Math.imul(x,ee)|0)+Math.imul(D,Z)|0,o=o+Math.imul(D,ee)|0,n=n+Math.imul(A,re)|0,i=(i=i+Math.imul(A,ne)|0)+Math.imul(w,re)|0,o=o+Math.imul(w,ne)|0,n=n+Math.imul(v,oe)|0,i=(i=i+Math.imul(v,se)|0)+Math.imul(b,oe)|0,o=o+Math.imul(b,se)|0,n=n+Math.imul(h,ue)|0,i=(i=i+Math.imul(h,ce)|0)+Math.imul(m,ue)|0,o=o+Math.imul(m,ce)|0;var De=(c+(n=n+Math.imul(f,fe)|0)|0)+((8191&(i=(i=i+Math.imul(f,pe)|0)+Math.imul(p,fe)|0))<<13)|0;c=((o=o+Math.imul(p,pe)|0)+(i>>>13)|0)+(De>>>26)|0,De&=67108863,n=Math.imul(O,z),i=(i=Math.imul(O,q))+Math.imul(R,z)|0,o=Math.imul(R,q),n=n+Math.imul(I,V)|0,i=(i=i+Math.imul(I,G)|0)+Math.imul(N,V)|0,o=o+Math.imul(N,G)|0,n=n+Math.imul(B,Q)|0,i=(i=i+Math.imul(B,$)|0)+Math.imul(P,Q)|0,o=o+Math.imul(P,$)|0,n=n+Math.imul(S,X)|0,i=(i=i+Math.imul(S,J)|0)+Math.imul(M,X)|0,o=o+Math.imul(M,J)|0,n=n+Math.imul(_,Z)|0,i=(i=i+Math.imul(_,ee)|0)+Math.imul(T,Z)|0,o=o+Math.imul(T,ee)|0,n=n+Math.imul(x,re)|0,i=(i=i+Math.imul(x,ne)|0)+Math.imul(D,re)|0,o=o+Math.imul(D,ne)|0,n=n+Math.imul(A,oe)|0,i=(i=i+Math.imul(A,se)|0)+Math.imul(w,oe)|0,o=o+Math.imul(w,se)|0,n=n+Math.imul(v,ue)|0,i=(i=i+Math.imul(v,ce)|0)+Math.imul(b,ue)|0,o=o+Math.imul(b,ce)|0,n=n+Math.imul(h,fe)|0,i=(i=i+Math.imul(h,pe)|0)+Math.imul(m,fe)|0,o=o+Math.imul(m,pe)|0;var Ce=(c+(n=n+Math.imul(f,he)|0)|0)+((8191&(i=(i=i+Math.imul(f,me)|0)+Math.imul(p,he)|0))<<13)|0;c=((o=o+Math.imul(p,me)|0)+(i>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,n=Math.imul(O,V),i=(i=Math.imul(O,G))+Math.imul(R,V)|0,o=Math.imul(R,G),n=n+Math.imul(I,Q)|0,i=(i=i+Math.imul(I,$)|0)+Math.imul(N,Q)|0,o=o+Math.imul(N,$)|0,n=n+Math.imul(B,X)|0,i=(i=i+Math.imul(B,J)|0)+Math.imul(P,X)|0,o=o+Math.imul(P,J)|0,n=n+Math.imul(S,Z)|0,i=(i=i+Math.imul(S,ee)|0)+Math.imul(M,Z)|0,o=o+Math.imul(M,ee)|0,n=n+Math.imul(_,re)|0,i=(i=i+Math.imul(_,ne)|0)+Math.imul(T,re)|0,o=o+Math.imul(T,ne)|0,n=n+Math.imul(x,oe)|0,i=(i=i+Math.imul(x,se)|0)+Math.imul(D,oe)|0,o=o+Math.imul(D,se)|0,n=n+Math.imul(A,ue)|0,i=(i=i+Math.imul(A,ce)|0)+Math.imul(w,ue)|0,o=o+Math.imul(w,ce)|0,n=n+Math.imul(v,fe)|0,i=(i=i+Math.imul(v,pe)|0)+Math.imul(b,fe)|0,o=o+Math.imul(b,pe)|0;var _e=(c+(n=n+Math.imul(h,he)|0)|0)+((8191&(i=(i=i+Math.imul(h,me)|0)+Math.imul(m,he)|0))<<13)|0;c=((o=o+Math.imul(m,me)|0)+(i>>>13)|0)+(_e>>>26)|0,_e&=67108863,n=Math.imul(O,Q),i=(i=Math.imul(O,$))+Math.imul(R,Q)|0,o=Math.imul(R,$),n=n+Math.imul(I,X)|0,i=(i=i+Math.imul(I,J)|0)+Math.imul(N,X)|0,o=o+Math.imul(N,J)|0,n=n+Math.imul(B,Z)|0,i=(i=i+Math.imul(B,ee)|0)+Math.imul(P,Z)|0,o=o+Math.imul(P,ee)|0,n=n+Math.imul(S,re)|0,i=(i=i+Math.imul(S,ne)|0)+Math.imul(M,re)|0,o=o+Math.imul(M,ne)|0,n=n+Math.imul(_,oe)|0,i=(i=i+Math.imul(_,se)|0)+Math.imul(T,oe)|0,o=o+Math.imul(T,se)|0,n=n+Math.imul(x,ue)|0,i=(i=i+Math.imul(x,ce)|0)+Math.imul(D,ue)|0,o=o+Math.imul(D,ce)|0,n=n+Math.imul(A,fe)|0,i=(i=i+Math.imul(A,pe)|0)+Math.imul(w,fe)|0,o=o+Math.imul(w,pe)|0;var Te=(c+(n=n+Math.imul(v,he)|0)|0)+((8191&(i=(i=i+Math.imul(v,me)|0)+Math.imul(b,he)|0))<<13)|0;c=((o=o+Math.imul(b,me)|0)+(i>>>13)|0)+(Te>>>26)|0,Te&=67108863,n=Math.imul(O,X),i=(i=Math.imul(O,J))+Math.imul(R,X)|0,o=Math.imul(R,J),n=n+Math.imul(I,Z)|0,i=(i=i+Math.imul(I,ee)|0)+Math.imul(N,Z)|0,o=o+Math.imul(N,ee)|0,n=n+Math.imul(B,re)|0,i=(i=i+Math.imul(B,ne)|0)+Math.imul(P,re)|0,o=o+Math.imul(P,ne)|0,n=n+Math.imul(S,oe)|0,i=(i=i+Math.imul(S,se)|0)+Math.imul(M,oe)|0,o=o+Math.imul(M,se)|0,n=n+Math.imul(_,ue)|0,i=(i=i+Math.imul(_,ce)|0)+Math.imul(T,ue)|0,o=o+Math.imul(T,ce)|0,n=n+Math.imul(x,fe)|0,i=(i=i+Math.imul(x,pe)|0)+Math.imul(D,fe)|0,o=o+Math.imul(D,pe)|0;var ke=(c+(n=n+Math.imul(A,he)|0)|0)+((8191&(i=(i=i+Math.imul(A,me)|0)+Math.imul(w,he)|0))<<13)|0;c=((o=o+Math.imul(w,me)|0)+(i>>>13)|0)+(ke>>>26)|0,ke&=67108863,n=Math.imul(O,Z),i=(i=Math.imul(O,ee))+Math.imul(R,Z)|0,o=Math.imul(R,ee),n=n+Math.imul(I,re)|0,i=(i=i+Math.imul(I,ne)|0)+Math.imul(N,re)|0,o=o+Math.imul(N,ne)|0,n=n+Math.imul(B,oe)|0,i=(i=i+Math.imul(B,se)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,se)|0,n=n+Math.imul(S,ue)|0,i=(i=i+Math.imul(S,ce)|0)+Math.imul(M,ue)|0,o=o+Math.imul(M,ce)|0,n=n+Math.imul(_,fe)|0,i=(i=i+Math.imul(_,pe)|0)+Math.imul(T,fe)|0,o=o+Math.imul(T,pe)|0;var Se=(c+(n=n+Math.imul(x,he)|0)|0)+((8191&(i=(i=i+Math.imul(x,me)|0)+Math.imul(D,he)|0))<<13)|0;c=((o=o+Math.imul(D,me)|0)+(i>>>13)|0)+(Se>>>26)|0,Se&=67108863,n=Math.imul(O,re),i=(i=Math.imul(O,ne))+Math.imul(R,re)|0,o=Math.imul(R,ne),n=n+Math.imul(I,oe)|0,i=(i=i+Math.imul(I,se)|0)+Math.imul(N,oe)|0,o=o+Math.imul(N,se)|0,n=n+Math.imul(B,ue)|0,i=(i=i+Math.imul(B,ce)|0)+Math.imul(P,ue)|0,o=o+Math.imul(P,ce)|0,n=n+Math.imul(S,fe)|0,i=(i=i+Math.imul(S,pe)|0)+Math.imul(M,fe)|0,o=o+Math.imul(M,pe)|0;var Me=(c+(n=n+Math.imul(_,he)|0)|0)+((8191&(i=(i=i+Math.imul(_,me)|0)+Math.imul(T,he)|0))<<13)|0;c=((o=o+Math.imul(T,me)|0)+(i>>>13)|0)+(Me>>>26)|0,Me&=67108863,n=Math.imul(O,oe),i=(i=Math.imul(O,se))+Math.imul(R,oe)|0,o=Math.imul(R,se),n=n+Math.imul(I,ue)|0,i=(i=i+Math.imul(I,ce)|0)+Math.imul(N,ue)|0,o=o+Math.imul(N,ce)|0,n=n+Math.imul(B,fe)|0,i=(i=i+Math.imul(B,pe)|0)+Math.imul(P,fe)|0,o=o+Math.imul(P,pe)|0;var Fe=(c+(n=n+Math.imul(S,he)|0)|0)+((8191&(i=(i=i+Math.imul(S,me)|0)+Math.imul(M,he)|0))<<13)|0;c=((o=o+Math.imul(M,me)|0)+(i>>>13)|0)+(Fe>>>26)|0,Fe&=67108863,n=Math.imul(O,ue),i=(i=Math.imul(O,ce))+Math.imul(R,ue)|0,o=Math.imul(R,ce),n=n+Math.imul(I,fe)|0,i=(i=i+Math.imul(I,pe)|0)+Math.imul(N,fe)|0,o=o+Math.imul(N,pe)|0;var Be=(c+(n=n+Math.imul(B,he)|0)|0)+((8191&(i=(i=i+Math.imul(B,me)|0)+Math.imul(P,he)|0))<<13)|0;c=((o=o+Math.imul(P,me)|0)+(i>>>13)|0)+(Be>>>26)|0,Be&=67108863,n=Math.imul(O,fe),i=(i=Math.imul(O,pe))+Math.imul(R,fe)|0,o=Math.imul(R,pe);var Pe=(c+(n=n+Math.imul(I,he)|0)|0)+((8191&(i=(i=i+Math.imul(I,me)|0)+Math.imul(N,he)|0))<<13)|0;c=((o=o+Math.imul(N,me)|0)+(i>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var je=(c+(n=Math.imul(O,he))|0)+((8191&(i=(i=Math.imul(O,me))+Math.imul(R,he)|0))<<13)|0;return c=((o=Math.imul(R,me))+(i>>>13)|0)+(je>>>26)|0,je&=67108863,u[0]=ge,u[1]=ve,u[2]=be,u[3]=ye,u[4]=Ae,u[5]=we,u[6]=Ee,u[7]=xe,u[8]=De,u[9]=Ce,u[10]=_e,u[11]=Te,u[12]=ke,u[13]=Se,u[14]=Me,u[15]=Fe,u[16]=Be,u[17]=Pe,u[18]=je,0!==c&&(u[19]=c,r.length++),r};function h(e,t,r){return(new m).mulp(e,t,r)}function m(e,t){this.x=e,this.y=t}Math.imul||(d=p),o.prototype.mulTo=function(e,t){var r=this.length+e.length;return 10===this.length&&10===e.length?d(this,e,t):r<63?p(this,e,t):r<1024?function(e,t,r){r.negative=t.negative^e.negative,r.length=e.length+t.length;for(var n=0,i=0,o=0;o>>26)|0)>>>26,s&=67108863}r.words[o]=a,n=s,s=i}return 0!==n?r.words[o]=n:r.length--,r.strip()}(this,e,t):h(this,e,t)},m.prototype.makeRBT=function(e){for(var t=new Array(e),r=o.prototype._countBits(e)-1,n=0;n>=1;return n},m.prototype.permute=function(e,t,r,n,i,o){for(var s=0;s>>=1)i++;return 1<>>=13,r[2*s+1]=8191&o,o>>>=13;for(s=2*t;s>=26,t+=i/67108864|0,t+=o>>>26,this.words[r]=67108863&o}return 0!==t&&(this.words[r]=t,this.length++),this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),r=0;r>>i}return t}(e);if(0===t.length)return new o(1);for(var r=this,n=0;n=0);var t,r=e%26,i=(e-r)/26,o=67108863>>>26-r<<26-r;if(0!==r){var s=0;for(t=0;t>>26-r}s&&(this.words[t]=s,this.length++)}if(0!==i){for(t=this.length-1;t>=0;t--)this.words[t+i]=this.words[t];for(t=0;t=0),i=t?(t-t%26)/26:0;var o=e%26,s=Math.min((e-o)/26,this.length),a=67108863^67108863>>>o<s)for(this.length-=s,c=0;c=0&&(0!==l||c>=i);c--){var f=0|this.words[c];this.words[c]=l<<26-o|f>>>o,l=f&a}return u&&0!==l&&(u.words[u.length++]=l),0===this.length&&(this.words[0]=0,this.length=1),this.strip()},o.prototype.ishrn=function(e,t,r){return n(0===this.negative),this.iushrn(e,t,r)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){n("number"==typeof e&&e>=0);var t=e%26,r=(e-t)/26,i=1<=0);var t=e%26,r=(e-t)/26;if(n(0===this.negative,"imaskn works only with positive numbers"),this.length<=r)return this;if(0!==t&&r++,this.length=Math.min(r,this.length),0!==t){var i=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(n("number"==typeof e),n(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(u/67108864|0),this.words[i+r]=67108863&o}for(;i>26,this.words[i+r]=67108863&o;if(0===a)return this.strip();for(n(-1===a),a=0,i=0;i>26,this.words[i]=67108863&o;return this.negative=1,this.strip()},o.prototype._wordDiv=function(e,t){var r=(this.length,e.length),n=this.clone(),i=e,s=0|i.words[i.length-1];0!==(r=26-this._countBits(s))&&(i=i.ushln(r),n.iushln(r),s=0|i.words[i.length-1]);var a,u=n.length-i.length;if("mod"!==t){(a=new o(null)).length=u+1,a.words=new Array(a.length);for(var c=0;c=0;f--){var p=67108864*(0|n.words[i.length+f])+(0|n.words[i.length+f-1]);for(p=Math.min(p/s|0,67108863),n._ishlnsubmul(i,p,f);0!==n.negative;)p--,n.negative=0,n._ishlnsubmul(i,1,f),n.isZero()||(n.negative^=1);a&&(a.words[f]=p)}return a&&a.strip(),n.strip(),"div"!==t&&0!==r&&n.iushrn(r),{div:a||null,mod:n}},o.prototype.divmod=function(e,t,r){return n(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(a=this.neg().divmod(e,t),"mod"!==t&&(i=a.div.neg()),"div"!==t&&(s=a.mod.neg(),r&&0!==s.negative&&s.iadd(e)),{div:i,mod:s}):0===this.negative&&0!==e.negative?(a=this.divmod(e.neg(),t),"mod"!==t&&(i=a.div.neg()),{div:i,mod:a.mod}):0!=(this.negative&e.negative)?(a=this.neg().divmod(e.neg(),t),"div"!==t&&(s=a.mod.neg(),r&&0!==s.negative&&s.isub(e)),{div:a.div,mod:s}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modn(e.words[0]))}:this._wordDiv(e,t);var i,s,a},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var r=0!==t.div.negative?t.mod.isub(e):t.mod,n=e.ushrn(1),i=e.andln(1),o=r.cmp(n);return o<0||1===i&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modn=function(e){n(e<=67108863);for(var t=(1<<26)%e,r=0,i=this.length-1;i>=0;i--)r=(t*r+(0|this.words[i]))%e;return r},o.prototype.idivn=function(e){n(e<=67108863);for(var t=0,r=this.length-1;r>=0;r--){var i=(0|this.words[r])+67108864*t;this.words[r]=i/e|0,t=i%e}return this.strip()},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i=new o(1),s=new o(0),a=new o(0),u=new o(1),c=0;t.isEven()&&r.isEven();)t.iushrn(1),r.iushrn(1),++c;for(var l=r.clone(),f=t.clone();!t.isZero();){for(var p=0,d=1;0==(t.words[0]&d)&&p<26;++p,d<<=1);if(p>0)for(t.iushrn(p);p-- >0;)(i.isOdd()||s.isOdd())&&(i.iadd(l),s.isub(f)),i.iushrn(1),s.iushrn(1);for(var h=0,m=1;0==(r.words[0]&m)&&h<26;++h,m<<=1);if(h>0)for(r.iushrn(h);h-- >0;)(a.isOdd()||u.isOdd())&&(a.iadd(l),u.isub(f)),a.iushrn(1),u.iushrn(1);t.cmp(r)>=0?(t.isub(r),i.isub(a),s.isub(u)):(r.isub(t),a.isub(i),u.isub(s))}return{a:a,b:u,gcd:r.iushln(c)}},o.prototype._invmp=function(e){n(0===e.negative),n(!e.isZero());var t=this,r=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var i,s=new o(1),a=new o(0),u=r.clone();t.cmpn(1)>0&&r.cmpn(1)>0;){for(var c=0,l=1;0==(t.words[0]&l)&&c<26;++c,l<<=1);if(c>0)for(t.iushrn(c);c-- >0;)s.isOdd()&&s.iadd(u),s.iushrn(1);for(var f=0,p=1;0==(r.words[0]&p)&&f<26;++f,p<<=1);if(f>0)for(r.iushrn(f);f-- >0;)a.isOdd()&&a.iadd(u),a.iushrn(1);t.cmp(r)>=0?(t.isub(r),s.isub(a)):(r.isub(t),a.isub(s))}return(i=0===t.cmpn(1)?s:a).cmpn(0)<0&&i.iadd(e),i},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),r=e.clone();t.negative=0,r.negative=0;for(var n=0;t.isEven()&&r.isEven();n++)t.iushrn(1),r.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;r.isEven();)r.iushrn(1);var i=t.cmp(r);if(i<0){var o=t;t=r,r=o}else if(0===i||0===r.cmpn(1))break;t.isub(r)}return r.iushln(n)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){n("number"==typeof e);var t=e%26,r=(e-t)/26,i=1<>>26,a&=67108863,this.words[s]=a}return 0!==o&&(this.words[s]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,r=e<0;if(0!==this.negative&&!r)return-1;if(0===this.negative&&r)return 1;if(this.strip(),this.length>1)t=1;else{r&&(e=-e),n(e<=67108863,"Number is too big");var i=0|this.words[0];t=i===e?0:ie.length)return 1;if(this.length=0;r--){var n=0|this.words[r],i=0|e.words[r];if(n!==i){ni&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new E(e)},o.prototype.toRed=function(e){return n(!this.red,"Already a number in reduction context"),n(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return n(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return n(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var g={k256:null,p224:null,p192:null,p25519:null};function v(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function b(){v.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function y(){v.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function A(){v.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function w(){v.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function E(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else n(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function x(e){E.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}v.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},v.prototype.ireduce=function(e){var t,r=e;do{this.split(r,this.tmp),t=(r=(r=this.imulK(r)).iadd(this.tmp)).bitLength()}while(t>this.n);var n=t0?r.isub(this.p):r.strip(),r},v.prototype.split=function(e,t){e.iushrn(this.n,0,t)},v.prototype.imulK=function(e){return e.imul(this.k)},i(b,v),b.prototype.split=function(e,t){for(var r=Math.min(e.length,9),n=0;n>>22,i=o}i>>>=22,e.words[n-10]=i,0===i&&e.length>10?e.length-=10:e.length-=9},b.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,r=0;r>>=26,e.words[r]=i,t=n}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(g[e])return g[e];var t;if("k256"===e)t=new b;else if("p224"===e)t=new y;else if("p192"===e)t=new A;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new w}return g[e]=t,t},E.prototype._verify1=function(e){n(0===e.negative,"red works only with positives"),n(e.red,"red works only with red numbers")},E.prototype._verify2=function(e,t){n(0==(e.negative|t.negative),"red works only with positives"),n(e.red&&e.red===t.red,"red works only with red numbers")},E.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):e.umod(this.m)._forceRed(this)},E.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},E.prototype.add=function(e,t){this._verify2(e,t);var r=e.add(t);return r.cmp(this.m)>=0&&r.isub(this.m),r._forceRed(this)},E.prototype.iadd=function(e,t){this._verify2(e,t);var r=e.iadd(t);return r.cmp(this.m)>=0&&r.isub(this.m),r},E.prototype.sub=function(e,t){this._verify2(e,t);var r=e.sub(t);return r.cmpn(0)<0&&r.iadd(this.m),r._forceRed(this)},E.prototype.isub=function(e,t){this._verify2(e,t);var r=e.isub(t);return r.cmpn(0)<0&&r.iadd(this.m),r},E.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},E.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},E.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},E.prototype.isqr=function(e){return this.imul(e,e.clone())},E.prototype.sqr=function(e){return this.mul(e,e)},E.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(n(t%2==1),3===t){var r=this.m.add(new o(1)).iushrn(2);return this.pow(e,r)}for(var i=this.m.subn(1),s=0;!i.isZero()&&0===i.andln(1);)s++,i.iushrn(1);n(!i.isZero());var a=new o(1).toRed(this),u=a.redNeg(),c=this.m.subn(1).iushrn(1),l=this.m.bitLength();for(l=new o(2*l*l).toRed(this);0!==this.pow(l,c).cmp(u);)l.redIAdd(u);for(var f=this.pow(l,i),p=this.pow(e,i.addn(1).iushrn(1)),d=this.pow(e,i),h=s;0!==d.cmp(a);){for(var m=d,g=0;0!==m.cmp(a);g++)m=m.redSqr();n(g=0;n--){for(var c=t.words[n],l=u-1;l>=0;l--){var f=c>>l&1;i!==r[0]&&(i=this.sqr(i)),0!==f||0!==s?(s<<=1,s|=f,(4===++a||0===n&&0===l)&&(i=this.mul(i,r[s]),a=0,s=0)):a=0}u=26}return i},E.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},E.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new x(e)},i(x,E),x.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},x.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},x.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var r=e.imul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),o=i;return i.cmp(this.m)>=0?o=i.isub(this.m):i.cmpn(0)<0&&(o=i.iadd(this.m)),o._forceRed(this)},x.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var r=e.mul(t),n=r.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),i=r.isub(n).iushrn(this.shift),s=i;return i.cmp(this.m)>=0?s=i.isub(this.m):i.cmpn(0)<0&&(s=i.iadd(this.m)),s._forceRed(this)},x.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e,this)}).call(this,r(111)(e))},function(e,t,r){var n=r(7),i=r(68).f,o=r(24),s=r(21),a=r(93),u=r(143),c=r(101);e.exports=function(e,t){var r,l,f,p,d,h=e.target,m=e.global,g=e.stat;if(r=m?n:g?n[h]||a(h,{}):(n[h]||{}).prototype)for(l in t){if(p=t[l],f=e.noTargetGet?(d=i(r,l))&&d.value:r[l],!c(m?l:h+(g?".":"#")+l,e.forced)&&void 0!==f){if(typeof p==typeof f)continue;u(p,f)}(e.sham||f&&f.sham)&&o(p,"sham",!0),s(r,l,p,e)}}},function(e,t,r){(function(t){var r=function(e){return e&&e.Math==Math&&e};e.exports=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof t&&t)||Function("return this")()}).call(this,r(4))},function(e,t){var r={}.hasOwnProperty;e.exports=function(e,t){return r.call(e,t)}},function(e,t,r){"use strict";r.r(t),function(e,r){ -/*! +/******/ (function(modules) { // webpackBootstrap +/******/ // The module cache +/******/ var installedModules = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ +/******/ // Check if module is in cache +/******/ if(installedModules[moduleId]) { +/******/ return installedModules[moduleId].exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = installedModules[moduleId] = { +/******/ i: moduleId, +/******/ l: false, +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); +/******/ +/******/ // Flag the module as loaded +/******/ module.l = true; +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/******/ +/******/ // expose the modules object (__webpack_modules__) +/******/ __webpack_require__.m = modules; +/******/ +/******/ // expose the module cache +/******/ __webpack_require__.c = installedModules; +/******/ +/******/ // define getter function for harmony exports +/******/ __webpack_require__.d = function(exports, name, getter) { +/******/ if(!__webpack_require__.o(exports, name)) { +/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = function(module) { +/******/ var getter = module && module.__esModule ? +/******/ function getDefault() { return module['default']; } : +/******/ function getModuleExports() { return module; }; +/******/ __webpack_require__.d(getter, 'a', getter); +/******/ return getter; +/******/ }; +/******/ +/******/ // Object.prototype.hasOwnProperty.call +/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; +/******/ +/******/ // __webpack_public_path__ +/******/ __webpack_require__.p = "/js/"; +/******/ +/******/ +/******/ // Load entry module and return exports +/******/ return __webpack_require__(__webpack_require__.s = "./src/main.js"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/@nextcloud/auth/dist/index.js": +/*!****************************************************!*\ + !*** ./node_modules/@nextcloud/auth/dist/index.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +Object.defineProperty(exports, "getRequestToken", { + enumerable: true, + get: function get() { + return _requesttoken.getRequestToken; + } +}); +Object.defineProperty(exports, "onRequestTokenUpdate", { + enumerable: true, + get: function get() { + return _requesttoken.onRequestTokenUpdate; + } +}); +Object.defineProperty(exports, "getCurrentUser", { + enumerable: true, + get: function get() { + return _user.getCurrentUser; + } +}); + +var _requesttoken = __webpack_require__(/*! ./requesttoken */ "./node_modules/@nextcloud/auth/dist/requesttoken.js"); + +var _user = __webpack_require__(/*! ./user */ "./node_modules/@nextcloud/auth/dist/user.js"); +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/auth/dist/requesttoken.js": +/*!***********************************************************!*\ + !*** ./node_modules/@nextcloud/auth/dist/requesttoken.js ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.array.for-each */ "./node_modules/core-js/modules/es.array.for-each.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getRequestToken = getRequestToken; +exports.onRequestTokenUpdate = onRequestTokenUpdate; + +var _eventBus = __webpack_require__(/*! @nextcloud/event-bus */ "./node_modules/@nextcloud/event-bus/dist/index.js"); + +var tokenElement = document.getElementsByTagName('head')[0]; +var token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null; +var observers = []; + +function getRequestToken() { + return token; +} + +function onRequestTokenUpdate(observer) { + observers.push(observer); +} // Listen to server event and keep token in sync + + +(0, _eventBus.subscribe)('csrf-token-update', function (e) { + token = e.token; + observers.forEach(function (observer) { + try { + observer(e.token); + } catch (e) { + console.error('error updating CSRF token observer', e); + } + }); +}); +//# sourceMappingURL=requesttoken.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/auth/dist/user.js": +/*!***************************************************!*\ + !*** ./node_modules/@nextcloud/auth/dist/user.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.getCurrentUser = getCurrentUser; +/// +var uidElement = document.getElementsByTagName('head')[0]; +var uid = uidElement ? uidElement.getAttribute('data-user') : null; +var displayNameElement = document.getElementsByTagName('head')[0]; +var displayName = displayNameElement ? displayNameElement.getAttribute('data-user-displayname') : null; +var isAdmin = typeof OC === 'undefined' ? false : OC.isUserAdmin(); + +function getCurrentUser() { + if (uid === null) { + return null; + } + + return { + uid: uid, + displayName: displayName, + isAdmin: isAdmin + }; +} +//# sourceMappingURL=user.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/dist/index.js": +/*!*****************************************************!*\ + !*** ./node_modules/@nextcloud/axios/dist/index.js ***! + \*****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +__webpack_require__(/*! core-js/modules/es.object.assign */ "./node_modules/core-js/modules/es.object.assign.js"); + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.default = void 0; + +var _axios = _interopRequireDefault(__webpack_require__(/*! axios */ "./node_modules/@nextcloud/axios/node_modules/axios/index.js")); + +var _auth = __webpack_require__(/*! @nextcloud/auth */ "./node_modules/@nextcloud/auth/dist/index.js"); + +function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } + +var client = _axios.default.create({ + headers: { + requesttoken: (0, _auth.getRequestToken)() + } +}); + +var cancelableClient = Object.assign(client, { + CancelToken: _axios.default.CancelToken, + isCancel: _axios.default.isCancel +}); +(0, _auth.onRequestTokenUpdate)(function (token) { + return client.defaults.headers.requesttoken = token; +}); +var _default = cancelableClient; +exports.default = _default; +//# sourceMappingURL=index.js.map + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/index.js": +/*!*******************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/index.js ***! + \*******************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js"); + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); +var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js"); +var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js"); +var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js"); +var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js"); +var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js"); +var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js"); +var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js"); + +module.exports = function xhrAdapter(config) { + return new Promise(function dispatchXhrRequest(resolve, reject) { + var requestData = config.data; + var requestHeaders = config.headers; + + if (utils.isFormData(requestData)) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + if ( + (utils.isBlob(requestData) || utils.isFile(requestData)) && + requestData.type + ) { + delete requestHeaders['Content-Type']; // Let the browser set it + } + + var request = new XMLHttpRequest(); + + // HTTP basic authentication + if (config.auth) { + var username = config.auth.username || ''; + var password = unescape(encodeURIComponent(config.auth.password)) || ''; + requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password); + } + + var fullPath = buildFullPath(config.baseURL, config.url); + request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true); + + // Set the request timeout in MS + request.timeout = config.timeout; + + // Listen for ready state + request.onreadystatechange = function handleLoad() { + if (!request || request.readyState !== 4) { + return; + } + + // The request errored out and we didn't get a response, this will be + // handled by onerror instead + // With one exception: request that using file: protocol, most browsers + // will return status as 0 even though it's a successful request + if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) { + return; + } + + // Prepare the response + var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null; + var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response; + var response = { + data: responseData, + status: request.status, + statusText: request.statusText, + headers: responseHeaders, + config: config, + request: request + }; + + settle(resolve, reject, response); + + // Clean up request + request = null; + }; + + // Handle browser request cancellation (as opposed to a manual cancellation) + request.onabort = function handleAbort() { + if (!request) { + return; + } + + reject(createError('Request aborted', config, 'ECONNABORTED', request)); + + // Clean up request + request = null; + }; + + // Handle low level network errors + request.onerror = function handleError() { + // Real errors are hidden from us by the browser + // onerror should only fire if it's a network error + reject(createError('Network Error', config, null, request)); + + // Clean up request + request = null; + }; + + // Handle timeout + request.ontimeout = function handleTimeout() { + var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded'; + if (config.timeoutErrorMessage) { + timeoutErrorMessage = config.timeoutErrorMessage; + } + reject(createError(timeoutErrorMessage, config, 'ECONNABORTED', + request)); + + // Clean up request + request = null; + }; + + // Add xsrf header + // This is only done if running in a standard browser environment. + // Specifically not if we're in a web worker, or react-native. + if (utils.isStandardBrowserEnv()) { + // Add xsrf header + var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? + cookies.read(config.xsrfCookieName) : + undefined; + + if (xsrfValue) { + requestHeaders[config.xsrfHeaderName] = xsrfValue; + } + } + + // Add headers to the request + if ('setRequestHeader' in request) { + utils.forEach(requestHeaders, function setRequestHeader(val, key) { + if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') { + // Remove Content-Type if data is undefined + delete requestHeaders[key]; + } else { + // Otherwise add header to the request + request.setRequestHeader(key, val); + } + }); + } + + // Add withCredentials to request if needed + if (!utils.isUndefined(config.withCredentials)) { + request.withCredentials = !!config.withCredentials; + } + + // Add responseType to request if needed + if (config.responseType) { + try { + request.responseType = config.responseType; + } catch (e) { + // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2. + // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function. + if (config.responseType !== 'json') { + throw e; + } + } + } + + // Handle progress if needed + if (typeof config.onDownloadProgress === 'function') { + request.addEventListener('progress', config.onDownloadProgress); + } + + // Not all browsers support upload events + if (typeof config.onUploadProgress === 'function' && request.upload) { + request.upload.addEventListener('progress', config.onUploadProgress); + } + + if (config.cancelToken) { + // Handle cancellation + config.cancelToken.promise.then(function onCanceled(cancel) { + if (!request) { + return; + } + + request.abort(); + reject(cancel); + // Clean up request + request = null; + }); + } + + if (!requestData) { + requestData = null; + } + + // Send the request + request.send(requestData); + }); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js"); +var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js"); +var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js"); +var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js"); + +/** + * Create an instance of Axios + * + * @param {Object} defaultConfig The default config for the instance + * @return {Axios} A new instance of Axios + */ +function createInstance(defaultConfig) { + var context = new Axios(defaultConfig); + var instance = bind(Axios.prototype.request, context); + + // Copy axios.prototype to instance + utils.extend(instance, Axios.prototype, context); + + // Copy context to instance + utils.extend(instance, context); + + return instance; +} + +// Create the default instance to be exported +var axios = createInstance(defaults); + +// Expose Axios class to allow class inheritance +axios.Axios = Axios; + +// Factory for creating new instances +axios.create = function create(instanceConfig) { + return createInstance(mergeConfig(axios.defaults, instanceConfig)); +}; + +// Expose Cancel & CancelToken +axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js"); +axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js"); +axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js"); + +// Expose all/spread +axios.all = function all(promises) { + return Promise.all(promises); +}; +axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js"); + +module.exports = axios; + +// Allow use of default import syntax in TypeScript +module.exports.default = axios; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js ***! + \*******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * A `Cancel` is an object that is thrown when an operation is canceled. + * + * @class + * @param {string=} message The message. + */ +function Cancel(message) { + this.message = message; +} + +Cancel.prototype.toString = function toString() { + return 'Cancel' + (this.message ? ': ' + this.message : ''); +}; + +Cancel.prototype.__CANCEL__ = true; + +module.exports = Cancel; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js ***! + \************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js"); + +/** + * A `CancelToken` is an object that can be used to request cancellation of an operation. + * + * @class + * @param {Function} executor The executor function. + */ +function CancelToken(executor) { + if (typeof executor !== 'function') { + throw new TypeError('executor must be a function.'); + } + + var resolvePromise; + this.promise = new Promise(function promiseExecutor(resolve) { + resolvePromise = resolve; + }); + + var token = this; + executor(function cancel(message) { + if (token.reason) { + // Cancellation has already been requested + return; + } + + token.reason = new Cancel(message); + resolvePromise(token.reason); + }); +} + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +CancelToken.prototype.throwIfRequested = function throwIfRequested() { + if (this.reason) { + throw this.reason; + } +}; + +/** + * Returns an object that contains a new `CancelToken` and a function that, when called, + * cancels the `CancelToken`. + */ +CancelToken.source = function source() { + var cancel; + var token = new CancelToken(function executor(c) { + cancel = c; + }); + return { + token: token, + cancel: cancel + }; +}; + +module.exports = CancelToken; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js ***! + \*********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function isCancel(value) { + return !!(value && value.__CANCEL__); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js": +/*!****************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js ***! + \****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); +var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js"); +var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js"); +var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js"); +var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js"); + +/** + * Create a new instance of Axios + * + * @param {Object} instanceConfig The default config for the instance + */ +function Axios(instanceConfig) { + this.defaults = instanceConfig; + this.interceptors = { + request: new InterceptorManager(), + response: new InterceptorManager() + }; +} + +/** + * Dispatch a request + * + * @param {Object} config The config specific for this request (merged with this.defaults) + */ +Axios.prototype.request = function request(config) { + /*eslint no-param-reassign:0*/ + // Allow for axios('example/url'[, config]) a la fetch API + if (typeof config === 'string') { + config = arguments[1] || {}; + config.url = arguments[0]; + } else { + config = config || {}; + } + + config = mergeConfig(this.defaults, config); + + // Set config.method + if (config.method) { + config.method = config.method.toLowerCase(); + } else if (this.defaults.method) { + config.method = this.defaults.method.toLowerCase(); + } else { + config.method = 'get'; + } + + // Hook up interceptors middleware + var chain = [dispatchRequest, undefined]; + var promise = Promise.resolve(config); + + this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) { + chain.unshift(interceptor.fulfilled, interceptor.rejected); + }); + + this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) { + chain.push(interceptor.fulfilled, interceptor.rejected); + }); + + while (chain.length) { + promise = promise.then(chain.shift(), chain.shift()); + } + + return promise; +}; + +Axios.prototype.getUri = function getUri(config) { + config = mergeConfig(this.defaults, config); + return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, ''); +}; + +// Provide aliases for supported request methods +utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url + })); + }; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + /*eslint func-names:0*/ + Axios.prototype[method] = function(url, data, config) { + return this.request(mergeConfig(config || {}, { + method: method, + url: url, + data: data + })); + }; +}); + +module.exports = Axios; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +function InterceptorManager() { + this.handlers = []; +} + +/** + * Add a new interceptor to the stack + * + * @param {Function} fulfilled The function to handle `then` for a `Promise` + * @param {Function} rejected The function to handle `reject` for a `Promise` + * + * @return {Number} An ID used to remove interceptor later + */ +InterceptorManager.prototype.use = function use(fulfilled, rejected) { + this.handlers.push({ + fulfilled: fulfilled, + rejected: rejected + }); + return this.handlers.length - 1; +}; + +/** + * Remove an interceptor from the stack + * + * @param {Number} id The ID that was returned by `use` + */ +InterceptorManager.prototype.eject = function eject(id) { + if (this.handlers[id]) { + this.handlers[id] = null; + } +}; + +/** + * Iterate over all the registered interceptors + * + * This method is particularly useful for skipping over any + * interceptors that may have become `null` calling `eject`. + * + * @param {Function} fn The function to call for each interceptor + */ +InterceptorManager.prototype.forEach = function forEach(fn) { + utils.forEach(this.handlers, function forEachHandler(h) { + if (h !== null) { + fn(h); + } + }); +}; + +module.exports = InterceptorManager; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js ***! + \************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js"); +var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js"); + +/** + * Creates a new URL by combining the baseURL with the requestedURL, + * only when the requestedURL is not already an absolute URL. + * If the requestURL is absolute, this function returns the requestedURL untouched. + * + * @param {string} baseURL The base URL + * @param {string} requestedURL Absolute or relative URL to combine + * @returns {string} The combined full path + */ +module.exports = function buildFullPath(baseURL, requestedURL) { + if (baseURL && !isAbsoluteURL(requestedURL)) { + return combineURLs(baseURL, requestedURL); + } + return requestedURL; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js ***! + \**********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/enhanceError.js"); + +/** + * Create an Error with the specified message, config, error code, request and response. + * + * @param {string} message The error message. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The created error. + */ +module.exports = function createError(message, config, code, request, response) { + var error = new Error(message); + return enhanceError(error, config, code, request, response); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js ***! + \**************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); +var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js"); +var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js"); +var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js"); + +/** + * Throws a `Cancel` if cancellation has been requested. + */ +function throwIfCancellationRequested(config) { + if (config.cancelToken) { + config.cancelToken.throwIfRequested(); + } +} + +/** + * Dispatch a request to the server using the configured adapter. + * + * @param {object} config The config that is to be used for the request + * @returns {Promise} The Promise to be fulfilled + */ +module.exports = function dispatchRequest(config) { + throwIfCancellationRequested(config); + + // Ensure headers exist + config.headers = config.headers || {}; + + // Transform request data + config.data = transformData( + config.data, + config.headers, + config.transformRequest + ); + + // Flatten headers + config.headers = utils.merge( + config.headers.common || {}, + config.headers[config.method] || {}, + config.headers + ); + + utils.forEach( + ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], + function cleanHeaderConfig(method) { + delete config.headers[method]; + } + ); + + var adapter = config.adapter || defaults.adapter; + + return adapter(config).then(function onAdapterResolution(response) { + throwIfCancellationRequested(config); + + // Transform response data + response.data = transformData( + response.data, + response.headers, + config.transformResponse + ); + + return response; + }, function onAdapterRejection(reason) { + if (!isCancel(reason)) { + throwIfCancellationRequested(config); + + // Transform response data + if (reason && reason.response) { + reason.response.data = transformData( + reason.response.data, + reason.response.headers, + config.transformResponse + ); + } + } + + return Promise.reject(reason); + }); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/enhanceError.js": +/*!***********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/enhanceError.js ***! + \***********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Update an Error with the specified config, error code, and response. + * + * @param {Error} error The error to update. + * @param {Object} config The config. + * @param {string} [code] The error code (for example, 'ECONNABORTED'). + * @param {Object} [request] The request. + * @param {Object} [response] The response. + * @returns {Error} The error. + */ +module.exports = function enhanceError(error, config, code, request, response) { + error.config = config; + if (code) { + error.code = code; + } + + error.request = request; + error.response = response; + error.isAxiosError = true; + + error.toJSON = function toJSON() { + return { + // Standard + message: this.message, + name: this.name, + // Microsoft + description: this.description, + number: this.number, + // Mozilla + fileName: this.fileName, + lineNumber: this.lineNumber, + columnNumber: this.columnNumber, + stack: this.stack, + // Axios + config: this.config, + code: this.code + }; + }; + return error; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js ***! + \**********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +/** + * Config-specific merge-function which creates a new config-object + * by merging two configuration objects together. + * + * @param {Object} config1 + * @param {Object} config2 + * @returns {Object} New object resulting from merging config2 to config1 + */ +module.exports = function mergeConfig(config1, config2) { + // eslint-disable-next-line no-param-reassign + config2 = config2 || {}; + var config = {}; + + var valueFromConfig2Keys = ['url', 'method', 'data']; + var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params']; + var defaultToConfig2Keys = [ + 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', + 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', + 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', + 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', + 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding' + ]; + var directMergeKeys = ['validateStatus']; + + function getMergedValue(target, source) { + if (utils.isPlainObject(target) && utils.isPlainObject(source)) { + return utils.merge(target, source); + } else if (utils.isPlainObject(source)) { + return utils.merge({}, source); + } else if (utils.isArray(source)) { + return source.slice(); + } + return source; + } + + function mergeDeepProperties(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + } + + utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } + }); + + utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties); + + utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) { + if (!utils.isUndefined(config2[prop])) { + config[prop] = getMergedValue(undefined, config2[prop]); + } else if (!utils.isUndefined(config1[prop])) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + utils.forEach(directMergeKeys, function merge(prop) { + if (prop in config2) { + config[prop] = getMergedValue(config1[prop], config2[prop]); + } else if (prop in config1) { + config[prop] = getMergedValue(undefined, config1[prop]); + } + }); + + var axiosKeys = valueFromConfig2Keys + .concat(mergeDeepPropertiesKeys) + .concat(defaultToConfig2Keys) + .concat(directMergeKeys); + + var otherKeys = Object + .keys(config1) + .concat(Object.keys(config2)) + .filter(function filterAxiosKeys(key) { + return axiosKeys.indexOf(key) === -1; + }); + + utils.forEach(otherKeys, mergeDeepProperties); + + return config; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js": +/*!*****************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var createError = __webpack_require__(/*! ./createError */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js"); + +/** + * Resolve or reject a Promise based on response status. + * + * @param {Function} resolve A function that resolves the promise. + * @param {Function} reject A function that rejects the promise. + * @param {object} response The response. + */ +module.exports = function settle(resolve, reject, response) { + var validateStatus = response.config.validateStatus; + if (!response.status || !validateStatus || validateStatus(response.status)) { + resolve(response); + } else { + reject(createError( + 'Request failed with status code ' + response.status, + response.config, + null, + response.request, + response + )); + } +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js": +/*!************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js ***! + \************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +/** + * Transform the data for a request or a response + * + * @param {Object|String} data The data to be transformed + * @param {Array} headers The headers for the request or response + * @param {Array|Function} fns A single function or Array of functions + * @returns {*} The resulting transformed data + */ +module.exports = function transformData(data, headers, fns) { + /*eslint no-param-reassign:0*/ + utils.forEach(fns, function transform(fn) { + data = fn(data, headers); + }); + + return data; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js": +/*!**************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js ***! + \**************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/* WEBPACK VAR INJECTION */(function(process) { + +var utils = __webpack_require__(/*! ./utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); +var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/normalizeHeaderName.js"); + +var DEFAULT_CONTENT_TYPE = { + 'Content-Type': 'application/x-www-form-urlencoded' +}; + +function setContentTypeIfUnset(headers, value) { + if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) { + headers['Content-Type'] = value; + } +} + +function getDefaultAdapter() { + var adapter; + if (typeof XMLHttpRequest !== 'undefined') { + // For browsers use XHR adapter + adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js"); + } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') { + // For node use HTTP adapter + adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js"); + } + return adapter; +} + +var defaults = { + adapter: getDefaultAdapter(), + + transformRequest: [function transformRequest(data, headers) { + normalizeHeaderName(headers, 'Accept'); + normalizeHeaderName(headers, 'Content-Type'); + if (utils.isFormData(data) || + utils.isArrayBuffer(data) || + utils.isBuffer(data) || + utils.isStream(data) || + utils.isFile(data) || + utils.isBlob(data) + ) { + return data; + } + if (utils.isArrayBufferView(data)) { + return data.buffer; + } + if (utils.isURLSearchParams(data)) { + setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8'); + return data.toString(); + } + if (utils.isObject(data)) { + setContentTypeIfUnset(headers, 'application/json;charset=utf-8'); + return JSON.stringify(data); + } + return data; + }], + + transformResponse: [function transformResponse(data) { + /*eslint no-param-reassign:0*/ + if (typeof data === 'string') { + try { + data = JSON.parse(data); + } catch (e) { /* Ignore */ } + } + return data; + }], + + /** + * A timeout in milliseconds to abort a request. If set to 0 (default) a + * timeout is not created. + */ + timeout: 0, + + xsrfCookieName: 'XSRF-TOKEN', + xsrfHeaderName: 'X-XSRF-TOKEN', + + maxContentLength: -1, + maxBodyLength: -1, + + validateStatus: function validateStatus(status) { + return status >= 200 && status < 300; + } +}; + +defaults.headers = { + common: { + 'Accept': 'application/json, text/plain, */*' + } +}; + +utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) { + defaults.headers[method] = {}; +}); + +utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) { + defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE); +}); + +module.exports = defaults; + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../process/browser.js */ "./node_modules/process/browser.js"))) + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js": +/*!******************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js ***! + \******************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +module.exports = function bind(fn, thisArg) { + return function wrap() { + var args = new Array(arguments.length); + for (var i = 0; i < args.length; i++) { + args[i] = arguments[i]; + } + return fn.apply(thisArg, args); + }; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js": +/*!**********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js ***! + \**********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +function encode(val) { + return encodeURIComponent(val). + replace(/%3A/gi, ':'). + replace(/%24/g, '$'). + replace(/%2C/gi, ','). + replace(/%20/g, '+'). + replace(/%5B/gi, '['). + replace(/%5D/gi, ']'); +} + +/** + * Build a URL by appending params to the end + * + * @param {string} url The base of the url (e.g., http://www.google.com) + * @param {object} [params] The params to be appended + * @returns {string} The formatted url + */ +module.exports = function buildURL(url, params, paramsSerializer) { + /*eslint no-param-reassign:0*/ + if (!params) { + return url; + } + + var serializedParams; + if (paramsSerializer) { + serializedParams = paramsSerializer(params); + } else if (utils.isURLSearchParams(params)) { + serializedParams = params.toString(); + } else { + var parts = []; + + utils.forEach(params, function serialize(val, key) { + if (val === null || typeof val === 'undefined') { + return; + } + + if (utils.isArray(val)) { + key = key + '[]'; + } else { + val = [val]; + } + + utils.forEach(val, function parseValue(v) { + if (utils.isDate(v)) { + v = v.toISOString(); + } else if (utils.isObject(v)) { + v = JSON.stringify(v); + } + parts.push(encode(key) + '=' + encode(v)); + }); + }); + + serializedParams = parts.join('&'); + } + + if (serializedParams) { + var hashmarkIndex = url.indexOf('#'); + if (hashmarkIndex !== -1) { + url = url.slice(0, hashmarkIndex); + } + + url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams; + } + + return url; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js ***! + \*************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +module.exports = function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '') + : baseURL; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js": +/*!*********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js ***! + \*********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs support document.cookie + (function standardBrowserEnv() { + return { + write: function write(name, value, expires, path, domain, secure) { + var cookie = []; + cookie.push(name + '=' + encodeURIComponent(value)); + + if (utils.isNumber(expires)) { + cookie.push('expires=' + new Date(expires).toGMTString()); + } + + if (utils.isString(path)) { + cookie.push('path=' + path); + } + + if (utils.isString(domain)) { + cookie.push('domain=' + domain); + } + + if (secure === true) { + cookie.push('secure'); + } + + document.cookie = cookie.join('; '); + }, + + read: function read(name) { + var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); + return (match ? decodeURIComponent(match[3]) : null); + }, + + remove: function remove(name) { + this.write(name, '', Date.now() - 86400000); + } + }; + })() : + + // Non standard browser env (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return { + write: function write() {}, + read: function read() { return null; }, + remove: function remove() {} + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js": +/*!***************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js ***! + \***************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +module.exports = function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js": +/*!*****************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js ***! + \*****************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +module.exports = ( + utils.isStandardBrowserEnv() ? + + // Standard browser envs have full support of the APIs needed to test + // whether the request URL is of the same origin as current location. + (function standardBrowserEnv() { + var msie = /(msie|trident)/i.test(navigator.userAgent); + var urlParsingNode = document.createElement('a'); + var originURL; + + /** + * Parse a URL to discover it's components + * + * @param {String} url The URL to be parsed + * @returns {Object} + */ + function resolveURL(url) { + var href = url; + + if (msie) { + // IE needs attribute set twice to normalize properties + urlParsingNode.setAttribute('href', href); + href = urlParsingNode.href; + } + + urlParsingNode.setAttribute('href', href); + + // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils + return { + href: urlParsingNode.href, + protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '', + host: urlParsingNode.host, + search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '', + hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '', + hostname: urlParsingNode.hostname, + port: urlParsingNode.port, + pathname: (urlParsingNode.pathname.charAt(0) === '/') ? + urlParsingNode.pathname : + '/' + urlParsingNode.pathname + }; + } + + originURL = resolveURL(window.location.href); + + /** + * Determine if a URL shares the same origin as the current location + * + * @param {String} requestURL The URL to test + * @returns {boolean} True if URL shares the same origin, otherwise false + */ + return function isURLSameOrigin(requestURL) { + var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL; + return (parsed.protocol === originURL.protocol && + parsed.host === originURL.host); + }; + })() : + + // Non standard browser envs (web workers, react-native) lack needed support. + (function nonStandardBrowserEnv() { + return function isURLSameOrigin() { + return true; + }; + })() +); + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/normalizeHeaderName.js": +/*!*********************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/normalizeHeaderName.js ***! + \*********************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +module.exports = function normalizeHeaderName(headers, normalizedName) { + utils.forEach(headers, function processHeader(value, name) { + if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) { + headers[normalizedName] = value; + delete headers[name]; + } + }); +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js": +/*!**************************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js ***! + \**************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var utils = __webpack_require__(/*! ./../utils */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js"); + +// Headers whose duplicates are ignored by node +// c.f. https://nodejs.org/api/http.html#http_message_headers +var ignoreDuplicateOf = [ + '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' +]; + +/** + * Parse headers into an object + * + * ``` + * Date: Wed, 27 Aug 2014 08:58:49 GMT + * Content-Type: application/json + * Connection: keep-alive + * Transfer-Encoding: chunked + * ``` + * + * @param {String} headers Headers needing to be parsed + * @returns {Object} Headers parsed into an object + */ +module.exports = function parseHeaders(headers) { + var parsed = {}; + var key; + var val; + var i; + + if (!headers) { return parsed; } + + utils.forEach(headers.split('\n'), function parser(line) { + i = line.indexOf(':'); + key = utils.trim(line.substr(0, i)).toLowerCase(); + val = utils.trim(line.substr(i + 1)); + + if (key) { + if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) { + return; + } + if (key === 'set-cookie') { + parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]); + } else { + parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val; + } + } + }); + + return parsed; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js": +/*!********************************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js ***! + \********************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +/** + * Syntactic sugar for invoking a function and expanding an array for arguments. + * + * Common use case would be to use `Function.prototype.apply`. + * + * ```js + * function f(x, y, z) {} + * var args = [1, 2, 3]; + * f.apply(null, args); + * ``` + * + * With `spread` this example can be re-written. + * + * ```js + * spread(function(x, y, z) {})([1, 2, 3]); + * ``` + * + * @param {Function} callback + * @returns {Function} + */ +module.exports = function spread(callback) { + return function wrap(arr) { + return callback.apply(null, arr); + }; +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js": +/*!***********************************************************************!*\ + !*** ./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js ***! + \***********************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js"); + +/*global toString:true*/ + +// utils is a library of generic helper functions non-specific to axios + +var toString = Object.prototype.toString; + +/** + * Determine if a value is an Array + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Array, otherwise false + */ +function isArray(val) { + return toString.call(val) === '[object Array]'; +} + +/** + * Determine if a value is undefined + * + * @param {Object} val The value to test + * @returns {boolean} True if the value is undefined, otherwise false + */ +function isUndefined(val) { + return typeof val === 'undefined'; +} + +/** + * Determine if a value is a Buffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Buffer, otherwise false + */ +function isBuffer(val) { + return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) + && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val); +} + +/** + * Determine if a value is an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an ArrayBuffer, otherwise false + */ +function isArrayBuffer(val) { + return toString.call(val) === '[object ArrayBuffer]'; +} + +/** + * Determine if a value is a FormData + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an FormData, otherwise false + */ +function isFormData(val) { + return (typeof FormData !== 'undefined') && (val instanceof FormData); +} + +/** + * Determine if a value is a view on an ArrayBuffer + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false + */ +function isArrayBufferView(val) { + var result; + if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) { + result = ArrayBuffer.isView(val); + } else { + result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer); + } + return result; +} + +/** + * Determine if a value is a String + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a String, otherwise false + */ +function isString(val) { + return typeof val === 'string'; +} + +/** + * Determine if a value is a Number + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Number, otherwise false + */ +function isNumber(val) { + return typeof val === 'number'; +} + +/** + * Determine if a value is an Object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is an Object, otherwise false + */ +function isObject(val) { + return val !== null && typeof val === 'object'; +} + +/** + * Determine if a value is a plain Object + * + * @param {Object} val The value to test + * @return {boolean} True if value is a plain Object, otherwise false + */ +function isPlainObject(val) { + if (toString.call(val) !== '[object Object]') { + return false; + } + + var prototype = Object.getPrototypeOf(val); + return prototype === null || prototype === Object.prototype; +} + +/** + * Determine if a value is a Date + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Date, otherwise false + */ +function isDate(val) { + return toString.call(val) === '[object Date]'; +} + +/** + * Determine if a value is a File + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a File, otherwise false + */ +function isFile(val) { + return toString.call(val) === '[object File]'; +} + +/** + * Determine if a value is a Blob + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Blob, otherwise false + */ +function isBlob(val) { + return toString.call(val) === '[object Blob]'; +} + +/** + * Determine if a value is a Function + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Function, otherwise false + */ +function isFunction(val) { + return toString.call(val) === '[object Function]'; +} + +/** + * Determine if a value is a Stream + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a Stream, otherwise false + */ +function isStream(val) { + return isObject(val) && isFunction(val.pipe); +} + +/** + * Determine if a value is a URLSearchParams object + * + * @param {Object} val The value to test + * @returns {boolean} True if value is a URLSearchParams object, otherwise false + */ +function isURLSearchParams(val) { + return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams; +} + +/** + * Trim excess whitespace off the beginning and end of a string + * + * @param {String} str The String to trim + * @returns {String} The String freed of excess whitespace + */ +function trim(str) { + return str.replace(/^\s*/, '').replace(/\s*$/, ''); +} + +/** + * Determine if we're running in a standard browser environment + * + * This allows axios to run in a web worker, and react-native. + * Both environments support XMLHttpRequest, but not fully standard globals. + * + * web workers: + * typeof window -> undefined + * typeof document -> undefined + * + * react-native: + * navigator.product -> 'ReactNative' + * nativescript + * navigator.product -> 'NativeScript' or 'NS' + */ +function isStandardBrowserEnv() { + if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || + navigator.product === 'NativeScript' || + navigator.product === 'NS')) { + return false; + } + return ( + typeof window !== 'undefined' && + typeof document !== 'undefined' + ); +} + +/** + * Iterate over an Array or an Object invoking a function for each item. + * + * If `obj` is an Array callback will be called passing + * the value, index, and complete array for each item. + * + * If 'obj' is an Object callback will be called passing + * the value, key, and complete object for each property. + * + * @param {Object|Array} obj The object to iterate + * @param {Function} fn The callback to invoke for each item + */ +function forEach(obj, fn) { + // Don't bother if no value provided + if (obj === null || typeof obj === 'undefined') { + return; + } + + // Force an array if not already something iterable + if (typeof obj !== 'object') { + /*eslint no-param-reassign:0*/ + obj = [obj]; + } + + if (isArray(obj)) { + // Iterate over array values + for (var i = 0, l = obj.length; i < l; i++) { + fn.call(null, obj[i], i, obj); + } + } else { + // Iterate over object keys + for (var key in obj) { + if (Object.prototype.hasOwnProperty.call(obj, key)) { + fn.call(null, obj[key], key, obj); + } + } + } +} + +/** + * Accepts varargs expecting each argument to be an object, then + * immutably merges the properties of each object and returns result. + * + * When multiple objects contain the same key the later object in + * the arguments list will take precedence. + * + * Example: + * + * ```js + * var result = merge({foo: 123}, {foo: 456}); + * console.log(result.foo); // outputs 456 + * ``` + * + * @param {Object} obj1 Object to merge + * @returns {Object} Result of all merge properties + */ +function merge(/* obj1, obj2, obj3, ... */) { + var result = {}; + function assignValue(val, key) { + if (isPlainObject(result[key]) && isPlainObject(val)) { + result[key] = merge(result[key], val); + } else if (isPlainObject(val)) { + result[key] = merge({}, val); + } else if (isArray(val)) { + result[key] = val.slice(); + } else { + result[key] = val; + } + } + + for (var i = 0, l = arguments.length; i < l; i++) { + forEach(arguments[i], assignValue); + } + return result; +} + +/** + * Extends object a by mutably adding to it the properties of object b. + * + * @param {Object} a The object to be extended + * @param {Object} b The object to copy properties from + * @param {Object} thisArg The object to bind function to + * @return {Object} The resulting value of object a + */ +function extend(a, b, thisArg) { + forEach(b, function assignValue(val, key) { + if (thisArg && typeof val === 'function') { + a[key] = bind(val, thisArg); + } else { + a[key] = val; + } + }); + return a; +} + +/** + * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM) + * + * @param {string} content with BOM + * @return {string} content value without BOM + */ +function stripBOM(content) { + if (content.charCodeAt(0) === 0xFEFF) { + content = content.slice(1); + } + return content; +} + +module.exports = { + isArray: isArray, + isArrayBuffer: isArrayBuffer, + isBuffer: isBuffer, + isFormData: isFormData, + isArrayBufferView: isArrayBufferView, + isString: isString, + isNumber: isNumber, + isObject: isObject, + isPlainObject: isPlainObject, + isUndefined: isUndefined, + isDate: isDate, + isFile: isFile, + isBlob: isBlob, + isFunction: isFunction, + isStream: isStream, + isURLSearchParams: isURLSearchParams, + isStandardBrowserEnv: isStandardBrowserEnv, + forEach: forEach, + merge: merge, + extend: extend, + trim: trim, + stripBOM: stripBOM +}; + + +/***/ }), + +/***/ "./node_modules/@nextcloud/dialogs/dist/index.es.js": +/*!**********************************************************!*\ + !*** ./node_modules/@nextcloud/dialogs/dist/index.es.js ***! + \**********************************************************/ +/*! exports provided: FilePicker, FilePickerBuilder, getFilePickerBuilder, showError, showInfo, showMessage, showSuccess, showUndo, showWarning */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* WEBPACK VAR INJECTION */(function(process, global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilePicker", function() { return FilePicker; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FilePickerBuilder", function() { return FilePickerBuilder; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getFilePickerBuilder", function() { return getFilePickerBuilder; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showError", function() { return showError; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showInfo", function() { return showInfo; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showMessage", function() { return showMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showSuccess", function() { return showSuccess; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showUndo", function() { return showUndo; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "showWarning", function() { return showWarning; }); +function _typeof2(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + +(function () { + var env = { + "TRANSLATIONS": [{ + "locale": "ast", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "enolp , 2020", + "Language-Team": "Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "ast", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nenolp , 2020\n" + }, + "msgstr": ["Last-Translator: enolp , 2020\nLanguage-Team: Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ast\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Desfacer"] + } + } + } + } + }, { + "locale": "br", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Kervoas-Le Nabat Ewen , 2020", + "Language-Team": "Breton (https://www.transifex.com/nextcloud/teams/64236/br/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "br", + "Plural-Forms": "nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nKervoas-Le Nabat Ewen , 2020\n" + }, + "msgstr": ["Last-Translator: Kervoas-Le Nabat Ewen , 2020\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: br\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Disober"] + } + } + } + } + }, { + "locale": "ca", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Marc Riera , 2020", + "Language-Team": "Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "ca", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nMarc Riera , 2020\n" + }, + "msgstr": ["Last-Translator: Marc Riera , 2020\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ca\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Desfés"] + } + } + } + } + }, { + "locale": "cs", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Pavel Borecki , 2020", + "Language-Team": "Czech (https://www.transifex.com/nextcloud/teams/64236/cs/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "cs", + "Plural-Forms": "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nPavel Borecki , 2020\n" + }, + "msgstr": ["Last-Translator: Pavel Borecki , 2020\nLanguage-Team: Czech (https://www.transifex.com/nextcloud/teams/64236/cs/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cs\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Zpět"] + } + } + } + } + }, { + "locale": "cs_CZ", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Pavel Borecki , 2020", + "Language-Team": "Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "cs_CZ", + "Plural-Forms": "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nPavel Borecki , 2020\n" + }, + "msgstr": ["Last-Translator: Pavel Borecki , 2020\nLanguage-Team: Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: cs_CZ\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Zpět"] + } + } + } + } + }, { + "locale": "de", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Mark Ziegler , 2020", + "Language-Team": "German (https://www.transifex.com/nextcloud/teams/64236/de/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "de", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nMark Ziegler , 2020\n" + }, + "msgstr": ["Last-Translator: Mark Ziegler , 2020\nLanguage-Team: German (https://www.transifex.com/nextcloud/teams/64236/de/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Rückgängig"] + } + } + } + } + }, { + "locale": "de_DE", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Mark Ziegler , 2020", + "Language-Team": "German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "de_DE", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nMark Ziegler , 2020\n" + }, + "msgstr": ["Last-Translator: Mark Ziegler , 2020\nLanguage-Team: German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: de_DE\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Rückgängig"] + } + } + } + } + }, { + "locale": "el", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "ByteGet, 2020", + "Language-Team": "Greek (https://www.transifex.com/nextcloud/teams/64236/el/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "el", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nByteGet, 2020\n" + }, + "msgstr": ["Last-Translator: ByteGet, 2020\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: el\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Αναίρεση"] + } + } + } + } + }, { + "locale": "fr", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "John Molakvoæ , 2020", + "Language-Team": "French (https://www.transifex.com/nextcloud/teams/64236/fr/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "fr", + "Plural-Forms": "nplurals=2; plural=(n > 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nJohn Molakvoæ , 2020\n" + }, + "msgstr": ["Last-Translator: John Molakvoæ , 2020\nLanguage-Team: French (https://www.transifex.com/nextcloud/teams/64236/fr/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: fr\nPlural-Forms: nplurals=2; plural=(n > 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Annuler"] + } + } + } + } + }, { + "locale": "gl", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Miguel Anxo Bouzada , 2020", + "Language-Team": "Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "gl", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nMiguel Anxo Bouzada , 2020\n" + }, + "msgstr": ["Last-Translator: Miguel Anxo Bouzada , 2020\nLanguage-Team: Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: gl\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Desfacer"] + } + } + } + } + }, { + "locale": "he", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Yaron Shahrabani , 2020", + "Language-Team": "Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "he", + "Plural-Forms": "nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nYaron Shahrabani , 2020\n" + }, + "msgstr": ["Last-Translator: Yaron Shahrabani , 2020\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: he\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["ביטול"] + } + } + } + } + }, { + "locale": "it", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Vincenzo Reale , 2020", + "Language-Team": "Italian (https://www.transifex.com/nextcloud/teams/64236/it/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "it", + "Plural-Forms": "nplurals=2; plural=(n != 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nVincenzo Reale , 2020\n" + }, + "msgstr": ["Last-Translator: Vincenzo Reale , 2020\nLanguage-Team: Italian (https://www.transifex.com/nextcloud/teams/64236/it/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: it\nPlural-Forms: nplurals=2; plural=(n != 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Annulla"] + } + } + } + } + }, { + "locale": "ja_JP", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "323484, 2020", + "Language-Team": "Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "ja_JP", + "Plural-Forms": "nplurals=1; plural=0;" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\n323484, 2020\n" + }, + "msgstr": ["Last-Translator: 323484, 2020\nLanguage-Team: Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ja_JP\nPlural-Forms: nplurals=1; plural=0;\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["元に戻す"] + } + } + } + } + }, { + "locale": "lt_LT", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Moo, 2020", + "Language-Team": "Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "lt_LT", + "Plural-Forms": "nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nMoo, 2020\n" + }, + "msgstr": ["Last-Translator: Moo, 2020\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: lt_LT\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Atšaukti"] + } + } + } + } + }, { + "locale": "mk", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Сашко Тодоров, 2020", + "Language-Team": "Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "mk", + "Plural-Forms": "nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nСашко Тодоров, 2020\n" + }, + "msgstr": ["Last-Translator: Сашко Тодоров, 2020\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: mk\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Врати"] + } + } + } + } + }, { + "locale": "oc", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Quentin PAGÈS, 2020", + "Language-Team": "Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "oc", + "Plural-Forms": "nplurals=2; plural=(n > 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nQuentin PAGÈS, 2020\n" + }, + "msgstr": ["Last-Translator: Quentin PAGÈS, 2020\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: oc\nPlural-Forms: nplurals=2; plural=(n > 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Anullar"] + } + } + } + } + }, { + "locale": "pl", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Robert Szmurło , 2020", + "Language-Team": "Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "pl", + "Plural-Forms": "nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nRobert Szmurło , 2020\n" + }, + "msgstr": ["Last-Translator: Robert Szmurło , 2020\nLanguage-Team: Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pl\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Cofnij"] + } + } + } + } + }, { + "locale": "pt_BR", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Paulo Schopf, 2020", + "Language-Team": "Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "pt_BR", + "Plural-Forms": "nplurals=2; plural=(n > 1);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nPaulo Schopf, 2020\n" + }, + "msgstr": ["Last-Translator: Paulo Schopf, 2020\nLanguage-Team: Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: pt_BR\nPlural-Forms: nplurals=2; plural=(n > 1);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Desfazer"] + } + } + } + } + }, { + "locale": "ru", + "json": { + "charset": "utf-8", + "headers": { + "Last-Translator": "Andrey Atapin , 2020", + "Language-Team": "Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)", + "Content-Type": "text/plain; charset=UTF-8", + "Language": "ru", + "Plural-Forms": "nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);" + }, + "translations": { + "": { + "": { + "msgid": "", + "comments": { + "translator": "\nTranslators:\nAndrey Atapin , 2020\n" + }, + "msgstr": ["Last-Translator: Andrey Atapin , 2020\nLanguage-Team: Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)\nContent-Type: text/plain; charset=UTF-8\nLanguage: ru\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"] + }, + "Undo": { + "msgid": "Undo", + "comments": { + "reference": "lib/toast.ts:187" + }, + "msgstr": ["Отменить"] + } + } + } + } + }] + }; + + try { + if (process) { + process.env = Object.assign({}, process.env); + Object.assign(process.env, env); + return; + } + } catch (e) {} // avoid ReferenceError: process is not defined + + + globalThis.process = { + env: env + }; +})(); + +var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; + +function createCommonjsModule(fn, basedir, module) { + return module = { + path: basedir, + exports: {}, + require: function require(path, base) { + return commonjsRequire(path, base === undefined || base === null ? module.path : base); + } + }, fn(module, module.exports), module.exports; +} + +function commonjsRequire() { + throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs'); +} + +var check = function check(it) { + return it && it.Math == Math && it; +}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028 + + +var global_1 = // eslint-disable-next-line no-undef +check((typeof globalThis === "undefined" ? "undefined" : _typeof2(globalThis)) == 'object' && globalThis) || check((typeof window === "undefined" ? "undefined" : _typeof2(window)) == 'object' && window) || check((typeof self === "undefined" ? "undefined" : _typeof2(self)) == 'object' && self) || check(_typeof2(commonjsGlobal) == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func +Function('return this')(); + +var fails = function fails(exec) { + try { + return !!exec(); + } catch (error) { + return true; + } +}; // Thank's IE8 for his funny defineProperty + + +var descriptors = !fails(function () { + return Object.defineProperty({}, 1, { + get: function get() { + return 7; + } + })[1] != 7; +}); + +var isObject = function isObject(it) { + return _typeof2(it) === 'object' ? it !== null : typeof it === 'function'; +}; + +var document$1 = global_1.document; // typeof document.createElement is 'object' in old IE + +var EXISTS = isObject(document$1) && isObject(document$1.createElement); + +var documentCreateElement = function documentCreateElement(it) { + return EXISTS ? document$1.createElement(it) : {}; +}; // Thank's IE8 for his funny defineProperty + + +var ie8DomDefine = !descriptors && !fails(function () { + return Object.defineProperty(documentCreateElement('div'), 'a', { + get: function get() { + return 7; + } + }).a != 7; +}); + +var anObject = function anObject(it) { + if (!isObject(it)) { + throw TypeError(String(it) + ' is not an object'); + } + + return it; +}; // `ToPrimitive` abstract operation +// https://tc39.github.io/ecma262/#sec-toprimitive +// instead of the ES6 spec version, we didn't implement @@toPrimitive case +// and the second argument - flag - preferred type is a string + + +var toPrimitive = function toPrimitive(input, PREFERRED_STRING) { + if (!isObject(input)) return input; + var fn, val; + if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val; + if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val; + throw TypeError("Can't convert object to primitive value"); +}; + +var nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method +// https://tc39.github.io/ecma262/#sec-object.defineproperty + +var f = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) { + anObject(O); + P = toPrimitive(P, true); + anObject(Attributes); + if (ie8DomDefine) try { + return nativeDefineProperty(O, P, Attributes); + } catch (error) { + /* empty */ + } + if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported'); + if ('value' in Attributes) O[P] = Attributes.value; + return O; +}; +var objectDefineProperty = { + f: f +}; + +var createPropertyDescriptor = function createPropertyDescriptor(bitmap, value) { + return { + enumerable: !(bitmap & 1), + configurable: !(bitmap & 2), + writable: !(bitmap & 4), + value: value + }; +}; + +var createNonEnumerableProperty = descriptors ? function (object, key, value) { + return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value)); +} : function (object, key, value) { + object[key] = value; + return object; +}; + +var setGlobal = function setGlobal(key, value) { + try { + createNonEnumerableProperty(global_1, key, value); + } catch (error) { + global_1[key] = value; + } + + return value; +}; + +var SHARED = '__core-js_shared__'; +var store = global_1[SHARED] || setGlobal(SHARED, {}); +var sharedStore = store; +var shared = createCommonjsModule(function (module) { + (module.exports = function (key, value) { + return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {}); + })('versions', []).push({ + version: '3.6.5', + mode: 'global', + copyright: '© 2020 Denis Pushkarev (zloirock.ru)' + }); +}); +var hasOwnProperty = {}.hasOwnProperty; + +var has = function has(it, key) { + return hasOwnProperty.call(it, key); +}; + +var id = 0; +var postfix = Math.random(); + +var uid = function uid(key) { + return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36); +}; + +var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () { + // Chrome 38 Symbol has incorrect toString conversion + // eslint-disable-next-line no-undef + return !String(Symbol()); +}); +var useSymbolAsUid = nativeSymbol // eslint-disable-next-line no-undef +&& !Symbol.sham // eslint-disable-next-line no-undef +&& _typeof2(Symbol.iterator) == 'symbol'; +var WellKnownSymbolsStore = shared('wks'); +var Symbol$1 = global_1.Symbol; +var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid; + +var wellKnownSymbol = function wellKnownSymbol(name) { + if (!has(WellKnownSymbolsStore, name)) { + if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name];else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name); + } + + return WellKnownSymbolsStore[name]; +}; + +var TO_STRING_TAG = wellKnownSymbol('toStringTag'); +var test = {}; +test[TO_STRING_TAG] = 'z'; +var toStringTagSupport = String(test) === '[object z]'; +var functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper + +if (typeof sharedStore.inspectSource != 'function') { + sharedStore.inspectSource = function (it) { + return functionToString.call(it); + }; +} + +var inspectSource = sharedStore.inspectSource; +var WeakMap = global_1.WeakMap; +var nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap)); +var keys = shared('keys'); + +var sharedKey = function sharedKey(key) { + return keys[key] || (keys[key] = uid(key)); +}; + +var hiddenKeys = {}; +var WeakMap$1 = global_1.WeakMap; +var set, get, has$1; + +var enforce = function enforce(it) { + return has$1(it) ? get(it) : set(it, {}); +}; + +var getterFor = function getterFor(TYPE) { + return function (it) { + var state; + + if (!isObject(it) || (state = get(it)).type !== TYPE) { + throw TypeError('Incompatible receiver, ' + TYPE + ' required'); + } + + return state; + }; +}; + +if (nativeWeakMap) { + var store$1 = new WeakMap$1(); + var wmget = store$1.get; + var wmhas = store$1.has; + var wmset = store$1.set; + + set = function set(it, metadata) { + wmset.call(store$1, it, metadata); + return metadata; + }; + + get = function get(it) { + return wmget.call(store$1, it) || {}; + }; + + has$1 = function has$1(it) { + return wmhas.call(store$1, it); + }; +} else { + var STATE = sharedKey('state'); + hiddenKeys[STATE] = true; + + set = function set(it, metadata) { + createNonEnumerableProperty(it, STATE, metadata); + return metadata; + }; + + get = function get(it) { + return has(it, STATE) ? it[STATE] : {}; + }; + + has$1 = function has$1(it) { + return has(it, STATE); + }; +} + +var internalState = { + set: set, + get: get, + has: has$1, + enforce: enforce, + getterFor: getterFor +}; +var redefine = createCommonjsModule(function (module) { + var getInternalState = internalState.get; + var enforceInternalState = internalState.enforce; + var TEMPLATE = String(String).split('String'); + (module.exports = function (O, key, value, options) { + var unsafe = options ? !!options.unsafe : false; + var simple = options ? !!options.enumerable : false; + var noTargetGet = options ? !!options.noTargetGet : false; + + if (typeof value == 'function') { + if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key); + enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : ''); + } + + if (O === global_1) { + if (simple) O[key] = value;else setGlobal(key, value); + return; + } else if (!unsafe) { + delete O[key]; + } else if (!noTargetGet && O[key]) { + simple = true; + } + + if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative + })(Function.prototype, 'toString', function toString() { + return typeof this == 'function' && getInternalState(this).source || inspectSource(this); + }); +}); +var toString = {}.toString; + +var classofRaw = function classofRaw(it) { + return toString.call(it).slice(8, -1); +}; + +var TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); // ES3 wrong here + +var CORRECT_ARGUMENTS = classofRaw(function () { + return arguments; +}()) == 'Arguments'; // fallback for IE11 Script Access Denied error + +var tryGet = function tryGet(it, key) { + try { + return it[key]; + } catch (error) { + /* empty */ + } +}; // getting tag from ES6+ `Object.prototype.toString` + + +var classof = toStringTagSupport ? classofRaw : function (it) { + var O, tag, result; + return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case + : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag // builtinTag case + : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback + : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result; +}; // `Object.prototype.toString` method implementation +// https://tc39.github.io/ecma262/#sec-object.prototype.tostring + +var objectToString = toStringTagSupport ? {}.toString : function toString() { + return '[object ' + classof(this) + ']'; +}; // `Object.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-object.prototype.tostring + +if (!toStringTagSupport) { + redefine(Object.prototype, 'toString', objectToString, { + unsafe: true + }); +} + +var nativePropertyIsEnumerable = {}.propertyIsEnumerable; +var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug + +var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ + 1: 2 +}, 1); // `Object.prototype.propertyIsEnumerable` method implementation +// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable + +var f$1 = NASHORN_BUG ? function propertyIsEnumerable(V) { + var descriptor = getOwnPropertyDescriptor(this, V); + return !!descriptor && descriptor.enumerable; +} : nativePropertyIsEnumerable; +var objectPropertyIsEnumerable = { + f: f$1 +}; +var split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings + +var indexedObject = fails(function () { + // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346 + // eslint-disable-next-line no-prototype-builtins + return !Object('z').propertyIsEnumerable(0); +}) ? function (it) { + return classofRaw(it) == 'String' ? split.call(it, '') : Object(it); +} : Object; // `RequireObjectCoercible` abstract operation +// https://tc39.github.io/ecma262/#sec-requireobjectcoercible + +var requireObjectCoercible = function requireObjectCoercible(it) { + if (it == undefined) throw TypeError("Can't call method on " + it); + return it; +}; // toObject with fallback for non-array-like ES3 strings + + +var toIndexedObject = function toIndexedObject(it) { + return indexedObject(requireObjectCoercible(it)); +}; + +var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor + +var f$2 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) { + O = toIndexedObject(O); + P = toPrimitive(P, true); + if (ie8DomDefine) try { + return nativeGetOwnPropertyDescriptor(O, P); + } catch (error) { + /* empty */ + } + if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]); +}; +var objectGetOwnPropertyDescriptor = { + f: f$2 +}; +var path = global_1; + +var aFunction = function aFunction(variable) { + return typeof variable == 'function' ? variable : undefined; +}; + +var getBuiltIn = function getBuiltIn(namespace, method) { + return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method]; +}; + +var ceil = Math.ceil; +var floor = Math.floor; // `ToInteger` abstract operation +// https://tc39.github.io/ecma262/#sec-tointeger + +var toInteger = function toInteger(argument) { + return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument); +}; + +var min = Math.min; // `ToLength` abstract operation +// https://tc39.github.io/ecma262/#sec-tolength + +var toLength = function toLength(argument) { + return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991 +}; + +var max = Math.max; +var min$1 = Math.min; // Helper for a popular repeating case of the spec: +// Let integer be ? ToInteger(index). +// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length). + +var toAbsoluteIndex = function toAbsoluteIndex(index, length) { + var integer = toInteger(index); + return integer < 0 ? max(integer + length, 0) : min$1(integer, length); +}; // `Array.prototype.{ indexOf, includes }` methods implementation + + +var createMethod = function createMethod(IS_INCLUDES) { + return function ($this, el, fromIndex) { + var O = toIndexedObject($this); + var length = toLength(O.length); + var index = toAbsoluteIndex(fromIndex, length); + var value; // Array#includes uses SameValueZero equality algorithm + // eslint-disable-next-line no-self-compare + + if (IS_INCLUDES && el != el) while (length > index) { + value = O[index++]; // eslint-disable-next-line no-self-compare + + if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not + } else for (; length > index; index++) { + if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0; + } + return !IS_INCLUDES && -1; + }; +}; + +var arrayIncludes = { + // `Array.prototype.includes` method + // https://tc39.github.io/ecma262/#sec-array.prototype.includes + includes: createMethod(true), + // `Array.prototype.indexOf` method + // https://tc39.github.io/ecma262/#sec-array.prototype.indexof + indexOf: createMethod(false) +}; +var indexOf = arrayIncludes.indexOf; + +var objectKeysInternal = function objectKeysInternal(object, names) { + var O = toIndexedObject(object); + var i = 0; + var result = []; + var key; + + for (key in O) { + !has(hiddenKeys, key) && has(O, key) && result.push(key); + } // Don't enum bug & hidden keys + + + while (names.length > i) { + if (has(O, key = names[i++])) { + ~indexOf(result, key) || result.push(key); + } + } + + return result; +}; // IE8- don't enum bug keys + + +var enumBugKeys = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf']; +var hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method +// https://tc39.github.io/ecma262/#sec-object.getownpropertynames + +var f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) { + return objectKeysInternal(O, hiddenKeys$1); +}; + +var objectGetOwnPropertyNames = { + f: f$3 +}; +var f$4 = Object.getOwnPropertySymbols; +var objectGetOwnPropertySymbols = { + f: f$4 +}; // all object keys, includes non-enumerable and symbols + +var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) { + var keys = objectGetOwnPropertyNames.f(anObject(it)); + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys; +}; + +var copyConstructorProperties = function copyConstructorProperties(target, source) { + var keys = ownKeys(source); + var defineProperty = objectDefineProperty.f; + var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f; + + for (var i = 0; i < keys.length; i++) { + var key = keys[i]; + if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key)); + } +}; + +var replacement = /#|\.prototype\./; + +var isForced = function isForced(feature, detection) { + var value = data[normalize(feature)]; + return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection; +}; + +var normalize = isForced.normalize = function (string) { + return String(string).replace(replacement, '.').toLowerCase(); +}; + +var data = isForced.data = {}; +var NATIVE = isForced.NATIVE = 'N'; +var POLYFILL = isForced.POLYFILL = 'P'; +var isForced_1 = isForced; +var getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f; +/* + options.target - name of the target object + options.global - target is the global object + options.stat - export as static methods of target + options.proto - export as prototype methods of target + options.real - real prototype method for the `pure` version + options.forced - export even if the native feature is available + options.bind - bind methods to the target, required for the `pure` version + options.wrap - wrap constructors to preventing global pollution, required for the `pure` version + options.unsafe - use the simple assignment of property instead of delete + defineProperty + options.sham - add a flag to not completely full polyfills + options.enumerable - export as enumerable property + options.noTargetGet - prevent calling a getter on target +*/ + +var _export = function _export(options, source) { + var TARGET = options.target; + var GLOBAL = options.global; + var STATIC = options.stat; + var FORCED, target, key, targetProperty, sourceProperty, descriptor; + + if (GLOBAL) { + target = global_1; + } else if (STATIC) { + target = global_1[TARGET] || setGlobal(TARGET, {}); + } else { + target = (global_1[TARGET] || {}).prototype; + } + + if (target) for (key in source) { + sourceProperty = source[key]; + + if (options.noTargetGet) { + descriptor = getOwnPropertyDescriptor$1(target, key); + targetProperty = descriptor && descriptor.value; + } else targetProperty = target[key]; + + FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target + + if (!FORCED && targetProperty !== undefined) { + if (_typeof2(sourceProperty) === _typeof2(targetProperty)) continue; + copyConstructorProperties(sourceProperty, targetProperty); + } // add a flag to not completely full polyfills + + + if (options.sham || targetProperty && targetProperty.sham) { + createNonEnumerableProperty(sourceProperty, 'sham', true); + } // extend global + + + redefine(target, key, sourceProperty, options); + } +}; + +var nativePromiseConstructor = global_1.Promise; + +var redefineAll = function redefineAll(target, src, options) { + for (var key in src) { + redefine(target, key, src[key], options); + } + + return target; +}; + +var defineProperty = objectDefineProperty.f; +var TO_STRING_TAG$2 = wellKnownSymbol('toStringTag'); + +var setToStringTag = function setToStringTag(it, TAG, STATIC) { + if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$2)) { + defineProperty(it, TO_STRING_TAG$2, { + configurable: true, + value: TAG + }); + } +}; + +var SPECIES = wellKnownSymbol('species'); + +var setSpecies = function setSpecies(CONSTRUCTOR_NAME) { + var Constructor = getBuiltIn(CONSTRUCTOR_NAME); + var defineProperty = objectDefineProperty.f; + + if (descriptors && Constructor && !Constructor[SPECIES]) { + defineProperty(Constructor, SPECIES, { + configurable: true, + get: function get() { + return this; + } + }); + } +}; + +var aFunction$1 = function aFunction$1(it) { + if (typeof it != 'function') { + throw TypeError(String(it) + ' is not a function'); + } + + return it; +}; + +var anInstance = function anInstance(it, Constructor, name) { + if (!(it instanceof Constructor)) { + throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation'); + } + + return it; +}; + +var iterators = {}; +var ITERATOR = wellKnownSymbol('iterator'); +var ArrayPrototype = Array.prototype; // check on default Array iterator + +var isArrayIteratorMethod = function isArrayIteratorMethod(it) { + return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it); +}; // optional / simple context binding + + +var functionBindContext = function functionBindContext(fn, that, length) { + aFunction$1(fn); + if (that === undefined) return fn; + + switch (length) { + case 0: + return function () { + return fn.call(that); + }; + + case 1: + return function (a) { + return fn.call(that, a); + }; + + case 2: + return function (a, b) { + return fn.call(that, a, b); + }; + + case 3: + return function (a, b, c) { + return fn.call(that, a, b, c); + }; + } + + return function () + /* ...args */ + { + return fn.apply(that, arguments); + }; +}; + +var ITERATOR$1 = wellKnownSymbol('iterator'); + +var getIteratorMethod = function getIteratorMethod(it) { + if (it != undefined) return it[ITERATOR$1] || it['@@iterator'] || iterators[classof(it)]; +}; // call something on iterator step with safe closing on error + + +var callWithSafeIterationClosing = function callWithSafeIterationClosing(iterator, fn, value, ENTRIES) { + try { + return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion) + } catch (error) { + var returnMethod = iterator['return']; + if (returnMethod !== undefined) anObject(returnMethod.call(iterator)); + throw error; + } +}; + +var iterate_1 = createCommonjsModule(function (module) { + var Result = function Result(stopped, result) { + this.stopped = stopped; + this.result = result; + }; + + var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) { + var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1); + var iterator, iterFn, index, length, result, next, step; + + if (IS_ITERATOR) { + iterator = iterable; + } else { + iterFn = getIteratorMethod(iterable); + if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators + + if (isArrayIteratorMethod(iterFn)) { + for (index = 0, length = toLength(iterable.length); length > index; index++) { + result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]); + if (result && result instanceof Result) return result; + } + + return new Result(false); + } + + iterator = iterFn.call(iterable); + } + + next = iterator.next; + + while (!(step = next.call(iterator)).done) { + result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES); + if (_typeof2(result) == 'object' && result && result instanceof Result) return result; + } + + return new Result(false); + }; + + iterate.stop = function (result) { + return new Result(true, result); + }; +}); +var ITERATOR$2 = wellKnownSymbol('iterator'); +var SAFE_CLOSING = false; + +try { + var called = 0; + var iteratorWithReturn = { + next: function next() { + return { + done: !!called++ + }; + }, + 'return': function _return() { + SAFE_CLOSING = true; + } + }; + + iteratorWithReturn[ITERATOR$2] = function () { + return this; + }; // eslint-disable-next-line no-throw-literal + + + Array.from(iteratorWithReturn, function () { + throw 2; + }); +} catch (error) { + /* empty */ +} + +var checkCorrectnessOfIteration = function checkCorrectnessOfIteration(exec, SKIP_CLOSING) { + if (!SKIP_CLOSING && !SAFE_CLOSING) return false; + var ITERATION_SUPPORT = false; + + try { + var object = {}; + + object[ITERATOR$2] = function () { + return { + next: function next() { + return { + done: ITERATION_SUPPORT = true + }; + } + }; + }; + + exec(object); + } catch (error) { + /* empty */ + } + + return ITERATION_SUPPORT; +}; + +var SPECIES$1 = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation +// https://tc39.github.io/ecma262/#sec-speciesconstructor + +var speciesConstructor = function speciesConstructor(O, defaultConstructor) { + var C = anObject(O).constructor; + var S; + return C === undefined || (S = anObject(C)[SPECIES$1]) == undefined ? defaultConstructor : aFunction$1(S); +}; + +var html = getBuiltIn('document', 'documentElement'); +var engineUserAgent = getBuiltIn('navigator', 'userAgent') || ''; +var engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent); +var location = global_1.location; +var set$1 = global_1.setImmediate; +var clear = global_1.clearImmediate; +var process$1 = global_1.process; +var MessageChannel = global_1.MessageChannel; +var Dispatch = global_1.Dispatch; +var counter = 0; +var queue = {}; +var ONREADYSTATECHANGE = 'onreadystatechange'; +var defer, channel, port; + +var run = function run(id) { + // eslint-disable-next-line no-prototype-builtins + if (queue.hasOwnProperty(id)) { + var fn = queue[id]; + delete queue[id]; + fn(); + } +}; + +var runner = function runner(id) { + return function () { + run(id); + }; +}; + +var listener = function listener(event) { + run(event.data); +}; + +var post = function post(id) { + // old engines have not location.origin + global_1.postMessage(id + '', location.protocol + '//' + location.host); +}; // Node.js 0.9+ & IE10+ has setImmediate, otherwise: + + +if (!set$1 || !clear) { + set$1 = function setImmediate(fn) { + var args = []; + var i = 1; + + while (arguments.length > i) { + args.push(arguments[i++]); + } + + queue[++counter] = function () { + // eslint-disable-next-line no-new-func + (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args); + }; + + defer(counter); + return counter; + }; + + clear = function clearImmediate(id) { + delete queue[id]; + }; // Node.js 0.8- + + + if (classofRaw(process$1) == 'process') { + defer = function defer(id) { + process$1.nextTick(runner(id)); + }; // Sphere (JS game engine) Dispatch API + + } else if (Dispatch && Dispatch.now) { + defer = function defer(id) { + Dispatch.now(runner(id)); + }; // Browsers with MessageChannel, includes WebWorkers + // except iOS - https://github.com/zloirock/core-js/issues/624 + + } else if (MessageChannel && !engineIsIos) { + channel = new MessageChannel(); + port = channel.port2; + channel.port1.onmessage = listener; + defer = functionBindContext(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers + // IE8 has postMessage, but it's sync & typeof its postMessage is 'object' + } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post) && location.protocol !== 'file:') { + defer = post; + global_1.addEventListener('message', listener, false); // IE8- + } else if (ONREADYSTATECHANGE in documentCreateElement('script')) { + defer = function defer(id) { + html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () { + html.removeChild(this); + run(id); + }; + }; // Rest old browsers + + } else { + defer = function defer(id) { + setTimeout(runner(id), 0); + }; + } +} + +var task = { + set: set$1, + clear: clear +}; +var getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f; +var macrotask = task.set; +var MutationObserver = global_1.MutationObserver || global_1.WebKitMutationObserver; +var process$2 = global_1.process; +var Promise$1 = global_1.Promise; +var IS_NODE = classofRaw(process$2) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask` + +var queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask'); +var queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value; +var flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method + +if (!queueMicrotask) { + flush = function flush() { + var parent, fn; + if (IS_NODE && (parent = process$2.domain)) parent.exit(); + + while (head) { + fn = head.fn; + head = head.next; + + try { + fn(); + } catch (error) { + if (head) notify();else last = undefined; + throw error; + } + } + + last = undefined; + if (parent) parent.enter(); + }; // Node.js + + + if (IS_NODE) { + notify = function notify() { + process$2.nextTick(flush); + }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339 + + } else if (MutationObserver && !engineIsIos) { + toggle = true; + node = document.createTextNode(''); + new MutationObserver(flush).observe(node, { + characterData: true + }); + + notify = function notify() { + node.data = toggle = !toggle; + }; // environments with maybe non-completely correct, but existent Promise + + } else if (Promise$1 && Promise$1.resolve) { + // Promise.resolve without an argument throws an error in LG WebOS 2 + promise = Promise$1.resolve(undefined); + then = promise.then; + + notify = function notify() { + then.call(promise, flush); + }; // for other environments - macrotask based on: + // - setImmediate + // - MessageChannel + // - window.postMessag + // - onreadystatechange + // - setTimeout + + } else { + notify = function notify() { + // strange IE + webpack dev server bug - use .call(global) + macrotask.call(global_1, flush); + }; + } +} + +var microtask = queueMicrotask || function (fn) { + var task = { + fn: fn, + next: undefined + }; + if (last) last.next = task; + + if (!head) { + head = task; + notify(); + } + + last = task; +}; + +var PromiseCapability = function PromiseCapability(C) { + var resolve, reject; + this.promise = new C(function ($$resolve, $$reject) { + if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor'); + resolve = $$resolve; + reject = $$reject; + }); + this.resolve = aFunction$1(resolve); + this.reject = aFunction$1(reject); +}; // 25.4.1.5 NewPromiseCapability(C) + + +var f$5 = function f$5(C) { + return new PromiseCapability(C); +}; + +var newPromiseCapability = { + f: f$5 +}; + +var promiseResolve = function promiseResolve(C, x) { + anObject(C); + if (isObject(x) && x.constructor === C) return x; + var promiseCapability = newPromiseCapability.f(C); + var resolve = promiseCapability.resolve; + resolve(x); + return promiseCapability.promise; +}; + +var hostReportErrors = function hostReportErrors(a, b) { + var console = global_1.console; + + if (console && console.error) { + arguments.length === 1 ? console.error(a) : console.error(a, b); + } +}; + +var perform = function perform(exec) { + try { + return { + error: false, + value: exec() + }; + } catch (error) { + return { + error: true, + value: error + }; + } +}; + +var process$3 = global_1.process; +var versions = process$3 && process$3.versions; +var v8 = versions && versions.v8; +var match, version; + +if (v8) { + match = v8.split('.'); + version = match[0] + match[1]; +} else if (engineUserAgent) { + match = engineUserAgent.match(/Edge\/(\d+)/); + + if (!match || match[1] >= 74) { + match = engineUserAgent.match(/Chrome\/(\d+)/); + if (match) version = match[1]; + } +} + +var engineV8Version = version && +version; +var task$1 = task.set; +var SPECIES$2 = wellKnownSymbol('species'); +var PROMISE = 'Promise'; +var getInternalState = internalState.get; +var setInternalState = internalState.set; +var getInternalPromiseState = internalState.getterFor(PROMISE); +var PromiseConstructor = nativePromiseConstructor; +var TypeError$1 = global_1.TypeError; +var document$2 = global_1.document; +var process$4 = global_1.process; +var $fetch = getBuiltIn('fetch'); +var newPromiseCapability$1 = newPromiseCapability.f; +var newGenericPromiseCapability = newPromiseCapability$1; +var IS_NODE$1 = classofRaw(process$4) == 'process'; +var DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent); +var UNHANDLED_REJECTION = 'unhandledrejection'; +var REJECTION_HANDLED = 'rejectionhandled'; +var PENDING = 0; +var FULFILLED = 1; +var REJECTED = 2; +var HANDLED = 1; +var UNHANDLED = 2; +var Internal, OwnPromiseCapability, PromiseWrapper, nativeThen; +var FORCED = isForced_1(PROMISE, function () { + var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor); + + if (!GLOBAL_CORE_JS_PROMISE) { + // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables + // https://bugs.chromium.org/p/chromium/issues/detail?id=830565 + // We can't detect it synchronously, so just check versions + if (engineV8Version === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test + + if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') return true; + } // We can't use @@species feature detection in V8 since it causes + // deoptimization and performance degradation + // https://github.com/zloirock/core-js/issues/679 + + + if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false; // Detect correctness of subclassing with @@species support + + var promise = PromiseConstructor.resolve(1); + + var FakePromise = function FakePromise(exec) { + exec(function () { + /* empty */ + }, function () { + /* empty */ + }); + }; + + var constructor = promise.constructor = {}; + constructor[SPECIES$2] = FakePromise; + return !(promise.then(function () { + /* empty */ + }) instanceof FakePromise); +}); +var INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) { + PromiseConstructor.all(iterable)['catch'](function () { + /* empty */ + }); +}); // helpers + +var isThenable = function isThenable(it) { + var then; + return isObject(it) && typeof (then = it.then) == 'function' ? then : false; +}; + +var notify$1 = function notify$1(promise, state, isReject) { + if (state.notified) return; + state.notified = true; + var chain = state.reactions; + microtask(function () { + var value = state.value; + var ok = state.state == FULFILLED; + var index = 0; // variable length - can't use forEach + + while (chain.length > index) { + var reaction = chain[index++]; + var handler = ok ? reaction.ok : reaction.fail; + var resolve = reaction.resolve; + var reject = reaction.reject; + var domain = reaction.domain; + var result, then, exited; + + try { + if (handler) { + if (!ok) { + if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state); + state.rejection = HANDLED; + } + + if (handler === true) result = value;else { + if (domain) domain.enter(); + result = handler(value); // can throw + + if (domain) { + domain.exit(); + exited = true; + } + } + + if (result === reaction.promise) { + reject(TypeError$1('Promise-chain cycle')); + } else if (then = isThenable(result)) { + then.call(result, resolve, reject); + } else resolve(result); + } else reject(value); + } catch (error) { + if (domain && !exited) domain.exit(); + reject(error); + } + } + + state.reactions = []; + state.notified = false; + if (isReject && !state.rejection) onUnhandled(promise, state); + }); +}; + +var dispatchEvent = function dispatchEvent(name, promise, reason) { + var event, handler; + + if (DISPATCH_EVENT) { + event = document$2.createEvent('Event'); + event.promise = promise; + event.reason = reason; + event.initEvent(name, false, true); + global_1.dispatchEvent(event); + } else event = { + promise: promise, + reason: reason + }; + + if (handler = global_1['on' + name]) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason); +}; + +var onUnhandled = function onUnhandled(promise, state) { + task$1.call(global_1, function () { + var value = state.value; + var IS_UNHANDLED = isUnhandled(state); + var result; + + if (IS_UNHANDLED) { + result = perform(function () { + if (IS_NODE$1) { + process$4.emit('unhandledRejection', value, promise); + } else dispatchEvent(UNHANDLED_REJECTION, promise, value); + }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should + + state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED; + if (result.error) throw result.value; + } + }); +}; + +var isUnhandled = function isUnhandled(state) { + return state.rejection !== HANDLED && !state.parent; +}; + +var onHandleUnhandled = function onHandleUnhandled(promise, state) { + task$1.call(global_1, function () { + if (IS_NODE$1) { + process$4.emit('rejectionHandled', promise); + } else dispatchEvent(REJECTION_HANDLED, promise, state.value); + }); +}; + +var bind = function bind(fn, promise, state, unwrap) { + return function (value) { + fn(promise, state, value, unwrap); + }; +}; + +var internalReject = function internalReject(promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + state.value = value; + state.state = REJECTED; + notify$1(promise, state, true); +}; + +var internalResolve = function internalResolve(promise, state, value, unwrap) { + if (state.done) return; + state.done = true; + if (unwrap) state = unwrap; + + try { + if (promise === value) throw TypeError$1("Promise can't be resolved itself"); + var then = isThenable(value); + + if (then) { + microtask(function () { + var wrapper = { + done: false + }; + + try { + then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state)); + } catch (error) { + internalReject(promise, wrapper, error, state); + } + }); + } else { + state.value = value; + state.state = FULFILLED; + notify$1(promise, state, false); + } + } catch (error) { + internalReject(promise, { + done: false + }, error, state); + } +}; // constructor polyfill + + +if (FORCED) { + // 25.4.3.1 Promise(executor) + PromiseConstructor = function Promise(executor) { + anInstance(this, PromiseConstructor, PROMISE); + aFunction$1(executor); + Internal.call(this); + var state = getInternalState(this); + + try { + executor(bind(internalResolve, this, state), bind(internalReject, this, state)); + } catch (error) { + internalReject(this, state, error); + } + }; // eslint-disable-next-line no-unused-vars + + + Internal = function Promise(executor) { + setInternalState(this, { + type: PROMISE, + done: false, + notified: false, + parent: false, + reactions: [], + rejection: false, + state: PENDING, + value: undefined + }); + }; + + Internal.prototype = redefineAll(PromiseConstructor.prototype, { + // `Promise.prototype.then` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.then + then: function then(onFulfilled, onRejected) { + var state = getInternalPromiseState(this); + var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor)); + reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true; + reaction.fail = typeof onRejected == 'function' && onRejected; + reaction.domain = IS_NODE$1 ? process$4.domain : undefined; + state.parent = true; + state.reactions.push(reaction); + if (state.state != PENDING) notify$1(this, state, false); + return reaction.promise; + }, + // `Promise.prototype.catch` method + // https://tc39.github.io/ecma262/#sec-promise.prototype.catch + 'catch': function _catch(onRejected) { + return this.then(undefined, onRejected); + } + }); + + OwnPromiseCapability = function OwnPromiseCapability() { + var promise = new Internal(); + var state = getInternalState(promise); + this.promise = promise; + this.resolve = bind(internalResolve, promise, state); + this.reject = bind(internalReject, promise, state); + }; + + newPromiseCapability.f = newPromiseCapability$1 = function newPromiseCapability$1(C) { + return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C); + }; + + if (typeof nativePromiseConstructor == 'function') { + nativeThen = nativePromiseConstructor.prototype.then; // wrap native Promise#then for native async functions + + redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) { + var that = this; + return new PromiseConstructor(function (resolve, reject) { + nativeThen.call(that, resolve, reject); + }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640 + }, { + unsafe: true + }); // wrap fetch result + + if (typeof $fetch == 'function') _export({ + global: true, + enumerable: true, + forced: true + }, { + // eslint-disable-next-line no-unused-vars + fetch: function fetch(input + /* , init */ + ) { + return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments)); + } + }); + } +} + +_export({ + global: true, + wrap: true, + forced: FORCED +}, { + Promise: PromiseConstructor +}); + +setToStringTag(PromiseConstructor, PROMISE, false); +setSpecies(PROMISE); +PromiseWrapper = getBuiltIn(PROMISE); // statics + +_export({ + target: PROMISE, + stat: true, + forced: FORCED +}, { + // `Promise.reject` method + // https://tc39.github.io/ecma262/#sec-promise.reject + reject: function reject(r) { + var capability = newPromiseCapability$1(this); + capability.reject.call(undefined, r); + return capability.promise; + } +}); + +_export({ + target: PROMISE, + stat: true, + forced: FORCED +}, { + // `Promise.resolve` method + // https://tc39.github.io/ecma262/#sec-promise.resolve + resolve: function resolve(x) { + return promiseResolve(this, x); + } +}); + +_export({ + target: PROMISE, + stat: true, + forced: INCORRECT_ITERATION +}, { + // `Promise.all` method + // https://tc39.github.io/ecma262/#sec-promise.all + all: function all(iterable) { + var C = this; + var capability = newPromiseCapability$1(C); + var resolve = capability.resolve; + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction$1(C.resolve); + var values = []; + var counter = 0; + var remaining = 1; + iterate_1(iterable, function (promise) { + var index = counter++; + var alreadyCalled = false; + values.push(undefined); + remaining++; + $promiseResolve.call(C, promise).then(function (value) { + if (alreadyCalled) return; + alreadyCalled = true; + values[index] = value; + --remaining || resolve(values); + }, reject); + }); + --remaining || resolve(values); + }); + if (result.error) reject(result.value); + return capability.promise; + }, + // `Promise.race` method + // https://tc39.github.io/ecma262/#sec-promise.race + race: function race(iterable) { + var C = this; + var capability = newPromiseCapability$1(C); + var reject = capability.reject; + var result = perform(function () { + var $promiseResolve = aFunction$1(C.resolve); + iterate_1(iterable, function (promise) { + $promiseResolve.call(C, promise).then(capability.resolve, reject); + }); + }); + if (result.error) reject(result.value); + return capability.promise; + } +}); + +var FilePickerType; + +(function (FilePickerType) { + FilePickerType[FilePickerType["Choose"] = 1] = "Choose"; + FilePickerType[FilePickerType["Move"] = 2] = "Move"; + FilePickerType[FilePickerType["Copy"] = 3] = "Copy"; + FilePickerType[FilePickerType["CopyMove"] = 4] = "CopyMove"; +})(FilePickerType || (FilePickerType = {})); + +var FilePicker = +/** @class */ +function () { + function FilePicker(title, multiSelect, mimeTypeFilter, modal, type, directoriesAllowed, path) { + this.title = title; + this.multiSelect = multiSelect; + this.mimeTypeFiler = mimeTypeFilter; + this.modal = modal; + this.type = type; + this.directoriesAllowed = directoriesAllowed; + this.path = path; + } + + FilePicker.prototype.pick = function () { + var _this = this; + + return new Promise(function (res, rej) { + OC.dialogs.filepicker(_this.title, res, _this.multiSelect, _this.mimeTypeFiler, _this.modal, _this.type, _this.path, { + allowDirectoryChooser: _this.directoriesAllowed + }); + }); + }; + + return FilePicker; +}(); + +var FilePickerBuilder = +/** @class */ +function () { + function FilePickerBuilder(title) { + this.multiSelect = false; + this.mimeTypeFiler = []; + this.modal = true; + this.type = FilePickerType.Choose; + this.directoriesAllowed = false; + this.title = title; + } + + FilePickerBuilder.prototype.setMultiSelect = function (ms) { + this.multiSelect = ms; + return this; + }; + + FilePickerBuilder.prototype.addMimeTypeFilter = function (filter) { + this.mimeTypeFiler.push(filter); + return this; + }; + + FilePickerBuilder.prototype.setMimeTypeFilter = function (filter) { + this.mimeTypeFiler = filter; + return this; + }; + + FilePickerBuilder.prototype.setModal = function (modal) { + this.modal = modal; + return this; + }; + + FilePickerBuilder.prototype.setType = function (type) { + this.type = type; + return this; + }; + + FilePickerBuilder.prototype.allowDirectories = function (allow) { + if (allow === void 0) { + allow = true; + } + + this.directoriesAllowed = allow; + return this; + }; + + FilePickerBuilder.prototype.startAt = function (path) { + this.path = path; + return this; + }; + + FilePickerBuilder.prototype.build = function () { + return new FilePicker(this.title, this.multiSelect, this.mimeTypeFiler, this.modal, this.type, this.directoriesAllowed, this.path); + }; + + return FilePickerBuilder; +}(); + +function getFilePickerBuilder(title) { + return new FilePickerBuilder(title); +} // `Object.keys` method +// https://tc39.github.io/ecma262/#sec-object.keys + + +var objectKeys = Object.keys || function keys(O) { + return objectKeysInternal(O, enumBugKeys); +}; // `ToObject` abstract operation +// https://tc39.github.io/ecma262/#sec-toobject + + +var toObject = function toObject(argument) { + return Object(requireObjectCoercible(argument)); +}; + +var nativeAssign = Object.assign; +var defineProperty$1 = Object.defineProperty; // `Object.assign` method +// https://tc39.github.io/ecma262/#sec-object.assign + +var objectAssign = !nativeAssign || fails(function () { + // should have correct order of operations (Edge bug) + if (descriptors && nativeAssign({ + b: 1 + }, nativeAssign(defineProperty$1({}, 'a', { + enumerable: true, + get: function get() { + defineProperty$1(this, 'b', { + value: 3, + enumerable: false + }); + } + }), { + b: 2 + })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug) + + var A = {}; + var B = {}; // eslint-disable-next-line no-undef + + var symbol = Symbol(); + var alphabet = 'abcdefghijklmnopqrst'; + A[symbol] = 7; + alphabet.split('').forEach(function (chr) { + B[chr] = chr; + }); + return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet; +}) ? function assign(target, source) { + // eslint-disable-line no-unused-vars + var T = toObject(target); + var argumentsLength = arguments.length; + var index = 1; + var getOwnPropertySymbols = objectGetOwnPropertySymbols.f; + var propertyIsEnumerable = objectPropertyIsEnumerable.f; + + while (argumentsLength > index) { + var S = indexedObject(arguments[index++]); + var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S); + var length = keys.length; + var j = 0; + var key; + + while (length > j) { + key = keys[j++]; + if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key]; + } + } + + return T; +} : nativeAssign; // `Object.assign` method +// https://tc39.github.io/ecma262/#sec-object.assign + +_export({ + target: 'Object', + stat: true, + forced: Object.assign !== objectAssign +}, { + assign: objectAssign +}); + +var _assign = function __assign() { + _assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + + for (var p in s) { + if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + } + + return t; + }; + + return _assign.apply(this, arguments); +}; // `IsArray` abstract operation +// https://tc39.github.io/ecma262/#sec-isarray + + +var isArray = Array.isArray || function isArray(arg) { + return classofRaw(arg) == 'Array'; +}; + +var createProperty = function createProperty(object, key, value) { + var propertyKey = toPrimitive(key); + if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));else object[propertyKey] = value; +}; + +var SPECIES$3 = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation +// https://tc39.github.io/ecma262/#sec-arrayspeciescreate + +var arraySpeciesCreate = function arraySpeciesCreate(originalArray, length) { + var C; + + if (isArray(originalArray)) { + C = originalArray.constructor; // cross-realm fallback + + if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) { + C = C[SPECIES$3]; + if (C === null) C = undefined; + } + } + + return new (C === undefined ? Array : C)(length === 0 ? 0 : length); +}; + +var SPECIES$4 = wellKnownSymbol('species'); + +var arrayMethodHasSpeciesSupport = function arrayMethodHasSpeciesSupport(METHOD_NAME) { + // We can't use this feature detection in V8 since it causes + // deoptimization and serious performance degradation + // https://github.com/zloirock/core-js/issues/677 + return engineV8Version >= 51 || !fails(function () { + var array = []; + var constructor = array.constructor = {}; + + constructor[SPECIES$4] = function () { + return { + foo: 1 + }; + }; + + return array[METHOD_NAME](Boolean).foo !== 1; + }); +}; + +var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable'); +var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF; +var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes +// deoptimization and serious performance degradation +// https://github.com/zloirock/core-js/issues/679 + +var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () { + var array = []; + array[IS_CONCAT_SPREADABLE] = false; + return array.concat()[0] !== array; +}); +var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat'); + +var isConcatSpreadable = function isConcatSpreadable(O) { + if (!isObject(O)) return false; + var spreadable = O[IS_CONCAT_SPREADABLE]; + return spreadable !== undefined ? !!spreadable : isArray(O); +}; + +var FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method +// https://tc39.github.io/ecma262/#sec-array.prototype.concat +// with adding support of @@isConcatSpreadable and @@species + +_export({ + target: 'Array', + proto: true, + forced: FORCED$1 +}, { + concat: function concat(arg) { + // eslint-disable-line no-unused-vars + var O = toObject(this); + var A = arraySpeciesCreate(O, 0); + var n = 0; + var i, k, length, len, E; + + for (i = -1, length = arguments.length; i < length; i++) { + E = i === -1 ? O : arguments[i]; + + if (isConcatSpreadable(E)) { + len = toLength(E.length); + if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + + for (k = 0; k < len; k++, n++) { + if (k in E) createProperty(A, n, E[k]); + } + } else { + if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED); + createProperty(A, n++, E); + } + } + + A.length = n; + return A; + } +}); + +var arrayMethodIsStrict = function arrayMethodIsStrict(METHOD_NAME, argument) { + var method = [][METHOD_NAME]; + return !!method && fails(function () { + // eslint-disable-next-line no-useless-call,no-throw-literal + method.call(null, argument || function () { + throw 1; + }, 1); + }); +}; + +var defineProperty$2 = Object.defineProperty; +var cache = {}; + +var thrower = function thrower(it) { + throw it; +}; + +var arrayMethodUsesToLength = function arrayMethodUsesToLength(METHOD_NAME, options) { + if (has(cache, METHOD_NAME)) return cache[METHOD_NAME]; + if (!options) options = {}; + var method = [][METHOD_NAME]; + var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false; + var argument0 = has(options, 0) ? options[0] : thrower; + var argument1 = has(options, 1) ? options[1] : undefined; + return cache[METHOD_NAME] = !!method && !fails(function () { + if (ACCESSORS && !descriptors) return true; + var O = { + length: -1 + }; + if (ACCESSORS) defineProperty$2(O, 1, { + enumerable: true, + get: thrower + });else O[1] = 1; + method.call(O, argument0, argument1); + }); +}; + +var $indexOf = arrayIncludes.indexOf; +var nativeIndexOf = [].indexOf; +var NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0; +var STRICT_METHOD = arrayMethodIsStrict('indexOf'); +var USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', { + ACCESSORS: true, + 1: 0 +}); // `Array.prototype.indexOf` method +// https://tc39.github.io/ecma262/#sec-array.prototype.indexof + +_export({ + target: 'Array', + proto: true, + forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH +}, { + indexOf: function indexOf(searchElement + /* , fromIndex = 0 */ + ) { + return NEGATIVE_ZERO // convert -0 to +0 + ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined); + } +}); // `RegExp.prototype.flags` getter implementation +// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags + + +var regexpFlags = function regexpFlags() { + var that = anObject(this); + var result = ''; + if (that.global) result += 'g'; + if (that.ignoreCase) result += 'i'; + if (that.multiline) result += 'm'; + if (that.dotAll) result += 's'; + if (that.unicode) result += 'u'; + if (that.sticky) result += 'y'; + return result; +}; // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError, +// so we use an intermediate function. + + +function RE(s, f) { + return RegExp(s, f); +} + +var UNSUPPORTED_Y = fails(function () { + // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError + var re = RE('a', 'y'); + re.lastIndex = 2; + return re.exec('abcd') != null; +}); +var BROKEN_CARET = fails(function () { + // https://bugzilla.mozilla.org/show_bug.cgi?id=773687 + var re = RE('^r', 'gy'); + re.lastIndex = 2; + return re.exec('str') != null; +}); +var regexpStickyHelpers = { + UNSUPPORTED_Y: UNSUPPORTED_Y, + BROKEN_CARET: BROKEN_CARET +}; +var nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the +// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js, +// which loads this file before patching the method. + +var nativeReplace = String.prototype.replace; +var patchedExec = nativeExec; + +var UPDATES_LAST_INDEX_WRONG = function () { + var re1 = /a/; + var re2 = /b*/g; + nativeExec.call(re1, 'a'); + nativeExec.call(re2, 'a'); + return re1.lastIndex !== 0 || re2.lastIndex !== 0; +}(); + +var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch. + +var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined; +var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1; + +if (PATCH) { + patchedExec = function exec(str) { + var re = this; + var lastIndex, reCopy, match, i; + var sticky = UNSUPPORTED_Y$1 && re.sticky; + var flags = regexpFlags.call(re); + var source = re.source; + var charsAdded = 0; + var strCopy = str; + + if (sticky) { + flags = flags.replace('y', ''); + + if (flags.indexOf('g') === -1) { + flags += 'g'; + } + + strCopy = String(str).slice(re.lastIndex); // Support anchored sticky behavior. + + if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) { + source = '(?: ' + source + ')'; + strCopy = ' ' + strCopy; + charsAdded++; + } // ^(? + rx + ) is needed, in combination with some str slicing, to + // simulate the 'y' flag. + + + reCopy = new RegExp('^(?:' + source + ')', flags); + } + + if (NPCG_INCLUDED) { + reCopy = new RegExp('^' + source + '$(?!\\s)', flags); + } + + if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex; + match = nativeExec.call(sticky ? reCopy : re, strCopy); + + if (sticky) { + if (match) { + match.input = match.input.slice(charsAdded); + match[0] = match[0].slice(charsAdded); + match.index = re.lastIndex; + re.lastIndex += match[0].length; + } else re.lastIndex = 0; + } else if (UPDATES_LAST_INDEX_WRONG && match) { + re.lastIndex = re.global ? match.index + match[0].length : lastIndex; + } + + if (NPCG_INCLUDED && match && match.length > 1) { + // Fix browsers whose `exec` methods don't consistently return `undefined` + // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/ + nativeReplace.call(match[0], reCopy, function () { + for (i = 1; i < arguments.length - 2; i++) { + if (arguments[i] === undefined) match[i] = undefined; + } + }); + } + + return match; + }; +} + +var regexpExec = patchedExec; + +_export({ + target: 'RegExp', + proto: true, + forced: /./.exec !== regexpExec +}, { + exec: regexpExec +}); // TODO: Remove from `core-js@4` since it's moved to entry points + + +var SPECIES$5 = wellKnownSymbol('species'); +var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () { + // #replace needs built-in support for named groups. + // #match works fine because it just return the exec results, even if it has + // a "grops" property. + var re = /./; + + re.exec = function () { + var result = []; + result.groups = { + a: '7' + }; + return result; + }; + + return ''.replace(re, '$') !== '7'; +}); // IE <= 11 replaces $0 with the whole match, as if it was $& +// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0 + +var REPLACE_KEEPS_$0 = function () { + return 'a'.replace(/./, '$0') === '$0'; +}(); + +var REPLACE = wellKnownSymbol('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string + +var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () { + if (/./[REPLACE]) { + return /./[REPLACE]('a', '$0') === ''; + } + + return false; +}(); // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec +// Weex JS has frozen built-in prototypes, so use try / catch wrapper + + +var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () { + var re = /(?:)/; + var originalExec = re.exec; + + re.exec = function () { + return originalExec.apply(this, arguments); + }; + + var result = 'ab'.split(re); + return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b'; +}); + +var fixRegexpWellKnownSymbolLogic = function fixRegexpWellKnownSymbolLogic(KEY, length, exec, sham) { + var SYMBOL = wellKnownSymbol(KEY); + var DELEGATES_TO_SYMBOL = !fails(function () { + // String methods call symbol-named RegEp methods + var O = {}; + + O[SYMBOL] = function () { + return 7; + }; + + return ''[KEY](O) != 7; + }); + var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () { + // Symbol-named RegExp methods call .exec + var execCalled = false; + var re = /a/; + + if (KEY === 'split') { + // We can't use real regex here since it causes deoptimization + // and serious performance degradation in V8 + // https://github.com/zloirock/core-js/issues/306 + re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates + // a new one. We need to return the patched regex when creating the new one. + + re.constructor = {}; + + re.constructor[SPECIES$5] = function () { + return re; + }; + + re.flags = ''; + re[SYMBOL] = /./[SYMBOL]; + } + + re.exec = function () { + execCalled = true; + return null; + }; + + re[SYMBOL](''); + return !execCalled; + }); + + if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE) || KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) { + var nativeRegExpMethod = /./[SYMBOL]; + var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) { + if (regexp.exec === regexpExec) { + if (DELEGATES_TO_SYMBOL && !forceStringMethod) { + // The native String method already delegates to @@method (this + // polyfilled function), leasing to infinite recursion. + // We avoid it by directly calling the native @@method method. + return { + done: true, + value: nativeRegExpMethod.call(regexp, str, arg2) + }; + } + + return { + done: true, + value: nativeMethod.call(str, regexp, arg2) + }; + } + + return { + done: false + }; + }, { + REPLACE_KEEPS_$0: REPLACE_KEEPS_$0, + REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE + }); + var stringMethod = methods[0]; + var regexMethod = methods[1]; + redefine(String.prototype, KEY, stringMethod); + redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue) + // 21.2.5.11 RegExp.prototype[@@split](string, limit) + ? function (string, arg) { + return regexMethod.call(string, this, arg); + } // 21.2.5.6 RegExp.prototype[@@match](string) + // 21.2.5.9 RegExp.prototype[@@search](string) + : function (string) { + return regexMethod.call(string, this); + }); + } + + if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true); +}; // `String.prototype.{ codePointAt, at }` methods implementation + + +var createMethod$1 = function createMethod$1(CONVERT_TO_STRING) { + return function ($this, pos) { + var S = String(requireObjectCoercible($this)); + var position = toInteger(pos); + var size = S.length; + var first, second; + if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined; + first = S.charCodeAt(position); + return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000; + }; +}; + +var stringMultibyte = { + // `String.prototype.codePointAt` method + // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat + codeAt: createMethod$1(false), + // `String.prototype.at` method + // https://github.com/mathiasbynens/String.prototype.at + charAt: createMethod$1(true) +}; +var charAt = stringMultibyte.charAt; // `AdvanceStringIndex` abstract operation +// https://tc39.github.io/ecma262/#sec-advancestringindex + +var advanceStringIndex = function advanceStringIndex(S, index, unicode) { + return index + (unicode ? charAt(S, index).length : 1); +}; // `RegExpExec` abstract operation +// https://tc39.github.io/ecma262/#sec-regexpexec + + +var regexpExecAbstract = function regexpExecAbstract(R, S) { + var exec = R.exec; + + if (typeof exec === 'function') { + var result = exec.call(R, S); + + if (_typeof2(result) !== 'object') { + throw TypeError('RegExp exec method returned something other than an Object or null'); + } + + return result; + } + + if (classofRaw(R) !== 'RegExp') { + throw TypeError('RegExp#exec called on incompatible receiver'); + } + + return regexpExec.call(R, S); +}; + +var max$1 = Math.max; +var min$2 = Math.min; +var floor$1 = Math.floor; +var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d\d?|<[^>]*>)/g; +var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d\d?)/g; + +var maybeToString = function maybeToString(it) { + return it === undefined ? it : String(it); +}; // @@replace logic + + +fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) { + var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE; + var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0; + var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0'; + return [// `String.prototype.replace` method + // https://tc39.github.io/ecma262/#sec-string.prototype.replace + function replace(searchValue, replaceValue) { + var O = requireObjectCoercible(this); + var replacer = searchValue == undefined ? undefined : searchValue[REPLACE]; + return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue); + }, // `RegExp.prototype[@@replace]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace + function (regexp, replaceValue) { + if (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0 || typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) { + var res = maybeCallNative(nativeReplace, regexp, this, replaceValue); + if (res.done) return res.value; + } + + var rx = anObject(regexp); + var S = String(this); + var functionalReplace = typeof replaceValue === 'function'; + if (!functionalReplace) replaceValue = String(replaceValue); + var global = rx.global; + + if (global) { + var fullUnicode = rx.unicode; + rx.lastIndex = 0; + } + + var results = []; + + while (true) { + var result = regexpExecAbstract(rx, S); + if (result === null) break; + results.push(result); + if (!global) break; + var matchStr = String(result[0]); + if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode); + } + + var accumulatedResult = ''; + var nextSourcePosition = 0; + + for (var i = 0; i < results.length; i++) { + result = results[i]; + var matched = String(result[0]); + var position = max$1(min$2(toInteger(result.index), S.length), 0); + var captures = []; // NOTE: This is equivalent to + // captures = result.slice(1).map(maybeToString) + // but for some reason `nativeSlice.call(result, 1, result.length)` (called in + // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and + // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it. + + for (var j = 1; j < result.length; j++) { + captures.push(maybeToString(result[j])); + } + + var namedCaptures = result.groups; + + if (functionalReplace) { + var replacerArgs = [matched].concat(captures, position, S); + if (namedCaptures !== undefined) replacerArgs.push(namedCaptures); + var replacement = String(replaceValue.apply(undefined, replacerArgs)); + } else { + replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue); + } + + if (position >= nextSourcePosition) { + accumulatedResult += S.slice(nextSourcePosition, position) + replacement; + nextSourcePosition = position + matched.length; + } + } + + return accumulatedResult + S.slice(nextSourcePosition); + }]; // https://tc39.github.io/ecma262/#sec-getsubstitution + + function getSubstitution(matched, str, position, captures, namedCaptures, replacement) { + var tailPos = position + matched.length; + var m = captures.length; + var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED; + + if (namedCaptures !== undefined) { + namedCaptures = toObject(namedCaptures); + symbols = SUBSTITUTION_SYMBOLS; + } + + return nativeReplace.call(replacement, symbols, function (match, ch) { + var capture; + + switch (ch.charAt(0)) { + case '$': + return '$'; + + case '&': + return matched; + + case '`': + return str.slice(0, position); + + case "'": + return str.slice(tailPos); + + case '<': + capture = namedCaptures[ch.slice(1, -1)]; + break; + + default: + // \d\d? + var n = +ch; + if (n === 0) return match; + + if (n > m) { + var f = floor$1(n / 10); + if (f === 0) return match; + if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1); + return match; + } + + capture = captures[n - 1]; + } + + return capture === undefined ? '' : capture; + }); + } +}); +var MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation +// https://tc39.github.io/ecma262/#sec-isregexp + +var isRegexp = function isRegexp(it) { + var isRegExp; + return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp'); +}; + +var arrayPush = [].push; +var min$3 = Math.min; +var MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError + +var SUPPORTS_Y = !fails(function () { + return !RegExp(MAX_UINT32, 'y'); +}); // @@split logic + +fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) { + var internalSplit; + + if ('abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length) { + // based on es5-shim implementation, need to rework it + internalSplit = function internalSplit(separator, limit) { + var string = String(requireObjectCoercible(this)); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (separator === undefined) return [string]; // If `separator` is not a regex, use native split + + if (!isRegexp(separator)) { + return nativeSplit.call(string, separator, lim); + } + + var output = []; + var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : ''); + var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy + + var separatorCopy = new RegExp(separator.source, flags + 'g'); + var match, lastIndex, lastLength; + + while (match = regexpExec.call(separatorCopy, string)) { + lastIndex = separatorCopy.lastIndex; + + if (lastIndex > lastLastIndex) { + output.push(string.slice(lastLastIndex, match.index)); + if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1)); + lastLength = match[0].length; + lastLastIndex = lastIndex; + if (output.length >= lim) break; + } + + if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop + } + + if (lastLastIndex === string.length) { + if (lastLength || !separatorCopy.test('')) output.push(''); + } else output.push(string.slice(lastLastIndex)); + + return output.length > lim ? output.slice(0, lim) : output; + }; // Chakra, V8 + + } else if ('0'.split(undefined, 0).length) { + internalSplit = function internalSplit(separator, limit) { + return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit); + }; + } else internalSplit = nativeSplit; + + return [// `String.prototype.split` method + // https://tc39.github.io/ecma262/#sec-string.prototype.split + function split(separator, limit) { + var O = requireObjectCoercible(this); + var splitter = separator == undefined ? undefined : separator[SPLIT]; + return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit); + }, // `RegExp.prototype[@@split]` method + // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split + // + // NOTE: This cannot be properly polyfilled in engines that don't support + // the 'y' flag. + function (regexp, limit) { + var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit); + if (res.done) return res.value; + var rx = anObject(regexp); + var S = String(this); + var C = speciesConstructor(rx, RegExp); + var unicodeMatching = rx.unicode; + var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to + // simulate the 'y' flag. + + var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags); + var lim = limit === undefined ? MAX_UINT32 : limit >>> 0; + if (lim === 0) return []; + if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : []; + var p = 0; + var q = 0; + var A = []; + + while (q < S.length) { + splitter.lastIndex = SUPPORTS_Y ? q : 0; + var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q)); + var e; + + if (z === null || (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p) { + q = advanceStringIndex(S, q, unicodeMatching); + } else { + A.push(S.slice(p, q)); + if (A.length === lim) return A; + + for (var i = 1; i <= z.length - 1; i++) { + A.push(z[i]); + if (A.length === lim) return A; + } + + q = p = e; + } + } + + A.push(S.slice(p)); + return A; + }]; +}, !SUPPORTS_Y); // a string of all valid unicode whitespaces +// eslint-disable-next-line max-len + +var whitespaces = "\t\n\x0B\f\r \xA0\u1680\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028\u2029\uFEFF"; +var whitespace = '[' + whitespaces + ']'; +var ltrim = RegExp('^' + whitespace + whitespace + '*'); +var rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation + +var createMethod$2 = function createMethod$2(TYPE) { + return function ($this) { + var string = String(requireObjectCoercible($this)); + if (TYPE & 1) string = string.replace(ltrim, ''); + if (TYPE & 2) string = string.replace(rtrim, ''); + return string; + }; +}; + +var stringTrim = { + // `String.prototype.{ trimLeft, trimStart }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart + start: createMethod$2(1), + // `String.prototype.{ trimRight, trimEnd }` methods + // https://tc39.github.io/ecma262/#sec-string.prototype.trimend + end: createMethod$2(2), + // `String.prototype.trim` method + // https://tc39.github.io/ecma262/#sec-string.prototype.trim + trim: createMethod$2(3) +}; +var non = "\u200B\x85\u180E"; // check that a method works with the correct list +// of whitespaces and has a correct name + +var stringTrimForced = function stringTrimForced(METHOD_NAME) { + return fails(function () { + return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME; + }); +}; + +var $trim = stringTrim.trim; // `String.prototype.trim` method +// https://tc39.github.io/ecma262/#sec-string.prototype.trim + +_export({ + target: 'String', + proto: true, + forced: stringTrimForced('trim') +}, { + trim: function trim() { + return $trim(this); + } +}); + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function _typeof(obj) { + return typeof obj; + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +var toastify = createCommonjsModule(function (module) { + /*! + * Toastify js 1.9.1 + * https://github.com/apvarun/toastify-js + * @license MIT licensed + * + * Copyright (C) 2018 Varun A P + */ + (function (root, factory) { + if (module.exports) { + module.exports = factory(); + } else { + root.Toastify = factory(); + } + })(commonjsGlobal, function (global) { + // Object initialization + var Toastify = function Toastify(options) { + // Returning a new init object + return new Toastify.lib.init(options); + }, + // Library version + version = "1.9.1"; // Defining the prototype of the object + + + Toastify.lib = Toastify.prototype = { + toastify: version, + constructor: Toastify, + // Initializing the object with required parameters + init: function init(options) { + // Verifying and validating the input object + if (!options) { + options = {}; + } // Creating the options object + + + this.options = {}; + this.toastElement = null; // Validating the options + + this.options.text = options.text || "Hi there!"; // Display message + + this.options.node = options.node; // Display content as node + + this.options.duration = options.duration === 0 ? 0 : options.duration || 3000; // Display duration + + this.options.selector = options.selector; // Parent selector + + this.options.callback = options.callback || function () {}; // Callback after display + + + this.options.destination = options.destination; // On-click destination + + this.options.newWindow = options.newWindow || false; // Open destination in new window + + this.options.close = options.close || false; // Show toast close icon + + this.options.gravity = options.gravity === "bottom" ? "toastify-bottom" : "toastify-top"; // toast position - top or bottom + + this.options.positionLeft = options.positionLeft || false; // toast position - left or right + + this.options.position = options.position || ''; // toast position - left or right + + this.options.backgroundColor = options.backgroundColor; // toast background color + + this.options.avatar = options.avatar || ""; // img element src - url or a path + + this.options.className = options.className || ""; // additional class names for the toast + + this.options.stopOnFocus = options.stopOnFocus === undefined ? true : options.stopOnFocus; // stop timeout on focus + + this.options.onClick = options.onClick; // Callback after click + + var normalOffset = { + x: 0, + y: 0 + }; + this.options.offset = options.offset || normalOffset; // toast offset + // Returning the current object for chaining functions + + return this; + }, + // Building the DOM element + buildToast: function buildToast() { + // Validating if the options are defined + if (!this.options) { + throw "Toastify is not initialized"; + } // Creating the DOM object + + + var divElement = document.createElement("div"); + divElement.className = "toastify on " + this.options.className; // Positioning toast to left or right or center + + if (!!this.options.position) { + divElement.className += " toastify-" + this.options.position; + } else { + // To be depreciated in further versions + if (this.options.positionLeft === true) { + divElement.className += " toastify-left"; + console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.'); + } else { + // Default position + divElement.className += " toastify-right"; + } + } // Assigning gravity of element + + + divElement.className += " " + this.options.gravity; + + if (this.options.backgroundColor) { + divElement.style.background = this.options.backgroundColor; + } // Adding the toast message/node + + + if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) { + // If we have a valid node, we insert it + divElement.appendChild(this.options.node); + } else { + divElement.innerHTML = this.options.text; + + if (this.options.avatar !== "") { + var avatarElement = document.createElement("img"); + avatarElement.src = this.options.avatar; + avatarElement.className = "toastify-avatar"; + + if (this.options.position == "left" || this.options.positionLeft === true) { + // Adding close icon on the left of content + divElement.appendChild(avatarElement); + } else { + // Adding close icon on the right of content + divElement.insertAdjacentElement("afterbegin", avatarElement); + } + } + } // Adding a close icon to the toast + + + if (this.options.close === true) { + // Create a span for close element + var closeElement = document.createElement("span"); + closeElement.innerHTML = "✖"; + closeElement.className = "toast-close"; // Triggering the removal of toast from DOM on close click + + closeElement.addEventListener("click", function (event) { + event.stopPropagation(); + this.removeElement(this.toastElement); + window.clearTimeout(this.toastElement.timeOutValue); + }.bind(this)); //Calculating screen width + + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Adding the close icon to the toast element + // Display on the right if screen width is less than or equal to 360px + + if ((this.options.position == "left" || this.options.positionLeft === true) && width > 360) { + // Adding close icon on the left of content + divElement.insertAdjacentElement("afterbegin", closeElement); + } else { + // Adding close icon on the right of content + divElement.appendChild(closeElement); + } + } // Clear timeout while toast is focused + + + if (this.options.stopOnFocus && this.options.duration > 0) { + var self = this; // stop countdown + + divElement.addEventListener("mouseover", function (event) { + window.clearTimeout(divElement.timeOutValue); + }); // add back the timeout + + divElement.addEventListener("mouseleave", function () { + divElement.timeOutValue = window.setTimeout(function () { + // Remove the toast from DOM + self.removeElement(divElement); + }, self.options.duration); + }); + } // Adding an on-click destination path + + + if (typeof this.options.destination !== "undefined") { + divElement.addEventListener("click", function (event) { + event.stopPropagation(); + + if (this.options.newWindow === true) { + window.open(this.options.destination, "_blank"); + } else { + window.location = this.options.destination; + } + }.bind(this)); + } + + if (typeof this.options.onClick === "function" && typeof this.options.destination === "undefined") { + divElement.addEventListener("click", function (event) { + event.stopPropagation(); + this.options.onClick(); + }.bind(this)); + } // Adding offset + + + if (_typeof(this.options.offset) === "object") { + var x = getAxisOffsetAValue("x", this.options); + var y = getAxisOffsetAValue("y", this.options); + var xOffset = this.options.position == "left" ? x : "-".concat(x); + var yOffset = this.options.gravity == "toastify-top" ? y : "-".concat(y); + divElement.style.transform = "translate(".concat(xOffset, ", ").concat(yOffset, ")"); + } // Returning the generated element + + + return divElement; + }, + // Displaying the toast + showToast: function showToast() { + // Creating the DOM object for the toast + this.toastElement = this.buildToast(); // Getting the root element to with the toast needs to be added + + var rootElement; + + if (typeof this.options.selector === "undefined") { + rootElement = document.body; + } else { + rootElement = document.getElementById(this.options.selector); + } // Validating if root element is present in DOM + + + if (!rootElement) { + throw "Root element is not defined"; + } // Adding the DOM element + + + rootElement.insertBefore(this.toastElement, rootElement.firstChild); // Repositioning the toasts in case multiple toasts are present + + Toastify.reposition(); + + if (this.options.duration > 0) { + this.toastElement.timeOutValue = window.setTimeout(function () { + // Remove the toast from DOM + this.removeElement(this.toastElement); + }.bind(this), this.options.duration); // Binding `this` for function invocation + } // Supporting function chaining + + + return this; + }, + hideToast: function hideToast() { + if (this.toastElement.timeOutValue) { + clearTimeout(this.toastElement.timeOutValue); + } + + this.removeElement(this.toastElement); + }, + // Removing the element from the DOM + removeElement: function removeElement(toastElement) { + // Hiding the element + // toastElement.classList.remove("on"); + toastElement.className = toastElement.className.replace(" on", ""); // Removing the element from DOM after transition end + + window.setTimeout(function () { + // remove options node if any + if (this.options.node && this.options.node.parentNode) { + this.options.node.parentNode.removeChild(this.options.node); + } // Remove the elemenf from the DOM, only when the parent node was not removed before. + + + if (toastElement.parentNode) { + toastElement.parentNode.removeChild(toastElement); + } // Calling the callback function + + + this.options.callback.call(toastElement); // Repositioning the toasts again + + Toastify.reposition(); + }.bind(this), 400); // Binding `this` for function invocation + } + }; // Positioning the toasts on the DOM + + Toastify.reposition = function () { + // Top margins with gravity + var topLeftOffsetSize = { + top: 15, + bottom: 15 + }; + var topRightOffsetSize = { + top: 15, + bottom: 15 + }; + var offsetSize = { + top: 15, + bottom: 15 + }; // Get all toast messages on the DOM + + var allToasts = document.getElementsByClassName("toastify"); + var classUsed; // Modifying the position of each toast element + + for (var i = 0; i < allToasts.length; i++) { + // Getting the applied gravity + if (containsClass(allToasts[i], "toastify-top") === true) { + classUsed = "toastify-top"; + } else { + classUsed = "toastify-bottom"; + } + + var height = allToasts[i].offsetHeight; + classUsed = classUsed.substr(9, classUsed.length - 1); // Spacing between toasts + + var offset = 15; + var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Show toast in center if screen with less than or qual to 360px + + if (width <= 360) { + // Setting the position + allToasts[i].style[classUsed] = offsetSize[classUsed] + "px"; + offsetSize[classUsed] += height + offset; + } else { + if (containsClass(allToasts[i], "toastify-left") === true) { + // Setting the position + allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + "px"; + topLeftOffsetSize[classUsed] += height + offset; + } else { + // Setting the position + allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + "px"; + topRightOffsetSize[classUsed] += height + offset; + } + } + } // Supporting function chaining + + + return this; + }; // Helper function to get offset. + + + function getAxisOffsetAValue(axis, options) { + if (options.offset[axis]) { + if (isNaN(options.offset[axis])) { + return options.offset[axis]; + } else { + return options.offset[axis] + 'px'; + } + } + + return '0px'; + } + + function containsClass(elem, yourClass) { + if (!elem || typeof yourClass !== "string") { + return false; + } else if (elem.className && elem.className.trim().split(/\s+/gi).indexOf(yourClass) > -1) { + return true; + } else { + return false; + } + } // Setting up the prototype for the init object + + + Toastify.lib.init.prototype = Toastify.lib; // Returning the Toastify function to be assigned to the window object/module + + return Toastify; + }); +}); +var push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation + +var createMethod$3 = function createMethod$3(TYPE) { + var IS_MAP = TYPE == 1; + var IS_FILTER = TYPE == 2; + var IS_SOME = TYPE == 3; + var IS_EVERY = TYPE == 4; + var IS_FIND_INDEX = TYPE == 6; + var NO_HOLES = TYPE == 5 || IS_FIND_INDEX; + return function ($this, callbackfn, that, specificCreate) { + var O = toObject($this); + var self = indexedObject(O); + var boundFunction = functionBindContext(callbackfn, that, 3); + var length = toLength(self.length); + var index = 0; + var create = specificCreate || arraySpeciesCreate; + var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined; + var value, result; + + for (; length > index; index++) { + if (NO_HOLES || index in self) { + value = self[index]; + result = boundFunction(value, index, O); + + if (TYPE) { + if (IS_MAP) target[index] = result; // map + else if (result) switch (TYPE) { + case 3: + return true; + // some + + case 5: + return value; + // find + + case 6: + return index; + // findIndex + + case 2: + push.call(target, value); + // filter + } else if (IS_EVERY) return false; // every + } + } + } + + return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target; + }; +}; + +var arrayIteration = { + // `Array.prototype.forEach` method + // https://tc39.github.io/ecma262/#sec-array.prototype.foreach + forEach: createMethod$3(0), + // `Array.prototype.map` method + // https://tc39.github.io/ecma262/#sec-array.prototype.map + map: createMethod$3(1), + // `Array.prototype.filter` method + // https://tc39.github.io/ecma262/#sec-array.prototype.filter + filter: createMethod$3(2), + // `Array.prototype.some` method + // https://tc39.github.io/ecma262/#sec-array.prototype.some + some: createMethod$3(3), + // `Array.prototype.every` method + // https://tc39.github.io/ecma262/#sec-array.prototype.every + every: createMethod$3(4), + // `Array.prototype.find` method + // https://tc39.github.io/ecma262/#sec-array.prototype.find + find: createMethod$3(5), + // `Array.prototype.findIndex` method + // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex + findIndex: createMethod$3(6) +}; +var $map = arrayIteration.map; +var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); // FF49- issue + +var USES_TO_LENGTH$1 = arrayMethodUsesToLength('map'); // `Array.prototype.map` method +// https://tc39.github.io/ecma262/#sec-array.prototype.map +// with adding support of @@species + +_export({ + target: 'Array', + proto: true, + forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$1 +}, { + map: function map(callbackfn + /* , thisArg */ + ) { + return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined); + } +}); + +var TO_STRING = 'toString'; +var RegExpPrototype = RegExp.prototype; +var nativeToString = RegExpPrototype[TO_STRING]; +var NOT_GENERIC = fails(function () { + return nativeToString.call({ + source: 'a', + flags: 'b' + }) != '/a/b'; +}); // FF44- RegExp#toString has a wrong name + +var INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method +// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring + +if (NOT_GENERIC || INCORRECT_NAME) { + redefine(RegExp.prototype, TO_STRING, function toString() { + var R = anObject(this); + var p = String(R.source); + var rf = R.flags; + var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf); + return '/' + p + '/' + f; + }, { + unsafe: true + }); +} +/** + * lodash (Custom Build) + * Build: `lodash modularize exports="npm" -o ./` + * Copyright jQuery Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** Used as the `TypeError` message for "Functions" methods. */ + + +var FUNC_ERROR_TEXT = 'Expected a function'; +/** Used to stand-in for `undefined` hash values. */ + +var HASH_UNDEFINED = '__lodash_hash_undefined__'; +/** Used as references for various `Number` constants. */ + +var INFINITY = 1 / 0; +/** `Object#toString` result references. */ + +var funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + symbolTag = '[object Symbol]'; +/** Used to match property names within property paths. */ + +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/, + reLeadingDot = /^\./, + rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; +/** + * Used to match `RegExp` + * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). + */ + +var reRegExpChar = /[\\^$.*+?()[\]{}|]/g; +/** Used to match backslashes in property paths. */ + +var reEscapeChar = /\\(\\)?/g; +/** Used to detect host constructors (Safari). */ + +var reIsHostCtor = /^\[object .+?Constructor\]$/; +/** Detect free variable `global` from Node.js. */ + +var freeGlobal = _typeof2(commonjsGlobal) == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal; +/** Detect free variable `self`. */ + +var freeSelf = (typeof self === "undefined" ? "undefined" : _typeof2(self)) == 'object' && self && self.Object === Object && self; +/** Used as a reference to the global object. */ + +var root = freeGlobal || freeSelf || Function('return this')(); +/** + * Gets the value at `key` of `object`. + * + * @private + * @param {Object} [object] The object to query. + * @param {string} key The key of the property to get. + * @returns {*} Returns the property value. + */ + +function getValue(object, key) { + return object == null ? undefined : object[key]; +} +/** + * Checks if `value` is a host object in IE < 9. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a host object, else `false`. + */ + + +function isHostObject(value) { + // Many host objects are `Object` objects that can coerce to strings + // despite having improperly defined `toString` methods. + var result = false; + + if (value != null && typeof value.toString != 'function') { + try { + result = !!(value + ''); + } catch (e) {} + } + + return result; +} +/** Used for built-in method references. */ + + +var arrayProto = Array.prototype, + funcProto = Function.prototype, + objectProto = Object.prototype; +/** Used to detect overreaching core-js shims. */ + +var coreJsData = root['__core-js_shared__']; +/** Used to detect methods masquerading as native. */ + +var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; +}(); +/** Used to resolve the decompiled source of functions. */ + + +var funcToString = funcProto.toString; +/** Used to check objects for own properties. */ + +var hasOwnProperty$1 = objectProto.hasOwnProperty; +/** + * Used to resolve the + * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) + * of values. + */ + +var objectToString$1 = objectProto.toString; +/** Used to detect if a method is native. */ + +var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty$1).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); +/** Built-in value references. */ + +var Symbol$2 = root.Symbol, + splice = arrayProto.splice; +/* Built-in method references that are verified to be native. */ + +var Map = getNative(root, 'Map'), + nativeCreate = getNative(Object, 'create'); +/** Used to convert symbols to primitives and strings. */ + +var symbolProto = Symbol$2 ? Symbol$2.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; +/** + * Creates a hash object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + +function Hash(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +/** + * Removes all key-value entries from the hash. + * + * @private + * @name clear + * @memberOf Hash + */ + + +function hashClear() { + this.__data__ = nativeCreate ? nativeCreate(null) : {}; +} +/** + * Removes `key` and its value from the hash. + * + * @private + * @name delete + * @memberOf Hash + * @param {Object} hash The hash to modify. + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + + +function hashDelete(key) { + return this.has(key) && delete this.__data__[key]; +} +/** + * Gets the hash value for `key`. + * + * @private + * @name get + * @memberOf Hash + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + + +function hashGet(key) { + var data = this.__data__; + + if (nativeCreate) { + var result = data[key]; + return result === HASH_UNDEFINED ? undefined : result; + } + + return hasOwnProperty$1.call(data, key) ? data[key] : undefined; +} +/** + * Checks if a hash value for `key` exists. + * + * @private + * @name has + * @memberOf Hash + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + + +function hashHas(key) { + var data = this.__data__; + return nativeCreate ? data[key] !== undefined : hasOwnProperty$1.call(data, key); +} +/** + * Sets the hash `key` to `value`. + * + * @private + * @name set + * @memberOf Hash + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the hash instance. + */ + + +function hashSet(key, value) { + var data = this.__data__; + data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; + return this; +} // Add methods to `Hash`. + + +Hash.prototype.clear = hashClear; +Hash.prototype['delete'] = hashDelete; +Hash.prototype.get = hashGet; +Hash.prototype.has = hashHas; +Hash.prototype.set = hashSet; +/** + * Creates an list cache object. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + +function ListCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +/** + * Removes all key-value entries from the list cache. + * + * @private + * @name clear + * @memberOf ListCache + */ + + +function listCacheClear() { + this.__data__ = []; +} +/** + * Removes `key` and its value from the list cache. + * + * @private + * @name delete + * @memberOf ListCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + + +function listCacheDelete(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + return false; + } + + var lastIndex = data.length - 1; + + if (index == lastIndex) { + data.pop(); + } else { + splice.call(data, index, 1); + } + + return true; +} +/** + * Gets the list cache value for `key`. + * + * @private + * @name get + * @memberOf ListCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + + +function listCacheGet(key) { + var data = this.__data__, + index = assocIndexOf(data, key); + return index < 0 ? undefined : data[index][1]; +} +/** + * Checks if a list cache value for `key` exists. + * + * @private + * @name has + * @memberOf ListCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + + +function listCacheHas(key) { + return assocIndexOf(this.__data__, key) > -1; +} +/** + * Sets the list cache `key` to `value`. + * + * @private + * @name set + * @memberOf ListCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the list cache instance. + */ + + +function listCacheSet(key, value) { + var data = this.__data__, + index = assocIndexOf(data, key); + + if (index < 0) { + data.push([key, value]); + } else { + data[index][1] = value; + } + + return this; +} // Add methods to `ListCache`. + + +ListCache.prototype.clear = listCacheClear; +ListCache.prototype['delete'] = listCacheDelete; +ListCache.prototype.get = listCacheGet; +ListCache.prototype.has = listCacheHas; +ListCache.prototype.set = listCacheSet; +/** + * Creates a map cache object to store key-value pairs. + * + * @private + * @constructor + * @param {Array} [entries] The key-value pairs to cache. + */ + +function MapCache(entries) { + var index = -1, + length = entries ? entries.length : 0; + this.clear(); + + while (++index < length) { + var entry = entries[index]; + this.set(entry[0], entry[1]); + } +} +/** + * Removes all key-value entries from the map. + * + * @private + * @name clear + * @memberOf MapCache + */ + + +function mapCacheClear() { + this.__data__ = { + 'hash': new Hash(), + 'map': new (Map || ListCache)(), + 'string': new Hash() + }; +} +/** + * Removes `key` and its value from the map. + * + * @private + * @name delete + * @memberOf MapCache + * @param {string} key The key of the value to remove. + * @returns {boolean} Returns `true` if the entry was removed, else `false`. + */ + + +function mapCacheDelete(key) { + return getMapData(this, key)['delete'](key); +} +/** + * Gets the map value for `key`. + * + * @private + * @name get + * @memberOf MapCache + * @param {string} key The key of the value to get. + * @returns {*} Returns the entry value. + */ + + +function mapCacheGet(key) { + return getMapData(this, key).get(key); +} +/** + * Checks if a map value for `key` exists. + * + * @private + * @name has + * @memberOf MapCache + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + + +function mapCacheHas(key) { + return getMapData(this, key).has(key); +} +/** + * Sets the map `key` to `value`. + * + * @private + * @name set + * @memberOf MapCache + * @param {string} key The key of the value to set. + * @param {*} value The value to set. + * @returns {Object} Returns the map cache instance. + */ + + +function mapCacheSet(key, value) { + getMapData(this, key).set(key, value); + return this; +} // Add methods to `MapCache`. + + +MapCache.prototype.clear = mapCacheClear; +MapCache.prototype['delete'] = mapCacheDelete; +MapCache.prototype.get = mapCacheGet; +MapCache.prototype.has = mapCacheHas; +MapCache.prototype.set = mapCacheSet; +/** + * Gets the index at which the `key` is found in `array` of key-value pairs. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} key The key to search for. + * @returns {number} Returns the index of the matched value, else `-1`. + */ + +function assocIndexOf(array, key) { + var length = array.length; + + while (length--) { + if (eq(array[length][0], key)) { + return length; + } + } + + return -1; +} +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ + + +function baseGet(object, path) { + path = isKey(path, object) ? [path] : castPath(path); + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[toKey(path[index++])]; + } + + return index && index == length ? object : undefined; +} +/** + * The base implementation of `_.isNative` without bad shim checks. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a native function, + * else `false`. + */ + + +function baseIsNative(value) { + if (!isObject$1(value) || isMasked(value)) { + return false; + } + + var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + return pattern.test(toSource(value)); +} +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ + + +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + + if (isSymbol(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; +} +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @returns {Array} Returns the cast property path array. + */ + + +function castPath(value) { + return isArray$1(value) ? value : stringToPath(value); +} +/** + * Gets the data for `map`. + * + * @private + * @param {Object} map The map to query. + * @param {string} key The reference key. + * @returns {*} Returns the map data. + */ + + +function getMapData(map, key) { + var data = map.__data__; + return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map; +} +/** + * Gets the native function at `key` of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {string} key The key of the method to get. + * @returns {*} Returns the function if it's native, else `undefined`. + */ + + +function getNative(object, key) { + var value = getValue(object, key); + return baseIsNative(value) ? value : undefined; +} +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ + + +function isKey(value, object) { + if (isArray$1(value)) { + return false; + } + + var type = _typeof2(value); + + if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) { + return true; + } + + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object); +} +/** + * Checks if `value` is suitable for use as unique object key. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is suitable, else `false`. + */ + + +function isKeyable(value) { + var type = _typeof2(value); + + return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null; +} +/** + * Checks if `func` has its source masked. + * + * @private + * @param {Function} func The function to check. + * @returns {boolean} Returns `true` if `func` is masked, else `false`. + */ + + +function isMasked(func) { + return !!maskSrcKey && maskSrcKey in func; +} +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ + + +var stringToPath = memoize(function (string) { + string = toString$1(string); + var result = []; + + if (reLeadingDot.test(string)) { + result.push(''); + } + + string.replace(rePropName, function (match, number, quote, string) { + result.push(quote ? string.replace(reEscapeChar, '$1') : number || match); + }); + return result; +}); +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ + +function toKey(value) { + if (typeof value == 'string' || isSymbol(value)) { + return value; + } + + var result = value + ''; + return result == '0' && 1 / value == -INFINITY ? '-0' : result; +} +/** + * Converts `func` to its source code. + * + * @private + * @param {Function} func The function to process. + * @returns {string} Returns the source code. + */ + + +function toSource(func) { + if (func != null) { + try { + return funcToString.call(func); + } catch (e) {} + + try { + return func + ''; + } catch (e) {} + } + + return ''; +} +/** + * Creates a function that memoizes the result of `func`. If `resolver` is + * provided, it determines the cache key for storing the result based on the + * arguments provided to the memoized function. By default, the first argument + * provided to the memoized function is used as the map cache key. The `func` + * is invoked with the `this` binding of the memoized function. + * + * **Note:** The cache is exposed as the `cache` property on the memoized + * function. Its creation may be customized by replacing the `_.memoize.Cache` + * constructor with one whose instances implement the + * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object) + * method interface of `delete`, `get`, `has`, and `set`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Function + * @param {Function} func The function to have its output memoized. + * @param {Function} [resolver] The function to resolve the cache key. + * @returns {Function} Returns the new memoized function. + * @example + * + * var object = { 'a': 1, 'b': 2 }; + * var other = { 'c': 3, 'd': 4 }; + * + * var values = _.memoize(_.values); + * values(object); + * // => [1, 2] + * + * values(other); + * // => [3, 4] + * + * object.a = 2; + * values(object); + * // => [1, 2] + * + * // Modify the result cache. + * values.cache.set(object, ['a', 'b']); + * values(object); + * // => ['a', 'b'] + * + * // Replace `_.memoize.Cache`. + * _.memoize.Cache = WeakMap; + */ + + +function memoize(func, resolver) { + if (typeof func != 'function' || resolver && typeof resolver != 'function') { + throw new TypeError(FUNC_ERROR_TEXT); + } + + var memoized = function memoized() { + var args = arguments, + key = resolver ? resolver.apply(this, args) : args[0], + cache = memoized.cache; + + if (cache.has(key)) { + return cache.get(key); + } + + var result = func.apply(this, args); + memoized.cache = cache.set(key, result); + return result; + }; + + memoized.cache = new (memoize.Cache || MapCache)(); + return memoized; +} // Assign cache to `_.memoize`. + + +memoize.Cache = MapCache; +/** + * Performs a + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * comparison between two values to determine if they are equivalent. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + * @example + * + * var object = { 'a': 1 }; + * var other = { 'a': 1 }; + * + * _.eq(object, object); + * // => true + * + * _.eq(object, other); + * // => false + * + * _.eq('a', 'a'); + * // => true + * + * _.eq('a', Object('a')); + * // => false + * + * _.eq(NaN, NaN); + * // => true + */ + +function eq(value, other) { + return value === other || value !== value && other !== other; +} +/** + * Checks if `value` is classified as an `Array` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an array, else `false`. + * @example + * + * _.isArray([1, 2, 3]); + * // => true + * + * _.isArray(document.body.children); + * // => false + * + * _.isArray('abc'); + * // => false + * + * _.isArray(_.noop); + * // => false + */ + + +var isArray$1 = Array.isArray; +/** + * Checks if `value` is classified as a `Function` object. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a function, else `false`. + * @example + * + * _.isFunction(_); + * // => true + * + * _.isFunction(/abc/); + * // => false + */ + +function isFunction(value) { + // The use of `Object#toString` avoids issues with the `typeof` operator + // in Safari 8-9 which returns 'object' for typed array and other constructors. + var tag = isObject$1(value) ? objectToString$1.call(value) : ''; + return tag == funcTag || tag == genTag; +} +/** + * Checks if `value` is the + * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types) + * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`) + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an object, else `false`. + * @example + * + * _.isObject({}); + * // => true + * + * _.isObject([1, 2, 3]); + * // => true + * + * _.isObject(_.noop); + * // => true + * + * _.isObject(null); + * // => false + */ + + +function isObject$1(value) { + var type = _typeof2(value); + + return !!value && (type == 'object' || type == 'function'); +} +/** + * Checks if `value` is object-like. A value is object-like if it's not `null` + * and has a `typeof` result of "object". + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is object-like, else `false`. + * @example + * + * _.isObjectLike({}); + * // => true + * + * _.isObjectLike([1, 2, 3]); + * // => true + * + * _.isObjectLike(_.noop); + * // => false + * + * _.isObjectLike(null); + * // => false + */ + + +function isObjectLike(value) { + return !!value && _typeof2(value) == 'object'; +} +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ + + +function isSymbol(value) { + return _typeof2(value) == 'symbol' || isObjectLike(value) && objectToString$1.call(value) == symbolTag; +} +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {string} Returns the string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ + + +function toString$1(value) { + return value == null ? '' : baseToString(value); +} +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ + + +function get$1(object, path, defaultValue) { + var result = object == null ? undefined : baseGet(object, path); + return result === undefined ? defaultValue : result; +} + +var lodash_get = get$1; +var plurals = { + ach: { + name: 'Acholi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + af: { + name: 'Afrikaans', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ak: { + name: 'Akan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + am: { + name: 'Amharic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + an: { + name: 'Aragonese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ar: { + name: 'Arabic', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }, { + plural: 2, + sample: 2 + }, { + plural: 3, + sample: 3 + }, { + plural: 4, + sample: 11 + }, { + plural: 5, + sample: 100 + }], + nplurals: 6, + pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)', + pluralsFunc: function pluralsFunc(n) { + return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5; + } + }, + arn: { + name: 'Mapudungun', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + ast: { + name: 'Asturian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ay: { + name: 'Aymará', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + az: { + name: 'Azerbaijani', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + be: { + name: 'Belarusian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + bg: { + name: 'Bulgarian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + bn: { + name: 'Bengali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + bo: { + name: 'Tibetan', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + br: { + name: 'Breton', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + brx: { + name: 'Bodo', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + bs: { + name: 'Bosnian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + ca: { + name: 'Catalan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + cgg: { + name: 'Chiga', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + cs: { + name: 'Czech', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2; + } + }, + csb: { + name: 'Kashubian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + cy: { + name: 'Welsh', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 8 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n === 2 ? 1 : n !== 8 && n !== 11 ? 2 : 3; + } + }, + da: { + name: 'Danish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + de: { + name: 'German', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + doi: { + name: 'Dogri', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + dz: { + name: 'Dzongkha', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + el: { + name: 'Greek', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + en: { + name: 'English', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + eo: { + name: 'Esperanto', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + es: { + name: 'Spanish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + et: { + name: 'Estonian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + eu: { + name: 'Basque', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + fa: { + name: 'Persian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + ff: { + name: 'Fulah', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + fi: { + name: 'Finnish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + fil: { + name: 'Filipino', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + fo: { + name: 'Faroese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + fr: { + name: 'French', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + fur: { + name: 'Friulian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + fy: { + name: 'Frisian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ga: { + name: 'Irish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 7 + }, { + plural: 4, + sample: 11 + }], + nplurals: 5, + pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4; + } + }, + gd: { + name: 'Scottish Gaelic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 20 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 || n === 11 ? 0 : n === 2 || n === 12 ? 1 : n > 2 && n < 20 ? 2 : 3; + } + }, + gl: { + name: 'Galician', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + gu: { + name: 'Gujarati', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + gun: { + name: 'Gun', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + ha: { + name: 'Hausa', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + he: { + name: 'Hebrew', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + hi: { + name: 'Hindi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + hne: { + name: 'Chhattisgarhi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + hr: { + name: 'Croatian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + hu: { + name: 'Hungarian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + hy: { + name: 'Armenian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + id: { + name: 'Indonesian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + is: { + name: 'Icelandic', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 !== 1 || n % 100 === 11; + } + }, + it: { + name: 'Italian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ja: { + name: 'Japanese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + jbo: { + name: 'Lojban', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + jv: { + name: 'Javanese', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 0)', + pluralsFunc: function pluralsFunc(n) { + return n !== 0; + } + }, + ka: { + name: 'Georgian', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + kk: { + name: 'Kazakh', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + km: { + name: 'Khmer', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + kn: { + name: 'Kannada', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ko: { + name: 'Korean', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + ku: { + name: 'Kurdish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + kw: { + name: 'Cornish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 4 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3; + } + }, + ky: { + name: 'Kyrgyz', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + lb: { + name: 'Letzeburgesch', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ln: { + name: 'Lingala', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + lo: { + name: 'Lao', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + lt: { + name: 'Lithuanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 10 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + lv: { + name: 'Latvian', + examples: [{ + plural: 2, + sample: 0 + }, { + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2; + } + }, + mai: { + name: 'Maithili', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + mfe: { + name: 'Mauritian Creole', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + mg: { + name: 'Malagasy', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + mi: { + name: 'Maori', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + mk: { + name: 'Macedonian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 || n % 10 === 1 ? 0 : 1; + } + }, + ml: { + name: 'Malayalam', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + mn: { + name: 'Mongolian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + mni: { + name: 'Manipuri', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + mnk: { + name: 'Mandinka', + examples: [{ + plural: 0, + sample: 0 + }, { + plural: 1, + sample: 1 + }, { + plural: 2, + sample: 2 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 0 ? 0 : n === 1 ? 1 : 2; + } + }, + mr: { + name: 'Marathi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ms: { + name: 'Malay', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + mt: { + name: 'Maltese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 11 + }, { + plural: 3, + sample: 20 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n === 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3; + } + }, + my: { + name: 'Burmese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + nah: { + name: 'Nahuatl', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + nap: { + name: 'Neapolitan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + nb: { + name: 'Norwegian Bokmal', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ne: { + name: 'Nepali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + nl: { + name: 'Dutch', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + nn: { + name: 'Norwegian Nynorsk', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + no: { + name: 'Norwegian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + nso: { + name: 'Northern Sotho', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + oc: { + name: 'Occitan', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + or: { + name: 'Oriya', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + pa: { + name: 'Punjabi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + pap: { + name: 'Papiamento', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + pl: { + name: 'Polish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + pms: { + name: 'Piemontese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ps: { + name: 'Pashto', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + pt: { + name: 'Portuguese', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + rm: { + name: 'Romansh', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ro: { + name: 'Romanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 20 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n === 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2; + } + }, + ru: { + name: 'Russian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + rw: { + name: 'Kinyarwanda', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sah: { + name: 'Yakut', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + sat: { + name: 'Santali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sco: { + name: 'Scots', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sd: { + name: 'Sindhi', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + se: { + name: 'Northern Sami', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + si: { + name: 'Sinhala', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sk: { + name: 'Slovak', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2; + } + }, + sl: { + name: 'Slovenian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 3 + }, { + plural: 3, + sample: 5 + }], + nplurals: 4, + pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)', + pluralsFunc: function pluralsFunc(n) { + return n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3; + } + }, + so: { + name: 'Somali', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + son: { + name: 'Songhay', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sq: { + name: 'Albanian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sr: { + name: 'Serbian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + su: { + name: 'Sundanese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + sv: { + name: 'Swedish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + sw: { + name: 'Swahili', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + ta: { + name: 'Tamil', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + te: { + name: 'Telugu', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + tg: { + name: 'Tajik', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + th: { + name: 'Thai', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + ti: { + name: 'Tigrinya', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + tk: { + name: 'Turkmen', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + tr: { + name: 'Turkish', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + tt: { + name: 'Tatar', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + ug: { + name: 'Uyghur', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + uk: { + name: 'Ukrainian', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }, { + plural: 2, + sample: 5 + }], + nplurals: 3, + pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)', + pluralsFunc: function pluralsFunc(n) { + return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2; + } + }, + ur: { + name: 'Urdu', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + uz: { + name: 'Uzbek', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + vi: { + name: 'Vietnamese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + wa: { + name: 'Walloon', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n > 1)', + pluralsFunc: function pluralsFunc(n) { + return n > 1; + } + }, + wo: { + name: 'Wolof', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + }, + yo: { + name: 'Yoruba', + examples: [{ + plural: 0, + sample: 1 + }, { + plural: 1, + sample: 2 + }], + nplurals: 2, + pluralsText: 'nplurals = 2; plural = (n !== 1)', + pluralsFunc: function pluralsFunc(n) { + return n !== 1; + } + }, + zh: { + name: 'Chinese', + examples: [{ + plural: 0, + sample: 1 + }], + nplurals: 1, + pluralsText: 'nplurals = 1; plural = 0', + pluralsFunc: function pluralsFunc() { + return 0; + } + } +}; +var gettext = Gettext; +/** + * Creates and returns a new Gettext instance. + * + * @constructor + * @param {Object} [options] A set of options + * @param {String} options.sourceLocale The locale that the source code and its + * texts are written in. Translations for + * this locale is not necessary. + * @param {Boolean} options.debug Whether to output debug info into the + * console. + * @return {Object} A Gettext instance + */ + +function Gettext(options) { + options = options || {}; + this.catalogs = {}; + this.locale = ''; + this.domain = 'messages'; + this.listeners = []; // Set source locale + + this.sourceLocale = ''; + + if (options.sourceLocale) { + if (typeof options.sourceLocale === 'string') { + this.sourceLocale = options.sourceLocale; + } else { + this.warn('The `sourceLocale` option should be a string'); + } + } // Set debug flag + + + this.debug = 'debug' in options && options.debug === true; +} +/** + * Adds an event listener. + * + * @param {String} eventName An event name + * @param {Function} callback An event handler function + */ + + +Gettext.prototype.on = function (eventName, callback) { + this.listeners.push({ + eventName: eventName, + callback: callback + }); +}; +/** + * Removes an event listener. + * + * @param {String} eventName An event name + * @param {Function} callback A previously registered event handler function + */ + + +Gettext.prototype.off = function (eventName, callback) { + this.listeners = this.listeners.filter(function (listener) { + return (listener.eventName === eventName && listener.callback === callback) === false; + }); +}; +/** + * Emits an event to all registered event listener. + * + * @private + * @param {String} eventName An event name + * @param {any} eventData Data to pass to event listeners + */ + + +Gettext.prototype.emit = function (eventName, eventData) { + for (var i = 0; i < this.listeners.length; i++) { + var listener = this.listeners[i]; + + if (listener.eventName === eventName) { + listener.callback(eventData); + } + } +}; +/** + * Logs a warning to the console if debug mode is enabled. + * + * @ignore + * @param {String} message A warning message + */ + + +Gettext.prototype.warn = function (message) { + if (this.debug) { + console.warn(message); + } + + this.emit('error', new Error(message)); +}; +/** + * Stores a set of translations in the set of gettext + * catalogs. + * + * @example + * gt.addTranslations('sv-SE', 'messages', translationsObject) + * + * @param {String} locale A locale string + * @param {String} domain A domain name + * @param {Object} translations An object of gettext-parser JSON shape + */ + + +Gettext.prototype.addTranslations = function (locale, domain, translations) { + if (!this.catalogs[locale]) { + this.catalogs[locale] = {}; + } + + this.catalogs[locale][domain] = translations; +}; +/** + * Sets the locale to get translated messages for. + * + * @example + * gt.setLocale('sv-SE') + * + * @param {String} locale A locale + */ + + +Gettext.prototype.setLocale = function (locale) { + if (typeof locale !== 'string') { + this.warn('You called setLocale() with an argument of type ' + _typeof2(locale) + '. ' + 'The locale must be a string.'); + return; + } + + if (locale.trim() === '') { + this.warn('You called setLocale() with an empty value, which makes little sense.'); + } + + if (locale !== this.sourceLocale && !this.catalogs[locale]) { + this.warn('You called setLocale() with "' + locale + '", but no translations for that locale has been added.'); + } + + this.locale = locale; +}; +/** + * Sets the default gettext domain. + * + * @example + * gt.setTextDomain('domainname') + * + * @param {String} domain A gettext domain name + */ + + +Gettext.prototype.setTextDomain = function (domain) { + if (typeof domain !== 'string') { + this.warn('You called setTextDomain() with an argument of type ' + _typeof2(domain) + '. ' + 'The domain must be a string.'); + return; + } + + if (domain.trim() === '') { + this.warn('You called setTextDomain() with an empty `domain` value.'); + } + + this.domain = domain; +}; +/** + * Translates a string using the default textdomain + * + * @example + * gt.gettext('Some text') + * + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.gettext = function (msgid) { + return this.dnpgettext(this.domain, '', msgid); +}; +/** + * Translates a string using a specific domain + * + * @example + * gt.dgettext('domainname', 'Some text') + * + * @param {String} domain A gettext domain name + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.dgettext = function (domain, msgid) { + return this.dnpgettext(domain, '', msgid); +}; +/** + * Translates a plural string using the default textdomain + * + * @example + * gt.ngettext('One thing', 'Many things', numberOfThings) + * + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.ngettext = function (msgid, msgidPlural, count) { + return this.dnpgettext(this.domain, '', msgid, msgidPlural, count); +}; +/** + * Translates a plural string using a specific textdomain + * + * @example + * gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings) + * + * @param {String} domain A gettext domain name + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.dngettext = function (domain, msgid, msgidPlural, count) { + return this.dnpgettext(domain, '', msgid, msgidPlural, count); +}; +/** + * Translates a string from a specific context using the default textdomain + * + * @example + * gt.pgettext('sports', 'Back') + * + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.pgettext = function (msgctxt, msgid) { + return this.dnpgettext(this.domain, msgctxt, msgid); +}; +/** + * Translates a string from a specific context using s specific textdomain + * + * @example + * gt.dpgettext('domainname', 'sports', 'Back') + * + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.dpgettext = function (domain, msgctxt, msgid) { + return this.dnpgettext(domain, msgctxt, msgid); +}; +/** + * Translates a plural string from a specific context using the default textdomain + * + * @example + * gt.npgettext('sports', 'Back', '%d backs', numberOfBacks) + * + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated when count is not plural + * @param {String} msgidPlural String to be translated when count is plural + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.npgettext = function (msgctxt, msgid, msgidPlural, count) { + return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count); +}; +/** + * Translates a plural string from a specifi context using a specific textdomain + * + * @example + * gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks) + * + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @param {String} msgidPlural If no translation was found, return this on count!=1 + * @param {Number} count Number count for the plural + * @return {String} Translation or the original string if no translation was found + */ + + +Gettext.prototype.dnpgettext = function (domain, msgctxt, msgid, msgidPlural, count) { + var defaultTranslation = msgid; + var translation; + var index; + msgctxt = msgctxt || ''; + + if (!isNaN(count) && count !== 1) { + defaultTranslation = msgidPlural || msgid; + } + + translation = this._getTranslation(domain, msgctxt, msgid); + + if (translation) { + if (typeof count === 'number') { + var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc; + index = pluralsFunc(count); + + if (typeof index === 'boolean') { + index = index ? 1 : 0; + } + } else { + index = 0; + } + + return translation.msgstr[index] || defaultTranslation; + } else if (!this.sourceLocale || this.locale !== this.sourceLocale) { + this.warn('No translation was found for msgid "' + msgid + '" in msgctxt "' + msgctxt + '" and domain "' + domain + '"'); + } + + return defaultTranslation; +}; +/** + * Retrieves comments object for a translation. The comments object + * has the shape `{ translator, extracted, reference, flag, previous }`. + * + * @example + * const comment = gt.getComment('domainname', 'sports', 'Backs') + * + * @private + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {Object} Comments object or false if not found + */ + + +Gettext.prototype.getComment = function (domain, msgctxt, msgid) { + var translation; + translation = this._getTranslation(domain, msgctxt, msgid); + + if (translation) { + return translation.comments || {}; + } + + return {}; +}; +/** + * Retrieves translation object from the domain and context + * + * @private + * @param {String} domain A gettext domain name + * @param {String} msgctxt Translation context + * @param {String} msgid String to be translated + * @return {Object} Translation object or false if not found + */ + + +Gettext.prototype._getTranslation = function (domain, msgctxt, msgid) { + msgctxt = msgctxt || ''; + return lodash_get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]); +}; +/** + * Returns the language code part of a locale + * + * @example + * Gettext.getLanguageCode('sv-SE') + * // -> "sv" + * + * @private + * @param {String} locale A case-insensitive locale string + * @returns {String} A language code + */ + + +Gettext.getLanguageCode = function (locale) { + return locale.split(/[\-_]/)[0].toLowerCase(); +}; +/* C-style aliases */ + +/** + * C-style alias for [setTextDomain](#gettextsettextdomaindomain) + * + * @see Gettext#setTextDomain + */ + + +Gettext.prototype.textdomain = function (domain) { + if (this.debug) { + console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' + 'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\n\n ' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\n\n' + 'This warning will be removed in the final 2.0.0'); + } + + this.setTextDomain(domain); +}; +/** + * C-style alias for [setLocale](#gettextsetlocalelocale) + * + * @see Gettext#setLocale + */ + + +Gettext.prototype.setlocale = function (locale) { + this.setLocale(locale); +}; +/* Deprecated functions */ + +/** + * This function will be removed in the final 2.0.0 release. + * + * @deprecated + */ + + +Gettext.prototype.addTextdomain = function () { + console.error('addTextdomain() is deprecated.\n\n' + '* To add translations, use addTranslations()\n' + '* To set the default domain, use setTextDomain() (or its alias textdomain())\n' + '\n' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x'); +}; + +var dist = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getLocale = getLocale; + exports.getCanonicalLocale = getCanonicalLocale; + exports.getLanguage = getLanguage; + exports.translate = translate; + exports.translatePlural = translatePlural; + exports.getFirstDay = getFirstDay; + exports.getDayNames = getDayNames; + exports.getDayNamesShort = getDayNamesShort; + exports.getDayNamesMin = getDayNamesMin; + exports.getMonthNames = getMonthNames; + exports.getMonthNamesShort = getMonthNamesShort; /// + + /** + * Returns the user's locale + */ + + function getLocale() { + if (typeof OC === 'undefined') { + console.warn('No OC found'); + return 'en'; + } + + return OC.getLocale(); + } + + function getCanonicalLocale() { + return getLocale().replace(/_/g, '-'); + } + /** + * Returns the user's language + */ + + + function getLanguage() { + if (typeof OC === 'undefined') { + console.warn('No OC found'); + return 'en'; + } + + return OC.getLanguage(); + } + /** + * Translate a string + * + * @param {string} app the id of the app for which to translate the string + * @param {string} text the string to translate + * @param {object} vars map of placeholder key to value + * @param {number} number to replace %n with + * @param {object} [options] options object + * @return {string} + */ + + + function translate(app, text, vars, count, options) { + if (typeof OC === 'undefined') { + console.warn('No OC found'); + return text; + } + + return OC.L10N.translate(app, text, vars, count, options); + } + /** + * Translate a plural string + * + * @param {string} app the id of the app for which to translate the string + * @param {string} textSingular the string to translate for exactly one object + * @param {string} textPlural the string to translate for n objects + * @param {number} count number to determine whether to use singular or plural + * @param {Object} vars of placeholder key to value + * @param {object} options options object + * @return {string} + */ + + + function translatePlural(app, textSingular, textPlural, count, vars, options) { + if (typeof OC === 'undefined') { + console.warn('No OC found'); + return textSingular; + } + + return OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options); + } + /** + * Get the first day of the week + * + * @return {number} + */ + + + function getFirstDay() { + if (typeof window.firstDay === 'undefined') { + console.warn('No firstDay found'); + return 1; + } + + return window.firstDay; + } + /** + * Get a list of day names (full names) + * + * @return {string[]} + */ + + + function getDayNames() { + if (typeof window.dayNames === 'undefined') { + console.warn('No dayNames found'); + return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + } + + return window.dayNames; + } + /** + * Get a list of day names (short names) + * + * @return {string[]} + */ + + + function getDayNamesShort() { + if (typeof window.dayNamesShort === 'undefined') { + console.warn('No dayNamesShort found'); + return ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.']; + } + + return window.dayNamesShort; + } + /** + * Get a list of day names (minified names) + * + * @return {string[]} + */ + + + function getDayNamesMin() { + if (typeof window.dayNamesMin === 'undefined') { + console.warn('No dayNamesMin found'); + return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa']; + } + + return window.dayNamesMin; + } + /** + * Get a list of month names (full names) + * + * @return {string[]} + */ + + + function getMonthNames() { + if (typeof window.monthNames === 'undefined') { + console.warn('No monthNames found'); + return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + } + + return window.monthNames; + } + /** + * Get a list of month names (short names) + * + * @return {string[]} + */ + + + function getMonthNamesShort() { + if (typeof window.monthNamesShort === 'undefined') { + console.warn('No monthNamesShort found'); + return ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.']; + } + + return window.monthNamesShort; + } +}); +var gettext$1 = createCommonjsModule(function (module, exports) { + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.getGettextBuilder = getGettextBuilder; + + var _nodeGettext = _interopRequireDefault(gettext); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + var GettextBuilder = /*#__PURE__*/function () { + function GettextBuilder() { + _classCallCheck(this, GettextBuilder); + + this.translations = {}; + this.debug = false; + } + + _createClass(GettextBuilder, [{ + key: "setLanguage", + value: function setLanguage(language) { + this.locale = language; + return this; + } + }, { + key: "detectLocale", + value: function detectLocale() { + return this.setLanguage((0, dist.getLanguage)()); + } + }, { + key: "addTranslation", + value: function addTranslation(language, data) { + this.translations[language] = data; + return this; + } + }, { + key: "enableDebugMode", + value: function enableDebugMode() { + this.debug = true; + return this; + } + }, { + key: "build", + value: function build() { + return new GettextWrapper(this.locale || 'en', this.translations, this.debug); + } + }]); + + return GettextBuilder; + }(); + + var GettextWrapper = /*#__PURE__*/function () { + function GettextWrapper(locale, data, debug) { + _classCallCheck(this, GettextWrapper); + + this.gt = new _nodeGettext.default({ + debug: debug, + sourceLocale: 'en' + }); + + for (var key in data) { + this.gt.addTranslations(key, 'messages', data[key]); + } + + this.gt.setLocale(locale); + } + + _createClass(GettextWrapper, [{ + key: "subtitudePlaceholders", + value: function subtitudePlaceholders(translated, vars) { + return translated.replace(/{([^{}]*)}/g, function (a, b) { + var r = vars[b]; + + if (typeof r === 'string' || typeof r === 'number') { + return r.toString(); + } else { + return a; + } + }); + } + }, { + key: "gettext", + value: function gettext(original) { + var placeholders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; + return this.subtitudePlaceholders(this.gt.gettext(original), placeholders); + } + }, { + key: "ngettext", + value: function ngettext(singular, plural, count) { + var placeholders = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; + return this.subtitudePlaceholders(this.gt.ngettext(singular, plural, count).replace(/%n/g, count.toString()), placeholders); + } + }]); + + return GettextWrapper; + }(); + + function getGettextBuilder() { + return new GettextBuilder(); + } +}); +var gtBuilder = gettext$1.getGettextBuilder().detectLocale(); +process.env.TRANSLATIONS.map(function (data) { + return gtBuilder.addTranslation(data.locale, data.json); +}); +var gt = gtBuilder.build(); +var n = gt.ngettext.bind(gt); +var t = gt.gettext.bind(gt); + +var ToastType = +/** @class */ +function () { + function ToastType() {} + + ToastType.ERROR = 'toast-error'; + ToastType.WARNING = 'toast-warning'; + ToastType.INFO = 'toast-info'; + ToastType.SUCCESS = 'toast-success'; + ToastType.PERMANENT = 'toast-error'; + ToastType.UNDO = 'toast-undo'; + return ToastType; +}(); +/** + * Show a toast message + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param options + */ + + +function showMessage(data, options) { + var _a; + + var _b; + + options = Object.assign({ + timeout: 7, + isHTML: false, + type: undefined, + // An undefined selector defaults to the body element + selector: undefined, + onRemove: function onRemove() {}, + onClick: undefined, + close: true + }, options); + + if (typeof data === 'string' && !options.isHTML) { + // fime mae sure that text is extracted + var element = document.createElement('div'); + element.innerHTML = data; + data = element.innerText; + } + + var classes = (_b = options.type) !== null && _b !== void 0 ? _b : ''; + + if (typeof options.onClick === 'function') { + classes += ' toast-with-click '; + } + + var isNode = data instanceof Node; + var timeout = null; + + if (options.timeout) { + timeout = options.timeout === -1 ? -1 : options.timeout * 1000; + } + + var toast = toastify((_a = {}, _a[!isNode ? 'text' : 'node'] = data, _a.duration = timeout, _a.callback = options.onRemove, _a.onClick = options.onClick, _a.close = options.close, _a.gravity = 'top', _a.selector = options.selector, _a.position = 'right', _a.backgroundColor = '', _a.className = 'dialogs ' + classes, _a)); + toast.showToast(); + return toast; +} +/** + * Show a toast message with error styling + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param options + */ + + +function showError(text, options) { + return showMessage(text, _assign(_assign({}, options), { + type: ToastType.ERROR + })); +} +/** + * Show a toast message with warning styling + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param options + */ + + +function showWarning(text, options) { + return showMessage(text, _assign(_assign({}, options), { + type: ToastType.WARNING + })); +} +/** + * Show a toast message with info styling + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param options + */ + + +function showInfo(text, options) { + return showMessage(text, _assign(_assign({}, options), { + type: ToastType.INFO + })); +} +/** + * Show a toast message with success styling + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param options + */ + + +function showSuccess(text, options) { + return showMessage(text, _assign(_assign({}, options), { + type: ToastType.SUCCESS + })); +} +/** + * Show a toast message with undo styling + * + * @param text Message to be shown in the toast, any HTML is removed by default + * @param onUndo Function that is called when the undo button is clicked + * @param options + */ + + +function showUndo(text, onUndo, options) { + // onUndo callback is mandatory + if (!(onUndo instanceof Function)) { + throw new Error('Please provide a valid onUndo method'); + } + + var toast; + options = Object.assign(options || {}, { + // force 10 seconds of timeout + timeout: 10000, + // remove close button + close: false + }); // Generate undo layout + + var undoContent = document.createElement('span'); + var undoButton = document.createElement('button'); + undoButton.classList.add('toast-undo-button'); + undoButton.innerText = t('Undo'); + undoContent.innerText = text; + undoContent.appendChild(undoButton); + undoButton.addEventListener('click', function (event) { + event.stopPropagation(); + onUndo(event); // Hide toast + + if ((toast === null || toast === void 0 ? void 0 : toast.hideToast) instanceof Function) { + toast.hideToast(); + } + }); + toast = showMessage(undoContent, _assign(_assign({}, options), { + type: ToastType.UNDO + })); + return toast; +} + + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../process/browser.js */ "./node_modules/process/browser.js"), __webpack_require__(/*! ./../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/@nextcloud/dialogs/styles/close.svg": +/*!**********************************************************!*\ + !*** ./node_modules/@nextcloud/dialogs/styles/close.svg ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo="); + +/***/ }), + +/***/ "./node_modules/@nextcloud/dialogs/styles/toast.scss": +/*!***********************************************************!*\ + !*** ./node_modules/@nextcloud/dialogs/styles/toast.scss ***! + \***********************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +// style-loader: Adds some css to the DOM by adding a \n","/* globals __VUE_SSR_CONTEXT__ */\n\n// IMPORTANT: Do NOT use ES2015 features in this file (except for modules).\n// This module is a runtime utility for cleaner component module output and will\n// be included in the final webpack user bundle.\n\nexport default function normalizeComponent (\n scriptExports,\n render,\n staticRenderFns,\n functionalTemplate,\n injectStyles,\n scopeId,\n moduleIdentifier, /* server only */\n shadowMode /* vue-cli only */\n) {\n // Vue.extend constructor export interop\n var options = typeof scriptExports === 'function'\n ? scriptExports.options\n : scriptExports\n\n // render functions\n if (render) {\n options.render = render\n options.staticRenderFns = staticRenderFns\n options._compiled = true\n }\n\n // functional template\n if (functionalTemplate) {\n options.functional = true\n }\n\n // scopedId\n if (scopeId) {\n options._scopeId = 'data-v-' + scopeId\n }\n\n var hook\n if (moduleIdentifier) { // server build\n hook = function (context) {\n // 2.3 injection\n context =\n context || // cached call\n (this.$vnode && this.$vnode.ssrContext) || // stateful\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional\n // 2.2 with runInNewContext: true\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\n context = __VUE_SSR_CONTEXT__\n }\n // inject component styles\n if (injectStyles) {\n injectStyles.call(this, context)\n }\n // register component module identifier for async chunk inferrence\n if (context && context._registeredComponents) {\n context._registeredComponents.add(moduleIdentifier)\n }\n }\n // used by ssr in case component is cached and beforeCreate\n // never gets called\n options._ssrRegister = hook\n } else if (injectStyles) {\n hook = shadowMode\n ? function () {\n injectStyles.call(\n this,\n (options.functional ? this.parent : this).$root.$options.shadowRoot\n )\n }\n : injectStyles\n }\n\n if (hook) {\n if (options.functional) {\n // for template-only hot-reload because in that case the render fn doesn't\n // go through the normalizer\n options._injectStyles = hook\n // register for functional component in vue file\n var originalRender = options.render\n options.render = function renderWithStyleInjection (h, context) {\n hook.call(context)\n return originalRender(h, context)\n }\n } else {\n // inject component registration as beforeCreate hook\n var existing = options.beforeCreate\n options.beforeCreate = existing\n ? [].concat(existing, hook)\n : [hook]\n }\n }\n\n return {\n exports: scriptExports,\n options: options\n }\n}\n","import { render, staticRenderFns } from \"./Error.vue?vue&type=template&id=74a975ae&scoped=true&\"\nimport script from \"./Error.vue?vue&type=script&lang=js&\"\nexport * from \"./Error.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Error.vue?vue&type=style&index=0&id=74a975ae&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"74a975ae\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"emptycontent\"}},[_c('div',{staticClass:\"icon-error\"}),_vm._v(\" \"),_c('h2',[_vm._t(\"default\",[_vm._v(_vm._s(_vm.t('viewer', 'Error loading {name}', { name: _vm.name })))])],2)])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nexport default function(fileInfo, mime, component) {\n\tconst data = {\n\t\tmime,\n\t\tmodal: component,\n\t\tfailed: false,\n\t\tloaded: false,\n\t}\n\n\treturn Object.assign({}, fileInfo, data)\n}\n","/**\n * @copyright Copyright (c) 2020 Azul \n *\n * @author Azul \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport { encodePath } from '@nextcloud/paths'\n\nexport default function(name, context) {\n\t// replace potential leading double slashes\n\tconst path = `${context.dir}/${name}`.replace(/^\\/\\//, '/')\n\tconst oldQuery = location.search.replace(/^\\?/, '')\n\tconst onClose = () => OC.Util.History.pushState(oldQuery)\n\tif (!context.fileInfoModel && context.fileList) {\n\t\tcontext.fileInfoModel = context.fileList.getModelForFile(name)\n\t}\n\tif (context.fileInfoModel) {\n\t\tpushToHistory({ fileid: context.fileInfoModel.get('id') })\n\t}\n\tOCA.Viewer.open({ path, onPrev: pushToHistory, onNext: pushToHistory, onClose })\n}\n\nfunction pushToHistory({ fileid }) {\n\tconst params = OC.Util.History.parseUrlQuery()\n\tconst dir = params.dir\n\tdelete params.dir\n\tdelete params.fileid\n\tparams.openfile = fileid\n\tconst query = 'dir=' + encodePath(dir) + '&' + OC.buildQueryString(params)\n\tOC.Util.History.pushState(query)\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport webdav from 'webdav'\nimport axios from '@nextcloud/axios'\nimport { getRootPath, getToken, isPublic } from '../utils/davUtils'\n\n// Add this so the server knows it is an request from the browserg\naxios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest'\n\n// force our axios\nconst patcher = webdav.getPatcher()\npatcher.patch('request', axios)\n\n// init webdav client\nconst client = webdav.createClient(getRootPath(), isPublic()\n\t? { username: getToken(), password: '' }\n\t: {}\n)\n\nexport default client\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport client from './DavClient'\nimport { genFileInfo } from '../utils/fileUtils'\n/**\n * Retrieve the files list\n *\n * @param {String} path the path relative to the user root\n * @param {Object} [options] optional options for axios\n * @returns {Array} the file list\n */\nexport default async function(path, options) {\n\tconst response = await client.stat(path, Object.assign({\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdetails: true,\n\t}, options))\n\treturn genFileInfo(response.data)\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport client from './DavClient'\nimport { genFileInfo } from '../utils/fileUtils'\n\n/**\n * Retrieve the files list\n *\n * @param {String} path the path relative to the user root\n * @param {Object} [options] optional options for axios\n * @returns {Array} the file list\n */\nexport default async function(path, options) {\n\t// getDirectoryContents doesn't accept / for root\n\tconst fixedPath = path === '/' ? '' : path\n\n\tconst response = await client.getDirectoryContents(fixedPath, Object.assign({\n\t\tdata: `\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t`,\n\t\tdetails: true,\n\t}, options))\n\n\treturn response.data.map(genFileInfo)\n}\n","\n/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { generateUrl } from '@nextcloud/router'\nimport { getRootPath, getToken, isPublic } from '../utils/davUtils'\n\nexport default {\n\tcomputed: {\n\t\t/**\n\t\t * Link to the preview path if the file have a preview\n\t\t * @returns {string}\n\t\t */\n\t\tpreviewpath() {\n\t\t\treturn this.getPreviewIfAny({\n\t\t\t\tfileid: this.fileid,\n\t\t\t\tfilename: this.filename,\n\t\t\t\thasPreview: this.hasPreview,\n\t\t\t\tdavPath: this.davPath,\n\t\t\t})\n\t\t},\n\n\t\t/**\n\t\t * Absolute dav remote path of the file\n\t\t * @returns {string}\n\t\t */\n\t\tdavPath() {\n\t\t\t// TODO: allow proper dav access without the need of basic auth\n\t\t\t// https://github.com/nextcloud/server/issues/19700\n\t\t\tif (isPublic()) {\n\t\t\t\treturn generateUrl(`/s/${getToken()}/download?path=${this.filename.replace(this.basename, '')}&files=${this.basename}`)\n\t\t\t}\n\t\t\treturn getRootPath() + this.filename\n\t\t},\n\t},\n\tmethods: {\n\t\t/**\n\t\t * Return the preview url if the file have an existing\n\t\t * preview or the absolute dav remote path if none.\n\t\t *\n\t\t * @param {Object} data destructuring object\n\t\t * @param {string} data.fileid the file id\n\t\t * @param {boolean} data.hasPreview have the file an existing preview ?\n\t\t * @param {string} data.davPath the absolute dav path\n\t\t * @returns {String} the absolute url\n\t\t */\n\t\tgetPreviewIfAny({ fileid, filename, hasPreview, davPath }) {\n\t\t\tif (hasPreview) {\n\t\t\t\t// TODO: find a nicer standard way of doing this?\n\t\t\t\tif (isPublic()) {\n\t\t\t\t\treturn generateUrl(`/apps/files_sharing/publicpreview/${getToken()}?fileId=${fileid}&file=${filename}&x=${screen.width}&y=${screen.height}&a=true`)\n\t\t\t\t}\n\t\t\t\treturn generateUrl(`/core/preview?fileId=${fileid}&x=${screen.width}&y=${screen.height}&a=true`)\n\t\t\t}\n\t\t\treturn davPath\n\t\t},\n\t},\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport debounce from 'debounce'\nimport PreviewUrl from '../mixins/PreviewUrl'\nimport parsePath from 'path-parse'\n\nexport default {\n\tinheritAttrs: false,\n\tmixins: [PreviewUrl],\n\tprops: {\n\t\t// Is the current component shown\n\t\tactive: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// file name\n\t\tbasename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file path relative to user folder\n\t\tfilename: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// file path relative to user folder\n\t\thasPreview: {\n\t\t\ttype: Boolean,\n\t\t\trequired: true,\n\t\t},\n\t\t// unique file id\n\t\tfileid: {\n\t\t\ttype: Number,\n\t\t\trequired: true,\n\t\t},\n\t\t// list of all the visible files\n\t\tfileList: {\n\t\t\ttype: Array,\n\t\t\tdefault: () => [],\n\t\t},\n\t\t// file mime (aliased if specified in the model)\n\t\tmime: {\n\t\t\ttype: String,\n\t\t\trequired: true,\n\t\t},\n\t\t// can the user swipe\n\t\tcanSwipe: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: true,\n\t\t},\n\t\t// is the content loaded?\n\t\t// synced with parent\n\t\tloaded: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// is the sidebar currently opened ?\n\t\tisSidebarShown: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t\t// are we in fullscreen mode ?\n\t\tisFullScreen: {\n\t\t\ttype: Boolean,\n\t\t\tdefault: false,\n\t\t},\n\t},\n\n\tdata() {\n\t\treturn {\n\t\t\theight: null,\n\t\t\twidth: null,\n\t\t\tnaturalHeight: null,\n\t\t\tnaturalWidth: null,\n\t\t\tisLoaded: false,\n\t\t}\n\t},\n\n\tcomputed: {\n\t\tname() {\n\t\t\treturn parsePath(this.basename).name\n\t\t},\n\t\text() {\n\t\t\treturn parsePath(this.basename).ext\n\t\t},\n\t},\n\n\twatch: {\n\t\tactive(val, old) {\n\t\t\t// the item was hidden before and is now the current view\n\t\t\tif (val === true && old === false) {\n\t\t\t\t// just in case the file was preloaded, let's warn the viewer\n\t\t\t\tif (this.isLoaded) {\n\t\t\t\t\tthis.doneLoading()\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t// update image size on sidebar toggle\n\t\tisSidebarShown() {\n\t\t\t// wait for transition to complete (100ms)\n\t\t\tsetTimeout(this.updateHeightWidth, 200)\n\t\t},\n\t},\n\n\tmounted() {\n\t\t// detect error and let the viewer know\n\t\tthis.$el.addEventListener('error', e => {\n\t\t\tconsole.error('Error loading', this.filename, e)\n\t\t\tthis.$emit('error', e)\n\t\t})\n\n\t\t// update image size on window resize\n\t\twindow.addEventListener('resize', debounce(() => {\n\t\t\tthis.updateHeightWidth()\n\t\t}, 100))\n\t},\n\n\tmethods: {\n\n\t\t/**\n\t\t * This is used to make the viewer know this file is complete or ready\n\t\t * ! you NEED to use it to make the viewer aware of the current loading state\n\t\t */\n\t\tdoneLoading() {\n\t\t\t// send the current state\n\t\t\tthis.$emit('update:loaded', true)\n\t\t\t// save the current state\n\t\t\tthis.isLoaded = true\n\t\t},\n\n\t\t/**\n\t\t * Updates the current height and width data\n\t\t * based on the viewer maximum size\n\t\t */\n\t\tupdateHeightWidth() {\n\t\t\tconst modalWrapper = this.$parent.$el.querySelector('.modal-wrapper')\n\t\t\tif (modalWrapper && this.naturalHeight > 0 && this.naturalWidth > 0) {\n\t\t\t\tconst modalContainer = modalWrapper.querySelector('.modal-container')\n\t\t\t\tconst wrapperMaxHeight = Number(window.getComputedStyle(modalContainer).maxHeight.replace('%', ''))\n\t\t\t\tconst wrapperMaxWidth = Number(window.getComputedStyle(modalContainer).maxWidth.replace('%', ''))\n\n\t\t\t\tconst parentHeight = Math.round(modalWrapper.clientHeight * wrapperMaxHeight / 100) - 50 // minus header\n\t\t\t\tconst parentWidth = Math.round(modalWrapper.clientWidth * wrapperMaxWidth / 100)\n\n\t\t\t\tconst heightRatio = parentHeight / this.naturalHeight\n\t\t\t\tconst widthRatio = parentWidth / this.naturalWidth\n\n\t\t\t\t// if the video height is capped by the parent height\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\tif (heightRatio < widthRatio && heightRatio < 1) {\n\t\t\t\t\tthis.height = parentHeight\n\t\t\t\t\tthis.width = Math.round(this.naturalWidth / this.naturalHeight * parentHeight)\n\n\t\t\t\t// if the video width is capped by the parent width\n\t\t\t\t// AND the video is bigger than the parent\n\t\t\t\t} else if (heightRatio > widthRatio && widthRatio < 1) {\n\t\t\t\t\tthis.width = parentWidth\n\t\t\t\t\tthis.height = Math.round(this.naturalHeight / this.naturalWidth * parentWidth)\n\n\t\t\t\t// RESET\n\t\t\t\t} else {\n\t\t\t\t\tthis.height = this.naturalHeight\n\t\t\t\t\tthis.width = this.naturalWidth\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Enable the viewer swiping previous/next capability\n\t\t */\n\t\tenableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', true)\n\t\t},\n\n\t\t/**\n\t\t * Disable the viewer swiping previous/next capability\n\t\t */\n\t\tdisableSwipe() {\n\t\t\tthis.$emit('update:canSwipe', false)\n\t\t},\n\n\t\t/**\n\t\t * Toggle the fullscreen on the current visible element\n\t\t */\n\t\ttoggleFullScreen() {\n\t\t\tif (this.isFullScreen) {\n\t\t\t\tdocument.exitFullscreen()\n\t\t\t} else {\n\t\t\t\tthis.$el.requestFullscreen()\n\t\t\t}\n\t\t},\n\t},\n}\n","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Viewer.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Viewer.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./Viewer.vue?vue&type=template&id=80ff5496&\"\nimport script from \"./Viewer.vue?vue&type=script&lang=js&\"\nexport * from \"./Viewer.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Viewer.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.initiated || _vm.currentFile.modal)?_c('Modal',{class:{'icon-loading': !_vm.currentFile.loaded && !_vm.currentFile.failed},style:({width: _vm.isSidebarShown ? (\"calc(100% - \" + _vm.sidebarWidth + \"px)\") : null}),attrs:{\"id\":\"viewer-content\",\"clear-view-delay\":_vm.isTesting ? -1 : 5000 /* prevent cypress timeouts */,\"dark\":true,\"enable-slideshow\":_vm.hasPrevious || _vm.hasNext,\"enable-swipe\":_vm.canSwipe,\"has-next\":_vm.hasNext && (_vm.canLoop ? true : !_vm.isEndOfList),\"has-previous\":_vm.hasPrevious && (_vm.canLoop ? true : !_vm.isStartOfList),\"size\":_vm.isMobile ? 'full' : 'large',\"spread-navigation\":true,\"title\":_vm.currentFile.basename,\"view\":_vm.currentFile.modal},on:{\"close\":_vm.close,\"previous\":_vm.previous,\"next\":_vm.next},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [(_vm.Sidebar && !_vm.isSidebarShown)?_c('ActionButton',{attrs:{\"icon\":\"icon-menu-sidebar-white-forced\"},on:{\"click\":_vm.showSidebar}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('viewer', 'Open sidebar'))+\"\\n\\t\\t\")]):_vm._e()]},proxy:true}],null,false,2127620889)},[_vm._v(\" \"),(_vm.previousFile && !_vm.previousFile.failed)?_c(_vm.previousFile.modal,_vm._b({key:_vm.previousFile.fileid,ref:\"previous-content\",tag:\"component\",staticClass:\"hidden-visually file-view\",attrs:{\"file-list\":_vm.fileList},on:{\"error\":_vm.previousFailed}},'component',_vm.previousFile,false)):(_vm.previousFile)?_c('Error',{staticClass:\"hidden-visually\",attrs:{\"name\":_vm.previousFile.basename}}):_vm._e(),_vm._v(\" \"),(!_vm.currentFile.failed)?_c(_vm.currentFile.modal,_vm._b({key:_vm.currentFile.fileid,ref:\"content\",tag:\"component\",staticClass:\"file-view active\",attrs:{\"active\":true,\"can-swipe\":_vm.canSwipe,\"file-list\":_vm.fileList,\"is-full-screen\":_vm.isFullscreen,\"loaded\":_vm.currentFile.loaded,\"is-sidebar-shown\":_vm.isSidebarShown},on:{\"update:canSwipe\":function($event){_vm.canSwipe=$event},\"update:can-swipe\":function($event){_vm.canSwipe=$event},\"update:loaded\":function($event){return _vm.$set(_vm.currentFile, \"loaded\", $event)},\"error\":_vm.currentFailed}},'component',_vm.currentFile,false)):_c('Error',{attrs:{\"name\":_vm.currentFile.basename}}),_vm._v(\" \"),(_vm.nextFile && !_vm.nextFile.failed)?_c(_vm.nextFile.modal,_vm._b({key:_vm.nextFile.fileid,ref:\"next-content\",tag:\"component\",staticClass:\"hidden-visually file-view\",attrs:{\"file-list\":_vm.fileList},on:{\"error\":_vm.nextFailed}},'component',_vm.nextFile,false)):(_vm.nextFile)?_c('Error',{staticClass:\"hidden-visually\",attrs:{\"name\":_vm.nextFile.basename}}):_vm._e()],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","function setAsyncState(vm, stateObject, state) {\n vm.$set(vm.$data._asyncComputed[stateObject], 'state', state);\n vm.$set(vm.$data._asyncComputed[stateObject], 'updating', state === 'updating');\n vm.$set(vm.$data._asyncComputed[stateObject], 'error', state === 'error');\n vm.$set(vm.$data._asyncComputed[stateObject], 'success', state === 'success');\n}\n\nfunction getterOnly(fn) {\n if (typeof fn === 'function') return fn;\n\n return fn.get;\n}\n\nfunction hasOwnProperty(object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n}\n\nfunction isComputedLazy(item) {\n return hasOwnProperty(item, 'lazy') && item.lazy;\n}\n\nfunction isLazyActive(vm, key) {\n return vm[lazyActivePrefix + key];\n}\n\nvar lazyActivePrefix = 'async_computed$lazy_active$',\n lazyDataPrefix = 'async_computed$lazy_data$';\n\nfunction initLazy(data, key, value) {\n data[lazyActivePrefix + key] = false;\n data[lazyDataPrefix + key] = value;\n}\n\nfunction makeLazyComputed(key) {\n return {\n get: function get() {\n this[lazyActivePrefix + key] = true;\n return this[lazyDataPrefix + key];\n },\n set: function set(value) {\n this[lazyDataPrefix + key] = value;\n }\n };\n}\n\nfunction silentSetLazy(vm, key, value) {\n vm[lazyDataPrefix + key] = value;\n}\nfunction silentGetLazy(vm, key) {\n return vm[lazyDataPrefix + key];\n}\n\nvar getGetterWatchedByArray = function getGetterWatchedByArray(computedAsyncProperty) {\n return function getter() {\n var _this = this;\n\n computedAsyncProperty.watch.forEach(function (key) {\n // Check if nested key is watched.\n var splittedByDot = key.split('.');\n if (splittedByDot.length === 1) {\n // If not, just access it.\n // eslint-disable-next-line no-unused-expressions\n _this[key];\n } else {\n // Access the nested propety.\n try {\n var start = _this;\n splittedByDot.forEach(function (part) {\n start = start[part];\n });\n } catch (error) {\n console.error('AsyncComputed: bad path: ', key);\n throw error;\n }\n }\n });\n return computedAsyncProperty.get.call(this);\n };\n};\n\nvar getGetterWatchedByFunction = function getGetterWatchedByFunction(computedAsyncProperty) {\n return function getter() {\n computedAsyncProperty.watch.call(this);\n return computedAsyncProperty.get.call(this);\n };\n};\n\nfunction getWatchedGetter(computedAsyncProperty) {\n if (typeof computedAsyncProperty.watch === 'function') {\n return getGetterWatchedByFunction(computedAsyncProperty);\n } else if (Array.isArray(computedAsyncProperty.watch)) {\n computedAsyncProperty.watch.forEach(function (key) {\n if (typeof key !== 'string') {\n throw new Error('AsyncComputed: watch elemnts must be strings');\n }\n });\n return getGetterWatchedByArray(computedAsyncProperty);\n } else {\n throw Error('AsyncComputed: watch should be function or an array');\n }\n}\n\nvar DidNotUpdate = typeof Symbol === 'function' ? Symbol('did-not-update') : {};\n\nvar getGetterWithShouldUpdate = function getGetterWithShouldUpdate(asyncProprety, currentGetter) {\n return function getter() {\n return asyncProprety.shouldUpdate.call(this) ? currentGetter.call(this) : DidNotUpdate;\n };\n};\n\nvar shouldNotUpdate = function shouldNotUpdate(value) {\n return DidNotUpdate === value;\n};\n\nvar prefix = '_async_computed$';\n\nvar AsyncComputed = {\n install: function install(Vue, pluginOptions) {\n pluginOptions = pluginOptions || {};\n\n Vue.config.optionMergeStrategies.asyncComputed = Vue.config.optionMergeStrategies.computed;\n\n Vue.mixin({\n data: function data() {\n return {\n _asyncComputed: {}\n };\n },\n\n computed: {\n $asyncComputed: function $asyncComputed() {\n return this.$data._asyncComputed;\n }\n },\n beforeCreate: function beforeCreate() {\n var asyncComputed = this.$options.asyncComputed || {};\n\n if (!Object.keys(asyncComputed).length) return;\n\n for (var key in asyncComputed) {\n var getter = getterFn(key, asyncComputed[key]);\n this.$options.computed[prefix + key] = getter;\n }\n\n this.$options.data = initDataWithAsyncComputed(this.$options, pluginOptions);\n },\n created: function created() {\n for (var key in this.$options.asyncComputed || {}) {\n var item = this.$options.asyncComputed[key],\n value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n silentSetLazy(this, key, value);\n } else {\n this[key] = value;\n }\n }\n\n for (var _key in this.$options.asyncComputed || {}) {\n handleAsyncComputedPropetyChanges(this, _key, pluginOptions, Vue);\n }\n }\n });\n }\n};\n\nfunction handleAsyncComputedPropetyChanges(vm, key, pluginOptions, Vue) {\n var promiseId = 0;\n var watcher = function watcher(newPromise) {\n var thisPromise = ++promiseId;\n\n if (shouldNotUpdate(newPromise)) return;\n\n if (!newPromise || !newPromise.then) {\n newPromise = Promise.resolve(newPromise);\n }\n setAsyncState(vm, key, 'updating');\n\n newPromise.then(function (value) {\n if (thisPromise !== promiseId) return;\n setAsyncState(vm, key, 'success');\n vm[key] = value;\n }).catch(function (err) {\n if (thisPromise !== promiseId) return;\n\n setAsyncState(vm, key, 'error');\n Vue.set(vm.$data._asyncComputed[key], 'exception', err);\n if (pluginOptions.errorHandler === false) return;\n\n var handler = pluginOptions.errorHandler === undefined ? console.error.bind(console, 'Error evaluating async computed property:') : pluginOptions.errorHandler;\n\n if (pluginOptions.useRawError) {\n handler(err, vm, err.stack);\n } else {\n handler(err.stack);\n }\n });\n };\n Vue.set(vm.$data._asyncComputed, key, {\n exception: null,\n update: function update() {\n if (!vm._isDestroyed) {\n watcher(getterOnly(vm.$options.asyncComputed[key]).apply(vm));\n }\n }\n });\n setAsyncState(vm, key, 'updating');\n vm.$watch(prefix + key, watcher, { immediate: true });\n}\n\nfunction initDataWithAsyncComputed(options, pluginOptions) {\n var optionData = options.data;\n var asyncComputed = options.asyncComputed || {};\n\n return function vueAsyncComputedInjectedDataFn(vm) {\n var data = (typeof optionData === 'function' ? optionData.call(this, vm) : optionData) || {};\n for (var key in asyncComputed) {\n var item = this.$options.asyncComputed[key];\n\n var value = generateDefault.call(this, item, pluginOptions);\n if (isComputedLazy(item)) {\n initLazy(data, key, value);\n this.$options.computed[key] = makeLazyComputed(key);\n } else {\n data[key] = value;\n }\n }\n return data;\n };\n}\n\nfunction getterFn(key, fn) {\n if (typeof fn === 'function') return fn;\n\n var getter = fn.get;\n\n if (hasOwnProperty(fn, 'watch')) {\n getter = getWatchedGetter(fn);\n }\n\n if (hasOwnProperty(fn, 'shouldUpdate')) {\n getter = getGetterWithShouldUpdate(fn, getter);\n }\n\n if (isComputedLazy(fn)) {\n var nonLazy = getter;\n getter = function lazyGetter() {\n if (isLazyActive(this, key)) {\n return nonLazy.call(this);\n } else {\n return silentGetLazy(this, key);\n }\n };\n }\n return getter;\n}\n\nfunction generateDefault(fn, pluginOptions) {\n var defaultValue = null;\n\n if ('default' in fn) {\n defaultValue = fn.default;\n } else if ('default' in pluginOptions) {\n defaultValue = pluginOptions.default;\n }\n\n if (typeof defaultValue === 'function') {\n return defaultValue.call(this);\n } else {\n return defaultValue;\n }\n}\n\n/* istanbul ignore if */\nif (typeof window !== 'undefined' && window.Vue) {\n // Auto install in dist mode\n window.Vue.use(AsyncComputed);\n}\n\nexport default AsyncComputed;\n","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Images.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Images.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Images from '../components/Images'\n\nexport default {\n\tid: 'images',\n\tgroup: 'media',\n\tmimes: [\n\t\t'image/png',\n\t\t'image/heic',\n\t\t'image/jpeg',\n\t\t'image/gif',\n\t\t'image/x-xbitmap',\n\t\t'image/bmp',\n\t\t'image/svg+xml',\n\t],\n\tcomponent: Images,\n}\n","import { render, staticRenderFns } from \"./Images.vue?vue&type=template&id=34247f4e&scoped=true&\"\nimport script from \"./Images.vue?vue&type=script&lang=js&\"\nexport * from \"./Images.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Images.vue?vue&type=style&index=0&id=34247f4e&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"34247f4e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{class:{\n\t\tdragging: _vm.dragging,\n\t\tloaded: _vm.loaded,\n\t\tzoomed: _vm.zoomRatio !== 1\n\t},style:({\n\t\tmarginTop: _vm.shiftY + 'px',\n\t\tmarginLeft: _vm.shiftX + 'px',\n\t\tmaxHeight: _vm.zoomRatio * 100 + '%',\n\t\tmaxWidth: _vm.zoomRatio * 100 + '%',\n\t}),attrs:{\"src\":_vm.data},on:{\"load\":_vm.updateImgSize,\"wheel\":_vm.updateZoom,\"dblclick\":function($event){$event.preventDefault();return _vm.onDblclick($event)},\"mousedown\":function($event){$event.preventDefault();return _vm.dragStart($event)}}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import Plyr from 'plyr';\n\n//\n\nvar script = {\n name: 'VuePlyr',\n props: {\n /** Options object for plyr config. **/\n options: {\n type: Object,\n required: false,\n default () {\n return {}\n }\n },\n /** Array of events to emit from the plyr object **/\n emit: {\n type: Array,\n required: false,\n default () { return [] }\n }\n },\n data () {\n return {\n player: {}\n }\n },\n computed: {\n opts () {\n const options = this.options;\n if (!this.options.hasOwnProperty('hideYouTubeDOMError')) {\n options.hideYouTubeDOMError = true;\n }\n return options\n }\n },\n mounted () {\n this.player = new Plyr(this.$el.firstChild, this.opts);\n this.emit.forEach(element => {\n this.player.on(element, this.emitPlayerEvent);\n });\n },\n beforeDestroy () {\n try {\n this.player.destroy();\n } catch (e) {\n if (!(this.opts.hideYouTubeDOMError && e.message === 'The YouTube player is not attached to the DOM.')) {\n // eslint-disable-next-line no-console\n console.error(e);\n }\n }\n },\n methods: {\n emitPlayerEvent (event) {\n this.$emit(event.type, event);\n }\n }\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n const options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n let hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n const originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n const existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nconst isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return (id, style) => addStyle(id, style);\r\n}\r\nlet HEAD;\r\nconst styles = {};\r\nfunction addStyle(id, css) {\r\n const group = isOldIE ? css.media || 'default' : id;\r\n const style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n let code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n style.element.setAttribute('media', css.media);\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n const index = style.ids.size - 1;\r\n const textNode = document.createTextNode(code);\r\n const nodes = style.element.childNodes;\r\n if (nodes[index])\r\n style.element.removeChild(nodes[index]);\r\n if (nodes.length)\r\n style.element.insertBefore(textNode, nodes[index]);\r\n else\r\n style.element.appendChild(textNode);\r\n }\r\n }\r\n}\n\n/* script */\nconst __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", [_vm._t(\"default\")], 2)\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n const __vue_inject_styles__ = function (inject) {\n if (!inject) return\n inject(\"data-v-91800632_0\", { source: \"@keyframes plyr-progress{to{background-position:25px 0}}@keyframes plyr-popup{0%{opacity:.5;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes plyr-fade-in{from{opacity:0}to{opacity:1}}.plyr{-moz-osx-font-smoothing:auto;-webkit-font-smoothing:subpixel-antialiased;direction:ltr;font-family:Avenir,\\\"Avenir Next\\\",\\\"Helvetica Neue\\\",\\\"Segoe UI\\\",Helvetica,Arial,sans-serif;font-variant-numeric:tabular-nums;font-weight:500;line-height:1.7;max-width:100%;min-width:200px;position:relative;text-shadow:none;transition:box-shadow .3s ease}.plyr audio,.plyr video{border-radius:inherit;height:auto;vertical-align:middle;width:100%}.plyr button{font:inherit;line-height:inherit;width:auto}.plyr:focus{outline:0}.plyr--full-ui{box-sizing:border-box}.plyr--full-ui *,.plyr--full-ui ::after,.plyr--full-ui ::before{box-sizing:inherit}.plyr--full-ui a,.plyr--full-ui button,.plyr--full-ui input,.plyr--full-ui label{touch-action:manipulation}.plyr__badge{background:#4a5764;border-radius:2px;color:#fff;font-size:9px;line-height:1;padding:3px 4px}.plyr--full-ui ::-webkit-media-text-track-container{display:none}.plyr__captions{animation:plyr-fade-in .3s ease;bottom:0;color:#fff;display:none;font-size:14px;left:0;padding:10px;position:absolute;text-align:center;transition:transform .4s ease-in-out;width:100%}.plyr__captions .plyr__caption{background:rgba(0,0,0,.8);border-radius:2px;-webkit-box-decoration-break:clone;box-decoration-break:clone;line-height:185%;padding:.2em .5em;white-space:pre-wrap}.plyr__captions .plyr__caption div{display:inline}.plyr__captions span:empty{display:none}@media (min-width:480px){.plyr__captions{font-size:16px;padding:20px}}@media (min-width:768px){.plyr__captions{font-size:18px}}.plyr--captions-active .plyr__captions{display:block}.plyr:not(.plyr--hide-controls) .plyr__controls:not(:empty)~.plyr__captions{transform:translateY(-40px)}.plyr__control{background:0 0;border:0;border-radius:3px;color:inherit;cursor:pointer;flex-shrink:0;overflow:visible;padding:7px;position:relative;transition:all .3s ease}.plyr__control svg{display:block;fill:currentColor;height:18px;pointer-events:none;width:18px}.plyr__control:focus{outline:0}.plyr__control.plyr__tab-focus{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}a.plyr__control{text-decoration:none}a.plyr__control::after,a.plyr__control::before{display:none}.plyr__control.plyr__control--pressed .icon--not-pressed,.plyr__control.plyr__control--pressed .label--not-pressed,.plyr__control:not(.plyr__control--pressed) .icon--pressed,.plyr__control:not(.plyr__control--pressed) .label--pressed{display:none}.plyr--audio .plyr__control.plyr__tab-focus,.plyr--audio .plyr__control:hover,.plyr--audio .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr--video .plyr__control.plyr__tab-focus,.plyr--video .plyr__control:hover,.plyr--video .plyr__control[aria-expanded=true]{background:#00b3ff;color:#fff}.plyr__control--overlaid{background:rgba(0,179,255,.8);border:0;border-radius:100%;color:#fff;display:none;left:50%;padding:15px;position:absolute;top:50%;transform:translate(-50%,-50%);z-index:2}.plyr__control--overlaid svg{left:2px;position:relative}.plyr__control--overlaid:focus,.plyr__control--overlaid:hover{background:#00b3ff}.plyr--playing .plyr__control--overlaid{opacity:0;visibility:hidden}.plyr--full-ui.plyr--video .plyr__control--overlaid{display:block}.plyr--full-ui ::-webkit-media-controls{display:none}.plyr__controls{align-items:center;display:flex;justify-content:flex-end;text-align:center}.plyr__controls .plyr__progress__container{flex:1;min-width:0}.plyr__controls .plyr__controls__item{margin-left:2.5px}.plyr__controls .plyr__controls__item:first-child{margin-left:0;margin-right:auto}.plyr__controls .plyr__controls__item.plyr__progress__container{padding-left:2.5px}.plyr__controls .plyr__controls__item.plyr__time{padding:0 5px}.plyr__controls .plyr__controls__item.plyr__progress__container:first-child,.plyr__controls .plyr__controls__item.plyr__time+.plyr__time,.plyr__controls .plyr__controls__item.plyr__time:first-child{padding-left:0}.plyr__controls .plyr__controls__item.plyr__volume{padding-right:5px}.plyr__controls .plyr__controls__item.plyr__volume:first-child{padding-right:0}.plyr__controls:empty{display:none}.plyr--audio .plyr__controls{background:#fff;border-radius:inherit;color:#4a5764;padding:10px}.plyr--video .plyr__controls{background:linear-gradient(rgba(0,0,0,0),rgba(0,0,0,.7));border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;bottom:0;color:#fff;left:0;padding:20px 5px 5px;position:absolute;right:0;transition:opacity .4s ease-in-out,transform .4s ease-in-out;z-index:3}@media (min-width:480px){.plyr--video .plyr__controls{padding:35px 10px 10px}}.plyr--video.plyr--hide-controls .plyr__controls{opacity:0;pointer-events:none;transform:translateY(100%)}.plyr [data-plyr=airplay],.plyr [data-plyr=captions],.plyr [data-plyr=fullscreen],.plyr [data-plyr=pip]{display:none}.plyr--airplay-supported [data-plyr=airplay],.plyr--captions-enabled [data-plyr=captions],.plyr--fullscreen-enabled [data-plyr=fullscreen],.plyr--pip-supported [data-plyr=pip]{display:inline-block}.plyr__menu{display:flex;position:relative}.plyr__menu .plyr__control svg{transition:transform .3s ease}.plyr__menu .plyr__control[aria-expanded=true] svg{transform:rotate(90deg)}.plyr__menu .plyr__control[aria-expanded=true] .plyr__tooltip{display:none}.plyr__menu__container{animation:plyr-popup .2s ease;background:rgba(255,255,255,.9);border-radius:4px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:16px;margin-bottom:10px;position:absolute;right:-3px;text-align:left;white-space:nowrap;z-index:3}.plyr__menu__container>div{overflow:hidden;transition:height .35s cubic-bezier(.4,0,.2,1),width .35s cubic-bezier(.4,0,.2,1)}.plyr__menu__container::after{border:4px solid transparent;border-top-color:rgba(255,255,255,.9);content:'';height:0;position:absolute;right:15px;top:100%;width:0}.plyr__menu__container [role=menu]{padding:7px}.plyr__menu__container [role=menuitem],.plyr__menu__container [role=menuitemradio]{margin-top:2px}.plyr__menu__container [role=menuitem]:first-child,.plyr__menu__container [role=menuitemradio]:first-child{margin-top:0}.plyr__menu__container .plyr__control{align-items:center;color:#4a5764;display:flex;font-size:14px;padding:4px 11px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr__menu__container .plyr__control>span{align-items:inherit;display:flex;width:100%}.plyr__menu__container .plyr__control::after{border:4px solid transparent;content:'';position:absolute;top:50%;transform:translateY(-50%)}.plyr__menu__container .plyr__control--forward{padding-right:28px}.plyr__menu__container .plyr__control--forward::after{border-left-color:rgba(74,87,100,.8);right:5px}.plyr__menu__container .plyr__control--forward.plyr__tab-focus::after,.plyr__menu__container .plyr__control--forward:hover::after{border-left-color:currentColor}.plyr__menu__container .plyr__control--back{font-weight:500;margin:7px;margin-bottom:3px;padding-left:28px;position:relative;width:calc(100% - 14px)}.plyr__menu__container .plyr__control--back::after{border-right-color:rgba(74,87,100,.8);left:7px}.plyr__menu__container .plyr__control--back::before{background:#c1c9d1;box-shadow:0 1px 0 #fff;content:'';height:1px;left:0;margin-top:4px;overflow:hidden;position:absolute;right:0;top:100%}.plyr__menu__container .plyr__control--back.plyr__tab-focus::after,.plyr__menu__container .plyr__control--back:hover::after{border-right-color:currentColor}.plyr__menu__container .plyr__control[role=menuitemradio]{padding-left:7px}.plyr__menu__container .plyr__control[role=menuitemradio]::after,.plyr__menu__container .plyr__control[role=menuitemradio]::before{border-radius:100%}.plyr__menu__container .plyr__control[role=menuitemradio]::before{background:rgba(0,0,0,.1);content:'';display:block;flex-shrink:0;height:16px;margin-right:10px;transition:all .3s ease;width:16px}.plyr__menu__container .plyr__control[role=menuitemradio]::after{background:#fff;border:0;height:6px;left:12px;opacity:0;top:50%;transform:translateY(-50%) scale(0);transition:transform .3s ease,opacity .3s ease;width:6px}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::before{background:#00b3ff}.plyr__menu__container .plyr__control[role=menuitemradio][aria-checked=true]::after{opacity:1;transform:translateY(-50%) scale(1)}.plyr__menu__container .plyr__control[role=menuitemradio].plyr__tab-focus::before,.plyr__menu__container .plyr__control[role=menuitemradio]:hover::before{background:rgba(0,0,0,.1)}.plyr__menu__container .plyr__menu__value{align-items:center;display:flex;margin-left:auto;margin-right:-5px;overflow:hidden;padding-left:25px;pointer-events:none}.plyr--full-ui input[type=range]{-webkit-appearance:none;background:0 0;border:0;border-radius:26px;color:#00b3ff;display:block;height:19px;margin:0;padding:0;transition:box-shadow .3s ease;width:100%}.plyr--full-ui input[type=range]::-webkit-slider-runnable-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-webkit-user-select:none;user-select:none;background-image:linear-gradient(to right,currentColor var(--value,0),transparent var(--value,0))}.plyr--full-ui input[type=range]::-webkit-slider-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;-webkit-appearance:none;margin-top:-4px}.plyr--full-ui input[type=range]::-moz-range-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-moz-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-moz-range-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px}.plyr--full-ui input[type=range]::-moz-range-progress{background:currentColor;border-radius:2.5px;height:5px}.plyr--full-ui input[type=range]::-ms-track{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;color:transparent}.plyr--full-ui input[type=range]::-ms-fill-upper{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none}.plyr--full-ui input[type=range]::-ms-fill-lower{background:0 0;border:0;border-radius:2.5px;height:5px;transition:box-shadow .3s ease;-ms-user-select:none;user-select:none;background:currentColor}.plyr--full-ui input[type=range]::-ms-thumb{background:#fff;border:0;border-radius:100%;box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2);height:13px;position:relative;transition:all .2s ease;width:13px;margin-top:0}.plyr--full-ui input[type=range]::-ms-tooltip{display:none}.plyr--full-ui input[type=range]:focus{outline:0}.plyr--full-ui input[type=range]::-moz-focus-outer{border:0}.plyr--full-ui input[type=range].plyr__tab-focus::-webkit-slider-runnable-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-moz-range-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui input[type=range].plyr__tab-focus::-ms-track{box-shadow:0 0 0 5px rgba(0,179,255,.5);outline:0}.plyr--full-ui.plyr--video input[type=range]::-webkit-slider-runnable-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-moz-range-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]::-ms-track{background-color:rgba(255,255,255,.25)}.plyr--full-ui.plyr--video input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--video input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(255,255,255,.5)}.plyr--full-ui.plyr--audio input[type=range]::-webkit-slider-runnable-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-moz-range-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]::-ms-track{background-color:rgba(193,201,209,.66)}.plyr--full-ui.plyr--audio input[type=range]:active::-webkit-slider-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-moz-range-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr--full-ui.plyr--audio input[type=range]:active::-ms-thumb{box-shadow:0 1px 1px rgba(0,0,0,.15),0 0 0 1px rgba(35,41,47,.2),0 0 0 3px rgba(0,0,0,.1)}.plyr__poster{background-color:#000;background-position:50% 50%;background-repeat:no-repeat;background-size:contain;height:100%;left:0;opacity:0;position:absolute;top:0;transition:opacity .2s ease;width:100%;z-index:1}.plyr--stopped.plyr__poster-enabled .plyr__poster{opacity:1}.plyr__time{font-size:14px}.plyr__time+.plyr__time::before{content:'\\\\2044';margin-right:10px}@media (max-width:767px){.plyr__time+.plyr__time{display:none}}.plyr--video .plyr__time{text-shadow:0 1px 1px rgba(0,0,0,.15)}.plyr__tooltip{background:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);color:#4a5764;font-size:14px;font-weight:500;left:50%;line-height:1.3;margin-bottom:10px;opacity:0;padding:5px 7.5px;pointer-events:none;position:absolute;transform:translate(-50%,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;white-space:nowrap;z-index:2}.plyr__tooltip::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr .plyr__control.plyr__tab-focus .plyr__tooltip,.plyr .plyr__control:hover .plyr__tooltip,.plyr__tooltip--visible{opacity:1;transform:translate(-50%,0) scale(1)}.plyr .plyr__control:hover .plyr__tooltip{z-index:3}.plyr__controls>.plyr__control:first-child .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip{left:0;transform:translate(0,10px) scale(.8);transform-origin:0 100%}.plyr__controls>.plyr__control:first-child .plyr__tooltip::before,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip::before{left:16px}.plyr__controls>.plyr__control:last-child .plyr__tooltip{left:auto;right:0;transform:translate(0,10px) scale(.8);transform-origin:100% 100%}.plyr__controls>.plyr__control:last-child .plyr__tooltip::before{left:auto;right:16px;transform:translateX(50%)}.plyr__controls>.plyr__control:first-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control .plyr__tooltip--visible,.plyr__controls>.plyr__control:first-child+.plyr__control.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child+.plyr__control:hover .plyr__tooltip,.plyr__controls>.plyr__control:first-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:first-child:hover .plyr__tooltip,.plyr__controls>.plyr__control:last-child .plyr__tooltip--visible,.plyr__controls>.plyr__control:last-child.plyr__tab-focus .plyr__tooltip,.plyr__controls>.plyr__control:last-child:hover .plyr__tooltip{transform:translate(0,0) scale(1)}.plyr--video{background:#000;overflow:hidden}.plyr--video.plyr--menu-open{overflow:visible}.plyr__video-wrapper{background:#000;border-radius:inherit;overflow:hidden;position:relative;z-index:0}.plyr__video-embed,.plyr__video-wrapper--fixed-ratio{height:0;padding-bottom:56.25%}.plyr__video-embed iframe,.plyr__video-wrapper--fixed-ratio video{border:0;height:100%;left:0;position:absolute;top:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;width:100%}.plyr--full-ui .plyr__video-embed>.plyr__video-embed__container{padding-bottom:240%;position:relative;transform:translateY(-38.28125%)}.plyr__progress{left:6.5px;margin-right:13px;position:relative}.plyr__progress input[type=range],.plyr__progress__buffer{margin-left:-6.5px;margin-right:-6.5px;width:calc(100% + 13px)}.plyr__progress input[type=range]{position:relative;z-index:2}.plyr__progress .plyr__tooltip{font-size:14px;left:0}.plyr__progress__buffer{-webkit-appearance:none;background:0 0;border:0;border-radius:100px;height:5px;left:0;margin-top:-2.5px;padding:0;position:absolute;top:50%}.plyr__progress__buffer::-webkit-progress-bar{background:0 0}.plyr__progress__buffer::-webkit-progress-value{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-moz-progress-bar{background:currentColor;border-radius:100px;min-width:5px;transition:width .2s ease}.plyr__progress__buffer::-ms-fill{border-radius:100px;transition:width .2s ease}.plyr--video .plyr__progress__buffer{box-shadow:0 1px 1px rgba(0,0,0,.15);color:rgba(255,255,255,.25)}.plyr--audio .plyr__progress__buffer{color:rgba(193,201,209,.66)}.plyr--loading .plyr__progress__buffer{animation:plyr-progress 1s linear infinite;background-image:linear-gradient(-45deg,rgba(35,41,47,.6) 25%,transparent 25%,transparent 50%,rgba(35,41,47,.6) 50%,rgba(35,41,47,.6) 75%,transparent 75%,transparent);background-repeat:repeat-x;background-size:25px 25px;color:transparent}.plyr--video.plyr--loading .plyr__progress__buffer{background-color:rgba(255,255,255,.25)}.plyr--audio.plyr--loading .plyr__progress__buffer{background-color:rgba(193,201,209,.66)}.plyr__volume{align-items:center;display:flex;flex:1;position:relative}.plyr__volume input[type=range]{margin-left:5px;position:relative;z-index:2}@media (min-width:480px){.plyr__volume{max-width:90px}}@media (min-width:768px){.plyr__volume{max-width:110px}}.plyr--is-ios .plyr__volume{display:none!important}.plyr--is-ios.plyr--vimeo [data-plyr=mute]{display:none!important}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:fullscreen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}.plyr:fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}.plyr:-ms-fullscreen .plyr__captions{font-size:21px}.plyr:fullscreen .plyr__captions{font-size:21px}}.plyr:-webkit-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-webkit-full-screen video{height:100%}.plyr:-webkit-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-webkit-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-webkit-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-webkit-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-webkit-full-screen .plyr__captions{font-size:21px}}.plyr:-moz-full-screen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-moz-full-screen video{height:100%}.plyr:-moz-full-screen .plyr__video-wrapper{height:100%;position:static}.plyr:-moz-full-screen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-moz-full-screen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-moz-full-screen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-moz-full-screen .plyr__captions{font-size:21px}}.plyr:-ms-fullscreen{background:#000;border-radius:0!important;height:100%;margin:0;width:100%}.plyr:-ms-fullscreen video{height:100%}.plyr:-ms-fullscreen .plyr__video-wrapper{height:100%;position:static}.plyr:-ms-fullscreen.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen{display:block}.plyr:-ms-fullscreen .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr:-ms-fullscreen.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr:-ms-fullscreen .plyr__captions{font-size:21px}}.plyr--fullscreen-fallback{background:#000;border-radius:0!important;height:100%;margin:0;width:100%;bottom:0;left:0;position:fixed;right:0;top:0;z-index:10000000}.plyr--fullscreen-fallback video{height:100%}.plyr--fullscreen-fallback .plyr__video-wrapper{height:100%;position:static}.plyr--fullscreen-fallback.plyr--vimeo .plyr__video-wrapper{height:0;position:relative;top:50%;transform:translateY(-50%)}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen{display:block}.plyr--fullscreen-fallback .plyr__control .icon--exit-fullscreen+svg{display:none}.plyr--fullscreen-fallback.plyr--hide-controls{cursor:none}@media (min-width:1024px){.plyr--fullscreen-fallback .plyr__captions{font-size:21px}}.plyr__ads{border-radius:inherit;bottom:0;cursor:pointer;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:-1}.plyr__ads>div,.plyr__ads>div iframe{height:100%;position:absolute;width:100%}.plyr__ads::after{background:rgba(35,41,47,.8);border-radius:2px;bottom:10px;color:#fff;content:attr(data-badge-text);font-size:11px;padding:2px 6px;pointer-events:none;position:absolute;right:10px;z-index:3}.plyr__ads::after:empty{display:none}.plyr__cues{background:currentColor;display:block;height:5px;left:0;margin:-2.5px 0 0;opacity:.8;position:absolute;top:50%;width:3px;z-index:3}.plyr__preview-thumb{background-color:rgba(255,255,255,.9);border-radius:3px;bottom:100%;box-shadow:0 1px 2px rgba(0,0,0,.15);margin-bottom:10px;opacity:0;padding:3px;pointer-events:none;position:absolute;transform:translate(0,10px) scale(.8);transform-origin:50% 100%;transition:transform .2s .1s ease,opacity .2s .1s ease;z-index:2}.plyr__preview-thumb--is-shown{opacity:1;transform:translate(0,0) scale(1)}.plyr__preview-thumb::before{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(255,255,255,.9);bottom:-4px;content:'';height:0;left:50%;position:absolute;transform:translateX(-50%);width:0;z-index:2}.plyr__preview-thumb__image-container{background:#c1c9d1;border-radius:2px;overflow:hidden;position:relative;z-index:0}.plyr__preview-thumb__image-container img{height:100%;left:0;max-height:none;max-width:none;position:absolute;top:0;width:100%}.plyr__preview-thumb__time-container{bottom:6px;left:0;position:absolute;right:0;white-space:nowrap;z-index:3}.plyr__preview-thumb__time-container span{background-color:rgba(0,0,0,.55);border-radius:2px;color:#fff;font-size:14px;padding:3px 6px}.plyr__preview-scrubbing{bottom:0;filter:blur(1px);height:100%;left:0;margin:auto;opacity:0;overflow:hidden;position:absolute;right:0;top:0;transition:opacity .3s ease;width:100%;z-index:1}.plyr__preview-scrubbing--is-shown{opacity:1}.plyr__preview-scrubbing img{height:100%;left:0;max-height:none;max-width:none;object-fit:contain;position:absolute;top:0;width:100%}.plyr--no-transition{transition:none!important}.plyr__sr-only{clip:rect(1px,1px,1px,1px);overflow:hidden;border:0!important;height:1px!important;padding:0!important;position:absolute!important;width:1px!important}.plyr [hidden]{display:none!important}\", map: undefined, media: undefined });\n\n };\n /* scoped */\n const __vue_scope_id__ = undefined;\n /* module identifier */\n const __vue_module_identifier__ = undefined;\n /* functional template */\n const __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var VuePlyr = normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n createInjector,\n undefined,\n undefined\n );\n\nVuePlyr.install = (Vue, options = {}) => {\n if (options.plyr) {\n VuePlyr.props.options.default = () => { return { ...options.plyr } };\n }\n if (options.emit) {\n VuePlyr.props.emit.default = () => { return [...options.emit] };\n }\n Vue.component(VuePlyr.name, VuePlyr);\n};\n\nif (typeof window !== 'undefined' && window.Vue) {\n window.Vue.use(VuePlyr);\n}\n\nexport default VuePlyr;\n","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Videos.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Videos.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Videos from '../components/Videos'\n\nexport default {\n\tid: 'videos',\n\tgroup: 'media',\n\tmimes: [\n\t\t'video/mpeg',\n\t\t'video/ogg',\n\t\t'video/webm',\n\t\t'video/mp4',\n\t\t'video/x-m4v',\n\t\t'video/x-flv',\n\t\t'video/quicktime',\n\t],\n\tmimesAliases: {\n\t\t'video/x-matroska': 'video/webm',\n\t},\n\tcomponent: Videos,\n}\n","import { render, staticRenderFns } from \"./Videos.vue?vue&type=template&id=506c4880&scoped=true&\"\nimport script from \"./Videos.vue?vue&type=script&lang=js&\"\nexport * from \"./Videos.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Videos.vue?vue&type=style&index=0&id=506c4880&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"506c4880\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.davPath)?_c('VuePlyr',{ref:\"plyr\",style:({\n\t\theight: _vm.height + 'px',\n\t\twidth: _vm.width + 'px'\n\t}),attrs:{\"options\":_vm.options}},[_c('video',{ref:\"video\",attrs:{\"autoplay\":_vm.active,\"playsinline\":true,\"poster\":_vm.livePhotoPath,\"src\":_vm.davPath,\"preload\":\"metadata\"},on:{\"ended\":_vm.donePlaying,\"canplay\":_vm.doneLoading,\"loadedmetadata\":_vm.onLoadedMetadata}},[_vm._v(\"\\n\\n\\t\\t\"+_vm._s(_vm.t('viewer', 'Your browser does not support videos.'))+\"\\n\\t\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n","import mod from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Audios.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../node_modules/babel-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./Audios.vue?vue&type=script&lang=js&\"","/**\n * @copyright Copyright (c) 2020 Daniel Kesselberg \n *\n * @author Daniel Kesselberg \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Audios from '../components/Audios'\n\nexport default {\n\tid: 'audios',\n\tgroup: 'media',\n\tmimes: [\n\t\t'audio/aac',\n\t\t'audio/aacp',\n\t\t'audio/flac',\n\t\t'audio/mp4',\n\t\t'audio/mpeg',\n\t\t'audio/ogg',\n\t\t'audio/vorbis',\n\t\t'audio/wav',\n\t\t'audio/webm',\n\t],\n\tcomponent: Audios,\n}\n","import { render, staticRenderFns } from \"./Audios.vue?vue&type=template&id=2f854abf&scoped=true&\"\nimport script from \"./Audios.vue?vue&type=script&lang=js&\"\nexport * from \"./Audios.vue?vue&type=script&lang=js&\"\nimport style0 from \"./Audios.vue?vue&type=style&index=0&id=2f854abf&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"2f854abf\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.davPath)?_c('VuePlyr',{ref:\"plyr\",style:({\n\t\theight: _vm.height + 'px',\n\t\twidth: _vm.width + 'px'\n\t}),attrs:{\"options\":_vm.options}},[_c('audio',{ref:\"audio\",attrs:{\"autoplay\":_vm.active,\"src\":_vm.davPath,\"preload\":\"metadata\"},on:{\"ended\":_vm.donePlaying,\"canplay\":_vm.doneLoading}},[_vm._v(\"\\n\\n\\t\\t\"+_vm._s(_vm.t('viewer', 'Your browser does not support audio.'))+\"\\n\\t\")])]):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n\nimport Images from '../models/images'\nimport Videos from '../models/videos'\nimport Audios from '../models/audios'\n\nexport default class Viewer {\n\n\t#state;\n\t#mimetypes;\n\n\tconstructor() {\n\t\tthis.#mimetypes = []\n\t\tthis.#state = {}\n\t\tthis.#state.file = ''\n\t\tthis.#state.files = []\n\t\tthis.#state.loadMore = () => ([])\n\t\tthis.#state.onPrev = () => {}\n\t\tthis.#state.onNext = () => {}\n\t\tthis.#state.onClose = () => {}\n\t\tthis.#state.canLoop = true\n\t\tthis.#state.handlers = []\n\n\t\t// ! built-in handlers\n\t\tthis.registerHandler(Images)\n\t\tthis.registerHandler(Videos)\n\t\tthis.registerHandler(Audios)\n\n\t\tconsole.debug('OCA.Viewer initialized')\n\t}\n\n\t/**\n\t * Get the sidebar state\n\t * DO NOT EDIT properties within\n\t *\n\t * @readonly\n\t * @memberof Sidebar\n\t * @returns {Object} the data state\n\t */\n\tget state() {\n\t\treturn this.#state\n\t}\n\n\t/**\n\t * Return the registered handlers\n\t *\n\t * @readonly\n\t * @memberof Viewer\n\t */\n\tget availableHandlers() {\n\t\treturn this.#state.handlers\n\t}\n\n\t/**\n\t * Register a new handler\n\t *\n\t * @memberof Viewer\n\t * @param {Object} handler a new unregistered handler\n\t */\n\tregisterHandler(handler) {\n\t\tthis.#state.handlers.push(handler)\n\t\tthis.#mimetypes.push.apply(this.#mimetypes, handler.mimes)\n\t}\n\n\t/**\n\t * Get the current opened file\n\t *\n\t * @memberof Viewer\n\t * @returns {string} the currently opened file\n\t */\n\tget file() {\n\t\treturn this.#state.file\n\t}\n\n\t/**\n\t * Get the supported mimetypes that can be opened with the viewer\n\t *\n\t * @memberof Viewer\n\t * @returns {array} list of mimetype strings that the viewer can open\n\t */\n\tget mimetypes() {\n\t\treturn this.#mimetypes\n\t}\n\n\t/**\n\t * Open the path into the viewer\n\t *\n\t * @memberof Viewer\n\t * @param {Object} options Options for opening the viewer\n\t * @param {string} options.path path of the file to open\n\t * @param {Object[]} [options.list] the list of files as objects (fileinfo) format\n\t * @param {function} options.loadMore callback for loading more files\n\t * @param {boolean} options.canLoop can the viewer loop over the array\n\t * @param {function} options.onPrev callback when navigating back to previous file\n\t * @param {function} options.onNext callback when navigation forward to next file\n\t * @param {function} options.onClose callback when closing the viewer\n\t */\n\topen({ path, list = [], loadMore = () => ([]), canLoop = true, onPrev = () => {}, onNext = () => {}, onClose = () => {} } = {}) {\n\t\t// TODO: remove legacy method in NC 20 ?\n\t\tif (typeof arguments[0] === 'string') {\n\t\t\tpath = arguments[0]\n\t\t\tconsole.warn('Opening the viewer with a single string parameter is deprecated. Please use a destructuring object instead', `OCA.Viewer.open({ path: '${path}' })`)\n\t\t}\n\n\t\tif (!path.startsWith('/')) {\n\t\t\tthrow new Error('Please use an absolute path')\n\t\t}\n\n\t\tif (!Array.isArray(list)) {\n\t\t\tthrow new Error('The files list must be an array')\n\t\t}\n\n\t\tif (typeof loadMore !== 'function') {\n\t\t\tthrow new Error('The loadMore method must be a function')\n\t\t}\n\n\t\tthis.#state.file = path\n\t\tthis.#state.files = list\n\t\tthis.#state.loadMore = loadMore\n\t\tthis.#state.onPrev = onPrev\n\t\tthis.#state.onNext = onNext\n\t\tthis.#state.onClose = onClose\n\t\tthis.#state.canLoop = canLoop\n\t}\n\n\t/**\n\t * Close the opened file\n\t *\n\t * @memberof Viewer\n\t */\n\tclose() {\n\t\tthis.#state.file = ''\n\t\tthis.#state.files = []\n\t\tthis.#state.canLoop = true\n\t\tthis.#state.loadMore = () => ([])\n\t}\n\n}\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license GNU AGPL version 3 or any later version\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport Vue from 'vue'\nimport ViewerComponent from './views/Viewer'\nimport ViewerService from './services/Viewer'\n\nimport { generateFilePath } from '@nextcloud/router'\n\nVue.prototype.t = t\nVue.prototype.n = n\n\nVue.prototype.OC = OC\nVue.prototype.OCA = OCA\n\n// CSP config for webpack dynamic chunk loading\n// eslint-disable-next-line\n__webpack_nonce__ = btoa(OC.requestToken)\n\n// Correct the root of the app for chunk loading\n// OC.linkTo matches the apps folders\n// OC.generateUrl ensure the index.php (or not)\n// We do not want the index.php since we're loading files\n// eslint-disable-next-line\n__webpack_public_path__ = generateFilePath('viewer', '', 'js/')\n\n// Init Viewer Service\nif (window.OCA) {\n\tObject.assign(window.OCA, { Viewer: new ViewerService() })\n\tOCA.Viewer.version = appVersion\n}\n\n// Create document root\nconst ViewerRoot = document.createElement('div')\nViewerRoot.id = 'viewer'\ndocument.body.appendChild(ViewerRoot)\n\n// Put controls for video viewer\n// Needed as Firefox CSP blocks the loading of the svg through the normal plyr system\nconst VideoControls = document.createElement('div')\nVideoControls.innerHTML = PLYR_ICONS\nVideoControls.style.display = 'none'\ndocument.body.appendChild(VideoControls)\n\n// Init vue\nexport default new Vue({\n\tel: '#viewer',\n\t// When debugging the page, it's easier to find which app\n\t// is which. Especially when there is multiple apps\n\t// roots mounted o the same page!\n\t// eslint-disable-next-line vue/match-component-file-name\n\tname: 'ViewerRoot',\n\trender: h => h(ViewerComponent),\n})\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"viewer-main.js?v=e57afc0cd7352e206277","sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/@nextcloud/auth/dist/index.js","webpack:///./node_modules/@nextcloud/auth/dist/requesttoken.js","webpack:///./node_modules/@nextcloud/auth/dist/user.js","webpack:///./node_modules/@nextcloud/axios/dist/index.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/index.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/axios.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/createError.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/settle.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/defaults.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/@nextcloud/axios/node_modules/axios/lib/utils.js","webpack:///./node_modules/@nextcloud/dialogs/dist/index.es.js","webpack:///./node_modules/@nextcloud/dialogs/styles/close.svg","webpack:///./node_modules/@nextcloud/dialogs/styles/toast.scss?6dee","webpack:///./node_modules/@nextcloud/event-bus/dist/ProxyBus.js","webpack:///./node_modules/@nextcloud/event-bus/dist/SimpleBus.js","webpack:///./node_modules/@nextcloud/event-bus/dist/index.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/classes/semver.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/major.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/parse.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/functions/valid.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/constants.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/debug.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/identifiers.js","webpack:///./node_modules/@nextcloud/event-bus/node_modules/semver/internal/re.js","webpack:///./node_modules/@nextcloud/initial-state/dist/index.js","webpack:///./node_modules/@nextcloud/l10n/dist/gettext.js","webpack:///./node_modules/@nextcloud/l10n/dist/index.js","webpack:///./node_modules/@nextcloud/paths/dist/index.js","webpack:///./node_modules/@nextcloud/router/dist/index.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/ActionButton.js","webpack:///./node_modules/@nextcloud/vue/dist/Components/Modal.js","webpack:///./node_modules/@nextcloud/vue/dist/Mixins/isFullscreen.js","webpack:///./node_modules/@nextcloud/vue/dist/Mixins/isMobile.js","webpack:///./node_modules/asn1.js/lib/asn1.js","webpack:///./node_modules/asn1.js/lib/asn1/api.js","webpack:///./node_modules/asn1.js/lib/asn1/base/buffer.js","webpack:///./node_modules/asn1.js/lib/asn1/base/index.js","webpack:///./node_modules/asn1.js/lib/asn1/base/node.js","webpack:///./node_modules/asn1.js/lib/asn1/base/reporter.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/der.js","webpack:///./node_modules/asn1.js/lib/asn1/constants/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/decoders/pem.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/der.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/index.js","webpack:///./node_modules/asn1.js/lib/asn1/encoders/pem.js","webpack:///./node_modules/axios/index.js","webpack:///./node_modules/axios/lib/adapters/xhr.js","webpack:///./node_modules/axios/lib/axios.js","webpack:///./node_modules/axios/lib/cancel/Cancel.js","webpack:///./node_modules/axios/lib/cancel/CancelToken.js","webpack:///./node_modules/axios/lib/cancel/isCancel.js","webpack:///./node_modules/axios/lib/core/Axios.js","webpack:///./node_modules/axios/lib/core/InterceptorManager.js","webpack:///./node_modules/axios/lib/core/buildFullPath.js","webpack:///./node_modules/axios/lib/core/createError.js","webpack:///./node_modules/axios/lib/core/dispatchRequest.js","webpack:///./node_modules/axios/lib/core/enhanceError.js","webpack:///./node_modules/axios/lib/core/mergeConfig.js","webpack:///./node_modules/axios/lib/core/settle.js","webpack:///./node_modules/axios/lib/core/transformData.js","webpack:///./node_modules/axios/lib/defaults.js","webpack:///./node_modules/axios/lib/helpers/bind.js","webpack:///./node_modules/axios/lib/helpers/buildURL.js","webpack:///./node_modules/axios/lib/helpers/combineURLs.js","webpack:///./node_modules/axios/lib/helpers/cookies.js","webpack:///./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack:///./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack:///./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack:///./node_modules/axios/lib/helpers/parseHeaders.js","webpack:///./node_modules/axios/lib/helpers/spread.js","webpack:///./node_modules/axios/lib/utils.js","webpack:///./src/components/Audios.vue?dfe9","webpack:///./src/components/Error.vue?544c","webpack:///./src/components/Images.vue?dd52","webpack:///./src/components/Videos.vue?6141","webpack:///./src/views/Viewer.vue?a0e8","webpack:///./node_modules/balanced-match/index.js","webpack:///./node_modules/base-64/base64.js","webpack:///./node_modules/base64-js/index.js","webpack:///./node_modules/bn.js/lib/bn.js","webpack:///./node_modules/brace-expansion/index.js","webpack:///./node_modules/brorand/index.js","webpack:///./node_modules/browserify-aes/aes.js","webpack:///./node_modules/browserify-aes/authCipher.js","webpack:///./node_modules/browserify-aes/browser.js","webpack:///./node_modules/browserify-aes/decrypter.js","webpack:///./node_modules/browserify-aes/encrypter.js","webpack:///./node_modules/browserify-aes/ghash.js","webpack:///./node_modules/browserify-aes/incr32.js","webpack:///./node_modules/browserify-aes/modes/cbc.js","webpack:///./node_modules/browserify-aes/modes/cfb.js","webpack:///./node_modules/browserify-aes/modes/cfb1.js","webpack:///./node_modules/browserify-aes/modes/cfb8.js","webpack:///./node_modules/browserify-aes/modes/ctr.js","webpack:///./node_modules/browserify-aes/modes/ecb.js","webpack:///./node_modules/browserify-aes/modes/index.js","webpack:///./node_modules/browserify-aes/modes/ofb.js","webpack:///./node_modules/browserify-aes/streamCipher.js","webpack:///./node_modules/browserify-cipher/browser.js","webpack:///./node_modules/browserify-des/index.js","webpack:///./node_modules/browserify-des/modes.js","webpack:///./node_modules/browserify-rsa/index.js","webpack:///./node_modules/browserify-sign/algos.js","webpack:///./node_modules/browserify-sign/browser/index.js","webpack:///./node_modules/browserify-sign/browser/sign.js","webpack:///./node_modules/browserify-sign/browser/verify.js","webpack:///./node_modules/buffer-xor/index.js","webpack:///./node_modules/buffer/index.js","webpack:///./node_modules/camelcase/index.js","webpack:///./node_modules/cipher-base/index.js","webpack:///./node_modules/concat-map/index.js","webpack:///./node_modules/core-js/internals/a-function.js","webpack:///./node_modules/core-js/internals/a-possible-prototype.js","webpack:///./node_modules/core-js/internals/add-to-unscopables.js","webpack:///./node_modules/core-js/internals/advance-string-index.js","webpack:///./node_modules/core-js/internals/an-instance.js","webpack:///./node_modules/core-js/internals/an-object.js","webpack:///./node_modules/core-js/internals/array-for-each.js","webpack:///./node_modules/core-js/internals/array-from.js","webpack:///./node_modules/core-js/internals/array-includes.js","webpack:///./node_modules/core-js/internals/array-iteration.js","webpack:///./node_modules/core-js/internals/array-method-has-species-support.js","webpack:///./node_modules/core-js/internals/array-method-is-strict.js","webpack:///./node_modules/core-js/internals/array-method-uses-to-length.js","webpack:///./node_modules/core-js/internals/array-reduce.js","webpack:///./node_modules/core-js/internals/array-species-create.js","webpack:///./node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///./node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///./node_modules/core-js/internals/classof-raw.js","webpack:///./node_modules/core-js/internals/classof.js","webpack:///./node_modules/core-js/internals/collection-strong.js","webpack:///./node_modules/core-js/internals/collection.js","webpack:///./node_modules/core-js/internals/copy-constructor-properties.js","webpack:///./node_modules/core-js/internals/correct-prototype-getter.js","webpack:///./node_modules/core-js/internals/create-iterator-constructor.js","webpack:///./node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///./node_modules/core-js/internals/create-property-descriptor.js","webpack:///./node_modules/core-js/internals/create-property.js","webpack:///./node_modules/core-js/internals/define-iterator.js","webpack:///./node_modules/core-js/internals/define-well-known-symbol.js","webpack:///./node_modules/core-js/internals/descriptors.js","webpack:///./node_modules/core-js/internals/document-create-element.js","webpack:///./node_modules/core-js/internals/dom-iterables.js","webpack:///./node_modules/core-js/internals/engine-user-agent.js","webpack:///./node_modules/core-js/internals/engine-v8-version.js","webpack:///./node_modules/core-js/internals/enum-bug-keys.js","webpack:///./node_modules/core-js/internals/export.js","webpack:///./node_modules/core-js/internals/fails.js","webpack:///./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js","webpack:///./node_modules/core-js/internals/freezing.js","webpack:///./node_modules/core-js/internals/function-bind-context.js","webpack:///./node_modules/core-js/internals/get-built-in.js","webpack:///./node_modules/core-js/internals/get-iterator-method.js","webpack:///./node_modules/core-js/internals/get-iterator.js","webpack:///./node_modules/core-js/internals/global.js","webpack:///./node_modules/core-js/internals/has.js","webpack:///./node_modules/core-js/internals/hidden-keys.js","webpack:///./node_modules/core-js/internals/html.js","webpack:///./node_modules/core-js/internals/ie8-dom-define.js","webpack:///./node_modules/core-js/internals/indexed-object.js","webpack:///./node_modules/core-js/internals/inherit-if-required.js","webpack:///./node_modules/core-js/internals/inspect-source.js","webpack:///./node_modules/core-js/internals/internal-metadata.js","webpack:///./node_modules/core-js/internals/internal-state.js","webpack:///./node_modules/core-js/internals/is-array-iterator-method.js","webpack:///./node_modules/core-js/internals/is-array.js","webpack:///./node_modules/core-js/internals/is-forced.js","webpack:///./node_modules/core-js/internals/is-object.js","webpack:///./node_modules/core-js/internals/is-pure.js","webpack:///./node_modules/core-js/internals/is-regexp.js","webpack:///./node_modules/core-js/internals/iterate.js","webpack:///./node_modules/core-js/internals/iterators-core.js","webpack:///./node_modules/core-js/internals/iterators.js","webpack:///./node_modules/core-js/internals/native-symbol.js","webpack:///./node_modules/core-js/internals/native-url.js","webpack:///./node_modules/core-js/internals/native-weak-map.js","webpack:///./node_modules/core-js/internals/object-assign.js","webpack:///./node_modules/core-js/internals/object-create.js","webpack:///./node_modules/core-js/internals/object-define-properties.js","webpack:///./node_modules/core-js/internals/object-define-property.js","webpack:///./node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///./node_modules/core-js/internals/object-get-own-property-names.js","webpack:///./node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///./node_modules/core-js/internals/object-get-prototype-of.js","webpack:///./node_modules/core-js/internals/object-keys-internal.js","webpack:///./node_modules/core-js/internals/object-keys.js","webpack:///./node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///./node_modules/core-js/internals/object-set-prototype-of.js","webpack:///./node_modules/core-js/internals/object-to-string.js","webpack:///./node_modules/core-js/internals/own-keys.js","webpack:///./node_modules/core-js/internals/path.js","webpack:///./node_modules/core-js/internals/redefine-all.js","webpack:///./node_modules/core-js/internals/redefine.js","webpack:///./node_modules/core-js/internals/regexp-exec-abstract.js","webpack:///./node_modules/core-js/internals/regexp-exec.js","webpack:///./node_modules/core-js/internals/regexp-flags.js","webpack:///./node_modules/core-js/internals/regexp-sticky-helpers.js","webpack:///./node_modules/core-js/internals/require-object-coercible.js","webpack:///./node_modules/core-js/internals/set-global.js","webpack:///./node_modules/core-js/internals/set-species.js","webpack:///./node_modules/core-js/internals/set-to-string-tag.js","webpack:///./node_modules/core-js/internals/shared-key.js","webpack:///./node_modules/core-js/internals/shared-store.js","webpack:///./node_modules/core-js/internals/shared.js","webpack:///./node_modules/core-js/internals/species-constructor.js","webpack:///./node_modules/core-js/internals/string-multibyte.js","webpack:///./node_modules/core-js/internals/string-punycode-to-ascii.js","webpack:///./node_modules/core-js/internals/string-trim-forced.js","webpack:///./node_modules/core-js/internals/string-trim.js","webpack:///./node_modules/core-js/internals/to-absolute-index.js","webpack:///./node_modules/core-js/internals/to-indexed-object.js","webpack:///./node_modules/core-js/internals/to-integer.js","webpack:///./node_modules/core-js/internals/to-length.js","webpack:///./node_modules/core-js/internals/to-object.js","webpack:///./node_modules/core-js/internals/to-primitive.js","webpack:///./node_modules/core-js/internals/to-string-tag-support.js","webpack:///./node_modules/core-js/internals/uid.js","webpack:///./node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///./node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///./node_modules/core-js/internals/well-known-symbol.js","webpack:///./node_modules/core-js/internals/whitespaces.js","webpack:///./node_modules/core-js/modules/es.array.concat.js","webpack:///./node_modules/core-js/modules/es.array.filter.js","webpack:///./node_modules/core-js/modules/es.array.for-each.js","webpack:///./node_modules/core-js/modules/es.array.from.js","webpack:///./node_modules/core-js/modules/es.array.index-of.js","webpack:///./node_modules/core-js/modules/es.array.iterator.js","webpack:///./node_modules/core-js/modules/es.array.join.js","webpack:///./node_modules/core-js/modules/es.array.map.js","webpack:///./node_modules/core-js/modules/es.array.reduce.js","webpack:///./node_modules/core-js/modules/es.array.slice.js","webpack:///./node_modules/core-js/modules/es.array.splice.js","webpack:///./node_modules/core-js/modules/es.function.name.js","webpack:///./node_modules/core-js/modules/es.map.js","webpack:///./node_modules/core-js/modules/es.number.constructor.js","webpack:///./node_modules/core-js/modules/es.object.assign.js","webpack:///./node_modules/core-js/modules/es.object.to-string.js","webpack:///./node_modules/core-js/modules/es.regexp.exec.js","webpack:///./node_modules/core-js/modules/es.regexp.to-string.js","webpack:///./node_modules/core-js/modules/es.string.iterator.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.string.split.js","webpack:///./node_modules/core-js/modules/es.string.trim.js","webpack:///./node_modules/core-js/modules/es.symbol.description.js","webpack:///./node_modules/core-js/modules/es.symbol.iterator.js","webpack:///./node_modules/core-js/modules/es.symbol.js","webpack:///./node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///./node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///./node_modules/core-js/modules/web.url-search-params.js","webpack:///./node_modules/core-js/modules/web.url.js","webpack:///./node_modules/core-util-is/lib/util.js","webpack:///./node_modules/create-ecdh/browser.js","webpack:///./node_modules/create-hash/browser.js","webpack:///./node_modules/create-hash/md5.js","webpack:///./node_modules/create-hmac/browser.js","webpack:///./node_modules/create-hmac/legacy.js","webpack:///./node_modules/crypto-browserify/index.js","webpack:///./node_modules/@nextcloud/dialogs/styles/toast.scss","webpack:///./src/components/Audios.vue?1249","webpack:///./src/components/Images.vue?937b","webpack:///./src/components/Videos.vue?1e5a","webpack:///./src/views/Viewer.vue?c2bb","webpack:///./src/components/Error.vue?b397","webpack:///./node_modules/css-loader/dist/runtime/api.js","webpack:///./node_modules/css-loader/dist/runtime/getUrl.js","webpack:///./node_modules/debounce/index.js","webpack:///./node_modules/des.js/lib/des.js","webpack:///./node_modules/des.js/lib/des/cbc.js","webpack:///./node_modules/des.js/lib/des/cipher.js","webpack:///./node_modules/des.js/lib/des/des.js","webpack:///./node_modules/des.js/lib/des/ede.js","webpack:///./node_modules/des.js/lib/des/utils.js","webpack:///./node_modules/diffie-hellman/browser.js","webpack:///./node_modules/diffie-hellman/lib/dh.js","webpack:///./node_modules/diffie-hellman/lib/generatePrime.js","webpack:///./node_modules/elliptic/lib/elliptic.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/base.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/edwards.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/index.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/mont.js","webpack:///./node_modules/elliptic/lib/elliptic/curve/short.js","webpack:///./node_modules/elliptic/lib/elliptic/curves.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/index.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/key.js","webpack:///./node_modules/elliptic/lib/elliptic/ec/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/index.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/key.js","webpack:///./node_modules/elliptic/lib/elliptic/eddsa/signature.js","webpack:///./node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","webpack:///./node_modules/elliptic/lib/elliptic/utils.js","webpack:///./node_modules/events/events.js","webpack:///./node_modules/evp_bytestokey/index.js","webpack:///./node_modules/fast-xml-parser/src/json2xml.js","webpack:///./node_modules/fast-xml-parser/src/nimndata.js","webpack:///./node_modules/fast-xml-parser/src/node2json.js","webpack:///./node_modules/fast-xml-parser/src/node2json_str.js","webpack:///./node_modules/fast-xml-parser/src/parser.js","webpack:///./node_modules/fast-xml-parser/src/util.js","webpack:///./node_modules/fast-xml-parser/src/validator.js","webpack:///./node_modules/fast-xml-parser/src/xmlNode.js","webpack:///./node_modules/fast-xml-parser/src/xmlstr2xmlnode.js","webpack:///./node_modules/hammerjs/hammer.js","webpack:///./node_modules/hash-base/index.js","webpack:///./node_modules/hash.js/lib/hash.js","webpack:///./node_modules/hash.js/lib/hash/common.js","webpack:///./node_modules/hash.js/lib/hash/hmac.js","webpack:///./node_modules/hash.js/lib/hash/ripemd.js","webpack:///./node_modules/hash.js/lib/hash/sha.js","webpack:///./node_modules/hash.js/lib/hash/sha/1.js","webpack:///./node_modules/hash.js/lib/hash/sha/224.js","webpack:///./node_modules/hash.js/lib/hash/sha/256.js","webpack:///./node_modules/hash.js/lib/hash/sha/384.js","webpack:///./node_modules/hash.js/lib/hash/sha/512.js","webpack:///./node_modules/hash.js/lib/hash/sha/common.js","webpack:///./node_modules/hash.js/lib/hash/utils.js","webpack:///./node_modules/he/he.js","webpack:///./node_modules/hmac-drbg/lib/hmac-drbg.js","webpack:///./node_modules/hot-patcher/source/functions.js","webpack:///./node_modules/hot-patcher/source/index.js","webpack:///./node_modules/ieee754/index.js","webpack:///./node_modules/inherits/inherits_browser.js","webpack:///./node_modules/isarray/index.js","webpack:///./node_modules/lodash.get/index.js","webpack:///./node_modules/md5.js/index.js","webpack:///./node_modules/miller-rabin/lib/mr.js","webpack:///./node_modules/minimalistic-assert/index.js","webpack:///./node_modules/minimalistic-crypto-utils/lib/utils.js","webpack:///./node_modules/minimatch/minimatch.js","webpack:///./node_modules/nested-property/dist/nested-property.js","webpack:///./node_modules/node-gettext/lib/gettext.js","webpack:///./node_modules/node-gettext/lib/plurals.js","webpack:///./node_modules/parse-asn1/asn1.js","webpack:///./node_modules/parse-asn1/certificate.js","webpack:///./node_modules/parse-asn1/fixProc.js","webpack:///./node_modules/parse-asn1/index.js","webpack:///./node_modules/path-browserify/index.js","webpack:///./node_modules/path-parse/index.js","webpack:///./node_modules/path-posix/index.js","webpack:///./node_modules/pbkdf2/browser.js","webpack:///./node_modules/pbkdf2/lib/async.js","webpack:///./node_modules/pbkdf2/lib/default-encoding.js","webpack:///./node_modules/pbkdf2/lib/precondition.js","webpack:///./node_modules/pbkdf2/lib/sync-browser.js","webpack:///./node_modules/plyr/dist/plyr.min.js","webpack:///./node_modules/popper.js/dist/esm/popper.js","webpack:///./node_modules/process-nextick-args/index.js","webpack:///./node_modules/process/browser.js","webpack:///./node_modules/public-encrypt/browser.js","webpack:///./node_modules/public-encrypt/mgf.js","webpack:///./node_modules/public-encrypt/privateDecrypt.js","webpack:///./node_modules/public-encrypt/publicEncrypt.js","webpack:///./node_modules/public-encrypt/withPublic.js","webpack:///./node_modules/public-encrypt/xor.js","webpack:///./node_modules/querystringify/index.js","webpack:///./node_modules/randombytes/browser.js","webpack:///./node_modules/randomfill/browser.js","webpack:///./node_modules/readable-stream/duplex-browser.js","webpack:///./node_modules/readable-stream/lib/_stream_duplex.js","webpack:///./node_modules/readable-stream/lib/_stream_passthrough.js","webpack:///./node_modules/readable-stream/lib/_stream_readable.js","webpack:///./node_modules/readable-stream/lib/_stream_transform.js","webpack:///./node_modules/readable-stream/lib/_stream_writable.js","webpack:///./node_modules/readable-stream/lib/internal/streams/BufferList.js","webpack:///./node_modules/readable-stream/lib/internal/streams/destroy.js","webpack:///./node_modules/readable-stream/lib/internal/streams/stream-browser.js","webpack:///./node_modules/readable-stream/passthrough.js","webpack:///./node_modules/readable-stream/readable-browser.js","webpack:///./node_modules/readable-stream/transform.js","webpack:///./node_modules/readable-stream/writable-browser.js","webpack:///./node_modules/requires-port/index.js","webpack:///./node_modules/ripemd160/index.js","webpack:///./node_modules/safe-buffer/index.js","webpack:///./node_modules/setimmediate/setImmediate.js","webpack:///./node_modules/sha.js/hash.js","webpack:///./node_modules/sha.js/index.js","webpack:///./node_modules/sha.js/sha.js","webpack:///./node_modules/sha.js/sha1.js","webpack:///./node_modules/sha.js/sha224.js","webpack:///./node_modules/sha.js/sha256.js","webpack:///./node_modules/sha.js/sha384.js","webpack:///./node_modules/sha.js/sha512.js","webpack:///./node_modules/stream-browserify/index.js","webpack:///./node_modules/string_decoder/lib/string_decoder.js","webpack:///./node_modules/timers-browserify/main.js","webpack:///./node_modules/url-join/lib/url-join.js","webpack:///./node_modules/url-parse/index.js","webpack:///./node_modules/util-deprecate/browser.js","webpack:///./node_modules/util/node_modules/inherits/inherits_browser.js","webpack:///./node_modules/util/support/isBufferBrowser.js","webpack:///./node_modules/util/util.js","webpack:///./node_modules/v-tooltip/dist/v-tooltip.esm.js","webpack:///./node_modules/vm-browserify/index.js","webpack:///./node_modules/vue-async-computed/dist/vue-async-computed.esm.js","webpack:///./src/components/Audios.vue?fcb7","webpack:///./src/components/Error.vue?57f1","webpack:///./src/components/Images.vue?4016","webpack:///./src/components/Videos.vue?976f","webpack:///./src/views/Viewer.vue?fd09","webpack:///./node_modules/vue-loader/lib/runtime/componentNormalizer.js","webpack:///./node_modules/vue-plyr/dist/vue-plyr.mjs","webpack:///./node_modules/vue-resize/dist/vue-resize.esm.js","webpack:///./src/components/Audios.vue?0ed1","webpack:///./src/components/Images.vue?8e5c","webpack:///./src/components/Videos.vue?6f1d","webpack:///./src/views/Viewer.vue?be4c","webpack:///./src/components/Error.vue?8dac","webpack:///./node_modules/vue-style-loader/lib/addStylesClient.js","webpack:///./node_modules/vue-style-loader/lib/listToStyles.js","webpack:///./node_modules/vue/dist/vue.runtime.esm.js","webpack:///./node_modules/webdav/dist/node/auth.js","webpack:///./node_modules/webdav/dist/node/crypto.js","webpack:///./node_modules/webdav/dist/node/encode.js","webpack:///./node_modules/webdav/dist/node/factory.js","webpack:///./node_modules/webdav/dist/node/fetch.js","webpack:///./node_modules/webdav/dist/node/index.js","webpack:///./node_modules/webdav/dist/node/interface/copyFile.js","webpack:///./node_modules/webdav/dist/node/interface/createDirectory.js","webpack:///./node_modules/webdav/dist/node/interface/createStream.js","webpack:///./node_modules/webdav/dist/node/interface/custom.js","webpack:///./node_modules/webdav/dist/node/interface/dav.js","webpack:///./node_modules/webdav/dist/node/interface/delete.js","webpack:///./node_modules/webdav/dist/node/interface/directoryContents.js","webpack:///./node_modules/webdav/dist/node/interface/exists.js","webpack:///./node_modules/webdav/dist/node/interface/getFile.js","webpack:///./node_modules/webdav/dist/node/interface/moveFile.js","webpack:///./node_modules/webdav/dist/node/interface/putFile.js","webpack:///./node_modules/webdav/dist/node/interface/quota.js","webpack:///./node_modules/webdav/dist/node/interface/stat.js","webpack:///./node_modules/webdav/dist/node/merge.js","webpack:///./node_modules/webdav/dist/node/patcher.js","webpack:///./node_modules/webdav/dist/node/request.js","webpack:///./node_modules/webdav/dist/node/response.js","webpack:///./node_modules/webdav/dist/node/url.js","webpack:///(webpack)/buildin/global.js","webpack:///(webpack)/buildin/module.js","webpack:///./src/assets/menu-sidebar-white.svg","webpack:///./src/components/Audios.vue","webpack:///./src/components/Audios.vue?a351","webpack:///./src/components/Audios.vue?4447","webpack:///./src/components/Audios.vue?9738","webpack:///./src/components/Error.vue","webpack:///./src/components/Error.vue?0dab","webpack:///./src/components/Error.vue?385e","webpack:///./src/components/Error.vue?75c2","webpack:///./src/components/Images.vue","webpack:///./src/components/Images.vue?81f6","webpack:///./src/components/Images.vue?efaa","webpack:///./src/components/Images.vue?2c76","webpack:///./src/components/Videos.vue","webpack:///./src/components/Videos.vue?4e5b","webpack:///./src/components/Videos.vue?ff7e","webpack:///./src/components/Videos.vue?2c64","webpack:///./src/main.js","webpack:///./src/mixins/Mime.js","webpack:///./src/mixins/PreviewUrl.js","webpack:///./src/models/audios.js","webpack:///./src/models/file.js","webpack:///./src/models/images.js","webpack:///./src/models/videos.js","webpack:///./src/services/DavClient.js","webpack:///./src/services/FileInfo.js","webpack:///./src/services/FileList.js","webpack:///./src/services/FilesActionHandler.js","webpack:///./src/services/Viewer.js","webpack:///./src/utils/CancelableRequest.js","webpack:///./src/utils/davUtils.js","webpack:///./src/utils/fileUtils.js","webpack:///./src/utils/numberUtil.js","webpack:///./src/views/Viewer.vue","webpack:///./src/views/Viewer.vue?043c","webpack:///./src/views/Viewer.vue?740e","webpack:///./src/views/Viewer.vue?034b"],"sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/js/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/main.js\");\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"getRequestToken\", {\n enumerable: true,\n get: function get() {\n return _requesttoken.getRequestToken;\n }\n});\nObject.defineProperty(exports, \"onRequestTokenUpdate\", {\n enumerable: true,\n get: function get() {\n return _requesttoken.onRequestTokenUpdate;\n }\n});\nObject.defineProperty(exports, \"getCurrentUser\", {\n enumerable: true,\n get: function get() {\n return _user.getCurrentUser;\n }\n});\n\nvar _requesttoken = require(\"./requesttoken\");\n\nvar _user = require(\"./user\");\n//# sourceMappingURL=index.js.map","\"use strict\";\n\nrequire(\"core-js/modules/es.array.for-each\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getRequestToken = getRequestToken;\nexports.onRequestTokenUpdate = onRequestTokenUpdate;\n\nvar _eventBus = require(\"@nextcloud/event-bus\");\n\nvar tokenElement = document.getElementsByTagName('head')[0];\nvar token = tokenElement ? tokenElement.getAttribute('data-requesttoken') : null;\nvar observers = [];\n\nfunction getRequestToken() {\n return token;\n}\n\nfunction onRequestTokenUpdate(observer) {\n observers.push(observer);\n} // Listen to server event and keep token in sync\n\n\n(0, _eventBus.subscribe)('csrf-token-update', function (e) {\n token = e.token;\n observers.forEach(function (observer) {\n try {\n observer(e.token);\n } catch (e) {\n console.error('error updating CSRF token observer', e);\n }\n });\n});\n//# sourceMappingURL=requesttoken.js.map","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getCurrentUser = getCurrentUser;\n/// \nvar uidElement = document.getElementsByTagName('head')[0];\nvar uid = uidElement ? uidElement.getAttribute('data-user') : null;\nvar displayNameElement = document.getElementsByTagName('head')[0];\nvar displayName = displayNameElement ? displayNameElement.getAttribute('data-user-displayname') : null;\nvar isAdmin = typeof OC === 'undefined' ? false : OC.isUserAdmin();\n\nfunction getCurrentUser() {\n if (uid === null) {\n return null;\n }\n\n return {\n uid: uid,\n displayName: displayName,\n isAdmin: isAdmin\n };\n}\n//# sourceMappingURL=user.js.map","\"use strict\";\n\nrequire(\"core-js/modules/es.object.assign\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _axios = _interopRequireDefault(require(\"axios\"));\n\nvar _auth = require(\"@nextcloud/auth\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar client = _axios.default.create({\n headers: {\n requesttoken: (0, _auth.getRequestToken)()\n }\n});\n\nvar cancelableClient = Object.assign(client, {\n CancelToken: _axios.default.CancelToken,\n isCancel: _axios.default.isCancel\n});\n(0, _auth.onRequestTokenUpdate)(function (token) {\n return client.defaults.headers.requesttoken = token;\n});\nvar _default = cancelableClient;\nexports.default = _default;\n//# sourceMappingURL=index.js.map","module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\n\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n if (\n (utils.isBlob(requestData) || utils.isFile(requestData)) &&\n requestData.type\n ) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = unescape(encodeURIComponent(config.auth.password)) || '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n // Listen for ready state\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !config.responseType || config.responseType === 'text' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n };\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, 'ECONNABORTED',\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?\n cookies.read(config.xsrfCookieName) :\n undefined;\n\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (config.responseType) {\n try {\n request.responseType = config.responseType;\n } catch (e) {\n // Expected DOMException thrown by browsers not compatible XMLHttpRequest Level 2.\n // But, this can be suppressed for 'json' type as it can be parsed by default 'transformResponse' function.\n if (config.responseType !== 'json') {\n throw e;\n }\n }\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;\n","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\n\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\n\nCancel.prototype.__CANCEL__ = true;\n\nmodule.exports = Cancel;\n","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\n\nmodule.exports = CancelToken;\n","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n\n // Hook up interceptors middleware\n var chain = [dispatchRequest, undefined];\n var promise = Promise.resolve(config);\n\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n chain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n chain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n\n return promise;\n};\n\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\n\nmodule.exports = Axios;\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\n\nmodule.exports = InterceptorManager;\n","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};\n","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};\n","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData(\n config.data,\n config.headers,\n config.transformRequest\n );\n\n // Flatten headers\n config.headers = utils.merge(\n config.headers.common || {},\n config.headers[config.method] || {},\n config.headers\n );\n\n utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n function cleanHeaderConfig(method) {\n delete config.headers[method];\n }\n );\n\n var adapter = config.adapter || defaults.adapter;\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData(\n response.data,\n response.headers,\n config.transformResponse\n );\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData(\n reason.response.data,\n reason.response.headers,\n config.transformResponse\n );\n }\n }\n\n return Promise.reject(reason);\n });\n};\n","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};\n","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = [\n 'baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer',\n 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName',\n 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress',\n 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent',\n 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'\n ];\n var directMergeKeys = ['validateStatus'];\n\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n\n var axiosKeys = valueFromConfig2Keys\n .concat(mergeDeepPropertiesKeys)\n .concat(defaultToConfig2Keys)\n .concat(directMergeKeys);\n\n var otherKeys = Object\n .keys(config1)\n .concat(Object.keys(config2))\n .filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n\n utils.forEach(otherKeys, mergeDeepProperties);\n\n return config;\n};\n","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError(\n 'Request failed with status code ' + response.status,\n response.config,\n null,\n response.request,\n response\n ));\n }\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn(data, headers);\n });\n\n return data;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\n\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\n\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\n\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\n\nvar defaults = {\n adapter: getDefaultAdapter(),\n\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) ||\n utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data)) {\n setContentTypeIfUnset(headers, 'application/json;charset=utf-8');\n return JSON.stringify(data);\n }\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n /*eslint no-param-reassign:0*/\n if (typeof data === 'string') {\n try {\n data = JSON.parse(data);\n } catch (e) { /* Ignore */ }\n }\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\n\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nmodule.exports = defaults;\n","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n\n serializedParams = parts.join('&');\n }\n\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n};\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n // Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })()\n);\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\nmodule.exports = (\n utils.isStandardBrowserEnv() ?\n\n // Standard browser envs have full support of the APIs needed to test\n // whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })()\n);\n","'use strict';\n\nvar utils = require('../utils');\n\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};\n","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = [\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n\n if (!headers) { return parsed; }\n\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n\n return parsed;\n};\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};\n","'use strict';\n\nvar bind = require('./helpers/bind');\n\n/*global toString:true*/\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return (typeof FormData !== 'undefined') && (val instanceof FormData);\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.replace(/^\\s*/, '').replace(/\\s*$/, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||\n navigator.product === 'NativeScript' ||\n navigator.product === 'NS')) {\n return false;\n }\n return (\n typeof window !== 'undefined' &&\n typeof document !== 'undefined'\n );\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};\n","function _typeof2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof2(obj); }\n\n(function () {\n var env = {\n \"TRANSLATIONS\": [{\n \"locale\": \"ast\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"enolp , 2020\",\n \"Language-Team\": \"Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"ast\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nenolp , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: enolp , 2020\\nLanguage-Team: Asturian (https://www.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Desfacer\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"br\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Kervoas-Le Nabat Ewen , 2020\",\n \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"br\",\n \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nKervoas-Le Nabat Ewen , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Kervoas-Le Nabat Ewen , 2020\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Disober\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"ca\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Marc Riera , 2020\",\n \"Language-Team\": \"Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"ca\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nMarc Riera , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Marc Riera , 2020\\nLanguage-Team: Catalan (https://www.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Desfés\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"cs\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Pavel Borecki , 2020\",\n \"Language-Team\": \"Czech (https://www.transifex.com/nextcloud/teams/64236/cs/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"cs\",\n \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nPavel Borecki , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Pavel Borecki , 2020\\nLanguage-Team: Czech (https://www.transifex.com/nextcloud/teams/64236/cs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Zpět\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"cs_CZ\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Pavel Borecki , 2020\",\n \"Language-Team\": \"Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"cs_CZ\",\n \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nPavel Borecki , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Pavel Borecki , 2020\\nLanguage-Team: Czech (Czech Republic) (https://www.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Zpět\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"de\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Mark Ziegler , 2020\",\n \"Language-Team\": \"German (https://www.transifex.com/nextcloud/teams/64236/de/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"de\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nMark Ziegler , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Mark Ziegler , 2020\\nLanguage-Team: German (https://www.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Rückgängig\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"de_DE\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Mark Ziegler , 2020\",\n \"Language-Team\": \"German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"de_DE\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nMark Ziegler , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Mark Ziegler , 2020\\nLanguage-Team: German (Germany) (https://www.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Rückgängig\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"el\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"ByteGet, 2020\",\n \"Language-Team\": \"Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"el\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nByteGet, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: ByteGet, 2020\\nLanguage-Team: Greek (https://www.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Αναίρεση\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"fr\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"John Molakvoæ , 2020\",\n \"Language-Team\": \"French (https://www.transifex.com/nextcloud/teams/64236/fr/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"fr\",\n \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: John Molakvoæ , 2020\\nLanguage-Team: French (https://www.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Annuler\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"gl\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Miguel Anxo Bouzada , 2020\",\n \"Language-Team\": \"Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"gl\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nMiguel Anxo Bouzada , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2020\\nLanguage-Team: Galician (https://www.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Desfacer\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"he\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Yaron Shahrabani , 2020\",\n \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"he\",\n \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nYaron Shahrabani , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Yaron Shahrabani , 2020\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"ביטול\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"it\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Vincenzo Reale , 2020\",\n \"Language-Team\": \"Italian (https://www.transifex.com/nextcloud/teams/64236/it/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"it\",\n \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nVincenzo Reale , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Vincenzo Reale , 2020\\nLanguage-Team: Italian (https://www.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Annulla\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"ja_JP\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"323484, 2020\",\n \"Language-Team\": \"Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"ja_JP\",\n \"Plural-Forms\": \"nplurals=1; plural=0;\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\n323484, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: 323484, 2020\\nLanguage-Team: Japanese (Japan) (https://www.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"元に戻す\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"lt_LT\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Moo, 2020\",\n \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"lt_LT\",\n \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nMoo, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Moo, 2020\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Atšaukti\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"mk\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Сашко Тодоров, 2020\",\n \"Language-Team\": \"Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"mk\",\n \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nСашко Тодоров, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Сашко Тодоров, 2020\\nLanguage-Team: Macedonian (https://www.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Врати\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"oc\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Quentin PAGÈS, 2020\",\n \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"oc\",\n \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nQuentin PAGÈS, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Quentin PAGÈS, 2020\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Anullar\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"pl\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Robert Szmurło , 2020\",\n \"Language-Team\": \"Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"pl\",\n \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nRobert Szmurło , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Robert Szmurło , 2020\\nLanguage-Team: Polish (https://www.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Cofnij\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"pt_BR\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Paulo Schopf, 2020\",\n \"Language-Team\": \"Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"pt_BR\",\n \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nPaulo Schopf, 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Paulo Schopf, 2020\\nLanguage-Team: Portuguese (Brazil) (https://www.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Desfazer\"]\n }\n }\n }\n }\n }, {\n \"locale\": \"ru\",\n \"json\": {\n \"charset\": \"utf-8\",\n \"headers\": {\n \"Last-Translator\": \"Andrey Atapin , 2020\",\n \"Language-Team\": \"Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)\",\n \"Content-Type\": \"text/plain; charset=UTF-8\",\n \"Language\": \"ru\",\n \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\"\n },\n \"translations\": {\n \"\": {\n \"\": {\n \"msgid\": \"\",\n \"comments\": {\n \"translator\": \"\\nTranslators:\\nAndrey Atapin , 2020\\n\"\n },\n \"msgstr\": [\"Last-Translator: Andrey Atapin , 2020\\nLanguage-Team: Russian (https://www.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"]\n },\n \"Undo\": {\n \"msgid\": \"Undo\",\n \"comments\": {\n \"reference\": \"lib/toast.ts:187\"\n },\n \"msgstr\": [\"Отменить\"]\n }\n }\n }\n }\n }]\n };\n\n try {\n if (process) {\n process.env = Object.assign({}, process.env);\n Object.assign(process.env, env);\n return;\n }\n } catch (e) {} // avoid ReferenceError: process is not defined\n\n\n globalThis.process = {\n env: env\n };\n})();\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction createCommonjsModule(fn, basedir, module) {\n return module = {\n path: basedir,\n exports: {},\n require: function require(path, base) {\n return commonjsRequire(path, base === undefined || base === null ? module.path : base);\n }\n }, fn(module, module.exports), module.exports;\n}\n\nfunction commonjsRequire() {\n throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');\n}\n\nvar check = function check(it) {\n return it && it.Math == Math && it;\n}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\n\nvar global_1 = // eslint-disable-next-line no-undef\ncheck((typeof globalThis === \"undefined\" ? \"undefined\" : _typeof2(globalThis)) == 'object' && globalThis) || check((typeof window === \"undefined\" ? \"undefined\" : _typeof2(window)) == 'object' && window) || check((typeof self === \"undefined\" ? \"undefined\" : _typeof2(self)) == 'object' && self) || check(_typeof2(commonjsGlobal) == 'object' && commonjsGlobal) || // eslint-disable-next-line no-new-func\nFunction('return this')();\n\nvar fails = function fails(exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n}; // Thank's IE8 for his funny defineProperty\n\n\nvar descriptors = !fails(function () {\n return Object.defineProperty({}, 1, {\n get: function get() {\n return 7;\n }\n })[1] != 7;\n});\n\nvar isObject = function isObject(it) {\n return _typeof2(it) === 'object' ? it !== null : typeof it === 'function';\n};\n\nvar document$1 = global_1.document; // typeof document.createElement is 'object' in old IE\n\nvar EXISTS = isObject(document$1) && isObject(document$1.createElement);\n\nvar documentCreateElement = function documentCreateElement(it) {\n return EXISTS ? document$1.createElement(it) : {};\n}; // Thank's IE8 for his funny defineProperty\n\n\nvar ie8DomDefine = !descriptors && !fails(function () {\n return Object.defineProperty(documentCreateElement('div'), 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n});\n\nvar anObject = function anObject(it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n }\n\n return it;\n}; // `ToPrimitive` abstract operation\n// https://tc39.github.io/ecma262/#sec-toprimitive\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\n\n\nvar toPrimitive = function toPrimitive(input, PREFERRED_STRING) {\n if (!isObject(input)) return input;\n var fn, val;\n if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\nvar nativeDefineProperty = Object.defineProperty; // `Object.defineProperty` method\n// https://tc39.github.io/ecma262/#sec-object.defineproperty\n\nvar f = descriptors ? nativeDefineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (ie8DomDefine) try {\n return nativeDefineProperty(O, P, Attributes);\n } catch (error) {\n /* empty */\n }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\nvar objectDefineProperty = {\n f: f\n};\n\nvar createPropertyDescriptor = function createPropertyDescriptor(bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\nvar createNonEnumerableProperty = descriptors ? function (object, key, value) {\n return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\nvar setGlobal = function setGlobal(key, value) {\n try {\n createNonEnumerableProperty(global_1, key, value);\n } catch (error) {\n global_1[key] = value;\n }\n\n return value;\n};\n\nvar SHARED = '__core-js_shared__';\nvar store = global_1[SHARED] || setGlobal(SHARED, {});\nvar sharedStore = store;\nvar shared = createCommonjsModule(function (module) {\n (module.exports = function (key, value) {\n return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});\n })('versions', []).push({\n version: '3.6.5',\n mode: 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n });\n});\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar has = function has(it, key) {\n return hasOwnProperty.call(it, key);\n};\n\nvar id = 0;\nvar postfix = Math.random();\n\nvar uid = function uid(key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n\nvar nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\nvar useSymbolAsUid = nativeSymbol // eslint-disable-next-line no-undef\n&& !Symbol.sham // eslint-disable-next-line no-undef\n&& _typeof2(Symbol.iterator) == 'symbol';\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol$1 = global_1.Symbol;\nvar createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;\n\nvar wellKnownSymbol = function wellKnownSymbol(name) {\n if (!has(WellKnownSymbolsStore, name)) {\n if (nativeSymbol && has(Symbol$1, name)) WellKnownSymbolsStore[name] = Symbol$1[name];else WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n\n return WellKnownSymbolsStore[name];\n};\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\ntest[TO_STRING_TAG] = 'z';\nvar toStringTagSupport = String(test) === '[object z]';\nvar functionToString = Function.toString; // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper\n\nif (typeof sharedStore.inspectSource != 'function') {\n sharedStore.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nvar inspectSource = sharedStore.inspectSource;\nvar WeakMap = global_1.WeakMap;\nvar nativeWeakMap = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\nvar keys = shared('keys');\n\nvar sharedKey = function sharedKey(key) {\n return keys[key] || (keys[key] = uid(key));\n};\n\nvar hiddenKeys = {};\nvar WeakMap$1 = global_1.WeakMap;\nvar set, get, has$1;\n\nvar enforce = function enforce(it) {\n return has$1(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function getterFor(TYPE) {\n return function (it) {\n var state;\n\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n }\n\n return state;\n };\n};\n\nif (nativeWeakMap) {\n var store$1 = new WeakMap$1();\n var wmget = store$1.get;\n var wmhas = store$1.has;\n var wmset = store$1.set;\n\n set = function set(it, metadata) {\n wmset.call(store$1, it, metadata);\n return metadata;\n };\n\n get = function get(it) {\n return wmget.call(store$1, it) || {};\n };\n\n has$1 = function has$1(it) {\n return wmhas.call(store$1, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n\n set = function set(it, metadata) {\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n\n get = function get(it) {\n return has(it, STATE) ? it[STATE] : {};\n };\n\n has$1 = function has$1(it) {\n return has(it, STATE);\n };\n}\n\nvar internalState = {\n set: set,\n get: get,\n has: has$1,\n enforce: enforce,\n getterFor: getterFor\n};\nvar redefine = createCommonjsModule(function (module) {\n var getInternalState = internalState.get;\n var enforceInternalState = internalState.enforce;\n var TEMPLATE = String(String).split('String');\n (module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) createNonEnumerableProperty(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n\n if (O === global_1) {\n if (simple) O[key] = value;else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n\n if (simple) O[key] = value;else createNonEnumerableProperty(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n })(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n });\n});\nvar toString = {}.toString;\n\nvar classofRaw = function classofRaw(it) {\n return toString.call(it).slice(8, -1);\n};\n\nvar TO_STRING_TAG$1 = wellKnownSymbol('toStringTag'); // ES3 wrong here\n\nvar CORRECT_ARGUMENTS = classofRaw(function () {\n return arguments;\n}()) == 'Arguments'; // fallback for IE11 Script Access Denied error\n\nvar tryGet = function tryGet(it, key) {\n try {\n return it[key];\n } catch (error) {\n /* empty */\n }\n}; // getting tag from ES6+ `Object.prototype.toString`\n\n\nvar classof = toStringTagSupport ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null' // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG$1)) == 'string' ? tag // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O) // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n}; // `Object.prototype.toString` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\nvar objectToString = toStringTagSupport ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n}; // `Object.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n\nif (!toStringTagSupport) {\n redefine(Object.prototype, 'toString', objectToString, {\n unsafe: true\n });\n}\n\nvar nativePropertyIsEnumerable = {}.propertyIsEnumerable;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // Nashorn ~ JDK8 bug\n\nvar NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({\n 1: 2\n}, 1); // `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.github.io/ecma262/#sec-object.prototype.propertyisenumerable\n\nvar f$1 = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : nativePropertyIsEnumerable;\nvar objectPropertyIsEnumerable = {\n f: f$1\n};\nvar split = ''.split; // fallback for non-array-like ES3 and non-enumerable old V8 strings\n\nvar indexedObject = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object; // `RequireObjectCoercible` abstract operation\n// https://tc39.github.io/ecma262/#sec-requireobjectcoercible\n\nvar requireObjectCoercible = function requireObjectCoercible(it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n}; // toObject with fallback for non-array-like ES3 strings\n\n\nvar toIndexedObject = function toIndexedObject(it) {\n return indexedObject(requireObjectCoercible(it));\n};\n\nvar nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor; // `Object.getOwnPropertyDescriptor` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptor\n\nvar f$2 = descriptors ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPrimitive(P, true);\n if (ie8DomDefine) try {\n return nativeGetOwnPropertyDescriptor(O, P);\n } catch (error) {\n /* empty */\n }\n if (has(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);\n};\nvar objectGetOwnPropertyDescriptor = {\n f: f$2\n};\nvar path = global_1;\n\nvar aFunction = function aFunction(variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nvar getBuiltIn = function getBuiltIn(namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global_1[namespace]) : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];\n};\n\nvar ceil = Math.ceil;\nvar floor = Math.floor; // `ToInteger` abstract operation\n// https://tc39.github.io/ecma262/#sec-tointeger\n\nvar toInteger = function toInteger(argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n\nvar min = Math.min; // `ToLength` abstract operation\n// https://tc39.github.io/ecma262/#sec-tolength\n\nvar toLength = function toLength(argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n\nvar max = Math.max;\nvar min$1 = Math.min; // Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\n\nvar toAbsoluteIndex = function toAbsoluteIndex(index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min$1(integer, length);\n}; // `Array.prototype.{ indexOf, includes }` methods implementation\n\n\nvar createMethod = function createMethod(IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value; // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++]; // eslint-disable-next-line no-self-compare\n\n if (value != value) return true; // Array#indexOf ignores holes, Array#includes - not\n } else for (; length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n }\n return !IS_INCLUDES && -1;\n };\n};\n\nvar arrayIncludes = {\n // `Array.prototype.includes` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\nvar indexOf = arrayIncludes.indexOf;\n\nvar objectKeysInternal = function objectKeysInternal(object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n\n for (key in O) {\n !has(hiddenKeys, key) && has(O, key) && result.push(key);\n } // Don't enum bug & hidden keys\n\n\n while (names.length > i) {\n if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n }\n\n return result;\n}; // IE8- don't enum bug keys\n\n\nvar enumBugKeys = ['constructor', 'hasOwnProperty', 'isPrototypeOf', 'propertyIsEnumerable', 'toLocaleString', 'toString', 'valueOf'];\nvar hiddenKeys$1 = enumBugKeys.concat('length', 'prototype'); // `Object.getOwnPropertyNames` method\n// https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n\nvar f$3 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return objectKeysInternal(O, hiddenKeys$1);\n};\n\nvar objectGetOwnPropertyNames = {\n f: f$3\n};\nvar f$4 = Object.getOwnPropertySymbols;\nvar objectGetOwnPropertySymbols = {\n f: f$4\n}; // all object keys, includes non-enumerable and symbols\n\nvar ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = objectGetOwnPropertyNames.f(anObject(it));\n var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n\nvar copyConstructorProperties = function copyConstructorProperties(target, source) {\n var keys = ownKeys(source);\n var defineProperty = objectDefineProperty.f;\n var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function isForced(feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true : value == NATIVE ? false : typeof detection == 'function' ? fails(detection) : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\nvar isForced_1 = isForced;\nvar getOwnPropertyDescriptor$1 = objectGetOwnPropertyDescriptor.f;\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\n\nvar _export = function _export(options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n\n if (GLOBAL) {\n target = global_1;\n } else if (STATIC) {\n target = global_1[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global_1[TARGET] || {}).prototype;\n }\n\n if (target) for (key in source) {\n sourceProperty = source[key];\n\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor$1(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n\n FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced); // contained in target\n\n if (!FORCED && targetProperty !== undefined) {\n if (_typeof2(sourceProperty) === _typeof2(targetProperty)) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n } // add a flag to not completely full polyfills\n\n\n if (options.sham || targetProperty && targetProperty.sham) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n } // extend global\n\n\n redefine(target, key, sourceProperty, options);\n }\n};\n\nvar nativePromiseConstructor = global_1.Promise;\n\nvar redefineAll = function redefineAll(target, src, options) {\n for (var key in src) {\n redefine(target, key, src[key], options);\n }\n\n return target;\n};\n\nvar defineProperty = objectDefineProperty.f;\nvar TO_STRING_TAG$2 = wellKnownSymbol('toStringTag');\n\nvar setToStringTag = function setToStringTag(it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG$2)) {\n defineProperty(it, TO_STRING_TAG$2, {\n configurable: true,\n value: TAG\n });\n }\n};\n\nvar SPECIES = wellKnownSymbol('species');\n\nvar setSpecies = function setSpecies(CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n var defineProperty = objectDefineProperty.f;\n\n if (descriptors && Constructor && !Constructor[SPECIES]) {\n defineProperty(Constructor, SPECIES, {\n configurable: true,\n get: function get() {\n return this;\n }\n });\n }\n};\n\nvar aFunction$1 = function aFunction$1(it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n }\n\n return it;\n};\n\nvar anInstance = function anInstance(it, Constructor, name) {\n if (!(it instanceof Constructor)) {\n throw TypeError('Incorrect ' + (name ? name + ' ' : '') + 'invocation');\n }\n\n return it;\n};\n\nvar iterators = {};\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype; // check on default Array iterator\n\nvar isArrayIteratorMethod = function isArrayIteratorMethod(it) {\n return it !== undefined && (iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n}; // optional / simple context binding\n\n\nvar functionBindContext = function functionBindContext(fn, that, length) {\n aFunction$1(fn);\n if (that === undefined) return fn;\n\n switch (length) {\n case 0:\n return function () {\n return fn.call(that);\n };\n\n case 1:\n return function (a) {\n return fn.call(that, a);\n };\n\n case 2:\n return function (a, b) {\n return fn.call(that, a, b);\n };\n\n case 3:\n return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n\n return function ()\n /* ...args */\n {\n return fn.apply(that, arguments);\n };\n};\n\nvar ITERATOR$1 = wellKnownSymbol('iterator');\n\nvar getIteratorMethod = function getIteratorMethod(it) {\n if (it != undefined) return it[ITERATOR$1] || it['@@iterator'] || iterators[classof(it)];\n}; // call something on iterator step with safe closing on error\n\n\nvar callWithSafeIterationClosing = function callWithSafeIterationClosing(iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value); // 7.4.6 IteratorClose(iterator, completion)\n } catch (error) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) anObject(returnMethod.call(iterator));\n throw error;\n }\n};\n\nvar iterate_1 = createCommonjsModule(function (module) {\n var Result = function Result(stopped, result) {\n this.stopped = stopped;\n this.result = result;\n };\n\n var iterate = module.exports = function (iterable, fn, that, AS_ENTRIES, IS_ITERATOR) {\n var boundFunction = functionBindContext(fn, that, AS_ENTRIES ? 2 : 1);\n var iterator, iterFn, index, length, result, next, step;\n\n if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (typeof iterFn != 'function') throw TypeError('Target is not iterable'); // optimisation for array iterators\n\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = toLength(iterable.length); length > index; index++) {\n result = AS_ENTRIES ? boundFunction(anObject(step = iterable[index])[0], step[1]) : boundFunction(iterable[index]);\n if (result && result instanceof Result) return result;\n }\n\n return new Result(false);\n }\n\n iterator = iterFn.call(iterable);\n }\n\n next = iterator.next;\n\n while (!(step = next.call(iterator)).done) {\n result = callWithSafeIterationClosing(iterator, boundFunction, step.value, AS_ENTRIES);\n if (_typeof2(result) == 'object' && result && result instanceof Result) return result;\n }\n\n return new Result(false);\n };\n\n iterate.stop = function (result) {\n return new Result(true, result);\n };\n});\nvar ITERATOR$2 = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function next() {\n return {\n done: !!called++\n };\n },\n 'return': function _return() {\n SAFE_CLOSING = true;\n }\n };\n\n iteratorWithReturn[ITERATOR$2] = function () {\n return this;\n }; // eslint-disable-next-line no-throw-literal\n\n\n Array.from(iteratorWithReturn, function () {\n throw 2;\n });\n} catch (error) {\n /* empty */\n}\n\nvar checkCorrectnessOfIteration = function checkCorrectnessOfIteration(exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n\n try {\n var object = {};\n\n object[ITERATOR$2] = function () {\n return {\n next: function next() {\n return {\n done: ITERATION_SUPPORT = true\n };\n }\n };\n };\n\n exec(object);\n } catch (error) {\n /* empty */\n }\n\n return ITERATION_SUPPORT;\n};\n\nvar SPECIES$1 = wellKnownSymbol('species'); // `SpeciesConstructor` abstract operation\n// https://tc39.github.io/ecma262/#sec-speciesconstructor\n\nvar speciesConstructor = function speciesConstructor(O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES$1]) == undefined ? defaultConstructor : aFunction$1(S);\n};\n\nvar html = getBuiltIn('document', 'documentElement');\nvar engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';\nvar engineIsIos = /(iphone|ipod|ipad).*applewebkit/i.test(engineUserAgent);\nvar location = global_1.location;\nvar set$1 = global_1.setImmediate;\nvar clear = global_1.clearImmediate;\nvar process$1 = global_1.process;\nvar MessageChannel = global_1.MessageChannel;\nvar Dispatch = global_1.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\n\nvar run = function run(id) {\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function runner(id) {\n return function () {\n run(id);\n };\n};\n\nvar listener = function listener(event) {\n run(event.data);\n};\n\nvar post = function post(id) {\n // old engines have not location.origin\n global_1.postMessage(id + '', location.protocol + '//' + location.host);\n}; // Node.js 0.9+ & IE10+ has setImmediate, otherwise:\n\n\nif (!set$1 || !clear) {\n set$1 = function setImmediate(fn) {\n var args = [];\n var i = 1;\n\n while (arguments.length > i) {\n args.push(arguments[i++]);\n }\n\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n (typeof fn == 'function' ? fn : Function(fn)).apply(undefined, args);\n };\n\n defer(counter);\n return counter;\n };\n\n clear = function clearImmediate(id) {\n delete queue[id];\n }; // Node.js 0.8-\n\n\n if (classofRaw(process$1) == 'process') {\n defer = function defer(id) {\n process$1.nextTick(runner(id));\n }; // Sphere (JS game engine) Dispatch API\n\n } else if (Dispatch && Dispatch.now) {\n defer = function defer(id) {\n Dispatch.now(runner(id));\n }; // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n\n } else if (MessageChannel && !engineIsIos) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = functionBindContext(port.postMessage, port, 1); // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global_1.addEventListener && typeof postMessage == 'function' && !global_1.importScripts && !fails(post) && location.protocol !== 'file:') {\n defer = post;\n global_1.addEventListener('message', listener, false); // IE8-\n } else if (ONREADYSTATECHANGE in documentCreateElement('script')) {\n defer = function defer(id) {\n html.appendChild(documentCreateElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n }; // Rest old browsers\n\n } else {\n defer = function defer(id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nvar task = {\n set: set$1,\n clear: clear\n};\nvar getOwnPropertyDescriptor$2 = objectGetOwnPropertyDescriptor.f;\nvar macrotask = task.set;\nvar MutationObserver = global_1.MutationObserver || global_1.WebKitMutationObserver;\nvar process$2 = global_1.process;\nvar Promise$1 = global_1.Promise;\nvar IS_NODE = classofRaw(process$2) == 'process'; // Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\n\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor$2(global_1, 'queueMicrotask');\nvar queueMicrotask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar flush, head, last, notify, toggle, node, promise, then; // modern engines have queueMicrotask method\n\nif (!queueMicrotask) {\n flush = function flush() {\n var parent, fn;\n if (IS_NODE && (parent = process$2.domain)) parent.exit();\n\n while (head) {\n fn = head.fn;\n head = head.next;\n\n try {\n fn();\n } catch (error) {\n if (head) notify();else last = undefined;\n throw error;\n }\n }\n\n last = undefined;\n if (parent) parent.enter();\n }; // Node.js\n\n\n if (IS_NODE) {\n notify = function notify() {\n process$2.nextTick(flush);\n }; // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n\n } else if (MutationObserver && !engineIsIos) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, {\n characterData: true\n });\n\n notify = function notify() {\n node.data = toggle = !toggle;\n }; // environments with maybe non-completely correct, but existent Promise\n\n } else if (Promise$1 && Promise$1.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise$1.resolve(undefined);\n then = promise.then;\n\n notify = function notify() {\n then.call(promise, flush);\n }; // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n\n } else {\n notify = function notify() {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global_1, flush);\n };\n }\n}\n\nvar microtask = queueMicrotask || function (fn) {\n var task = {\n fn: fn,\n next: undefined\n };\n if (last) last.next = task;\n\n if (!head) {\n head = task;\n notify();\n }\n\n last = task;\n};\n\nvar PromiseCapability = function PromiseCapability(C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aFunction$1(resolve);\n this.reject = aFunction$1(reject);\n}; // 25.4.1.5 NewPromiseCapability(C)\n\n\nvar f$5 = function f$5(C) {\n return new PromiseCapability(C);\n};\n\nvar newPromiseCapability = {\n f: f$5\n};\n\nvar promiseResolve = function promiseResolve(C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n\nvar hostReportErrors = function hostReportErrors(a, b) {\n var console = global_1.console;\n\n if (console && console.error) {\n arguments.length === 1 ? console.error(a) : console.error(a, b);\n }\n};\n\nvar perform = function perform(exec) {\n try {\n return {\n error: false,\n value: exec()\n };\n } catch (error) {\n return {\n error: true,\n value: error\n };\n }\n};\n\nvar process$3 = global_1.process;\nvar versions = process$3 && process$3.versions;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] + match[1];\n} else if (engineUserAgent) {\n match = engineUserAgent.match(/Edge\\/(\\d+)/);\n\n if (!match || match[1] >= 74) {\n match = engineUserAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nvar engineV8Version = version && +version;\nvar task$1 = task.set;\nvar SPECIES$2 = wellKnownSymbol('species');\nvar PROMISE = 'Promise';\nvar getInternalState = internalState.get;\nvar setInternalState = internalState.set;\nvar getInternalPromiseState = internalState.getterFor(PROMISE);\nvar PromiseConstructor = nativePromiseConstructor;\nvar TypeError$1 = global_1.TypeError;\nvar document$2 = global_1.document;\nvar process$4 = global_1.process;\nvar $fetch = getBuiltIn('fetch');\nvar newPromiseCapability$1 = newPromiseCapability.f;\nvar newGenericPromiseCapability = newPromiseCapability$1;\nvar IS_NODE$1 = classofRaw(process$4) == 'process';\nvar DISPATCH_EVENT = !!(document$2 && document$2.createEvent && global_1.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\nvar FORCED = isForced_1(PROMISE, function () {\n var GLOBAL_CORE_JS_PROMISE = inspectSource(PromiseConstructor) !== String(PromiseConstructor);\n\n if (!GLOBAL_CORE_JS_PROMISE) {\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (engineV8Version === 66) return true; // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n\n if (!IS_NODE$1 && typeof PromiseRejectionEvent != 'function') return true;\n } // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n\n\n if (engineV8Version >= 51 && /native code/.test(PromiseConstructor)) return false; // Detect correctness of subclassing with @@species support\n\n var promise = PromiseConstructor.resolve(1);\n\n var FakePromise = function FakePromise(exec) {\n exec(function () {\n /* empty */\n }, function () {\n /* empty */\n });\n };\n\n var constructor = promise.constructor = {};\n constructor[SPECIES$2] = FakePromise;\n return !(promise.then(function () {\n /* empty */\n }) instanceof FakePromise);\n});\nvar INCORRECT_ITERATION = FORCED || !checkCorrectnessOfIteration(function (iterable) {\n PromiseConstructor.all(iterable)['catch'](function () {\n /* empty */\n });\n}); // helpers\n\nvar isThenable = function isThenable(it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\n\nvar notify$1 = function notify$1(promise, state, isReject) {\n if (state.notified) return;\n state.notified = true;\n var chain = state.reactions;\n microtask(function () {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var index = 0; // variable length - can't use forEach\n\n while (chain.length > index) {\n var reaction = chain[index++];\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(promise, state);\n state.rejection = HANDLED;\n }\n\n if (handler === true) result = value;else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n\n if (result === reaction.promise) {\n reject(TypeError$1('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n }\n\n state.reactions = [];\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(promise, state);\n });\n};\n\nvar dispatchEvent = function dispatchEvent(name, promise, reason) {\n var event, handler;\n\n if (DISPATCH_EVENT) {\n event = document$2.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global_1.dispatchEvent(event);\n } else event = {\n promise: promise,\n reason: reason\n };\n\n if (handler = global_1['on' + name]) handler(event);else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function onUnhandled(promise, state) {\n task$1.call(global_1, function () {\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE$1) {\n process$4.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n }); // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n\n state.rejection = IS_NODE$1 || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function isUnhandled(state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function onHandleUnhandled(promise, state) {\n task$1.call(global_1, function () {\n if (IS_NODE$1) {\n process$4.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function bind(fn, promise, state, unwrap) {\n return function (value) {\n fn(promise, state, value, unwrap);\n };\n};\n\nvar internalReject = function internalReject(promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify$1(promise, state, true);\n};\n\nvar internalResolve = function internalResolve(promise, state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n\n try {\n if (promise === value) throw TypeError$1(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n\n if (then) {\n microtask(function () {\n var wrapper = {\n done: false\n };\n\n try {\n then.call(value, bind(internalResolve, promise, wrapper, state), bind(internalReject, promise, wrapper, state));\n } catch (error) {\n internalReject(promise, wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify$1(promise, state, false);\n }\n } catch (error) {\n internalReject(promise, {\n done: false\n }, error, state);\n }\n}; // constructor polyfill\n\n\nif (FORCED) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromiseConstructor, PROMISE);\n aFunction$1(executor);\n Internal.call(this);\n var state = getInternalState(this);\n\n try {\n executor(bind(internalResolve, this, state), bind(internalReject, this, state));\n } catch (error) {\n internalReject(this, state, error);\n }\n }; // eslint-disable-next-line no-unused-vars\n\n\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: [],\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n Internal.prototype = redefineAll(PromiseConstructor.prototype, {\n // `Promise.prototype.then` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.then\n then: function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability$1(speciesConstructor(this, PromiseConstructor));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = IS_NODE$1 ? process$4.domain : undefined;\n state.parent = true;\n state.reactions.push(reaction);\n if (state.state != PENDING) notify$1(this, state, false);\n return reaction.promise;\n },\n // `Promise.prototype.catch` method\n // https://tc39.github.io/ecma262/#sec-promise.prototype.catch\n 'catch': function _catch(onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n\n OwnPromiseCapability = function OwnPromiseCapability() {\n var promise = new Internal();\n var state = getInternalState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, promise, state);\n this.reject = bind(internalReject, promise, state);\n };\n\n newPromiseCapability.f = newPromiseCapability$1 = function newPromiseCapability$1(C) {\n return C === PromiseConstructor || C === PromiseWrapper ? new OwnPromiseCapability(C) : newGenericPromiseCapability(C);\n };\n\n if (typeof nativePromiseConstructor == 'function') {\n nativeThen = nativePromiseConstructor.prototype.then; // wrap native Promise#then for native async functions\n\n redefine(nativePromiseConstructor.prototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n nativeThen.call(that, resolve, reject);\n }).then(onFulfilled, onRejected); // https://github.com/zloirock/core-js/issues/640\n }, {\n unsafe: true\n }); // wrap fetch result\n\n if (typeof $fetch == 'function') _export({\n global: true,\n enumerable: true,\n forced: true\n }, {\n // eslint-disable-next-line no-unused-vars\n fetch: function fetch(input\n /* , init */\n ) {\n return promiseResolve(PromiseConstructor, $fetch.apply(global_1, arguments));\n }\n });\n }\n}\n\n_export({\n global: true,\n wrap: true,\n forced: FORCED\n}, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false);\nsetSpecies(PROMISE);\nPromiseWrapper = getBuiltIn(PROMISE); // statics\n\n_export({\n target: PROMISE,\n stat: true,\n forced: FORCED\n}, {\n // `Promise.reject` method\n // https://tc39.github.io/ecma262/#sec-promise.reject\n reject: function reject(r) {\n var capability = newPromiseCapability$1(this);\n capability.reject.call(undefined, r);\n return capability.promise;\n }\n});\n\n_export({\n target: PROMISE,\n stat: true,\n forced: FORCED\n}, {\n // `Promise.resolve` method\n // https://tc39.github.io/ecma262/#sec-promise.resolve\n resolve: function resolve(x) {\n return promiseResolve(this, x);\n }\n});\n\n_export({\n target: PROMISE,\n stat: true,\n forced: INCORRECT_ITERATION\n}, {\n // `Promise.all` method\n // https://tc39.github.io/ecma262/#sec-promise.all\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability$1(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction$1(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate_1(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n $promiseResolve.call(C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n },\n // `Promise.race` method\n // https://tc39.github.io/ecma262/#sec-promise.race\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability$1(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aFunction$1(C.resolve);\n iterate_1(iterable, function (promise) {\n $promiseResolve.call(C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n\nvar FilePickerType;\n\n(function (FilePickerType) {\n FilePickerType[FilePickerType[\"Choose\"] = 1] = \"Choose\";\n FilePickerType[FilePickerType[\"Move\"] = 2] = \"Move\";\n FilePickerType[FilePickerType[\"Copy\"] = 3] = \"Copy\";\n FilePickerType[FilePickerType[\"CopyMove\"] = 4] = \"CopyMove\";\n})(FilePickerType || (FilePickerType = {}));\n\nvar FilePicker =\n/** @class */\nfunction () {\n function FilePicker(title, multiSelect, mimeTypeFilter, modal, type, directoriesAllowed, path) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFiler = mimeTypeFilter;\n this.modal = modal;\n this.type = type;\n this.directoriesAllowed = directoriesAllowed;\n this.path = path;\n }\n\n FilePicker.prototype.pick = function () {\n var _this = this;\n\n return new Promise(function (res, rej) {\n OC.dialogs.filepicker(_this.title, res, _this.multiSelect, _this.mimeTypeFiler, _this.modal, _this.type, _this.path, {\n allowDirectoryChooser: _this.directoriesAllowed\n });\n });\n };\n\n return FilePicker;\n}();\n\nvar FilePickerBuilder =\n/** @class */\nfunction () {\n function FilePickerBuilder(title) {\n this.multiSelect = false;\n this.mimeTypeFiler = [];\n this.modal = true;\n this.type = FilePickerType.Choose;\n this.directoriesAllowed = false;\n this.title = title;\n }\n\n FilePickerBuilder.prototype.setMultiSelect = function (ms) {\n this.multiSelect = ms;\n return this;\n };\n\n FilePickerBuilder.prototype.addMimeTypeFilter = function (filter) {\n this.mimeTypeFiler.push(filter);\n return this;\n };\n\n FilePickerBuilder.prototype.setMimeTypeFilter = function (filter) {\n this.mimeTypeFiler = filter;\n return this;\n };\n\n FilePickerBuilder.prototype.setModal = function (modal) {\n this.modal = modal;\n return this;\n };\n\n FilePickerBuilder.prototype.setType = function (type) {\n this.type = type;\n return this;\n };\n\n FilePickerBuilder.prototype.allowDirectories = function (allow) {\n if (allow === void 0) {\n allow = true;\n }\n\n this.directoriesAllowed = allow;\n return this;\n };\n\n FilePickerBuilder.prototype.startAt = function (path) {\n this.path = path;\n return this;\n };\n\n FilePickerBuilder.prototype.build = function () {\n return new FilePicker(this.title, this.multiSelect, this.mimeTypeFiler, this.modal, this.type, this.directoriesAllowed, this.path);\n };\n\n return FilePickerBuilder;\n}();\n\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n} // `Object.keys` method\n// https://tc39.github.io/ecma262/#sec-object.keys\n\n\nvar objectKeys = Object.keys || function keys(O) {\n return objectKeysInternal(O, enumBugKeys);\n}; // `ToObject` abstract operation\n// https://tc39.github.io/ecma262/#sec-toobject\n\n\nvar toObject = function toObject(argument) {\n return Object(requireObjectCoercible(argument));\n};\n\nvar nativeAssign = Object.assign;\nvar defineProperty$1 = Object.defineProperty; // `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n\nvar objectAssign = !nativeAssign || fails(function () {\n // should have correct order of operations (Edge bug)\n if (descriptors && nativeAssign({\n b: 1\n }, nativeAssign(defineProperty$1({}, 'a', {\n enumerable: true,\n get: function get() {\n defineProperty$1(this, 'b', {\n value: 3,\n enumerable: false\n });\n }\n }), {\n b: 2\n })).b !== 1) return true; // should work with symbols and should have deterministic property order (V8 bug)\n\n var A = {};\n var B = {}; // eslint-disable-next-line no-undef\n\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) {\n // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;\n var propertyIsEnumerable = objectPropertyIsEnumerable.f;\n\n while (argumentsLength > index) {\n var S = indexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n\n while (length > j) {\n key = keys[j++];\n if (!descriptors || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n }\n\n return T;\n} : nativeAssign; // `Object.assign` method\n// https://tc39.github.io/ecma262/#sec-object.assign\n\n_export({\n target: 'Object',\n stat: true,\n forced: Object.assign !== objectAssign\n}, {\n assign: objectAssign\n});\n\nvar _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n}; // `IsArray` abstract operation\n// https://tc39.github.io/ecma262/#sec-isarray\n\n\nvar isArray = Array.isArray || function isArray(arg) {\n return classofRaw(arg) == 'Array';\n};\n\nvar createProperty = function createProperty(object, key, value) {\n var propertyKey = toPrimitive(key);\n if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));else object[propertyKey] = value;\n};\n\nvar SPECIES$3 = wellKnownSymbol('species'); // `ArraySpeciesCreate` abstract operation\n// https://tc39.github.io/ecma262/#sec-arrayspeciescreate\n\nvar arraySpeciesCreate = function arraySpeciesCreate(originalArray, length) {\n var C;\n\n if (isArray(originalArray)) {\n C = originalArray.constructor; // cross-realm fallback\n\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;else if (isObject(C)) {\n C = C[SPECIES$3];\n if (C === null) C = undefined;\n }\n }\n\n return new (C === undefined ? Array : C)(length === 0 ? 0 : length);\n};\n\nvar SPECIES$4 = wellKnownSymbol('species');\n\nvar arrayMethodHasSpeciesSupport = function arrayMethodHasSpeciesSupport(METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return engineV8Version >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n\n constructor[SPECIES$4] = function () {\n return {\n foo: 1\n };\n };\n\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded'; // We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\n\nvar IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function isConcatSpreadable(O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED$1 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT; // `Array.prototype.concat` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n\n_export({\n target: 'Array',\n proto: true,\n forced: FORCED$1\n}, {\n concat: function concat(arg) {\n // eslint-disable-line no-unused-vars\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n\n for (k = 0; k < len; k++, n++) {\n if (k in E) createProperty(A, n, E[k]);\n }\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n\n A.length = n;\n return A;\n }\n});\n\nvar arrayMethodIsStrict = function arrayMethodIsStrict(METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal\n method.call(null, argument || function () {\n throw 1;\n }, 1);\n });\n};\n\nvar defineProperty$2 = Object.defineProperty;\nvar cache = {};\n\nvar thrower = function thrower(it) {\n throw it;\n};\n\nvar arrayMethodUsesToLength = function arrayMethodUsesToLength(METHOD_NAME, options) {\n if (has(cache, METHOD_NAME)) return cache[METHOD_NAME];\n if (!options) options = {};\n var method = [][METHOD_NAME];\n var ACCESSORS = has(options, 'ACCESSORS') ? options.ACCESSORS : false;\n var argument0 = has(options, 0) ? options[0] : thrower;\n var argument1 = has(options, 1) ? options[1] : undefined;\n return cache[METHOD_NAME] = !!method && !fails(function () {\n if (ACCESSORS && !descriptors) return true;\n var O = {\n length: -1\n };\n if (ACCESSORS) defineProperty$2(O, 1, {\n enumerable: true,\n get: thrower\n });else O[1] = 1;\n method.call(O, argument0, argument1);\n });\n};\n\nvar $indexOf = arrayIncludes.indexOf;\nvar nativeIndexOf = [].indexOf;\nvar NEGATIVE_ZERO = !!nativeIndexOf && 1 / [1].indexOf(1, -0) < 0;\nvar STRICT_METHOD = arrayMethodIsStrict('indexOf');\nvar USES_TO_LENGTH = arrayMethodUsesToLength('indexOf', {\n ACCESSORS: true,\n 1: 0\n}); // `Array.prototype.indexOf` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.indexof\n\n_export({\n target: 'Array',\n proto: true,\n forced: NEGATIVE_ZERO || !STRICT_METHOD || !USES_TO_LENGTH\n}, {\n indexOf: function indexOf(searchElement\n /* , fromIndex = 0 */\n ) {\n return NEGATIVE_ZERO // convert -0 to +0\n ? nativeIndexOf.apply(this, arguments) || 0 : $indexOf(this, searchElement, arguments.length > 1 ? arguments[1] : undefined);\n }\n}); // `RegExp.prototype.flags` getter implementation\n// https://tc39.github.io/ecma262/#sec-get-regexp.prototype.flags\n\n\nvar regexpFlags = function regexpFlags() {\n var that = anObject(this);\n var result = '';\n if (that.global) result += 'g';\n if (that.ignoreCase) result += 'i';\n if (that.multiline) result += 'm';\n if (that.dotAll) result += 's';\n if (that.unicode) result += 'u';\n if (that.sticky) result += 'y';\n return result;\n}; // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,\n// so we use an intermediate function.\n\n\nfunction RE(s, f) {\n return RegExp(s, f);\n}\n\nvar UNSUPPORTED_Y = fails(function () {\n // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError\n var re = RE('a', 'y');\n re.lastIndex = 2;\n return re.exec('abcd') != null;\n});\nvar BROKEN_CARET = fails(function () {\n // https://bugzilla.mozilla.org/show_bug.cgi?id=773687\n var re = RE('^r', 'gy');\n re.lastIndex = 2;\n return re.exec('str') != null;\n});\nvar regexpStickyHelpers = {\n UNSUPPORTED_Y: UNSUPPORTED_Y,\n BROKEN_CARET: BROKEN_CARET\n};\nvar nativeExec = RegExp.prototype.exec; // This always refers to the native implementation, because the\n// String#replace polyfill uses ./fix-regexp-well-known-symbol-logic.js,\n// which loads this file before patching the method.\n\nvar nativeReplace = String.prototype.replace;\nvar patchedExec = nativeExec;\n\nvar UPDATES_LAST_INDEX_WRONG = function () {\n var re1 = /a/;\n var re2 = /b*/g;\n nativeExec.call(re1, 'a');\n nativeExec.call(re2, 'a');\n return re1.lastIndex !== 0 || re2.lastIndex !== 0;\n}();\n\nvar UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET; // nonparticipating capturing group, copied from es5-shim's String#split patch.\n\nvar NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;\nvar PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$1;\n\nif (PATCH) {\n patchedExec = function exec(str) {\n var re = this;\n var lastIndex, reCopy, match, i;\n var sticky = UNSUPPORTED_Y$1 && re.sticky;\n var flags = regexpFlags.call(re);\n var source = re.source;\n var charsAdded = 0;\n var strCopy = str;\n\n if (sticky) {\n flags = flags.replace('y', '');\n\n if (flags.indexOf('g') === -1) {\n flags += 'g';\n }\n\n strCopy = String(str).slice(re.lastIndex); // Support anchored sticky behavior.\n\n if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\\n')) {\n source = '(?: ' + source + ')';\n strCopy = ' ' + strCopy;\n charsAdded++;\n } // ^(? + rx + ) is needed, in combination with some str slicing, to\n // simulate the 'y' flag.\n\n\n reCopy = new RegExp('^(?:' + source + ')', flags);\n }\n\n if (NPCG_INCLUDED) {\n reCopy = new RegExp('^' + source + '$(?!\\\\s)', flags);\n }\n\n if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;\n match = nativeExec.call(sticky ? reCopy : re, strCopy);\n\n if (sticky) {\n if (match) {\n match.input = match.input.slice(charsAdded);\n match[0] = match[0].slice(charsAdded);\n match.index = re.lastIndex;\n re.lastIndex += match[0].length;\n } else re.lastIndex = 0;\n } else if (UPDATES_LAST_INDEX_WRONG && match) {\n re.lastIndex = re.global ? match.index + match[0].length : lastIndex;\n }\n\n if (NPCG_INCLUDED && match && match.length > 1) {\n // Fix browsers whose `exec` methods don't consistently return `undefined`\n // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/\n nativeReplace.call(match[0], reCopy, function () {\n for (i = 1; i < arguments.length - 2; i++) {\n if (arguments[i] === undefined) match[i] = undefined;\n }\n });\n }\n\n return match;\n };\n}\n\nvar regexpExec = patchedExec;\n\n_export({\n target: 'RegExp',\n proto: true,\n forced: /./.exec !== regexpExec\n}, {\n exec: regexpExec\n}); // TODO: Remove from `core-js@4` since it's moved to entry points\n\n\nvar SPECIES$5 = wellKnownSymbol('species');\nvar REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {\n // #replace needs built-in support for named groups.\n // #match works fine because it just return the exec results, even if it has\n // a \"grops\" property.\n var re = /./;\n\n re.exec = function () {\n var result = [];\n result.groups = {\n a: '7'\n };\n return result;\n };\n\n return ''.replace(re, '$') !== '7';\n}); // IE <= 11 replaces $0 with the whole match, as if it was $&\n// https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0\n\nvar REPLACE_KEEPS_$0 = function () {\n return 'a'.replace(/./, '$0') === '$0';\n}();\n\nvar REPLACE = wellKnownSymbol('replace'); // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string\n\nvar REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = function () {\n if (/./[REPLACE]) {\n return /./[REPLACE]('a', '$0') === '';\n }\n\n return false;\n}(); // Chrome 51 has a buggy \"split\" implementation when RegExp#exec !== nativeExec\n// Weex JS has frozen built-in prototypes, so use try / catch wrapper\n\n\nvar SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {\n var re = /(?:)/;\n var originalExec = re.exec;\n\n re.exec = function () {\n return originalExec.apply(this, arguments);\n };\n\n var result = 'ab'.split(re);\n return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';\n});\n\nvar fixRegexpWellKnownSymbolLogic = function fixRegexpWellKnownSymbolLogic(KEY, length, exec, sham) {\n var SYMBOL = wellKnownSymbol(KEY);\n var DELEGATES_TO_SYMBOL = !fails(function () {\n // String methods call symbol-named RegEp methods\n var O = {};\n\n O[SYMBOL] = function () {\n return 7;\n };\n\n return ''[KEY](O) != 7;\n });\n var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {\n // Symbol-named RegExp methods call .exec\n var execCalled = false;\n var re = /a/;\n\n if (KEY === 'split') {\n // We can't use real regex here since it causes deoptimization\n // and serious performance degradation in V8\n // https://github.com/zloirock/core-js/issues/306\n re = {}; // RegExp[@@split] doesn't call the regex's exec method, but first creates\n // a new one. We need to return the patched regex when creating the new one.\n\n re.constructor = {};\n\n re.constructor[SPECIES$5] = function () {\n return re;\n };\n\n re.flags = '';\n re[SYMBOL] = /./[SYMBOL];\n }\n\n re.exec = function () {\n execCalled = true;\n return null;\n };\n\n re[SYMBOL]('');\n return !execCalled;\n });\n\n if (!DELEGATES_TO_SYMBOL || !DELEGATES_TO_EXEC || KEY === 'replace' && !(REPLACE_SUPPORTS_NAMED_GROUPS && REPLACE_KEEPS_$0 && !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE) || KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC) {\n var nativeRegExpMethod = /./[SYMBOL];\n var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {\n if (regexp.exec === regexpExec) {\n if (DELEGATES_TO_SYMBOL && !forceStringMethod) {\n // The native String method already delegates to @@method (this\n // polyfilled function), leasing to infinite recursion.\n // We avoid it by directly calling the native @@method method.\n return {\n done: true,\n value: nativeRegExpMethod.call(regexp, str, arg2)\n };\n }\n\n return {\n done: true,\n value: nativeMethod.call(str, regexp, arg2)\n };\n }\n\n return {\n done: false\n };\n }, {\n REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,\n REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE\n });\n var stringMethod = methods[0];\n var regexMethod = methods[1];\n redefine(String.prototype, KEY, stringMethod);\n redefine(RegExp.prototype, SYMBOL, length == 2 // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)\n // 21.2.5.11 RegExp.prototype[@@split](string, limit)\n ? function (string, arg) {\n return regexMethod.call(string, this, arg);\n } // 21.2.5.6 RegExp.prototype[@@match](string)\n // 21.2.5.9 RegExp.prototype[@@search](string)\n : function (string) {\n return regexMethod.call(string, this);\n });\n }\n\n if (sham) createNonEnumerableProperty(RegExp.prototype[SYMBOL], 'sham', true);\n}; // `String.prototype.{ codePointAt, at }` methods implementation\n\n\nvar createMethod$1 = function createMethod$1(CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = String(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF ? CONVERT_TO_STRING ? S.charAt(position) : first : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nvar stringMultibyte = {\n // `String.prototype.codePointAt` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod$1(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod$1(true)\n};\nvar charAt = stringMultibyte.charAt; // `AdvanceStringIndex` abstract operation\n// https://tc39.github.io/ecma262/#sec-advancestringindex\n\nvar advanceStringIndex = function advanceStringIndex(S, index, unicode) {\n return index + (unicode ? charAt(S, index).length : 1);\n}; // `RegExpExec` abstract operation\n// https://tc39.github.io/ecma262/#sec-regexpexec\n\n\nvar regexpExecAbstract = function regexpExecAbstract(R, S) {\n var exec = R.exec;\n\n if (typeof exec === 'function') {\n var result = exec.call(R, S);\n\n if (_typeof2(result) !== 'object') {\n throw TypeError('RegExp exec method returned something other than an Object or null');\n }\n\n return result;\n }\n\n if (classofRaw(R) !== 'RegExp') {\n throw TypeError('RegExp#exec called on incompatible receiver');\n }\n\n return regexpExec.call(R, S);\n};\n\nvar max$1 = Math.max;\nvar min$2 = Math.min;\nvar floor$1 = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function maybeToString(it) {\n return it === undefined ? it : String(it);\n}; // @@replace logic\n\n\nfixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n return [// `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue);\n }, // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0 || typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n\n while (true) {\n var result = regexpExecAbstract(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max$1(min$2(toInteger(result.index), S.length), 0);\n var captures = []; // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\n for (var j = 1; j < result.length; j++) {\n captures.push(maybeToString(result[j]));\n }\n\n var namedCaptures = result.groups;\n\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + S.slice(nextSourcePosition);\n }]; // https://tc39.github.io/ecma262/#sec-getsubstitution\n\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n\n switch (ch.charAt(0)) {\n case '$':\n return '$';\n\n case '&':\n return matched;\n\n case '`':\n return str.slice(0, position);\n\n case \"'\":\n return str.slice(tailPos);\n\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n\n default:\n // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n\n if (n > m) {\n var f = floor$1(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n\n capture = captures[n - 1];\n }\n\n return capture === undefined ? '' : capture;\n });\n }\n});\nvar MATCH = wellKnownSymbol('match'); // `IsRegExp` abstract operation\n// https://tc39.github.io/ecma262/#sec-isregexp\n\nvar isRegexp = function isRegexp(it) {\n var isRegExp;\n return isObject(it) && ((isRegExp = it[MATCH]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');\n};\n\nvar arrayPush = [].push;\nvar min$3 = Math.min;\nvar MAX_UINT32 = 0xFFFFFFFF; // babel-minify transpiles RegExp('x', 'y') -> /x/y and it causes SyntaxError\n\nvar SUPPORTS_Y = !fails(function () {\n return !RegExp(MAX_UINT32, 'y');\n}); // @@split logic\n\nfixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {\n var internalSplit;\n\n if ('abbc'.split(/(b)*/)[1] == 'c' || 'test'.split(/(?:)/, -1).length != 4 || 'ab'.split(/(?:ab)*/).length != 2 || '.'.split(/(.?)(.?)/).length != 4 || '.'.split(/()()/).length > 1 || ''.split(/.?/).length) {\n // based on es5-shim implementation, need to rework it\n internalSplit = function internalSplit(separator, limit) {\n var string = String(requireObjectCoercible(this));\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (separator === undefined) return [string]; // If `separator` is not a regex, use native split\n\n if (!isRegexp(separator)) {\n return nativeSplit.call(string, separator, lim);\n }\n\n var output = [];\n var flags = (separator.ignoreCase ? 'i' : '') + (separator.multiline ? 'm' : '') + (separator.unicode ? 'u' : '') + (separator.sticky ? 'y' : '');\n var lastLastIndex = 0; // Make `global` and avoid `lastIndex` issues by working with a copy\n\n var separatorCopy = new RegExp(separator.source, flags + 'g');\n var match, lastIndex, lastLength;\n\n while (match = regexpExec.call(separatorCopy, string)) {\n lastIndex = separatorCopy.lastIndex;\n\n if (lastIndex > lastLastIndex) {\n output.push(string.slice(lastLastIndex, match.index));\n if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));\n lastLength = match[0].length;\n lastLastIndex = lastIndex;\n if (output.length >= lim) break;\n }\n\n if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop\n }\n\n if (lastLastIndex === string.length) {\n if (lastLength || !separatorCopy.test('')) output.push('');\n } else output.push(string.slice(lastLastIndex));\n\n return output.length > lim ? output.slice(0, lim) : output;\n }; // Chakra, V8\n\n } else if ('0'.split(undefined, 0).length) {\n internalSplit = function internalSplit(separator, limit) {\n return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);\n };\n } else internalSplit = nativeSplit;\n\n return [// `String.prototype.split` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.split\n function split(separator, limit) {\n var O = requireObjectCoercible(this);\n var splitter = separator == undefined ? undefined : separator[SPLIT];\n return splitter !== undefined ? splitter.call(separator, O, limit) : internalSplit.call(String(O), separator, limit);\n }, // `RegExp.prototype[@@split]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@split\n //\n // NOTE: This cannot be properly polyfilled in engines that don't support\n // the 'y' flag.\n function (regexp, limit) {\n var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var C = speciesConstructor(rx, RegExp);\n var unicodeMatching = rx.unicode;\n var flags = (rx.ignoreCase ? 'i' : '') + (rx.multiline ? 'm' : '') + (rx.unicode ? 'u' : '') + (SUPPORTS_Y ? 'y' : 'g'); // ^(? + rx + ) is needed, in combination with some S slicing, to\n // simulate the 'y' flag.\n\n var splitter = new C(SUPPORTS_Y ? rx : '^(?:' + rx.source + ')', flags);\n var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;\n if (lim === 0) return [];\n if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];\n var p = 0;\n var q = 0;\n var A = [];\n\n while (q < S.length) {\n splitter.lastIndex = SUPPORTS_Y ? q : 0;\n var z = regexpExecAbstract(splitter, SUPPORTS_Y ? S : S.slice(q));\n var e;\n\n if (z === null || (e = min$3(toLength(splitter.lastIndex + (SUPPORTS_Y ? 0 : q)), S.length)) === p) {\n q = advanceStringIndex(S, q, unicodeMatching);\n } else {\n A.push(S.slice(p, q));\n if (A.length === lim) return A;\n\n for (var i = 1; i <= z.length - 1; i++) {\n A.push(z[i]);\n if (A.length === lim) return A;\n }\n\n q = p = e;\n }\n }\n\n A.push(S.slice(p));\n return A;\n }];\n}, !SUPPORTS_Y); // a string of all valid unicode whitespaces\n// eslint-disable-next-line max-len\n\nvar whitespaces = \"\\t\\n\\x0B\\f\\r \\xA0\\u1680\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF\";\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$'); // `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\n\nvar createMethod$2 = function createMethod$2(TYPE) {\n return function ($this) {\n var string = String(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nvar stringTrim = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimstart\n start: createMethod$2(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.github.io/ecma262/#sec-string.prototype.trimend\n end: createMethod$2(2),\n // `String.prototype.trim` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.trim\n trim: createMethod$2(3)\n};\nvar non = \"\\u200B\\x85\\u180E\"; // check that a method works with the correct list\n// of whitespaces and has a correct name\n\nvar stringTrimForced = function stringTrimForced(METHOD_NAME) {\n return fails(function () {\n return !!whitespaces[METHOD_NAME]() || non[METHOD_NAME]() != non || whitespaces[METHOD_NAME].name !== METHOD_NAME;\n });\n};\n\nvar $trim = stringTrim.trim; // `String.prototype.trim` method\n// https://tc39.github.io/ecma262/#sec-string.prototype.trim\n\n_export({\n target: 'String',\n proto: true,\n forced: stringTrimForced('trim')\n}, {\n trim: function trim() {\n return $trim(this);\n }\n});\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n\nvar toastify = createCommonjsModule(function (module) {\n /*!\n * Toastify js 1.9.1\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n (function (root, factory) {\n if (module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n })(commonjsGlobal, function (global) {\n // Object initialization\n var Toastify = function Toastify(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.9.1\"; // Defining the prototype of the object\n\n\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n constructor: Toastify,\n // Initializing the object with required parameters\n init: function init(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n } // Creating the options object\n\n\n this.options = {};\n this.toastElement = null; // Validating the options\n\n this.options.text = options.text || \"Hi there!\"; // Display message\n\n this.options.node = options.node; // Display content as node\n\n this.options.duration = options.duration === 0 ? 0 : options.duration || 3000; // Display duration\n\n this.options.selector = options.selector; // Parent selector\n\n this.options.callback = options.callback || function () {}; // Callback after display\n\n\n this.options.destination = options.destination; // On-click destination\n\n this.options.newWindow = options.newWindow || false; // Open destination in new window\n\n this.options.close = options.close || false; // Show toast close icon\n\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : \"toastify-top\"; // toast position - top or bottom\n\n this.options.positionLeft = options.positionLeft || false; // toast position - left or right\n\n this.options.position = options.position || ''; // toast position - left or right\n\n this.options.backgroundColor = options.backgroundColor; // toast background color\n\n this.options.avatar = options.avatar || \"\"; // img element src - url or a path\n\n this.options.className = options.className || \"\"; // additional class names for the toast\n\n this.options.stopOnFocus = options.stopOnFocus === undefined ? true : options.stopOnFocus; // stop timeout on focus\n\n this.options.onClick = options.onClick; // Callback after click\n\n var normalOffset = {\n x: 0,\n y: 0\n };\n this.options.offset = options.offset || normalOffset; // toast offset\n // Returning the current object for chaining functions\n\n return this;\n },\n // Building the DOM element\n buildToast: function buildToast() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n } // Creating the DOM object\n\n\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className; // Positioning toast to left or right or center\n\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.');\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n } // Assigning gravity of element\n\n\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n divElement.style.background = this.options.backgroundColor;\n } // Adding the toast message/node\n\n\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node);\n } else {\n divElement.innerHTML = this.options.text;\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n } // Adding a close icon to the toast\n\n\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"span\");\n closeElement.innerHTML = \"✖\";\n closeElement.className = \"toast-close\"; // Triggering the removal of toast from DOM on close click\n\n closeElement.addEventListener(\"click\", function (event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)); //Calculating screen width\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n } // Clear timeout while toast is focused\n\n\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this; // stop countdown\n\n divElement.addEventListener(\"mouseover\", function (event) {\n window.clearTimeout(divElement.timeOutValue);\n }); // add back the timeout\n\n divElement.addEventListener(\"mouseleave\", function () {\n divElement.timeOutValue = window.setTimeout(function () {\n // Remove the toast from DOM\n self.removeElement(divElement);\n }, self.options.duration);\n });\n } // Adding an on-click destination path\n\n\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\"click\", function (event) {\n event.stopPropagation();\n\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this));\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\"click\", function (event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this));\n } // Adding offset\n\n\n if (_typeof(this.options.offset) === \"object\") {\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n var xOffset = this.options.position == \"left\" ? x : \"-\".concat(x);\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\".concat(y);\n divElement.style.transform = \"translate(\".concat(xOffset, \", \").concat(yOffset, \")\");\n } // Returning the generated element\n\n\n return divElement;\n },\n // Displaying the toast\n showToast: function showToast() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast(); // Getting the root element to with the toast needs to be added\n\n var rootElement;\n\n if (typeof this.options.selector === \"undefined\") {\n rootElement = document.body;\n } else {\n rootElement = document.getElementById(this.options.selector);\n } // Validating if root element is present in DOM\n\n\n if (!rootElement) {\n throw \"Root element is not defined\";\n } // Adding the DOM element\n\n\n rootElement.insertBefore(this.toastElement, rootElement.firstChild); // Repositioning the toasts in case multiple toasts are present\n\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(function () {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this), this.options.duration); // Binding `this` for function invocation\n } // Supporting function chaining\n\n\n return this;\n },\n hideToast: function hideToast() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n\n this.removeElement(this.toastElement);\n },\n // Removing the element from the DOM\n removeElement: function removeElement(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\"); // Removing the element from DOM after transition end\n\n window.setTimeout(function () {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n } // Remove the elemenf from the DOM, only when the parent node was not removed before.\n\n\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n } // Calling the callback function\n\n\n this.options.callback.call(toastElement); // Repositioning the toasts again\n\n Toastify.reposition();\n }.bind(this), 400); // Binding `this` for function invocation\n }\n }; // Positioning the toasts on the DOM\n\n Toastify.reposition = function () {\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15\n };\n var offsetSize = {\n top: 15,\n bottom: 15\n }; // Get all toast messages on the DOM\n\n var allToasts = document.getElementsByClassName(\"toastify\");\n var classUsed; // Modifying the position of each toast element\n\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length - 1); // Spacing between toasts\n\n var offset = 15;\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width; // Show toast in center if screen with less than or qual to 360px\n\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n } // Supporting function chaining\n\n\n return this;\n }; // Helper function to get offset.\n\n\n function getAxisOffsetAValue(axis, options) {\n if (options.offset[axis]) {\n if (isNaN(options.offset[axis])) {\n return options.offset[axis];\n } else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (elem.className && elem.className.trim().split(/\\s+/gi).indexOf(yourClass) > -1) {\n return true;\n } else {\n return false;\n }\n } // Setting up the prototype for the init object\n\n\n Toastify.lib.init.prototype = Toastify.lib; // Returning the Toastify function to be assigned to the window object/module\n\n return Toastify;\n });\n});\nvar push = [].push; // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex }` methods implementation\n\nvar createMethod$3 = function createMethod$3(TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = indexedObject(O);\n var boundFunction = functionBindContext(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var value, result;\n\n for (; length > index; index++) {\n if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3:\n return true;\n // some\n\n case 5:\n return value;\n // find\n\n case 6:\n return index;\n // findIndex\n\n case 2:\n push.call(target, value);\n // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n }\n\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nvar arrayIteration = {\n // `Array.prototype.forEach` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.foreach\n forEach: createMethod$3(0),\n // `Array.prototype.map` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.map\n map: createMethod$3(1),\n // `Array.prototype.filter` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.filter\n filter: createMethod$3(2),\n // `Array.prototype.some` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.some\n some: createMethod$3(3),\n // `Array.prototype.every` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.every\n every: createMethod$3(4),\n // `Array.prototype.find` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.find\n find: createMethod$3(5),\n // `Array.prototype.findIndex` method\n // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod$3(6)\n};\nvar $map = arrayIteration.map;\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('map'); // FF49- issue\n\nvar USES_TO_LENGTH$1 = arrayMethodUsesToLength('map'); // `Array.prototype.map` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.map\n// with adding support of @@species\n\n_export({\n target: 'Array',\n proto: true,\n forced: !HAS_SPECIES_SUPPORT || !USES_TO_LENGTH$1\n}, {\n map: function map(callbackfn\n /* , thisArg */\n ) {\n return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nvar TO_STRING = 'toString';\nvar RegExpPrototype = RegExp.prototype;\nvar nativeToString = RegExpPrototype[TO_STRING];\nvar NOT_GENERIC = fails(function () {\n return nativeToString.call({\n source: 'a',\n flags: 'b'\n }) != '/a/b';\n}); // FF44- RegExp#toString has a wrong name\n\nvar INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\nif (NOT_GENERIC || INCORRECT_NAME) {\n redefine(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);\n return '/' + p + '/' + f;\n }, {\n unsafe: true\n });\n}\n/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\n\n\nvar FUNC_ERROR_TEXT = 'Expected a function';\n/** Used to stand-in for `undefined` hash values. */\n\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n/** Used as references for various `Number` constants. */\n\nvar INFINITY = 1 / 0;\n/** `Object#toString` result references. */\n\nvar funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n symbolTag = '[object Symbol]';\n/** Used to match property names within property paths. */\n\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n/** Used to match backslashes in property paths. */\n\nvar reEscapeChar = /\\\\(\\\\)?/g;\n/** Used to detect host constructors (Safari). */\n\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n/** Detect free variable `global` from Node.js. */\n\nvar freeGlobal = _typeof2(commonjsGlobal) == 'object' && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;\n/** Detect free variable `self`. */\n\nvar freeSelf = (typeof self === \"undefined\" ? \"undefined\" : _typeof2(self)) == 'object' && self && self.Object === Object && self;\n/** Used as a reference to the global object. */\n\nvar root = freeGlobal || freeSelf || Function('return this')();\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\n\n\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n\n return result;\n}\n/** Used for built-in method references. */\n\n\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n/** Used to detect overreaching core-js shims. */\n\nvar coreJsData = root['__core-js_shared__'];\n/** Used to detect methods masquerading as native. */\n\nvar maskSrcKey = function () {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? 'Symbol(src)_1.' + uid : '';\n}();\n/** Used to resolve the decompiled source of functions. */\n\n\nvar funcToString = funcProto.toString;\n/** Used to check objects for own properties. */\n\nvar hasOwnProperty$1 = objectProto.hasOwnProperty;\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n\nvar objectToString$1 = objectProto.toString;\n/** Used to detect if a method is native. */\n\nvar reIsNative = RegExp('^' + funcToString.call(hasOwnProperty$1).replace(reRegExpChar, '\\\\$&').replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$');\n/** Built-in value references. */\n\nvar Symbol$2 = root.Symbol,\n splice = arrayProto.splice;\n/* Built-in method references that are verified to be native. */\n\nvar Map = getNative(root, 'Map'),\n nativeCreate = getNative(Object, 'create');\n/** Used to convert symbols to primitives and strings. */\n\nvar symbolProto = Symbol$2 ? Symbol$2.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n\n\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction hashGet(key) {\n var data = this.__data__;\n\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n\n return hasOwnProperty$1.call(data, key) ? data[key] : undefined;\n}\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty$1.call(data, key);\n}\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n\n\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value;\n return this;\n} // Add methods to `Hash`.\n\n\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n\n\nfunction listCacheClear() {\n this.__data__ = [];\n}\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n\n var lastIndex = data.length - 1;\n\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n\n return true;\n}\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n return index < 0 ? undefined : data[index][1];\n}\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n\n\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n\n return this;\n} // Add methods to `ListCache`.\n\n\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n this.clear();\n\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n\n\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash(),\n 'map': new (Map || ListCache)(),\n 'string': new Hash()\n };\n}\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n\n\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n\n\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n\n\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n\n\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n} // Add methods to `MapCache`.\n\n\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n\nfunction assocIndexOf(array, key) {\n var length = array.length;\n\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n\n return -1;\n}\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n\n\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n\n return index && index == length ? object : undefined;\n}\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n\n\nfunction baseIsNative(value) {\n if (!isObject$1(value) || isMasked(value)) {\n return false;\n }\n\n var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n\n\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\n\n\nfunction castPath(value) {\n return isArray$1(value) ? value : stringToPath(value);\n}\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n\n\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key) ? data[typeof key == 'string' ? 'string' : 'hash'] : data.map;\n}\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n\n\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n\n\nfunction isKey(value, object) {\n if (isArray$1(value)) {\n return false;\n }\n\n var type = _typeof2(value);\n\n if (type == 'number' || type == 'symbol' || type == 'boolean' || value == null || isSymbol(value)) {\n return true;\n }\n\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || object != null && value in Object(object);\n}\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n\n\nfunction isKeyable(value) {\n var type = _typeof2(value);\n\n return type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean' ? value !== '__proto__' : value === null;\n}\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n\n\nfunction isMasked(func) {\n return !!maskSrcKey && maskSrcKey in func;\n}\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\n\nvar stringToPath = memoize(function (string) {\n string = toString$1(string);\n var result = [];\n\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n\n string.replace(rePropName, function (match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : number || match);\n });\n return result;\n});\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n\n var result = value + '';\n return result == '0' && 1 / value == -INFINITY ? '-0' : result;\n}\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\n\n\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n\n try {\n return func + '';\n } catch (e) {}\n }\n\n return '';\n}\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n\n\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || resolver && typeof resolver != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n\n var memoized = function memoized() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n\n memoized.cache = new (memoize.Cache || MapCache)();\n return memoized;\n} // Assign cache to `_.memoize`.\n\n\nmemoize.Cache = MapCache;\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n\nfunction eq(value, other) {\n return value === other || value !== value && other !== other;\n}\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n\n\nvar isArray$1 = Array.isArray;\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject$1(value) ? objectToString$1.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n\n\nfunction isObject$1(value) {\n var type = _typeof2(value);\n\n return !!value && (type == 'object' || type == 'function');\n}\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n\n\nfunction isObjectLike(value) {\n return !!value && _typeof2(value) == 'object';\n}\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n\n\nfunction isSymbol(value) {\n return _typeof2(value) == 'symbol' || isObjectLike(value) && objectToString$1.call(value) == symbolTag;\n}\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n\n\nfunction toString$1(value) {\n return value == null ? '' : baseToString(value);\n}\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n\n\nfunction get$1(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nvar lodash_get = get$1;\nvar plurals = {\n ach: {\n name: 'Acholi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n af: {\n name: 'Afrikaans',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ak: {\n name: 'Akan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n am: {\n name: 'Amharic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n an: {\n name: 'Aragonese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ar: {\n name: 'Arabic',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }, {\n plural: 2,\n sample: 2\n }, {\n plural: 3,\n sample: 3\n }, {\n plural: 4,\n sample: 11\n }, {\n plural: 5,\n sample: 100\n }],\n nplurals: 6,\n pluralsText: 'nplurals = 6; plural = (n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 0 ? 0 : n === 1 ? 1 : n === 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5;\n }\n },\n arn: {\n name: 'Mapudungun',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n ast: {\n name: 'Asturian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ay: {\n name: 'Aymará',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n az: {\n name: 'Azerbaijani',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n be: {\n name: 'Belarusian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n bg: {\n name: 'Bulgarian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n bn: {\n name: 'Bengali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n bo: {\n name: 'Tibetan',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n br: {\n name: 'Breton',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n brx: {\n name: 'Bodo',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n bs: {\n name: 'Bosnian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n ca: {\n name: 'Catalan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n cgg: {\n name: 'Chiga',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n cs: {\n name: 'Czech',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2;\n }\n },\n csb: {\n name: 'Kashubian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n cy: {\n name: 'Welsh',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 8\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : (n !== 8 && n !== 11) ? 2 : 3)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n === 2 ? 1 : n !== 8 && n !== 11 ? 2 : 3;\n }\n },\n da: {\n name: 'Danish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n de: {\n name: 'German',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n doi: {\n name: 'Dogri',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n dz: {\n name: 'Dzongkha',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n el: {\n name: 'Greek',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n en: {\n name: 'English',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n eo: {\n name: 'Esperanto',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n es: {\n name: 'Spanish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n et: {\n name: 'Estonian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n eu: {\n name: 'Basque',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n fa: {\n name: 'Persian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n ff: {\n name: 'Fulah',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n fi: {\n name: 'Finnish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n fil: {\n name: 'Filipino',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n fo: {\n name: 'Faroese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n fr: {\n name: 'French',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n fur: {\n name: 'Friulian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n fy: {\n name: 'Frisian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ga: {\n name: 'Irish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 7\n }, {\n plural: 4,\n sample: 11\n }],\n nplurals: 5,\n pluralsText: 'nplurals = 5; plural = (n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n === 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4;\n }\n },\n gd: {\n name: 'Scottish Gaelic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 20\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = ((n === 1 || n === 11) ? 0 : (n === 2 || n === 12) ? 1 : (n > 2 && n < 20) ? 2 : 3)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 || n === 11 ? 0 : n === 2 || n === 12 ? 1 : n > 2 && n < 20 ? 2 : 3;\n }\n },\n gl: {\n name: 'Galician',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n gu: {\n name: 'Gujarati',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n gun: {\n name: 'Gun',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n ha: {\n name: 'Hausa',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n he: {\n name: 'Hebrew',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n hi: {\n name: 'Hindi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n hne: {\n name: 'Chhattisgarhi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n hr: {\n name: 'Croatian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n hu: {\n name: 'Hungarian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n hy: {\n name: 'Armenian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n id: {\n name: 'Indonesian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n is: {\n name: 'Icelandic',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n % 10 !== 1 || n % 100 === 11)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 !== 1 || n % 100 === 11;\n }\n },\n it: {\n name: 'Italian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ja: {\n name: 'Japanese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n jbo: {\n name: 'Lojban',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n jv: {\n name: 'Javanese',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 0)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 0;\n }\n },\n ka: {\n name: 'Georgian',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n kk: {\n name: 'Kazakh',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n km: {\n name: 'Khmer',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n kn: {\n name: 'Kannada',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ko: {\n name: 'Korean',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n ku: {\n name: 'Kurdish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n kw: {\n name: 'Cornish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 4\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n === 2 ? 1 : n === 3 ? 2 : 3;\n }\n },\n ky: {\n name: 'Kyrgyz',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n lb: {\n name: 'Letzeburgesch',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ln: {\n name: 'Lingala',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n lo: {\n name: 'Lao',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n lt: {\n name: 'Lithuanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 10\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n lv: {\n name: 'Latvian',\n examples: [{\n plural: 2,\n sample: 0\n }, {\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n !== 0 ? 1 : 2;\n }\n },\n mai: {\n name: 'Maithili',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n mfe: {\n name: 'Mauritian Creole',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n mg: {\n name: 'Malagasy',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n mi: {\n name: 'Maori',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n mk: {\n name: 'Macedonian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n === 1 || n % 10 === 1 ? 0 : 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 || n % 10 === 1 ? 0 : 1;\n }\n },\n ml: {\n name: 'Malayalam',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n mn: {\n name: 'Mongolian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n mni: {\n name: 'Manipuri',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n mnk: {\n name: 'Mandinka',\n examples: [{\n plural: 0,\n sample: 0\n }, {\n plural: 1,\n sample: 1\n }, {\n plural: 2,\n sample: 2\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 0 ? 0 : n === 1 ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 0 ? 0 : n === 1 ? 1 : 2;\n }\n },\n mr: {\n name: 'Marathi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ms: {\n name: 'Malay',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n mt: {\n name: 'Maltese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 11\n }, {\n plural: 3,\n sample: 20\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n === 1 ? 0 : n === 0 || ( n % 100 > 1 && n % 100 < 11) ? 1 : (n % 100 > 10 && n % 100 < 20 ) ? 2 : 3)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n === 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3;\n }\n },\n my: {\n name: 'Burmese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n nah: {\n name: 'Nahuatl',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n nap: {\n name: 'Neapolitan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n nb: {\n name: 'Norwegian Bokmal',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ne: {\n name: 'Nepali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n nl: {\n name: 'Dutch',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n nn: {\n name: 'Norwegian Nynorsk',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n no: {\n name: 'Norwegian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n nso: {\n name: 'Northern Sotho',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n oc: {\n name: 'Occitan',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n or: {\n name: 'Oriya',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n pa: {\n name: 'Punjabi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n pap: {\n name: 'Papiamento',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n pl: {\n name: 'Polish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n pms: {\n name: 'Piemontese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ps: {\n name: 'Pashto',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n pt: {\n name: 'Portuguese',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n rm: {\n name: 'Romansh',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ro: {\n name: 'Romanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 20\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n === 0 || (n % 100 > 0 && n % 100 < 20)) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n === 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2;\n }\n },\n ru: {\n name: 'Russian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n rw: {\n name: 'Kinyarwanda',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sah: {\n name: 'Yakut',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n sat: {\n name: 'Santali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sco: {\n name: 'Scots',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sd: {\n name: 'Sindhi',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n se: {\n name: 'Northern Sami',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n si: {\n name: 'Sinhala',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sk: {\n name: 'Slovak',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n === 1 ? 0 : (n >= 2 && n <= 4) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n === 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2;\n }\n },\n sl: {\n name: 'Slovenian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 3\n }, {\n plural: 3,\n sample: 5\n }],\n nplurals: 4,\n pluralsText: 'nplurals = 4; plural = (n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 100 === 1 ? 0 : n % 100 === 2 ? 1 : n % 100 === 3 || n % 100 === 4 ? 2 : 3;\n }\n },\n so: {\n name: 'Somali',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n son: {\n name: 'Songhay',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sq: {\n name: 'Albanian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sr: {\n name: 'Serbian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n su: {\n name: 'Sundanese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n sv: {\n name: 'Swedish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n sw: {\n name: 'Swahili',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n ta: {\n name: 'Tamil',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n te: {\n name: 'Telugu',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n tg: {\n name: 'Tajik',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n th: {\n name: 'Thai',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n ti: {\n name: 'Tigrinya',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n tk: {\n name: 'Turkmen',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n tr: {\n name: 'Turkish',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n tt: {\n name: 'Tatar',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n ug: {\n name: 'Uyghur',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n uk: {\n name: 'Ukrainian',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }, {\n plural: 2,\n sample: 5\n }],\n nplurals: 3,\n pluralsText: 'nplurals = 3; plural = (n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2)',\n pluralsFunc: function pluralsFunc(n) {\n return n % 10 === 1 && n % 100 !== 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2;\n }\n },\n ur: {\n name: 'Urdu',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n uz: {\n name: 'Uzbek',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n vi: {\n name: 'Vietnamese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n wa: {\n name: 'Walloon',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n > 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n > 1;\n }\n },\n wo: {\n name: 'Wolof',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n },\n yo: {\n name: 'Yoruba',\n examples: [{\n plural: 0,\n sample: 1\n }, {\n plural: 1,\n sample: 2\n }],\n nplurals: 2,\n pluralsText: 'nplurals = 2; plural = (n !== 1)',\n pluralsFunc: function pluralsFunc(n) {\n return n !== 1;\n }\n },\n zh: {\n name: 'Chinese',\n examples: [{\n plural: 0,\n sample: 1\n }],\n nplurals: 1,\n pluralsText: 'nplurals = 1; plural = 0',\n pluralsFunc: function pluralsFunc() {\n return 0;\n }\n }\n};\nvar gettext = Gettext;\n/**\n * Creates and returns a new Gettext instance.\n *\n * @constructor\n * @param {Object} [options] A set of options\n * @param {String} options.sourceLocale The locale that the source code and its\n * texts are written in. Translations for\n * this locale is not necessary.\n * @param {Boolean} options.debug Whether to output debug info into the\n * console.\n * @return {Object} A Gettext instance\n */\n\nfunction Gettext(options) {\n options = options || {};\n this.catalogs = {};\n this.locale = '';\n this.domain = 'messages';\n this.listeners = []; // Set source locale\n\n this.sourceLocale = '';\n\n if (options.sourceLocale) {\n if (typeof options.sourceLocale === 'string') {\n this.sourceLocale = options.sourceLocale;\n } else {\n this.warn('The `sourceLocale` option should be a string');\n }\n } // Set debug flag\n\n\n this.debug = 'debug' in options && options.debug === true;\n}\n/**\n * Adds an event listener.\n *\n * @param {String} eventName An event name\n * @param {Function} callback An event handler function\n */\n\n\nGettext.prototype.on = function (eventName, callback) {\n this.listeners.push({\n eventName: eventName,\n callback: callback\n });\n};\n/**\n * Removes an event listener.\n *\n * @param {String} eventName An event name\n * @param {Function} callback A previously registered event handler function\n */\n\n\nGettext.prototype.off = function (eventName, callback) {\n this.listeners = this.listeners.filter(function (listener) {\n return (listener.eventName === eventName && listener.callback === callback) === false;\n });\n};\n/**\n * Emits an event to all registered event listener.\n *\n * @private\n * @param {String} eventName An event name\n * @param {any} eventData Data to pass to event listeners\n */\n\n\nGettext.prototype.emit = function (eventName, eventData) {\n for (var i = 0; i < this.listeners.length; i++) {\n var listener = this.listeners[i];\n\n if (listener.eventName === eventName) {\n listener.callback(eventData);\n }\n }\n};\n/**\n * Logs a warning to the console if debug mode is enabled.\n *\n * @ignore\n * @param {String} message A warning message\n */\n\n\nGettext.prototype.warn = function (message) {\n if (this.debug) {\n console.warn(message);\n }\n\n this.emit('error', new Error(message));\n};\n/**\n * Stores a set of translations in the set of gettext\n * catalogs.\n *\n * @example\n * gt.addTranslations('sv-SE', 'messages', translationsObject)\n *\n * @param {String} locale A locale string\n * @param {String} domain A domain name\n * @param {Object} translations An object of gettext-parser JSON shape\n */\n\n\nGettext.prototype.addTranslations = function (locale, domain, translations) {\n if (!this.catalogs[locale]) {\n this.catalogs[locale] = {};\n }\n\n this.catalogs[locale][domain] = translations;\n};\n/**\n * Sets the locale to get translated messages for.\n *\n * @example\n * gt.setLocale('sv-SE')\n *\n * @param {String} locale A locale\n */\n\n\nGettext.prototype.setLocale = function (locale) {\n if (typeof locale !== 'string') {\n this.warn('You called setLocale() with an argument of type ' + _typeof2(locale) + '. ' + 'The locale must be a string.');\n return;\n }\n\n if (locale.trim() === '') {\n this.warn('You called setLocale() with an empty value, which makes little sense.');\n }\n\n if (locale !== this.sourceLocale && !this.catalogs[locale]) {\n this.warn('You called setLocale() with \"' + locale + '\", but no translations for that locale has been added.');\n }\n\n this.locale = locale;\n};\n/**\n * Sets the default gettext domain.\n *\n * @example\n * gt.setTextDomain('domainname')\n *\n * @param {String} domain A gettext domain name\n */\n\n\nGettext.prototype.setTextDomain = function (domain) {\n if (typeof domain !== 'string') {\n this.warn('You called setTextDomain() with an argument of type ' + _typeof2(domain) + '. ' + 'The domain must be a string.');\n return;\n }\n\n if (domain.trim() === '') {\n this.warn('You called setTextDomain() with an empty `domain` value.');\n }\n\n this.domain = domain;\n};\n/**\n * Translates a string using the default textdomain\n *\n * @example\n * gt.gettext('Some text')\n *\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.gettext = function (msgid) {\n return this.dnpgettext(this.domain, '', msgid);\n};\n/**\n * Translates a string using a specific domain\n *\n * @example\n * gt.dgettext('domainname', 'Some text')\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.dgettext = function (domain, msgid) {\n return this.dnpgettext(domain, '', msgid);\n};\n/**\n * Translates a plural string using the default textdomain\n *\n * @example\n * gt.ngettext('One thing', 'Many things', numberOfThings)\n *\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.ngettext = function (msgid, msgidPlural, count) {\n return this.dnpgettext(this.domain, '', msgid, msgidPlural, count);\n};\n/**\n * Translates a plural string using a specific textdomain\n *\n * @example\n * gt.dngettext('domainname', 'One thing', 'Many things', numberOfThings)\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.dngettext = function (domain, msgid, msgidPlural, count) {\n return this.dnpgettext(domain, '', msgid, msgidPlural, count);\n};\n/**\n * Translates a string from a specific context using the default textdomain\n *\n * @example\n * gt.pgettext('sports', 'Back')\n *\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.pgettext = function (msgctxt, msgid) {\n return this.dnpgettext(this.domain, msgctxt, msgid);\n};\n/**\n * Translates a string from a specific context using s specific textdomain\n *\n * @example\n * gt.dpgettext('domainname', 'sports', 'Back')\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.dpgettext = function (domain, msgctxt, msgid) {\n return this.dnpgettext(domain, msgctxt, msgid);\n};\n/**\n * Translates a plural string from a specific context using the default textdomain\n *\n * @example\n * gt.npgettext('sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated when count is not plural\n * @param {String} msgidPlural String to be translated when count is plural\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.npgettext = function (msgctxt, msgid, msgidPlural, count) {\n return this.dnpgettext(this.domain, msgctxt, msgid, msgidPlural, count);\n};\n/**\n * Translates a plural string from a specifi context using a specific textdomain\n *\n * @example\n * gt.dnpgettext('domainname', 'sports', 'Back', '%d backs', numberOfBacks)\n *\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @param {String} msgidPlural If no translation was found, return this on count!=1\n * @param {Number} count Number count for the plural\n * @return {String} Translation or the original string if no translation was found\n */\n\n\nGettext.prototype.dnpgettext = function (domain, msgctxt, msgid, msgidPlural, count) {\n var defaultTranslation = msgid;\n var translation;\n var index;\n msgctxt = msgctxt || '';\n\n if (!isNaN(count) && count !== 1) {\n defaultTranslation = msgidPlural || msgid;\n }\n\n translation = this._getTranslation(domain, msgctxt, msgid);\n\n if (translation) {\n if (typeof count === 'number') {\n var pluralsFunc = plurals[Gettext.getLanguageCode(this.locale)].pluralsFunc;\n index = pluralsFunc(count);\n\n if (typeof index === 'boolean') {\n index = index ? 1 : 0;\n }\n } else {\n index = 0;\n }\n\n return translation.msgstr[index] || defaultTranslation;\n } else if (!this.sourceLocale || this.locale !== this.sourceLocale) {\n this.warn('No translation was found for msgid \"' + msgid + '\" in msgctxt \"' + msgctxt + '\" and domain \"' + domain + '\"');\n }\n\n return defaultTranslation;\n};\n/**\n * Retrieves comments object for a translation. The comments object\n * has the shape `{ translator, extracted, reference, flag, previous }`.\n *\n * @example\n * const comment = gt.getComment('domainname', 'sports', 'Backs')\n *\n * @private\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {Object} Comments object or false if not found\n */\n\n\nGettext.prototype.getComment = function (domain, msgctxt, msgid) {\n var translation;\n translation = this._getTranslation(domain, msgctxt, msgid);\n\n if (translation) {\n return translation.comments || {};\n }\n\n return {};\n};\n/**\n * Retrieves translation object from the domain and context\n *\n * @private\n * @param {String} domain A gettext domain name\n * @param {String} msgctxt Translation context\n * @param {String} msgid String to be translated\n * @return {Object} Translation object or false if not found\n */\n\n\nGettext.prototype._getTranslation = function (domain, msgctxt, msgid) {\n msgctxt = msgctxt || '';\n return lodash_get(this.catalogs, [this.locale, domain, 'translations', msgctxt, msgid]);\n};\n/**\n * Returns the language code part of a locale\n *\n * @example\n * Gettext.getLanguageCode('sv-SE')\n * // -> \"sv\"\n *\n * @private\n * @param {String} locale A case-insensitive locale string\n * @returns {String} A language code\n */\n\n\nGettext.getLanguageCode = function (locale) {\n return locale.split(/[\\-_]/)[0].toLowerCase();\n};\n/* C-style aliases */\n\n/**\n * C-style alias for [setTextDomain](#gettextsettextdomaindomain)\n *\n * @see Gettext#setTextDomain\n */\n\n\nGettext.prototype.textdomain = function (domain) {\n if (this.debug) {\n console.warn('textdomain(domain) was used to set locales in node-gettext v1. ' + 'Make sure you are using it for domains, and switch to setLocale(locale) if you are not.\\n\\n ' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x\\n\\n' + 'This warning will be removed in the final 2.0.0');\n }\n\n this.setTextDomain(domain);\n};\n/**\n * C-style alias for [setLocale](#gettextsetlocalelocale)\n *\n * @see Gettext#setLocale\n */\n\n\nGettext.prototype.setlocale = function (locale) {\n this.setLocale(locale);\n};\n/* Deprecated functions */\n\n/**\n * This function will be removed in the final 2.0.0 release.\n *\n * @deprecated\n */\n\n\nGettext.prototype.addTextdomain = function () {\n console.error('addTextdomain() is deprecated.\\n\\n' + '* To add translations, use addTranslations()\\n' + '* To set the default domain, use setTextDomain() (or its alias textdomain())\\n' + '\\n' + 'To read more about the migration from node-gettext v1 to v2, ' + 'see https://github.com/alexanderwallin/node-gettext/#migrating-from-1x-to-2x');\n};\n\nvar dist = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getLocale = getLocale;\n exports.getCanonicalLocale = getCanonicalLocale;\n exports.getLanguage = getLanguage;\n exports.translate = translate;\n exports.translatePlural = translatePlural;\n exports.getFirstDay = getFirstDay;\n exports.getDayNames = getDayNames;\n exports.getDayNamesShort = getDayNamesShort;\n exports.getDayNamesMin = getDayNamesMin;\n exports.getMonthNames = getMonthNames;\n exports.getMonthNamesShort = getMonthNamesShort; /// \n\n /**\n * Returns the user's locale\n */\n\n function getLocale() {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return 'en';\n }\n\n return OC.getLocale();\n }\n\n function getCanonicalLocale() {\n return getLocale().replace(/_/g, '-');\n }\n /**\n * Returns the user's language\n */\n\n\n function getLanguage() {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return 'en';\n }\n\n return OC.getLanguage();\n }\n /**\n * Translate a string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} text the string to translate\n * @param {object} vars map of placeholder key to value\n * @param {number} number to replace %n with\n * @param {object} [options] options object\n * @return {string}\n */\n\n\n function translate(app, text, vars, count, options) {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return text;\n }\n\n return OC.L10N.translate(app, text, vars, count, options);\n }\n /**\n * Translate a plural string\n *\n * @param {string} app the id of the app for which to translate the string\n * @param {string} textSingular the string to translate for exactly one object\n * @param {string} textPlural the string to translate for n objects\n * @param {number} count number to determine whether to use singular or plural\n * @param {Object} vars of placeholder key to value\n * @param {object} options options object\n * @return {string}\n */\n\n\n function translatePlural(app, textSingular, textPlural, count, vars, options) {\n if (typeof OC === 'undefined') {\n console.warn('No OC found');\n return textSingular;\n }\n\n return OC.L10N.translatePlural(app, textSingular, textPlural, count, vars, options);\n }\n /**\n * Get the first day of the week\n *\n * @return {number}\n */\n\n\n function getFirstDay() {\n if (typeof window.firstDay === 'undefined') {\n console.warn('No firstDay found');\n return 1;\n }\n\n return window.firstDay;\n }\n /**\n * Get a list of day names (full names)\n *\n * @return {string[]}\n */\n\n\n function getDayNames() {\n if (typeof window.dayNames === 'undefined') {\n console.warn('No dayNames found');\n return ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];\n }\n\n return window.dayNames;\n }\n /**\n * Get a list of day names (short names)\n *\n * @return {string[]}\n */\n\n\n function getDayNamesShort() {\n if (typeof window.dayNamesShort === 'undefined') {\n console.warn('No dayNamesShort found');\n return ['Sun.', 'Mon.', 'Tue.', 'Wed.', 'Thu.', 'Fri.', 'Sat.'];\n }\n\n return window.dayNamesShort;\n }\n /**\n * Get a list of day names (minified names)\n *\n * @return {string[]}\n */\n\n\n function getDayNamesMin() {\n if (typeof window.dayNamesMin === 'undefined') {\n console.warn('No dayNamesMin found');\n return ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'];\n }\n\n return window.dayNamesMin;\n }\n /**\n * Get a list of month names (full names)\n *\n * @return {string[]}\n */\n\n\n function getMonthNames() {\n if (typeof window.monthNames === 'undefined') {\n console.warn('No monthNames found');\n return ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];\n }\n\n return window.monthNames;\n }\n /**\n * Get a list of month names (short names)\n *\n * @return {string[]}\n */\n\n\n function getMonthNamesShort() {\n if (typeof window.monthNamesShort === 'undefined') {\n console.warn('No monthNamesShort found');\n return ['Jan.', 'Feb.', 'Mar.', 'Apr.', 'May.', 'Jun.', 'Jul.', 'Aug.', 'Sep.', 'Oct.', 'Nov.', 'Dec.'];\n }\n\n return window.monthNamesShort;\n }\n});\nvar gettext$1 = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getGettextBuilder = getGettextBuilder;\n\n var _nodeGettext = _interopRequireDefault(gettext);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n }\n\n var GettextBuilder = /*#__PURE__*/function () {\n function GettextBuilder() {\n _classCallCheck(this, GettextBuilder);\n\n this.translations = {};\n this.debug = false;\n }\n\n _createClass(GettextBuilder, [{\n key: \"setLanguage\",\n value: function setLanguage(language) {\n this.locale = language;\n return this;\n }\n }, {\n key: \"detectLocale\",\n value: function detectLocale() {\n return this.setLanguage((0, dist.getLanguage)());\n }\n }, {\n key: \"addTranslation\",\n value: function addTranslation(language, data) {\n this.translations[language] = data;\n return this;\n }\n }, {\n key: \"enableDebugMode\",\n value: function enableDebugMode() {\n this.debug = true;\n return this;\n }\n }, {\n key: \"build\",\n value: function build() {\n return new GettextWrapper(this.locale || 'en', this.translations, this.debug);\n }\n }]);\n\n return GettextBuilder;\n }();\n\n var GettextWrapper = /*#__PURE__*/function () {\n function GettextWrapper(locale, data, debug) {\n _classCallCheck(this, GettextWrapper);\n\n this.gt = new _nodeGettext.default({\n debug: debug,\n sourceLocale: 'en'\n });\n\n for (var key in data) {\n this.gt.addTranslations(key, 'messages', data[key]);\n }\n\n this.gt.setLocale(locale);\n }\n\n _createClass(GettextWrapper, [{\n key: \"subtitudePlaceholders\",\n value: function subtitudePlaceholders(translated, vars) {\n return translated.replace(/{([^{}]*)}/g, function (a, b) {\n var r = vars[b];\n\n if (typeof r === 'string' || typeof r === 'number') {\n return r.toString();\n } else {\n return a;\n }\n });\n }\n }, {\n key: \"gettext\",\n value: function gettext(original) {\n var placeholders = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.subtitudePlaceholders(this.gt.gettext(original), placeholders);\n }\n }, {\n key: \"ngettext\",\n value: function ngettext(singular, plural, count) {\n var placeholders = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n return this.subtitudePlaceholders(this.gt.ngettext(singular, plural, count).replace(/%n/g, count.toString()), placeholders);\n }\n }]);\n\n return GettextWrapper;\n }();\n\n function getGettextBuilder() {\n return new GettextBuilder();\n }\n});\nvar gtBuilder = gettext$1.getGettextBuilder().detectLocale();\nprocess.env.TRANSLATIONS.map(function (data) {\n return gtBuilder.addTranslation(data.locale, data.json);\n});\nvar gt = gtBuilder.build();\nvar n = gt.ngettext.bind(gt);\nvar t = gt.gettext.bind(gt);\n\nvar ToastType =\n/** @class */\nfunction () {\n function ToastType() {}\n\n ToastType.ERROR = 'toast-error';\n ToastType.WARNING = 'toast-warning';\n ToastType.INFO = 'toast-info';\n ToastType.SUCCESS = 'toast-success';\n ToastType.PERMANENT = 'toast-error';\n ToastType.UNDO = 'toast-undo';\n return ToastType;\n}();\n/**\r\n * Show a toast message\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param options\r\n */\n\n\nfunction showMessage(data, options) {\n var _a;\n\n var _b;\n\n options = Object.assign({\n timeout: 7,\n isHTML: false,\n type: undefined,\n // An undefined selector defaults to the body element\n selector: undefined,\n onRemove: function onRemove() {},\n onClick: undefined,\n close: true\n }, options);\n\n if (typeof data === 'string' && !options.isHTML) {\n // fime mae sure that text is extracted\n var element = document.createElement('div');\n element.innerHTML = data;\n data = element.innerText;\n }\n\n var classes = (_b = options.type) !== null && _b !== void 0 ? _b : '';\n\n if (typeof options.onClick === 'function') {\n classes += ' toast-with-click ';\n }\n\n var isNode = data instanceof Node;\n var timeout = null;\n\n if (options.timeout) {\n timeout = options.timeout === -1 ? -1 : options.timeout * 1000;\n }\n\n var toast = toastify((_a = {}, _a[!isNode ? 'text' : 'node'] = data, _a.duration = timeout, _a.callback = options.onRemove, _a.onClick = options.onClick, _a.close = options.close, _a.gravity = 'top', _a.selector = options.selector, _a.position = 'right', _a.backgroundColor = '', _a.className = 'dialogs ' + classes, _a));\n toast.showToast();\n return toast;\n}\n/**\r\n * Show a toast message with error styling\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param options\r\n */\n\n\nfunction showError(text, options) {\n return showMessage(text, _assign(_assign({}, options), {\n type: ToastType.ERROR\n }));\n}\n/**\r\n * Show a toast message with warning styling\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param options\r\n */\n\n\nfunction showWarning(text, options) {\n return showMessage(text, _assign(_assign({}, options), {\n type: ToastType.WARNING\n }));\n}\n/**\r\n * Show a toast message with info styling\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param options\r\n */\n\n\nfunction showInfo(text, options) {\n return showMessage(text, _assign(_assign({}, options), {\n type: ToastType.INFO\n }));\n}\n/**\r\n * Show a toast message with success styling\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param options\r\n */\n\n\nfunction showSuccess(text, options) {\n return showMessage(text, _assign(_assign({}, options), {\n type: ToastType.SUCCESS\n }));\n}\n/**\r\n * Show a toast message with undo styling\r\n *\r\n * @param text Message to be shown in the toast, any HTML is removed by default\r\n * @param onUndo Function that is called when the undo button is clicked\r\n * @param options\r\n */\n\n\nfunction showUndo(text, onUndo, options) {\n // onUndo callback is mandatory\n if (!(onUndo instanceof Function)) {\n throw new Error('Please provide a valid onUndo method');\n }\n\n var toast;\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: 10000,\n // remove close button\n close: false\n }); // Generate undo layout\n\n var undoContent = document.createElement('span');\n var undoButton = document.createElement('button');\n undoButton.classList.add('toast-undo-button');\n undoButton.innerText = t('Undo');\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n undoButton.addEventListener('click', function (event) {\n event.stopPropagation();\n onUndo(event); // Hide toast\n\n if ((toast === null || toast === void 0 ? void 0 : toast.hideToast) instanceof Function) {\n toast.hideToast();\n }\n });\n toast = showMessage(undoContent, _assign(_assign({}, options), {\n type: ToastType.UNDO\n }));\n return toast;\n}\n\nexport { FilePicker, FilePickerBuilder, getFilePickerBuilder, showError, showInfo, showMessage, showSuccess, showUndo, showWarning };","export default \"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMTYiIHdpZHRoPSIxNiI+CiAgPHBhdGggZD0iTTE0IDEyLjNMMTIuMyAxNCA4IDkuNyAzLjcgMTQgMiAxMi4zIDYuMyA4IDIgMy43IDMuNyAyIDggNi4zIDEyLjMgMiAxNCAzLjcgOS43IDh6Ii8+Cjwvc3ZnPgo=\"","// style-loader: Adds some css to the DOM by adding a