@volcengine/veplayer-plugin 2.6.0-rc.2 → 2.6.0-rc.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ read:function(e,t,r,n,i){var o,a,s=8*i-n-1,c=(1<<s)-1,u=c>>1,l=-7,d=r?i-1:0,h=r?
7
7
  * @author Feross Aboukhadijeh <https://feross.org>
8
8
  * @license MIT
9
9
  */
10
- (function(e){const t=base64Js,r=ieee754$1,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|f(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return d(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|h(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||K(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return c(e),o(e<0?0:0|h(e))}function l(e){const t=e.length<0?0:0|h(e.length),r=o(t);for(let n=0;n<t;n+=1)r[n]=255&e[n];return r}function d(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');let n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,a.prototype),n}function h(e){if(e>=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return X(e).length;default:if(i)return n?-1:j(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return w(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function y(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),K(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:g(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,n,i){let o,a=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;o<s;o++)if(u(e,o)===u(t,-1===n?0:o-n)){if(-1===n&&(n=o),o-n+1===c)return n*a}else-1!==n&&(o-=o-n),n=-1}else for(r+c>s&&(r=s-c),o=r;o>=0;o--){let r=!0;for(let n=0;n<c;n++)if(u(e,o+n)!==u(t,n)){r=!1;break}if(r)return o}return-1}function v(e,t,r,n){r=Number(r)||0;const i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a<n;++a){const n=parseInt(t.substr(2*a,2),16);if(K(n))return a;e[r+a]=n}return a}function b(e,t,r,n){return W(j(t,e.length-r),e,r,n)}function _(e,t,r,n){return W(function(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function $(e,t,r,n){return W(X(t),e,r,n)}function A(e,t,r,n){return W(function(e,t){let r,n,i;const o=[];for(let a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function E(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function T(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i<r;){const t=e[i];let o=null,a=t>239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,c;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(o=c));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(o=c));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,c>65535&&c<1114112&&(o=c))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=S));return r}(n)}e.kMaxLength=i,a.TYPED_ARRAY_SUPPORT=function(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),a.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}}),a.poolSize=8192,a.from=function(e,t,r){return s(e,t,r)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array),a.alloc=function(e,t,r){return function(e,t,r){return c(e),e<=0?o(e):void 0!==t?"string"==typeof r?o(e).fill(t,r):o(e).fill(t):o(e)}(e,t,r)},a.allocUnsafe=function(e){return u(e)},a.allocUnsafeSlow=function(e){return u(e)},a.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==a.prototype},a.compare=function(e,t){if(H(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),H(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(e)||!a.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},a.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return a.alloc(0);let r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;const n=a.allocUnsafe(t);let i=0;for(r=0;r<e.length;++r){let t=e[r];if(H(t,Uint8Array))i+t.length>n.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=f,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)y(this,t,t+1);return this},a.prototype.swap32=function(){const e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},a.prototype.swap64=function(){const e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},a.prototype.toString=function(){const e=this.length;return 0===e?"":0===arguments.length?T(this,0,e):p.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===a.compare(this,e)},a.prototype.inspect=function(){let t="";const r=e.INSPECT_MAX_BYTES;return t=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(t+=" ... "),"<Buffer "+t+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if(H(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const c=Math.min(o,s),u=this.slice(n,i),l=e.slice(t,r);for(let e=0;e<c;++e)if(u[e]!==l[e]){o=u[e],s=l[e];break}return o<s?-1:s<o?1:0},a.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},a.prototype.indexOf=function(e,t,r){return m(this,e,t,r,!0)},a.prototype.lastIndexOf=function(e,t,r){return m(this,e,t,r,!1)},a.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return b(this,e,t,r);case"ascii":case"latin1":case"binary":return _(this,e,t,r);case"base64":return $(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function I(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function w(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function R(e,t,r){const n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);let i="";for(let n=t;n<r;++n)i+=Y[e[n]];return i}function P(e,t,r){const n=e.slice(t,r);let i="";for(let e=0;e<n.length-1;e+=2)i+=String.fromCharCode(n[e]+256*n[e+1]);return i}function O(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function C(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function k(e,t,r,n,i){U(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function x(e,t,r,n,i){U(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(e,t,n,i,o){return t=+t,n>>>=0,o||L(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function M(e,t,n,i,o){return t=+t,n>>>=0,o||L(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);const n=this.subarray(e,t);return Object.setPrototypeOf(n,a.prototype),n},a.prototype.readUintLE=a.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o<t&&(i*=256);)n+=this[e+o]*i;return n},a.prototype.readUintBE=a.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<<BigInt(32))})),a.prototype.readBigUInt64BE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<<BigInt(32))+BigInt(i)})),a.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o<t&&(i*=256);)n+=this[e+o]*i;return i*=128,n>=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)})),a.prototype.readBigInt64BE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<<BigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+r)})),a.prototype.readFloatLE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){C(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){C(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=z((function(e,t=0){return k(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=z((function(e,t=0){return x(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);C(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&0===a&&0!==this[t+i-1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);C(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=z((function(e,t=0){return k(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=z((function(e,t=0){return x(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return D(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return D(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);const i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},a.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){const t=e.charCodeAt(0);("utf8"===n&&t<128||"latin1"===n)&&(e=t)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;let i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{const o=a.isBuffer(e)?e:a.from(e,n),s=o.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%s]}return this};const N={};function G(e,t,r){N[e]=class extends r{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function V(e){let t="",r=e.length;const n="-"===e[0]?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function U(e,t,r,n,i,o){if(e>r||e<t){const n="bigint"==typeof t?"n":"";let i;throw i=o>3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){Z(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||F(t,e.length-(r+1))}(n,i,o)}function Z(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function F(e,t,r){if(Math.floor(e)!==e)throw Z(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}G("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),G("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),G("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=V(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=V(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const B=/[^+/0-9A-Za-z-_]/g;function j(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a<n;++a){if(r=e.charCodeAt(a),r>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function X(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,r,n){let i;for(i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function K(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function z(e){return"undefined"==typeof BigInt?J:e}function J(){throw new Error("BigInt not supported")}})(buffer),Object.defineProperty(scte35,"__esModule",{value:!0});var SCTE35_1=scte35.SCTE35=void 0;const descriptors$1=descriptors$2,util$1=util$3,buffer_1=buffer;class SCTE35{constructor(){this.buffer=buffer_1.Buffer}parseFromB64(e){const t=Uint8Array.from(this.parseBase64(e).split("").map((e=>e.charCodeAt(0))));return this.parseSCTE35Data(t)}parseFromHex(e){const t=e.match(/[a-f\d]{2}/gi)||[],r=Uint8Array.from(t.map((e=>parseInt(e,16))));return this.parseSCTE35Data(r)}parseBase64(e){return this.buffer.from(e,"base64").toString("binary")}spliceEvent(e,t,r){let n=0;if(e.spliceEventId=t.getUint32(n),n+=4,e.spliceEventCancelIndicator=!!(128&t.getUint8(n++)),e.spliceEventCancelIndicator)return n;let i=t.getUint8(n++);if(e.outOfNetworkIndicator=!!(128&i),e.programSpliceFlag=!!(64&i),e.durationFlag=!!(32&i),5===r&&(e.spliceImmediateFlag=!!(16&i)),e.programSpliceFlag)if(5!==r||e.spliceImmediateFlag)4===r&&(e.utcSpliceTime=t.getUint32(n),n+=4);else{const r=this.timeSignal(new DataView(t.buffer,t.byteOffset+n,5));e.spliceTime=r,n++,r.specified&&(n+=4)}else if(e.componentCount=t.getUint8(n++),4===r){const r=[];for(;r.length!==e.componentCount;)r.push({componentTag:t.getUint8(n++),utcSpliceTime:t.getUint32(n)}),n+=4;e.utcSpliceComponents=r}else console.warn("scte35-js TODO: support splice_insert");return e.durationFlag&&(i=t.getUint8(n++),e.breakDuration={autoReturn:!!(128&i),duration:(1&i?util$1.THIRTY_TWO_BIT_MULTIPLIER:0)+t.getUint32(n)},n+=4),e.uniqueProgramId=t.getUint16(n),n+=2,e.available=t.getUint8(n++),e.expected=t.getUint8(n++),n}spliceSchedule(e){const t={};t.spliceCount=e.getUint8(0),t.spliceEvents=[];let r=1;for(;t.spliceEvents.length!==t.spliceCount;){const n={};r+=this.spliceEvent(n,new DataView(e.buffer,e.byteOffset+r),4),t.spliceEvents.push(n)}return r!==e.byteLength&&console.error(`scte35-js Bad read splice_schedule actual: ${r} expected: ${e.byteLength}`),t}spliceInsert(e){const t={},r=this.spliceEvent(t,e,5);return r!==e.byteLength&&console.error(`scte35-js Bad read splice_insert actual: ${r} expected: ${e.byteLength}`),t}timeSignal(e){const t={},r=e.getUint8(0);return t.specified=!!(128&r),t.specified&&(t.pts=1&r?util$1.THIRTY_TWO_BIT_MULTIPLIER:0,t.pts+=e.getUint32(1)),t}privateCommand(e){const t={},r=e.getUint32(0),n=new Uint8Array(e.buffer,e.byteOffset+4,e.byteLength-4);return t.identifier=r,t.identifier&&(t.rawData=n),t}parseSCTE35Data(e){const t={},r=new DataView(e.buffer);let n=0;t.tableId=r.getUint8(n++);let i=r.getUint8(n++);if(t.selectionSyntaxIndicator=!!(128&i),t.privateIndicator=!!(64&i),t.sectionLength=((15&i)<<8)+r.getUint8(n++),t.sectionLength+3!==e.byteLength)throw new Error(`Binary read error sectionLength: ${t.sectionLength} + 3 !== data.length: ${e.byteLength}`);if(t.protocolVersion=r.getUint8(n++),i=r.getUint8(n++),t.encryptedPacket=!!(128&i),t.encryptedAlgorithm=(126&i)>>1,t.encryptedPacket&&console.error(`scte35-js splice_info_section encrypted_packet ${t.encryptedAlgorithm} not supported`),t.ptsAdjustment=1&i?util$1.THIRTY_TWO_BIT_MULTIPLIER:0,t.ptsAdjustment+=r.getUint32(n),n+=4,t.cwIndex=r.getUint8(n++),t.tier=r.getUint8(n++)<<4,i=r.getUint8(n++),t.tier+=(240&i)>>4,t.spliceCommandLength=((15&i)<<8)+r.getUint8(n++),t.spliceCommandType=r.getUint8(n++),4095===t.spliceCommandLength)if(6===t.spliceCommandType){const e=128&r.getUint8(n);t.spliceCommandLength=e?5:1}else if(0===t.spliceCommandType)t.spliceCommandLength=0;else if(5===t.spliceCommandType){let e=n;e+=4;if(!(128&r.getUint8(e++))){const i=r.getUint8(e++),o=16&i,a=32&i,s=64&i;if(s&&!o&&(e+=5),!s){const t=r.getUint8(e++);e+=t,e+=o?0:5*t}a&&(e+=5),e+=4,t.spliceCommandLength=e-n}}else console.error("scte35-js Unspecified length not supported in this context");if(0!==t.spliceCommandType){const r=new DataView(e.buffer,n,t.spliceCommandLength);4===t.spliceCommandType?t.spliceCommand=this.spliceSchedule(r):5===t.spliceCommandType?t.spliceCommand=this.spliceInsert(r):6===t.spliceCommandType?t.spliceCommand=this.timeSignal(r):255===t.spliceCommandType&&(t.spliceCommand=this.privateCommand(r))}if(n+=t.spliceCommandLength,t.descriptorLoopLength=r.getUint16(n),n+=2,t.descriptorLoopLength){let r=t.descriptorLoopLength;t.descriptors=[];try{for(;r;){const i=new DataView(e.buffer,n,r),o=descriptors$1.parseDescriptor(i);r-=o.descriptorLength+2,n+=o.descriptorLength+2,t.descriptors.push(o)}}catch(e){console.error(`scte35-js Error reading descriptor @ ${n}, ignoring remaining bytes: ${r} in loop.`),console.error(e),n+=r,r=0}}return t.crc=r.getUint32(n),n+=4,n!==r.byteLength&&console.error(`scte35-js Bad SCTE35 read - remaining data: ${e.slice(n).join(", ")}`),t}}SCTE35_1=scte35.SCTE35=SCTE35;var SCTE35_OUT_TAG="SCTE35-OUT",START_DATE_TAG="START-DATE",PLANNED_DURATION_TAG="PLANNED-DURATION",SPLICE_INSERT=5;function isValidScte35DateRange(e){return!(!e[PLANNED_DURATION_TAG]||!e.message&&!e[SCTE35_OUT_TAG]||void 0===e.startTime&&!e[START_DATE_TAG])}var Scte35Manager=function(){function e(t){var r=this;_classCallCheck$9(this,e),_defineProperty$7(this,"_options",void 0),_defineProperty$7(this,"_track",void 0),_defineProperty$7(this,"_startTime",void 0),_defineProperty$7(this,"_adBreakCues",void 0),_defineProperty$7(this,"_activeAdBreak",null),_defineProperty$7(this,"_activeAdBreakStatus","WAITING_PREROLL"),_defineProperty$7(this,"_scte35",new SCTE35_1),_defineProperty$7(this,"_scte35ResultMap",new _Map),_defineProperty$7(this,"_handleTimeUpdate",(function(){var e,t,n,i,o;if(null!==(e=r._adBreakCues)&&void 0!==e&&e.length)for(var a=0;a<r._adBreakCues.length;a++){var s=r._adBreakCues[a];if(s.startTime>=r._player.currentTime){n=s;break}}if(n&&(null===(t=r._activeAdBreak)||void 0===t?void 0:t.id)===n.id)if((null===(i=r._activeAdBreak)||void 0===i?void 0:i.startDate)!==n.startDate)switch(r._activeAdBreakStatus){case"REQUESTED":r._changeActiveAdBreakStatus("REQUESTED",n);break;case"ERROR":case"COMPLETE":r._changeActiveAdBreakStatus("READY",null)}else(null===(o=r._activeAdBreak)||void 0===o?void 0:o.startTime)!==n.startTime&&r._changeActiveAdBreakStatus(r._activeAdBreakStatus,n);r._tryToPlayAd(),r._tryToRequestAd(n)})),_defineProperty$7(this,"_onReady",(function(){r._changeActiveAdBreakStatus("READY",null),r._player.off(IMA_AD_ERROR,r._onReady),r._adManager.off(AD_ALL_COMPLETED,r._onReady),r._player.on(TIME_UPDATE,r._handleTimeUpdate),r._player.on(IMA_AD_COMPLETE,r._onAdComplete),r._player.on(IMA_AD_ERROR,r._onAdError),r._handleTimeUpdate()})),_defineProperty$7(this,"_onAdComplete",(function(){r._changeActiveAdBreakStatus("COMPLETE",r._activeAdBreak)})),_defineProperty$7(this,"_onAdError",(function(){r._changeActiveAdBreakStatus("ERROR",r._activeAdBreak)})),_defineProperty$7(this,"_handleHlsCoreEvent",(function(e){var t=e.eventName,n=e.playlist;if("core.hlslevelloaded"===t){var i;if(null!=n&&null!==(i=n.segments)&&void 0!==i&&i.length&&0===r._player.currentTime){var o,a=_createForOfIteratorHelper$1(n.segments);try{for(a.s();!(o=a.n()).done;){var s=o.value;if(0===s.start){r._startTime=new Date(s.dataTime).getTime();break}}}catch(e){a.e(e)}finally{a.f()}}null!=n&&n.dateRanges&&r._startTime&&r._updateAdBreakCues(n.dateRanges)}})),_defineProperty$7(this,"_onAddTrack",(function(e){var t=e.track;"metadata"===(null==t?void 0:t.kind)&&(t.mode="hidden",r._track=t,r._track.addEventListener("cuechange",r._onCuechange))})),_defineProperty$7(this,"_onCuechange",(function(){for(var e,t={},n=(null===(e=r._track)||void 0===e?void 0:e.cues)||[],i=0;i<n.length;){var o,a=n[i];if((null===(o=a.value)||void 0===o?void 0:o.key)===PLANNED_DURATION_TAG){var s,c=i+1<n.length?n[i+1]:null;if((null==c||null===(s=c.value)||void 0===s?void 0:s.key)===SCTE35_OUT_TAG&&(null==c?void 0:c.startTime)===a.startTime){var u,l,d=r._getScte35Result(null===(u=c.value)||void 0===u?void 0:u.data),h=String((null==d?void 0:d.spliceCommand).spliceEventId);t[h]=_defineProperty$7({ID:h,startTime:c.startTime,message:d},PLANNED_DURATION_TAG,null===(l=a.value)||void 0===l?void 0:l.data),i+=2}else i++}else i++}r._updateAdBreakCues(t)})),this._options=t,this._init()}return _createClass$9(e,[{key:"_player",get:function(){return this._options.player}},{key:"_adManager",get:function(){return this._options.adManager}},{key:"_adTagUrl",get:function(){return this._options.adTagUrl}},{key:"_mediaElement",get:function(){return this._player.media}},{key:"destroy",value:function(){var e,t;null===(e=this._track)||void 0===e||e.removeEventListener("cuechange",this._onCuechange),this._track=void 0,null===(t=this._mediaElement)||void 0===t||null===(t=t.textTracks)||void 0===t||t.removeEventListener("addtrack",this._onAddTrack),this._player.off("core_event",this._handleHlsCoreEvent),this._player.off(TIME_UPDATE,this._handleTimeUpdate),this._player.off(IMA_AD_COMPLETE,this._onAdComplete),this._player.off(IMA_AD_ERROR,this._onAdError)}},{key:"_init",value:function(){var e;null===(e=this._mediaElement)||void 0===e||null===(e=e.textTracks)||void 0===e||e.addEventListener("addtrack",this._onAddTrack),this._player.on("core_event",this._handleHlsCoreEvent);var t=this._adManager.config,r=t.adsRequest,n=t.adsResponse,i=t.adTagUrl;r||n||i?(this._player.once(IMA_AD_ERROR,this._onReady),this._player.once(AD_ALL_COMPLETED,this._onReady)):this._onReady()}},{key:"_changeActiveAdBreakStatus",value:function(e,t){var r,n;this._activeAdBreakStatus=e,this._activeAdBreak=t,console.log(_concatInstanceProperty(r=_concatInstanceProperty(n="Update adbreak status, status: ".concat(this._activeAdBreakStatus,", player start time: ")).call(n,this._startTime,", player current time: ")).call(r,this._player.currentTime),this._activeAdBreak)}},{key:"_tryToRequestAd",value:function(e){var t;e&&"WAITING_PREROLL"!==this._activeAdBreakStatus&&"STARTED"!==this._activeAdBreakStatus&&e.id!==(null===(t=this._activeAdBreak)||void 0===t?void 0:t.id)&&(this._changeActiveAdBreakStatus("REQUESTED",e),this._adManager.reset(),this._adManager.updateConfig({adTagUrl:this._adTagUrl}),this._adManager.requestAds())}},{key:"_tryToPlayAd",value:function(){!this._activeAdBreak||this._activeAdBreak.startTime>this._player.currentTime||("ERROR"!==this._activeAdBreakStatus?"REQUESTED"===this._activeAdBreakStatus&&(this._changeActiveAdBreakStatus("STARTED",this._activeAdBreak),this._adManager.playAds()):this._changeActiveAdBreakStatus("READY",null))}},{key:"_getScte35Result",value:function(e){if(!this._scte35ResultMap.has(e))try{this._scte35ResultMap.set(e,this._scte35.parseFromHex(e))}catch(e){}if(!this._scte35ResultMap.has(e))try{this._scte35ResultMap.set(e,this._scte35.parseFromB64(e))}catch(e){}return this._scte35ResultMap.get(e)}},{key:"_updateAdBreakCues",value:function(e){var t,r,n=this;this._adBreakCues=_sortInstanceProperty(t=_reduceInstanceProperty(r=_Object$keys(e)).call(r,(function(t,r){var i=e[r];if(isValidScte35DateRange(i)){var o=i.message||n._getScte35Result(i[SCTE35_OUT_TAG]);(null==o?void 0:o.spliceCommandType)===SPLICE_INSERT&&t.push({data:o,id:i.ID,startTime:i.startTime||(new Date(i[START_DATE_TAG]).getTime()-n._startTime)/1e3,duration:_parseFloat$1(i[PLANNED_DURATION_TAG]||"0"),startDate:i[START_DATE_TAG]})}return t}),[])).call(t,(function(e,t){return e.startTime-t.startTime}))}}]),e}(),$forEach$3=arrayIteration$1.forEach,arrayMethodIsStrict$9=arrayMethodIsStrict$c,STRICT_METHOD$7=arrayMethodIsStrict$9("forEach"),arrayForEach$1=STRICT_METHOD$7?[].forEach:function(e){return $forEach$3(this,e,arguments.length>1?arguments[1]:void 0)},$$R=_export$1,forEach$c=arrayForEach$1;$$R({target:"Array",proto:!0,forced:[].forEach!=arrayForEach$1},{forEach:arrayForEach$1});var entryVirtual$1=entryVirtual$7,forEach$b=entryVirtual$1("Array").forEach,parent$5=forEach$b,forEach$a=parent$5,classof$e=classof$o,hasOwn$m=hasOwnProperty_1$1,isPrototypeOf$a=objectIsPrototypeOf$1,method$2=forEach$a,ArrayPrototype$3=Array.prototype,DOMIterables$2={DOMTokenList:!0,NodeList:!0},forEach$9=function(e){var t=e.forEach;return e===ArrayPrototype$3||isPrototypeOf$a(ArrayPrototype$3,e)&&t===ArrayPrototype$3.forEach||hasOwn$m(DOMIterables$2,classof$e(e))?method$2:t},parent$4=forEach$9,forEach$8=parent$4,parent$3=forEach$8,forEach$7=parent$3,forEach$6=forEach$7,forEach$5=forEach$6,_forEachInstanceProperty=getDefaultExportFromCjs(forEach$5),$$Q=_export$1,$filter$1=arrayIteration$1.filter,arrayMethodHasSpeciesSupport$3=arrayMethodHasSpeciesSupport$6,HAS_SPECIES_SUPPORT$2=arrayMethodHasSpeciesSupport$3("filter");$$Q({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$2},{filter:function(e){return $filter$1(this,e,arguments.length>1?arguments[1]:void 0)}});var entryVirtual=entryVirtual$7,filter$6=entryVirtual("Array").filter,isPrototypeOf$9=objectIsPrototypeOf$1,method$1=filter$6,ArrayPrototype$2=Array.prototype,filter$5=function(e){var t=e.filter;return e===ArrayPrototype$2||isPrototypeOf$9(ArrayPrototype$2,e)&&t===ArrayPrototype$2.filter?method$1:t},parent$2=filter$5,filter$4=parent$2,parent$1=filter$4,filter$3=parent$1,parent=filter$3,filter$2=parent,filter$1=filter$2,filter5=filter$1,_filterInstanceProperty=getDefaultExportFromCjs(filter5);function scheduleToVmap(e){var t,r;if(e&&e.length){var n=document.implementation.createDocument("http://www.iab.net/videosuite/vmap","vmap:VMAP"),i=n.getElementsByTagName("vmap:VMAP");i[0].setAttribute("version","1.0");var o,a=0,s=0;return _forEachInstanceProperty(t=_sortInstanceProperty(r=_filterInstanceProperty(e).call(e,(function(e){var t=e.offset;return"pre"===t||"post"===t||/^(\d\d):([0-5]\d):([0-5]\d)(.\d\d\d)?$/.test(t)}))).call(r,(function(e,t){return"pre"===e.offset||"post"===t.offset?-1:"post"===e.offset||"pre"===t.offset?1:Date.parse("2024-01-01T".concat(e.offset))<Date.parse("2024-01-01T".concat(t.offset))?-1:1}))).call(t,(function(e){var t,r,c,u=e.offset,l=e.type,d=e.tag;switch(u){case"pre":r="start",c="preroll";break;case"post":r="end",c="postroll";break;default:r=u,o!==u?(o=u,s=1,c="midroll-".concat(++a)):(s++,c="midroll-".concat(a))}var h=n.createElement("vmap:AdBreak");h.setAttribute("timeOffset",r),h.setAttribute("breakId",c),h.setAttribute("breakType",l||"linear"),i[0].appendChild(h);var f=n.createElement("vmap:AdSource");f.setAttribute("id",_concatInstanceProperty(t="".concat(c,"-ad-")).call(t,s)),f.setAttribute("allowMultipleAds","true"),f.setAttribute("followRedirects","true"),h.appendChild(f);var p=n.createElement("vmap:AdTagURI");p.setAttribute("templateType","vast3"),f.appendChild(p),p.innerHTML="<![CDATA[ ".concat(d," ]]>")})),(new XMLSerializer).serializeToString(n)}}function isPrerollAd(e){var t;return 0===(null==e||null===(t=e.getAdPodInfo())||void 0===t?void 0:t.getTimeOffset())}var index_min="",AdsPlugin=function(e){_inherits$6(r,AdsPlugin$1);var t=_createSuper$6(r);function r(){var e,n;_classCallCheck$9(this,r);for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];return _defineProperty$7(_assertThisInitialized$6(n=t.call.apply(t,_concatInstanceProperty(e=[this]).call(e,o))),"_scte35Manager",void 0),_defineProperty$7(_assertThisInitialized$6(n),"_handlePrerollMuted",(function(e){var t,r;isPrerollAd(e.ad)&&(null===(t=n.player.plugins.autoplayplugin)||void 0===t||null===(r=t.handleAutoplayStart)||void 0===r||r.call(t),n.player.once(VOLUME_CHANGE,(function(){var e,t;null===(e=n.player.plugins.autoplayplugin)||void 0===e||null===(t=e.initState)||void 0===t||t.call(e)})))})),n}return _createClass$9(r,[{key:"afterCreate",value:function(){_get$2(_getPrototypeOf$6(r.prototype),"afterCreate",this).call(this),this._init()}},{key:"beforePlayerInit",value:function(){var e,t=_get$2(_getPrototypeOf$6(r.prototype),"beforePlayerInit",this).call(this);return this.config.enableSCTE35&&null!==(e=this.config.ima)&&void 0!==e&&e.adTagUrlForSCTE35&&(this._scte35Manager=new Scte35Manager({player:this.player,adTagUrl:this.config.ima.adTagUrlForSCTE35,adManager:this.csManager})),t}},{key:"destroy",value:function(){var e;_get$2(_getPrototypeOf$6(r.prototype),"destroy",this).call(this),null===(e=this._scte35Manager)||void 0===e||e.destroy(),this._scte35Manager=void 0}},{key:"_init",value:function(){var e,t;null!==(e=this.config.ima)&&void 0!==e&&e.adTagUrl||null===(t=this.config.ima)||void 0===t||null===(t=t.schedule)||void 0===t||!t.length||(this.config.ima.adsResponse=scheduleToVmap(this.config.ima.schedule)),this.player.once(AD_PLAY,this._handlePrerollMuted)}}],[{key:"pluginName",get:function(){return"ad"}}]),r}(),plugin="";function ownKeys$4(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2$2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$4(Object(r),!0).forEach((function(t){_defineProperty$4(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$4(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime$2(){_regeneratorRuntime$2=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function _typeof$3(e){return(_typeof$3="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function asyncGeneratorStep$2(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep$2(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep$2(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$6(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$6(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$6(e,t,r){return t&&_defineProperties$6(e.prototype,t),r&&_defineProperties$6(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$4(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$4(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$4(e,t)}function _getPrototypeOf$4(e){return(_getPrototypeOf$4=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$4(e,t){return(_setPrototypeOf$4=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$4(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _assertThisInitialized$4(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$4(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$4(e)}function _createSuper$4(e){var t=_isNativeReflectConstruct$4();return function(){var r,n=_getPrototypeOf$4(e);if(t){var i=_getPrototypeOf$4(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$4(this,r)}}function _toConsumableArray$3(e){return _arrayWithoutHoles$3(e)||_iterableToArray$3(e)||_unsupportedIterableToArray$4(e)||_nonIterableSpread$3()}function _arrayWithoutHoles$3(e){if(Array.isArray(e))return _arrayLikeToArray$4(e)}function _iterableToArray$3(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _unsupportedIterableToArray$4(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$4(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$4(e,t):void 0}}function _arrayLikeToArray$4(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$3(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var global$G=global$1y,apply$8=functionApply$2,isCallable$q=isCallable$1d,userAgent$6=engineUserAgent$2,arraySlice$b=arraySlice$q,validateArgumentsLength$3=validateArgumentsLength$7,MSIE=/MSIE .\./.test(userAgent$6),Function$3=global$G.Function,wrap$1=function(e){return MSIE?function(t,r){var n=validateArgumentsLength$3(arguments.length,1)>2,i=isCallable$q(t)?t:Function$3(t),o=n?arraySlice$b(arguments,2):void 0;return e(n?function(){apply$8(i,this,o)}:i,r)}:e},schedulersFix$3={setTimeout:wrap$1(global$G.setTimeout),setInterval:wrap$1(global$G.setInterval)},$$P=_export$2,global$F=global$1y,setInterval$2=schedulersFix$3.setInterval;$$P({global:!0,bind:!0,forced:global$F.setInterval!==setInterval$2},{setInterval:setInterval$2});var $$O=_export$2,global$E=global$1y,setTimeout$2=schedulersFix$3.setTimeout;$$O({global:!0,bind:!0,forced:global$E.setTimeout!==setTimeout$2},{setTimeout:setTimeout$2});var $$N=_export$2,$every$1=arrayIteration$2.every,arrayMethodIsStrict$8=arrayMethodIsStrict$h,STRICT_METHOD$6=arrayMethodIsStrict$8("every");$$N({target:"Array",proto:!0,forced:!STRICT_METHOD$6},{every:function(e){return $every$1(this,e,arguments.length>1?arguments[1]:void 0)}});var $$M=_export$2,uncurryThis$J=functionUncurryThisClause$2,$indexOf$2=arrayIncludes$2.indexOf,arrayMethodIsStrict$7=arrayMethodIsStrict$h,nativeIndexOf$1=uncurryThis$J([].indexOf),NEGATIVE_ZERO$2=!!nativeIndexOf$1&&1/nativeIndexOf$1([1],1,-0)<0,STRICT_METHOD$5=arrayMethodIsStrict$7("indexOf");$$M({target:"Array",proto:!0,forced:NEGATIVE_ZERO$2||!STRICT_METHOD$5},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return NEGATIVE_ZERO$2?nativeIndexOf$1(this,e,t)||0:$indexOf$2(this,e,t)}});var uncurryThis$I=functionUncurryThis$2,aCallable$d=aCallable$C,isObject$o=isObject$_,hasOwn$l=hasOwnProperty_1$2,arraySlice$a=arraySlice$q,NATIVE_BIND$5=functionBindNative$2,$Function$1=Function,concat$3=uncurryThis$I([].concat),join$3=uncurryThis$I([].join),factories$1={},construct$2=function(e,t,r){if(!hasOwn$l(factories$1,t)){for(var n=[],i=0;i<t;i++)n[i]="a["+i+"]";factories$1[t]=$Function$1("C,a","return new C("+join$3(n,",")+")")}return factories$1[t](e,r)},functionBind$1=NATIVE_BIND$5?$Function$1.bind:function(e){var t=aCallable$d(this),r=t.prototype,n=arraySlice$a(arguments,1),i=function(){var r=concat$3(n,arraySlice$a(arguments));return this instanceof i?construct$2(t,r.length,r):t.apply(e,r)};return isObject$o(r)&&(i.prototype=r),i},$$L=_export$2,bind$a=functionBind$1;$$L({target:"Function",proto:!0,forced:Function.bind!==bind$a},{bind:bind$a});var $$K=_export$2,forEach$4=arrayForEach$2;$$K({target:"Array",proto:!0,forced:[].forEach!=arrayForEach$2},{forEach:arrayForEach$2});var uncurryThis$H=functionUncurryThis$2,defineBuiltIn$e=defineBuiltIn$A,DatePrototype$1=Date.prototype,INVALID_DATE$1="Invalid Date",TO_STRING$2="toString",nativeDateToString$1=uncurryThis$H(DatePrototype$1[TO_STRING$2]),thisTimeValue$2=uncurryThis$H(DatePrototype$1.getTime);String(new Date(NaN))!=INVALID_DATE$1&&defineBuiltIn$e(DatePrototype$1,TO_STRING$2,(function(){var e=thisTimeValue$2(this);return e==e?nativeDateToString$1(this):INVALID_DATE$1}));var global$D=global$1y,fails$H=fails$1T,uncurryThis$G=functionUncurryThis$2,toString$h=toString$E,trim$3=stringTrim$2.trim,whitespaces$4=whitespaces$b,$parseInt$3=global$D.parseInt,Symbol$4=global$D.Symbol,ITERATOR$9=Symbol$4&&Symbol$4.iterator,hex$1=/^[+-]?0x/i,exec$3=uncurryThis$G(hex$1.exec),FORCED$d=8!==$parseInt$3(whitespaces$4+"08")||22!==$parseInt$3(whitespaces$4+"0x16")||ITERATOR$9&&!fails$H((function(){$parseInt$3(Object(ITERATOR$9))})),numberParseInt$1=FORCED$d?function(e,t){var r=trim$3(toString$h(e));return $parseInt$3(r,t>>>0||(exec$3(hex$1,r)?16:10))}:$parseInt$3,$$J=_export$2,$parseInt$2=numberParseInt$1;function _classCallCheck$5(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$5(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$5(e,t,r){return t&&_defineProperties$5(e.prototype,t),r&&_defineProperties$5(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$3(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$3(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$3(e,t)}function _getPrototypeOf$3(e){return(_getPrototypeOf$3=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$3(e,t){return(_setPrototypeOf$3=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$3(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _assertThisInitialized$3(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$3(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$3(e)}function _createSuper$3(e){var t=_isNativeReflectConstruct$3();return function(){var r,n=_getPrototypeOf$3(e);if(t){var i=_getPrototypeOf$3(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$3(this,r)}}$$J({global:!0,forced:parseInt!=numberParseInt$1},{parseInt:numberParseInt$1});var check=function(e){return e&&e.Math==Math&&e},global$C=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||commonjsGlobal||Function("return this")(),objectGetOwnPropertyDescriptor={},fails$G=function(e){try{return!!e()}catch(e){return!0}},fails$F=fails$G,descriptors=!fails$F((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),fails$E=fails$G,functionBindNative=!fails$E((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),NATIVE_BIND$4=functionBindNative,call$m=Function.prototype.call,functionCall=NATIVE_BIND$4?call$m.bind(call$m):function(){return call$m.apply(call$m,arguments)},objectPropertyIsEnumerable={},$propertyIsEnumerable$1={}.propertyIsEnumerable,getOwnPropertyDescriptor$4=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor$4&&!$propertyIsEnumerable$1.call({1:2},1);objectPropertyIsEnumerable.f=NASHORN_BUG?function(e){var t=getOwnPropertyDescriptor$4(this,e);return!!t&&t.enumerable}:$propertyIsEnumerable$1;var match,version$1,createPropertyDescriptor$6=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},NATIVE_BIND$3=functionBindNative,FunctionPrototype$2=Function.prototype,call$l=FunctionPrototype$2.call,uncurryThisWithBind=NATIVE_BIND$3&&FunctionPrototype$2.bind.bind(call$l,call$l),functionUncurryThis=NATIVE_BIND$3?uncurryThisWithBind:function(e){return function(){return call$l.apply(e,arguments)}},uncurryThis$F=functionUncurryThis,toString$g=uncurryThis$F({}.toString),stringSlice$7=uncurryThis$F("".slice),classofRaw$2=function(e){return stringSlice$7(toString$g(e),8,-1)},uncurryThis$E=functionUncurryThis,fails$D=fails$G,classof$d=classofRaw$2,$Object$4=Object,split=uncurryThis$E("".split),indexedObject=fails$D((function(){return!$Object$4("z").propertyIsEnumerable(0)}))?function(e){return"String"==classof$d(e)?split(e,""):$Object$4(e)}:$Object$4,isNullOrUndefined$8=function(e){return null==e},isNullOrUndefined$7=isNullOrUndefined$8,$TypeError$f=TypeError,requireObjectCoercible$8=function(e){if(isNullOrUndefined$7(e))throw $TypeError$f("Can't call method on "+e);return e},IndexedObject$2=indexedObject,requireObjectCoercible$7=requireObjectCoercible$8,toIndexedObject$b=function(e){return IndexedObject$2(requireObjectCoercible$7(e))},documentAll$2="object"==typeof document&&document.all,IS_HTMLDDA=void 0===documentAll$2&&void 0!==documentAll$2,documentAll_1={all:documentAll$2,IS_HTMLDDA:IS_HTMLDDA},$documentAll$1=documentAll_1,documentAll$1=$documentAll$1.all,isCallable$p=$documentAll$1.IS_HTMLDDA?function(e){return"function"==typeof e||e===documentAll$1}:function(e){return"function"==typeof e},isCallable$o=isCallable$p,$documentAll=documentAll_1,documentAll=$documentAll.all,isObject$n=$documentAll.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:isCallable$o(e)||e===documentAll}:function(e){return"object"==typeof e?null!==e:isCallable$o(e)},global$B=global$C,isCallable$n=isCallable$p,aFunction=function(e){return isCallable$n(e)?e:void 0},getBuiltIn$a=function(e,t){return arguments.length<2?aFunction(global$B[e]):global$B[e]&&global$B[e][t]},uncurryThis$D=functionUncurryThis,objectIsPrototypeOf=uncurryThis$D({}.isPrototypeOf),engineUserAgent="undefined"!=typeof navigator&&String(navigator.userAgent)||"",global$A=global$C,userAgent$5=engineUserAgent,process$5=global$A.process,Deno$1=global$A.Deno,versions=process$5&&process$5.versions||Deno$1&&Deno$1.version,v8=versions&&versions.v8;v8&&(version$1=(match=v8.split("."))[0]>0&&match[0]<4?1:+(match[0]+match[1])),!version$1&&userAgent$5&&(!(match=userAgent$5.match(/Edge\/(\d+)/))||match[1]>=74)&&(match=userAgent$5.match(/Chrome\/(\d+)/))&&(version$1=+match[1]);var engineV8Version=version$1,V8_VERSION$2=engineV8Version,fails$C=fails$G,global$z=global$C,$String$6=global$z.String,symbolConstructorDetection=!!Object.getOwnPropertySymbols&&!fails$C((function(){var e=Symbol();return!$String$6(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&V8_VERSION$2&&V8_VERSION$2<41})),NATIVE_SYMBOL$5=symbolConstructorDetection,useSymbolAsUid=NATIVE_SYMBOL$5&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,getBuiltIn$9=getBuiltIn$a,isCallable$m=isCallable$p,isPrototypeOf$8=objectIsPrototypeOf,USE_SYMBOL_AS_UID$1=useSymbolAsUid,$Object$3=Object,isSymbol$5=USE_SYMBOL_AS_UID$1?function(e){return"symbol"==typeof e}:function(e){var t=getBuiltIn$9("Symbol");return isCallable$m(t)&&isPrototypeOf$8(t.prototype,$Object$3(e))},$String$5=String,tryToString$7=function(e){try{return $String$5(e)}catch(e){return"Object"}},isCallable$l=isCallable$p,tryToString$6=tryToString$7,$TypeError$e=TypeError,aCallable$c=function(e){if(isCallable$l(e))return e;throw $TypeError$e(tryToString$6(e)+" is not a function")},aCallable$b=aCallable$c,isNullOrUndefined$6=isNullOrUndefined$8,getMethod$5=function(e,t){var r=e[t];return isNullOrUndefined$6(r)?void 0:aCallable$b(r)},call$k=functionCall,isCallable$k=isCallable$p,isObject$m=isObject$n,$TypeError$d=TypeError,ordinaryToPrimitive$1=function(e,t){var r,n;if("string"===t&&isCallable$k(r=e.toString)&&!isObject$m(n=call$k(r,e)))return n;if(isCallable$k(r=e.valueOf)&&!isObject$m(n=call$k(r,e)))return n;if("string"!==t&&isCallable$k(r=e.toString)&&!isObject$m(n=call$k(r,e)))return n;throw $TypeError$d("Can't convert object to primitive value")},shared$6={exports:{}},isPure=!1,global$y=global$C,defineProperty$a=Object.defineProperty,defineGlobalProperty$3=function(e,t){try{defineProperty$a(global$y,e,{value:t,configurable:!0,writable:!0})}catch(r){global$y[e]=t}return t},global$x=global$C,defineGlobalProperty$2=defineGlobalProperty$3,SHARED="__core-js_shared__",store$3=global$x[SHARED]||defineGlobalProperty$2(SHARED,{}),sharedStore=store$3,store$2=sharedStore;(shared$6.exports=function(e,t){return store$2[e]||(store$2[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.31.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"});var sharedExports=shared$6.exports,requireObjectCoercible$6=requireObjectCoercible$8,$Object$2=Object,toObject$a=function(e){return $Object$2(requireObjectCoercible$6(e))},uncurryThis$C=functionUncurryThis,toObject$9=toObject$a,hasOwnProperty$2=uncurryThis$C({}.hasOwnProperty),hasOwnProperty_1=Object.hasOwn||function(e,t){return hasOwnProperty$2(toObject$9(e),t)},uncurryThis$B=functionUncurryThis,id$1=0,postfix=Math.random(),toString$f=uncurryThis$B(1..toString),uid$5=function(e){return"Symbol("+(void 0===e?"":e)+")_"+toString$f(++id$1+postfix,36)},global$w=global$C,shared$5=sharedExports,hasOwn$k=hasOwnProperty_1,uid$4=uid$5,NATIVE_SYMBOL$4=symbolConstructorDetection,USE_SYMBOL_AS_UID=useSymbolAsUid,Symbol$3=global$w.Symbol,WellKnownSymbolsStore$1=shared$5("wks"),createWellKnownSymbol=USE_SYMBOL_AS_UID?Symbol$3.for||Symbol$3:Symbol$3&&Symbol$3.withoutSetter||uid$4,wellKnownSymbol$m=function(e){return hasOwn$k(WellKnownSymbolsStore$1,e)||(WellKnownSymbolsStore$1[e]=NATIVE_SYMBOL$4&&hasOwn$k(Symbol$3,e)?Symbol$3[e]:createWellKnownSymbol("Symbol."+e)),WellKnownSymbolsStore$1[e]},call$j=functionCall,isObject$l=isObject$n,isSymbol$4=isSymbol$5,getMethod$4=getMethod$5,ordinaryToPrimitive=ordinaryToPrimitive$1,wellKnownSymbol$l=wellKnownSymbol$m,$TypeError$c=TypeError,TO_PRIMITIVE=wellKnownSymbol$l("toPrimitive"),toPrimitive$3=function(e,t){if(!isObject$l(e)||isSymbol$4(e))return e;var r,n=getMethod$4(e,TO_PRIMITIVE);if(n){if(void 0===t&&(t="default"),r=call$j(n,e,t),!isObject$l(r)||isSymbol$4(r))return r;throw $TypeError$c("Can't convert object to primitive value")}return void 0===t&&(t="number"),ordinaryToPrimitive(e,t)},toPrimitive$2=toPrimitive$3,isSymbol$3=isSymbol$5,toPropertyKey$5=function(e){var t=toPrimitive$2(e,"string");return isSymbol$3(t)?t:t+""},global$v=global$C,isObject$k=isObject$n,document$3=global$v.document,EXISTS$1=isObject$k(document$3)&&isObject$k(document$3.createElement),documentCreateElement$2=function(e){return EXISTS$1?document$3.createElement(e):{}},DESCRIPTORS$i=descriptors,fails$B=fails$G,createElement$1=documentCreateElement$2,ie8DomDefine=!DESCRIPTORS$i&&!fails$B((function(){return 7!=Object.defineProperty(createElement$1("div"),"a",{get:function(){return 7}}).a})),DESCRIPTORS$h=descriptors,call$i=functionCall,propertyIsEnumerableModule$1=objectPropertyIsEnumerable,createPropertyDescriptor$5=createPropertyDescriptor$6,toIndexedObject$a=toIndexedObject$b,toPropertyKey$4=toPropertyKey$5,hasOwn$j=hasOwnProperty_1,IE8_DOM_DEFINE$1=ie8DomDefine,$getOwnPropertyDescriptor$2=Object.getOwnPropertyDescriptor;objectGetOwnPropertyDescriptor.f=DESCRIPTORS$h?$getOwnPropertyDescriptor$2:function(e,t){if(e=toIndexedObject$a(e),t=toPropertyKey$4(t),IE8_DOM_DEFINE$1)try{return $getOwnPropertyDescriptor$2(e,t)}catch(e){}if(hasOwn$j(e,t))return createPropertyDescriptor$5(!call$i(propertyIsEnumerableModule$1.f,e,t),e[t])};var objectDefineProperty={},DESCRIPTORS$g=descriptors,fails$A=fails$G,v8PrototypeDefineBug=DESCRIPTORS$g&&fails$A((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),isObject$j=isObject$n,$String$4=String,$TypeError$b=TypeError,anObject$i=function(e){if(isObject$j(e))return e;throw $TypeError$b($String$4(e)+" is not an object")},DESCRIPTORS$f=descriptors,IE8_DOM_DEFINE=ie8DomDefine,V8_PROTOTYPE_DEFINE_BUG$1=v8PrototypeDefineBug,anObject$h=anObject$i,toPropertyKey$3=toPropertyKey$5,$TypeError$a=TypeError,$defineProperty$1=Object.defineProperty,$getOwnPropertyDescriptor$1=Object.getOwnPropertyDescriptor,ENUMERABLE="enumerable",CONFIGURABLE$1="configurable",WRITABLE="writable";objectDefineProperty.f=DESCRIPTORS$f?V8_PROTOTYPE_DEFINE_BUG$1?function(e,t,r){if(anObject$h(e),t=toPropertyKey$3(t),anObject$h(r),"function"==typeof e&&"prototype"===t&&"value"in r&&WRITABLE in r&&!r[WRITABLE]){var n=$getOwnPropertyDescriptor$1(e,t);n&&n[WRITABLE]&&(e[t]=r.value,r={configurable:CONFIGURABLE$1 in r?r[CONFIGURABLE$1]:n[CONFIGURABLE$1],enumerable:ENUMERABLE in r?r[ENUMERABLE]:n[ENUMERABLE],writable:!1})}return $defineProperty$1(e,t,r)}:$defineProperty$1:function(e,t,r){if(anObject$h(e),t=toPropertyKey$3(t),anObject$h(r),IE8_DOM_DEFINE)try{return $defineProperty$1(e,t,r)}catch(e){}if("get"in r||"set"in r)throw $TypeError$a("Accessors not supported");return"value"in r&&(e[t]=r.value),e};var DESCRIPTORS$e=descriptors,definePropertyModule$6=objectDefineProperty,createPropertyDescriptor$4=createPropertyDescriptor$6,createNonEnumerableProperty$8=DESCRIPTORS$e?function(e,t,r){return definePropertyModule$6.f(e,t,createPropertyDescriptor$4(1,r))}:function(e,t,r){return e[t]=r,e},makeBuiltIn$3={exports:{}},DESCRIPTORS$d=descriptors,hasOwn$i=hasOwnProperty_1,FunctionPrototype$1=Function.prototype,getDescriptor=DESCRIPTORS$d&&Object.getOwnPropertyDescriptor,EXISTS=hasOwn$i(FunctionPrototype$1,"name"),PROPER=EXISTS&&"something"===function(){}.name,CONFIGURABLE=EXISTS&&(!DESCRIPTORS$d||DESCRIPTORS$d&&getDescriptor(FunctionPrototype$1,"name").configurable),functionName={EXISTS:EXISTS,PROPER:PROPER,CONFIGURABLE:CONFIGURABLE},uncurryThis$A=functionUncurryThis,isCallable$j=isCallable$p,store$1=sharedStore,functionToString$1=uncurryThis$A(Function.toString);isCallable$j(store$1.inspectSource)||(store$1.inspectSource=function(e){return functionToString$1(e)});var set$2,get$1,has2,inspectSource$3=store$1.inspectSource,global$u=global$C,isCallable$i=isCallable$p,WeakMap$2=global$u.WeakMap,weakMapBasicDetection=isCallable$i(WeakMap$2)&&/native code/.test(String(WeakMap$2)),shared$4=sharedExports,uid$3=uid$5,keys$2=shared$4("keys"),sharedKey$4=function(e){return keys$2[e]||(keys$2[e]=uid$3(e))},hiddenKeys$6={},NATIVE_WEAK_MAP=weakMapBasicDetection,global$t=global$C,isObject$i=isObject$n,createNonEnumerableProperty$7=createNonEnumerableProperty$8,hasOwn$h=hasOwnProperty_1,shared$3=sharedStore,sharedKey$3=sharedKey$4,hiddenKeys$5=hiddenKeys$6,OBJECT_ALREADY_INITIALIZED="Object already initialized",TypeError$5=global$t.TypeError,WeakMap$1=global$t.WeakMap,enforce=function(e){return has2(e)?get$1(e):set$2(e,{})},getterFor=function(e){return function(t){var r;if(!isObject$i(t)||(r=get$1(t)).type!==e)throw TypeError$5("Incompatible receiver, "+e+" required");return r}};if(NATIVE_WEAK_MAP||shared$3.state){var store=shared$3.state||(shared$3.state=new WeakMap$1);store.get=store.get,store.has=store.has,store.set=store.set,set$2=function(e,t){if(store.has(e))throw TypeError$5(OBJECT_ALREADY_INITIALIZED);return t.facade=e,store.set(e,t),t},get$1=function(e){return store.get(e)||{}},has2=function(e){return store.has(e)}}else{var STATE=sharedKey$3("state");hiddenKeys$5[STATE]=!0,set$2=function(e,t){if(hasOwn$h(e,STATE))throw TypeError$5(OBJECT_ALREADY_INITIALIZED);return t.facade=e,createNonEnumerableProperty$7(e,STATE,t),t},get$1=function(e){return hasOwn$h(e,STATE)?e[STATE]:{}},has2=function(e){return hasOwn$h(e,STATE)}}var internalState={set:set$2,get:get$1,has:has2,enforce:enforce,getterFor:getterFor},uncurryThis$z=functionUncurryThis,fails$z=fails$G,isCallable$h=isCallable$p,hasOwn$g=hasOwnProperty_1,DESCRIPTORS$c=descriptors,CONFIGURABLE_FUNCTION_NAME$2=functionName.CONFIGURABLE,inspectSource$2=inspectSource$3,InternalStateModule$8=internalState,enforceInternalState$2=InternalStateModule$8.enforce,getInternalState$5=InternalStateModule$8.get,$String$3=String,defineProperty$9=Object.defineProperty,stringSlice$6=uncurryThis$z("".slice),replace$2=uncurryThis$z("".replace),join$2=uncurryThis$z([].join),CONFIGURABLE_LENGTH=DESCRIPTORS$c&&!fails$z((function(){return 8!==defineProperty$9((function(){}),"length",{value:8}).length})),TEMPLATE=String(String).split("String"),makeBuiltIn$2=makeBuiltIn$3.exports=function(e,t,r){"Symbol("===stringSlice$6($String$3(t),0,7)&&(t="["+replace$2($String$3(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!hasOwn$g(e,"name")||CONFIGURABLE_FUNCTION_NAME$2&&e.name!==t)&&(DESCRIPTORS$c?defineProperty$9(e,"name",{value:t,configurable:!0}):e.name=t),CONFIGURABLE_LENGTH&&r&&hasOwn$g(r,"arity")&&e.length!==r.arity&&defineProperty$9(e,"length",{value:r.arity});try{r&&hasOwn$g(r,"constructor")&&r.constructor?DESCRIPTORS$c&&defineProperty$9(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=enforceInternalState$2(e);return hasOwn$g(n,"source")||(n.source=join$2(TEMPLATE,"string"==typeof t?t:"")),e};Function.prototype.toString=makeBuiltIn$2((function(){return isCallable$h(this)&&getInternalState$5(this).source||inspectSource$2(this)}),"toString");var makeBuiltInExports=makeBuiltIn$3.exports,isCallable$g=isCallable$p,definePropertyModule$5=objectDefineProperty,makeBuiltIn$1=makeBuiltInExports,defineGlobalProperty$1=defineGlobalProperty$3,defineBuiltIn$d=function(e,t,r,n){n||(n={});var i=n.enumerable,o=void 0!==n.name?n.name:t;if(isCallable$g(r)&&makeBuiltIn$1(r,o,n),n.global)i?e[t]=r:defineGlobalProperty$1(t,r);else{try{n.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=r:definePropertyModule$5.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e},objectGetOwnPropertyNames={},ceil=Math.ceil,floor$6=Math.floor,mathTrunc=Math.trunc||function(e){var t=+e;return(t>0?floor$6:ceil)(t)},trunc$1=mathTrunc,toIntegerOrInfinity$9=function(e){var t=+e;return t!=t||0===t?0:trunc$1(t)},toIntegerOrInfinity$8=toIntegerOrInfinity$9,max$2=Math.max,min$5=Math.min,toAbsoluteIndex$8=function(e,t){var r=toIntegerOrInfinity$8(e);return r<0?max$2(r+t,0):min$5(r,t)},toIntegerOrInfinity$7=toIntegerOrInfinity$9,min$4=Math.min,toLength$a=function(e){return e>0?min$4(toIntegerOrInfinity$7(e),9007199254740991):0},toLength$9=toLength$a,lengthOfArrayLike$d=function(e){return toLength$9(e.length)},toIndexedObject$9=toIndexedObject$b,toAbsoluteIndex$7=toAbsoluteIndex$8,lengthOfArrayLike$c=lengthOfArrayLike$d,createMethod$4=function(e){return function(t,r,n){var i,o=toIndexedObject$9(t),a=lengthOfArrayLike$c(o),s=toAbsoluteIndex$7(n,a);if(e&&r!=r){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===r)return e||s||0;return!e&&-1}},arrayIncludes={includes:createMethod$4(!0),indexOf:createMethod$4(!1)},uncurryThis$y=functionUncurryThis,hasOwn$f=hasOwnProperty_1,toIndexedObject$8=toIndexedObject$b,indexOf3=arrayIncludes.indexOf,hiddenKeys$4=hiddenKeys$6,push$5=uncurryThis$y([].push),objectKeysInternal=function(e,t){var r,n=toIndexedObject$8(e),i=0,o=[];for(r in n)!hasOwn$f(hiddenKeys$4,r)&&hasOwn$f(n,r)&&push$5(o,r);for(;t.length>i;)hasOwn$f(n,r=t[i++])&&(~indexOf3(o,r)||push$5(o,r));return o},enumBugKeys$3=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],internalObjectKeys$1=objectKeysInternal,enumBugKeys$2=enumBugKeys$3,hiddenKeys$3=enumBugKeys$2.concat("length","prototype");objectGetOwnPropertyNames.f=Object.getOwnPropertyNames||function(e){return internalObjectKeys$1(e,hiddenKeys$3)};var objectGetOwnPropertySymbols={};objectGetOwnPropertySymbols.f=Object.getOwnPropertySymbols;var getBuiltIn$8=getBuiltIn$a,uncurryThis$x=functionUncurryThis,getOwnPropertyNamesModule$2=objectGetOwnPropertyNames,getOwnPropertySymbolsModule$2=objectGetOwnPropertySymbols,anObject$g=anObject$i,concat$2=uncurryThis$x([].concat),ownKeys$3=getBuiltIn$8("Reflect","ownKeys")||function(e){var t=getOwnPropertyNamesModule$2.f(anObject$g(e)),r=getOwnPropertySymbolsModule$2.f;return r?concat$2(t,r(e)):t},hasOwn$e=hasOwnProperty_1,ownKeys$2=ownKeys$3,getOwnPropertyDescriptorModule$2=objectGetOwnPropertyDescriptor,definePropertyModule$4=objectDefineProperty,copyConstructorProperties$3=function(e,t,r){for(var n=ownKeys$2(t),i=definePropertyModule$4.f,o=getOwnPropertyDescriptorModule$2.f,a=0;a<n.length;a++){var s=n[a];hasOwn$e(e,s)||r&&hasOwn$e(r,s)||i(e,s,o(t,s))}},fails$y=fails$G,isCallable$f=isCallable$p,replacement=/#|\.prototype\./,isForced$4=function(e,t){var r=data[normalize(e)];return r==POLYFILL||r!=NATIVE&&(isCallable$f(t)?fails$y(t):!!t)},normalize=isForced$4.normalize=function(e){return String(e).replace(replacement,".").toLowerCase()},data=isForced$4.data={},NATIVE=isForced$4.NATIVE="N",POLYFILL=isForced$4.POLYFILL="P",isForced_1=isForced$4,global$s=global$C,getOwnPropertyDescriptor$3=objectGetOwnPropertyDescriptor.f,createNonEnumerableProperty$6=createNonEnumerableProperty$8,defineBuiltIn$c=defineBuiltIn$d,defineGlobalProperty=defineGlobalProperty$3,copyConstructorProperties$2=copyConstructorProperties$3,isForced$3=isForced_1,_export=function(e,t){var r,n,i,o,a,s=e.target,c=e.global,u=e.stat;if(r=c?global$s:u?global$s[s]||defineGlobalProperty(s,{}):(global$s[s]||{}).prototype)for(n in t){if(o=t[n],i=e.dontCallGetSet?(a=getOwnPropertyDescriptor$3(r,n))&&a.value:r[n],!isForced$3(c?n:s+(u?".":"#")+n,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;copyConstructorProperties$2(o,i)}(e.sham||i&&i.sham)&&createNonEnumerableProperty$6(o,"sham",!0),defineBuiltIn$c(r,n,o,e)}},NATIVE_BIND$2=functionBindNative,FunctionPrototype=Function.prototype,apply$7=FunctionPrototype.apply,call$h=FunctionPrototype.call,functionApply="object"==typeof Reflect&&Reflect.apply||(NATIVE_BIND$2?call$h.bind(apply$7):function(){return call$h.apply(apply$7,arguments)}),engineIsBun="function"==typeof Bun&&Bun&&"string"==typeof Bun.version,uncurryThis$w=functionUncurryThis,arraySlice$9=uncurryThis$w([].slice),$TypeError$9=TypeError,validateArgumentsLength$2=function(e,t){if(e<t)throw $TypeError$9("Not enough arguments");return e},global$r=global$C,apply$6=functionApply,isCallable$e=isCallable$p,ENGINE_IS_BUN=engineIsBun,USER_AGENT=engineUserAgent,arraySlice$8=arraySlice$9,validateArgumentsLength$1=validateArgumentsLength$2,Function$2=global$r.Function,WRAP=/MSIE .\./.test(USER_AGENT)||ENGINE_IS_BUN&&function(){var e=global$r.Bun.version.split(".");return e.length<3||0==e[0]&&(e[1]<3||3==e[1]&&0==e[2])}(),schedulersFix$2=function(e,t){var r=t?2:1;return WRAP?function(n,i){var o=validateArgumentsLength$1(arguments.length,1)>r,a=isCallable$e(n)?n:Function$2(n),s=o?arraySlice$8(arguments,r):[],c=o?function(){apply$6(a,this,s)}:a;return t?e(c,i):e(c)}:e},$$I=_export,global$q=global$C,schedulersFix$1=schedulersFix$2,setInterval$1=schedulersFix$1(global$q.setInterval,!0);$$I({global:!0,bind:!0,forced:global$q.setInterval!==setInterval$1},{setInterval:setInterval$1});var $$H=_export,global$p=global$C,schedulersFix=schedulersFix$2,setTimeout$1=schedulersFix(global$p.setTimeout,!0);function debounce(e,t,r){var n;return function(){var i=this,o=arguments,a=r&&!n;clearTimeout(n),n=setTimeout((function(){n=null,r||e.apply(i,o)}),t),a&&e.apply(i,o)}}function _classCallCheck$4(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$4(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$4(e,t,r){return t&&_defineProperties$4(e.prototype,t),r&&_defineProperties$4(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}$$H({global:!0,bind:!0,forced:global$p.setTimeout!==setTimeout$1},{setTimeout:setTimeout$1});var wellKnownSymbol$k=wellKnownSymbol$m,TO_STRING_TAG$4=wellKnownSymbol$k("toStringTag"),test$1={};test$1[TO_STRING_TAG$4]="z";var toStringTagSupport="[object z]"===String(test$1),TO_STRING_TAG_SUPPORT$2=toStringTagSupport,isCallable$d=isCallable$p,classofRaw$1=classofRaw$2,wellKnownSymbol$j=wellKnownSymbol$m,TO_STRING_TAG$3=wellKnownSymbol$j("toStringTag"),$Object$1=Object,CORRECT_ARGUMENTS="Arguments"==classofRaw$1(function(){return arguments}()),tryGet=function(e,t){try{return e[t]}catch(e){}},classof$c=TO_STRING_TAG_SUPPORT$2?classofRaw$1:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=tryGet(t=$Object$1(e),TO_STRING_TAG$3))?r:CORRECT_ARGUMENTS?classofRaw$1(t):"Object"==(n=classofRaw$1(t))&&isCallable$d(t.callee)?"Arguments":n},TO_STRING_TAG_SUPPORT$1=toStringTagSupport,classof$b=classof$c,objectToString=TO_STRING_TAG_SUPPORT$1?{}.toString:function(){return"[object "+classof$b(this)+"]"},TO_STRING_TAG_SUPPORT=toStringTagSupport,defineBuiltIn$b=defineBuiltIn$d,toString$e=objectToString;TO_STRING_TAG_SUPPORT||defineBuiltIn$b(Object.prototype,"toString",toString$e,{unsafe:!0});var classof$a=classofRaw$2,engineIsNode="undefined"!=typeof process&&"process"==classof$a(process),uncurryThis$v=functionUncurryThis,aCallable$a=aCallable$c,functionUncurryThisAccessor=function(e,t,r){try{return uncurryThis$v(aCallable$a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}},isCallable$c=isCallable$p,$String$2=String,$TypeError$8=TypeError,aPossiblePrototype$1=function(e){if("object"==typeof e||isCallable$c(e))return e;throw $TypeError$8("Can't set "+$String$2(e)+" as a prototype")},uncurryThisAccessor=functionUncurryThisAccessor,anObject$f=anObject$i,aPossiblePrototype=aPossiblePrototype$1,objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=uncurryThisAccessor(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return anObject$f(r),aPossiblePrototype(n),t?e(r,n):r.__proto__=n,r}}():void 0),defineProperty$8=objectDefineProperty.f,hasOwn$d=hasOwnProperty_1,wellKnownSymbol$i=wellKnownSymbol$m,TO_STRING_TAG$2=wellKnownSymbol$i("toStringTag"),setToStringTag$6=function(e,t,r){e&&!r&&(e=e.prototype),e&&!hasOwn$d(e,TO_STRING_TAG$2)&&defineProperty$8(e,TO_STRING_TAG$2,{configurable:!0,value:t})},makeBuiltIn=makeBuiltInExports,defineProperty$7=objectDefineProperty,defineBuiltInAccessor$5=function(e,t,r){return r.get&&makeBuiltIn(r.get,t,{getter:!0}),r.set&&makeBuiltIn(r.set,t,{setter:!0}),defineProperty$7.f(e,t,r)},getBuiltIn$7=getBuiltIn$a,defineBuiltInAccessor$4=defineBuiltInAccessor$5,wellKnownSymbol$h=wellKnownSymbol$m,DESCRIPTORS$b=descriptors,SPECIES$5=wellKnownSymbol$h("species"),setSpecies$3=function(e){var t=getBuiltIn$7(e);DESCRIPTORS$b&&t&&!t[SPECIES$5]&&defineBuiltInAccessor$4(t,SPECIES$5,{configurable:!0,get:function(){return this}})},isPrototypeOf$7=objectIsPrototypeOf,$TypeError$7=TypeError,anInstance$5=function(e,t){if(isPrototypeOf$7(t,e))return e;throw $TypeError$7("Incorrect invocation")},uncurryThis$u=functionUncurryThis,fails$x=fails$G,isCallable$b=isCallable$p,classof$9=classof$c,getBuiltIn$6=getBuiltIn$a,inspectSource$1=inspectSource$3,noop$1=function(){},empty=[],construct$1=getBuiltIn$6("Reflect","construct"),constructorRegExp=/^\s*(?:class|function)\b/,exec$2=uncurryThis$u(constructorRegExp.exec),INCORRECT_TO_STRING=!constructorRegExp.exec(noop$1),isConstructorModern=function(e){if(!isCallable$b(e))return!1;try{return construct$1(noop$1,empty,e),!0}catch(e){return!1}},isConstructorLegacy=function(e){if(!isCallable$b(e))return!1;switch(classof$9(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return INCORRECT_TO_STRING||!!exec$2(constructorRegExp,inspectSource$1(e))}catch(e){return!0}};isConstructorLegacy.sham=!0;var $location,defer,channel,port,isConstructor$3=!construct$1||fails$x((function(){var e;return isConstructorModern(isConstructorModern.call)||!isConstructorModern(Object)||!isConstructorModern((function(){e=!0}))||e}))?isConstructorLegacy:isConstructorModern,isConstructor$2=isConstructor$3,tryToString$5=tryToString$7,$TypeError$6=TypeError,aConstructor$3=function(e){if(isConstructor$2(e))return e;throw $TypeError$6(tryToString$5(e)+" is not a constructor")},anObject$e=anObject$i,aConstructor$2=aConstructor$3,isNullOrUndefined$5=isNullOrUndefined$8,wellKnownSymbol$g=wellKnownSymbol$m,SPECIES$4=wellKnownSymbol$g("species"),speciesConstructor$5=function(e,t){var r,n=anObject$e(e).constructor;return void 0===n||isNullOrUndefined$5(r=anObject$e(n)[SPECIES$4])?t:aConstructor$2(r)},classofRaw=classofRaw$2,uncurryThis$t=functionUncurryThis,functionUncurryThisClause=function(e){if("Function"===classofRaw(e))return uncurryThis$t(e)},uncurryThis$s=functionUncurryThisClause,aCallable$9=aCallable$c,NATIVE_BIND$1=functionBindNative,bind$9=functionUncurryThisClause(functionUncurryThisClause.bind),functionBindContext=function(e,t){return aCallable$9(e),void 0===t?e:NATIVE_BIND$1?bind$9(e,t):function(){return e.apply(t,arguments)}},getBuiltIn$5=getBuiltIn$a,html$2=getBuiltIn$5("document","documentElement"),userAgent$4=engineUserAgent,engineIsIos=/(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$4),global$o=global$C,apply$5=functionApply,bind$8=functionBindContext,isCallable$a=isCallable$p,hasOwn$c=hasOwnProperty_1,fails$w=fails$G,html$1=html$2,arraySlice$7=arraySlice$9,createElement=documentCreateElement$2,validateArgumentsLength=validateArgumentsLength$2,IS_IOS$1=engineIsIos,IS_NODE$4=engineIsNode,set$1=global$o.setImmediate,clear=global$o.clearImmediate,process$4=global$o.process,Dispatch=global$o.Dispatch,Function$1=global$o.Function,MessageChannel=global$o.MessageChannel,String$1=global$o.String,counter=0,queue$2={},ONREADYSTATECHANGE="onreadystatechange";fails$w((function(){$location=global$o.location}));var run=function(e){if(hasOwn$c(queue$2,e)){var t=queue$2[e];delete queue$2[e],t()}},runner=function(e){return function(){run(e)}},eventListener=function(e){run(e.data)},globalPostMessageDefer=function(e){global$o.postMessage(String$1(e),$location.protocol+"//"+$location.host)};set$1&&clear||(set$1=function(e){validateArgumentsLength(arguments.length,1);var t=isCallable$a(e)?e:Function$1(e),r=arraySlice$7(arguments,1);return queue$2[++counter]=function(){apply$5(t,void 0,r)},defer(counter),counter},clear=function(e){delete queue$2[e]},IS_NODE$4?defer=function(e){process$4.nextTick(runner(e))}:Dispatch&&Dispatch.now?defer=function(e){Dispatch.now(runner(e))}:MessageChannel&&!IS_IOS$1?(port=(channel=new MessageChannel).port2,channel.port1.onmessage=eventListener,defer=bind$8(port.postMessage,port)):global$o.addEventListener&&isCallable$a(global$o.postMessage)&&!global$o.importScripts&&$location&&"file:"!==$location.protocol&&!fails$w(globalPostMessageDefer)?(defer=globalPostMessageDefer,global$o.addEventListener("message",eventListener,!1)):defer=ONREADYSTATECHANGE in createElement("script")?function(e){html$1.appendChild(createElement("script"))[ONREADYSTATECHANGE]=function(){html$1.removeChild(this),run(e)}}:function(e){setTimeout(runner(e),0)});var task$1={set:set$1,clear:clear},Queue$2=function(){this.head=null,this.tail=null};Queue$2.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}};var notify$1,toggle,node,promise,then,queue$1=Queue$2,userAgent$3=engineUserAgent,engineIsIosPebble=/ipad|iphone|ipod/i.test(userAgent$3)&&"undefined"!=typeof Pebble,userAgent$2=engineUserAgent,engineIsWebosWebkit=/web0s(?!.*chrome)/i.test(userAgent$2),global$n=global$C,bind$7=functionBindContext,getOwnPropertyDescriptor$2=objectGetOwnPropertyDescriptor.f,macrotask=task$1.set,Queue$1=queue$1,IS_IOS=engineIsIos,IS_IOS_PEBBLE=engineIsIosPebble,IS_WEBOS_WEBKIT=engineIsWebosWebkit,IS_NODE$3=engineIsNode,MutationObserver=global$n.MutationObserver||global$n.WebKitMutationObserver,document$2=global$n.document,process$3=global$n.process,Promise$1=global$n.Promise,queueMicrotaskDescriptor=getOwnPropertyDescriptor$2(global$n,"queueMicrotask"),microtask$1=queueMicrotaskDescriptor&&queueMicrotaskDescriptor.value;if(!microtask$1){var queue=new Queue$1,flush=function(){var e,t;for(IS_NODE$3&&(e=process$3.domain)&&e.exit();t=queue.get();)try{t()}catch(e){throw queue.head&&notify$1(),e}e&&e.enter()};IS_IOS||IS_NODE$3||IS_WEBOS_WEBKIT||!MutationObserver||!document$2?!IS_IOS_PEBBLE&&Promise$1&&Promise$1.resolve?((promise=Promise$1.resolve(void 0)).constructor=Promise$1,then=bind$7(promise.then,promise),notify$1=function(){then(flush)}):IS_NODE$3?notify$1=function(){process$3.nextTick(flush)}:(macrotask=bind$7(macrotask,global$n),notify$1=function(){macrotask(flush)}):(toggle=!0,node=document$2.createTextNode(""),new MutationObserver(flush).observe(node,{characterData:!0}),notify$1=function(){node.data=toggle=!toggle}),microtask$1=function(e){queue.head||notify$1(),queue.add(e)}}var microtask_1=microtask$1,hostReportErrors$1=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}},perform$3=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},global$m=global$C,promiseNativeConstructor=global$m.Promise,engineIsDeno="object"==typeof Deno&&Deno&&"object"==typeof Deno.version,IS_DENO$1=engineIsDeno,IS_NODE$2=engineIsNode,engineIsBrowser=!IS_DENO$1&&!IS_NODE$2&&"object"==typeof window&&"object"==typeof document,global$l=global$C,NativePromiseConstructor$3=promiseNativeConstructor,isCallable$9=isCallable$p,isForced$2=isForced_1,inspectSource=inspectSource$3,wellKnownSymbol$f=wellKnownSymbol$m,IS_BROWSER=engineIsBrowser,IS_DENO=engineIsDeno,V8_VERSION$1=engineV8Version;NativePromiseConstructor$3&&NativePromiseConstructor$3.prototype;var SPECIES$3=wellKnownSymbol$f("species"),SUBCLASSING=!1,NATIVE_PROMISE_REJECTION_EVENT$1=isCallable$9(global$l.PromiseRejectionEvent),FORCED_PROMISE_CONSTRUCTOR$5=isForced$2("Promise",(function(){var e=inspectSource(NativePromiseConstructor$3),t=e!==String(NativePromiseConstructor$3);if(!t&&66===V8_VERSION$1)return!0;if(!V8_VERSION$1||V8_VERSION$1<51||!/native code/.test(e)){var r=new NativePromiseConstructor$3((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[SPECIES$3]=n,!(SUBCLASSING=r.then((function(){}))instanceof n))return!0}return!t&&(IS_BROWSER||IS_DENO)&&!NATIVE_PROMISE_REJECTION_EVENT$1})),promiseConstructorDetection={CONSTRUCTOR:FORCED_PROMISE_CONSTRUCTOR$5,REJECTION_EVENT:NATIVE_PROMISE_REJECTION_EVENT$1,SUBCLASSING:SUBCLASSING},newPromiseCapability$2={},aCallable$8=aCallable$c,$TypeError$5=TypeError,PromiseCapability=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw $TypeError$5("Bad Promise constructor");t=e,r=n})),this.resolve=aCallable$8(t),this.reject=aCallable$8(r)};newPromiseCapability$2.f=function(e){return new PromiseCapability(e)};var Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,$$G=_export,IS_NODE$1=engineIsNode,global$k=global$C,call$g=functionCall,defineBuiltIn$a=defineBuiltIn$d,setPrototypeOf$5=objectSetPrototypeOf,setToStringTag$5=setToStringTag$6,setSpecies$2=setSpecies$3,aCallable$7=aCallable$c,isCallable$8=isCallable$p,isObject$h=isObject$n,anInstance$4=anInstance$5,speciesConstructor$4=speciesConstructor$5,task=task$1.set,microtask=microtask_1,hostReportErrors=hostReportErrors$1,perform$2=perform$3,Queue=queue$1,InternalStateModule$7=internalState,NativePromiseConstructor$2=promiseNativeConstructor,PromiseConstructorDetection=promiseConstructorDetection,newPromiseCapabilityModule$3=newPromiseCapability$2,PROMISE="Promise",FORCED_PROMISE_CONSTRUCTOR$4=PromiseConstructorDetection.CONSTRUCTOR,NATIVE_PROMISE_REJECTION_EVENT=PromiseConstructorDetection.REJECTION_EVENT,NATIVE_PROMISE_SUBCLASSING=PromiseConstructorDetection.SUBCLASSING,getInternalPromiseState=InternalStateModule$7.getterFor(PROMISE),setInternalState$6=InternalStateModule$7.set,NativePromisePrototype$1=NativePromiseConstructor$2&&NativePromiseConstructor$2.prototype,PromiseConstructor=NativePromiseConstructor$2,PromisePrototype=NativePromisePrototype$1,TypeError$4=global$k.TypeError,document$1=global$k.document,process$2=global$k.process,newPromiseCapability$1=newPromiseCapabilityModule$3.f,newGenericPromiseCapability=newPromiseCapability$1,DISPATCH_EVENT=!!(document$1&&document$1.createEvent&&global$k.dispatchEvent),UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,isThenable=function(e){var t;return!(!isObject$h(e)||!isCallable$8(t=e.then))&&t},callReaction=function(e,t){var r,n,i,o=t.value,a=t.state==FULFILLED,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(a||(t.rejection===UNHANDLED&&onHandleUnhandled(t),t.rejection=HANDLED),!0===s?r=o:(l&&l.enter(),r=s(o),l&&(l.exit(),i=!0)),r===e.promise?u(TypeError$4("Promise-chain cycle")):(n=isThenable(r))?call$g(n,r,c,u):c(r)):u(o)}catch(e){l&&!i&&l.exit(),u(e)}},notify=function(e,t){e.notified||(e.notified=!0,microtask((function(){for(var r,n=e.reactions;r=n.get();)callReaction(r,e);e.notified=!1,t&&!e.rejection&&onUnhandled(e)})))},dispatchEvent=function(e,t,r){var n,i;DISPATCH_EVENT?((n=document$1.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),global$k.dispatchEvent(n)):n={promise:t,reason:r},!NATIVE_PROMISE_REJECTION_EVENT&&(i=global$k["on"+e])?i(n):e===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",r)},onUnhandled=function(e){call$g(task,global$k,(function(){var t,r=e.facade,n=e.value;if(isUnhandled(e)&&(t=perform$2((function(){IS_NODE$1?process$2.emit("unhandledRejection",n,r):dispatchEvent(UNHANDLED_REJECTION,r,n)})),e.rejection=IS_NODE$1||isUnhandled(e)?UNHANDLED:HANDLED,t.error))throw t.value}))},isUnhandled=function(e){return e.rejection!==HANDLED&&!e.parent},onHandleUnhandled=function(e){call$g(task,global$k,(function(){var t=e.facade;IS_NODE$1?process$2.emit("rejectionHandled",t):dispatchEvent(REJECTION_HANDLED,t,e.value)}))},bind$6=function(e,t,r){return function(n){e(t,n,r)}},internalReject=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=REJECTED,notify(e,!0))},internalResolve=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw TypeError$4("Promise can't be resolved itself");var n=isThenable(t);n?microtask((function(){var r={done:!1};try{call$g(n,t,bind$6(internalResolve,r,e),bind$6(internalReject,r,e))}catch(t){internalReject(r,t,e)}})):(e.value=t,e.state=FULFILLED,notify(e,!1))}catch(t){internalReject({done:!1},t,e)}}};if(FORCED_PROMISE_CONSTRUCTOR$4&&(PromisePrototype=(PromiseConstructor=function(e){anInstance$4(this,PromisePrototype),aCallable$7(e),call$g(Internal,this);var t=getInternalPromiseState(this);try{e(bind$6(internalResolve,t),bind$6(internalReject,t))}catch(e){internalReject(t,e)}}).prototype,(Internal=function(e){setInternalState$6(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:new Queue,rejection:!1,state:PENDING,value:void 0})}).prototype=defineBuiltIn$a(PromisePrototype,"then",(function(e,t){var r=getInternalPromiseState(this),n=newPromiseCapability$1(speciesConstructor$4(this,PromiseConstructor));return r.parent=!0,n.ok=!isCallable$8(e)||e,n.fail=isCallable$8(t)&&t,n.domain=IS_NODE$1?process$2.domain:void 0,r.state==PENDING?r.reactions.add(n):microtask((function(){callReaction(n,r)})),n.promise})),OwnPromiseCapability=function(){var e=new Internal,t=getInternalPromiseState(e);this.promise=e,this.resolve=bind$6(internalResolve,t),this.reject=bind$6(internalReject,t)},newPromiseCapabilityModule$3.f=newPromiseCapability$1=function(e){return e===PromiseConstructor||e===PromiseWrapper?new OwnPromiseCapability(e):newGenericPromiseCapability(e)},isCallable$8(NativePromiseConstructor$2)&&NativePromisePrototype$1!==Object.prototype)){nativeThen=NativePromisePrototype$1.then,NATIVE_PROMISE_SUBCLASSING||defineBuiltIn$a(NativePromisePrototype$1,"then",(function(e,t){var r=this;return new PromiseConstructor((function(e,t){call$g(nativeThen,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete NativePromisePrototype$1.constructor}catch(e){}setPrototypeOf$5&&setPrototypeOf$5(NativePromisePrototype$1,PromisePrototype)}$$G({global:!0,constructor:!0,wrap:!0,forced:FORCED_PROMISE_CONSTRUCTOR$4},{Promise:PromiseConstructor}),setToStringTag$5(PromiseConstructor,PROMISE,!1),setSpecies$2(PROMISE);var iterators={},wellKnownSymbol$e=wellKnownSymbol$m,Iterators$4=iterators,ITERATOR$8=wellKnownSymbol$e("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod$2=function(e){return void 0!==e&&(Iterators$4.Array===e||ArrayPrototype$1[ITERATOR$8]===e)},classof$8=classof$c,getMethod$3=getMethod$5,isNullOrUndefined$4=isNullOrUndefined$8,Iterators$3=iterators,wellKnownSymbol$d=wellKnownSymbol$m,ITERATOR$7=wellKnownSymbol$d("iterator"),getIteratorMethod$3=function(e){if(!isNullOrUndefined$4(e))return getMethod$3(e,ITERATOR$7)||getMethod$3(e,"@@iterator")||Iterators$3[classof$8(e)]},call$f=functionCall,aCallable$6=aCallable$c,anObject$d=anObject$i,tryToString$4=tryToString$7,getIteratorMethod$2=getIteratorMethod$3,$TypeError$4=TypeError,getIterator$2=function(e,t){var r=arguments.length<2?getIteratorMethod$2(e):t;if(aCallable$6(r))return anObject$d(call$f(r,e));throw $TypeError$4(tryToString$4(e)+" is not iterable")},call$e=functionCall,anObject$c=anObject$i,getMethod$2=getMethod$5,iteratorClose$1=function(e,t,r){var n,i;anObject$c(e);try{if(!(n=getMethod$2(e,"return"))){if("throw"===t)throw r;return r}n=call$e(n,e)}catch(e){i=!0,n=e}if("throw"===t)throw r;if(i)throw n;return anObject$c(n),r},bind$5=functionBindContext,call$d=functionCall,anObject$b=anObject$i,tryToString$3=tryToString$7,isArrayIteratorMethod$1=isArrayIteratorMethod$2,lengthOfArrayLike$b=lengthOfArrayLike$d,isPrototypeOf$6=objectIsPrototypeOf,getIterator$1=getIterator$2,getIteratorMethod$1=getIteratorMethod$3,iteratorClose=iteratorClose$1,$TypeError$3=TypeError,Result=function(e,t){this.stopped=e,this.result=t},ResultPrototype=Result.prototype,iterate$4=function(e,t,r){var n,i,o,a,s,c,u,l=r&&r.that,d=!(!r||!r.AS_ENTRIES),h=!(!r||!r.IS_RECORD),f=!(!r||!r.IS_ITERATOR),p=!(!r||!r.INTERRUPTED),y=bind$5(t,l),m=function(e){return n&&iteratorClose(n,"normal",e),new Result(!0,e)},g=function(e){return d?(anObject$b(e),p?y(e[0],e[1],m):y(e[0],e[1])):p?y(e,m):y(e)};if(h)n=e.iterator;else if(f)n=e;else{if(!(i=getIteratorMethod$1(e)))throw $TypeError$3(tryToString$3(e)+" is not iterable");if(isArrayIteratorMethod$1(i)){for(o=0,a=lengthOfArrayLike$b(e);a>o;o++)if((s=g(e[o]))&&isPrototypeOf$6(ResultPrototype,s))return s;return new Result(!1)}n=getIterator$1(e,i)}for(c=h?e.next:n.next;!(u=call$d(c,n)).done;){try{s=g(u.value)}catch(e){iteratorClose(n,"throw",e)}if("object"==typeof s&&s&&isPrototypeOf$6(ResultPrototype,s))return s}return new Result(!1)},wellKnownSymbol$c=wellKnownSymbol$m,ITERATOR$6=wellKnownSymbol$c("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$6]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(e){}var checkCorrectnessOfIteration$3=function(e,t){if(!t&&!SAFE_CLOSING)return!1;var r=!1;try{var n={};n[ITERATOR$6]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r},NativePromiseConstructor$1=promiseNativeConstructor,checkCorrectnessOfIteration$2=checkCorrectnessOfIteration$3,FORCED_PROMISE_CONSTRUCTOR$3=promiseConstructorDetection.CONSTRUCTOR,promiseStaticsIncorrectIteration=FORCED_PROMISE_CONSTRUCTOR$3||!checkCorrectnessOfIteration$2((function(e){NativePromiseConstructor$1.all(e).then(void 0,(function(){}))})),$$F=_export,call$c=functionCall,aCallable$5=aCallable$c,newPromiseCapabilityModule$2=newPromiseCapability$2,perform$1=perform$3,iterate$3=iterate$4,PROMISE_STATICS_INCORRECT_ITERATION$1=promiseStaticsIncorrectIteration;$$F({target:"Promise",stat:!0,forced:PROMISE_STATICS_INCORRECT_ITERATION$1},{all:function(e){var t=this,r=newPromiseCapabilityModule$2.f(t),n=r.resolve,i=r.reject,o=perform$1((function(){var r=aCallable$5(t.resolve),o=[],a=0,s=1;iterate$3(e,(function(e){var c=a++,u=!1;s++,call$c(r,t,e).then((function(e){u||(u=!0,o[c]=e,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise}});var $$E=_export,FORCED_PROMISE_CONSTRUCTOR$2=promiseConstructorDetection.CONSTRUCTOR,NativePromiseConstructor=promiseNativeConstructor,getBuiltIn$4=getBuiltIn$a,isCallable$7=isCallable$p,defineBuiltIn$9=defineBuiltIn$d,NativePromisePrototype=NativePromiseConstructor&&NativePromiseConstructor.prototype;if($$E({target:"Promise",proto:!0,forced:FORCED_PROMISE_CONSTRUCTOR$2,real:!0},{catch:function(e){return this.then(void 0,e)}}),isCallable$7(NativePromiseConstructor)){var method=getBuiltIn$4("Promise").prototype.catch;NativePromisePrototype.catch!==method&&defineBuiltIn$9(NativePromisePrototype,"catch",method,{unsafe:!0})}var $$D=_export,call$b=functionCall,aCallable$4=aCallable$c,newPromiseCapabilityModule$1=newPromiseCapability$2,perform=perform$3,iterate$2=iterate$4,PROMISE_STATICS_INCORRECT_ITERATION=promiseStaticsIncorrectIteration;$$D({target:"Promise",stat:!0,forced:PROMISE_STATICS_INCORRECT_ITERATION},{race:function(e){var t=this,r=newPromiseCapabilityModule$1.f(t),n=r.reject,i=perform((function(){var i=aCallable$4(t.resolve);iterate$2(e,(function(e){call$b(i,t,e).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}});var $$C=_export,call$a=functionCall,newPromiseCapabilityModule=newPromiseCapability$2,FORCED_PROMISE_CONSTRUCTOR$1=promiseConstructorDetection.CONSTRUCTOR;$$C({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR$1},{reject:function(e){var t=newPromiseCapabilityModule.f(this);return call$a(t.reject,void 0,e),t.promise}});var anObject$a=anObject$i,isObject$g=isObject$n,newPromiseCapability=newPromiseCapability$2,promiseResolve$1=function(e,t){if(anObject$a(e),isObject$g(t)&&t.constructor===e)return t;var r=newPromiseCapability.f(e);return(0,r.resolve)(t),r.promise},$$B=_export,getBuiltIn$3=getBuiltIn$a,FORCED_PROMISE_CONSTRUCTOR=promiseConstructorDetection.CONSTRUCTOR,promiseResolve=promiseResolve$1;getBuiltIn$3("Promise"),$$B({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR},{resolve:function(e){return promiseResolve(this,e)}});var ProxyPromise$1=function(){function e(){var t,r;_classCallCheck$4(this,e);var n=new Promise((function(e,n){t=e,r=n}));return n.resolve=t,n.reject=r,n}return _createClass$4(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),$$A=_export,uncurryThis$r=functionUncurryThis,$Date=Date,thisTimeValue$1=uncurryThis$r($Date.prototype.getTime);$$A({target:"Date",stat:!0},{now:function(){return thisTimeValue$1(new $Date)}});var uncurryThis$q=functionUncurryThis,defineBuiltIn$8=defineBuiltIn$d,DatePrototype=Date.prototype,INVALID_DATE="Invalid Date",TO_STRING$1="toString",nativeDateToString=uncurryThis$q(DatePrototype[TO_STRING$1]),thisTimeValue=uncurryThis$q(DatePrototype.getTime);String(new Date(NaN))!=INVALID_DATE&&defineBuiltIn$8(DatePrototype,TO_STRING$1,(function(){var e=thisTimeValue(this);return e==e?nativeDateToString(this):INVALID_DATE}));var Raf=function(){function e(){_classCallCheck$4(this,e)}return _createClass$4(e,null,[{key:"install",value:function(){if(window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame,!window.requestAnimationFrame){var e=Date.now();window.requestAnimationFrame=function(t){var r=Date.now(),n=Math.max(16.7-(r-e),0),i=setTimeout(t,n);return e=r+n,i}}window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}}]),e}(),uncurryThis$p=functionUncurryThis,aCallable$3=aCallable$c,isObject$f=isObject$n,hasOwn$b=hasOwnProperty_1,arraySlice$6=arraySlice$9,NATIVE_BIND=functionBindNative,$Function=Function,concat$1=uncurryThis$p([].concat),join$1=uncurryThis$p([].join),factories={},construct2=function(e,t,r){if(!hasOwn$b(factories,t)){for(var n=[],i=0;i<t;i++)n[i]="a["+i+"]";factories[t]=$Function("C,a","return new C("+join$1(n,",")+")")}return factories[t](e,r)},functionBind=NATIVE_BIND?$Function.bind:function(e){var t=aCallable$3(this),r=t.prototype,n=arraySlice$6(arguments,1),i=function(){var r=concat$1(n,arraySlice$6(arguments));return this instanceof i?construct2(t,r.length,r):t.apply(e,r)};return isObject$f(r)&&(i.prototype=r),i},$$z=_export,bind$4=functionBind;$$z({target:"Function",proto:!0,forced:Function.bind!==bind$4},{bind:bind$4});var FpsDetection=function(){function e(){_classCallCheck$4(this,e),this.fps=0,this.isStoped=!0,this.ticks=[],this.isSupport=!0,this.maxFps=0,this.step=this._step.bind(this),this.rafId=null}return _createClass$4(e,[{key:"_step",value:function(e){var t=this.ticks;if(t.unshift(e),t.length>10){var r=t.pop();r&&(this.fps=Math.floor(1e4/(e-r)),this.updateFpsInfo())}this.isStoped||(this.rafId=window.requestAnimationFrame(this.step))}},{key:"updateFpsInfo",value:function(){this.fps>this.maxFps&&(this.maxFps=this.fps)}},{key:"start",value:function(){void 0!==window.requestAnimationFrame&&(this.isStoped=!1,this.rafId=window.requestAnimationFrame(this.step))}},{key:"stop",value:function(){window.cancelAnimationFrame(this.rafId),this.isStoped=!0}}],[{key:"install",value:function(){Raf.install()}}]),e}(),classof$7=classof$c,$String$1=String,toString$d=function(e){if("Symbol"===classof$7(e))throw TypeError("Cannot convert a Symbol value to a string");return $String$1(e)},anObject$9=anObject$i,regexpFlags=function(){var e=anObject$9(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t},objectDefineProperties={},internalObjectKeys=objectKeysInternal,enumBugKeys$1=enumBugKeys$3,objectKeys$2=Object.keys||function(e){return internalObjectKeys(e,enumBugKeys$1)},DESCRIPTORS$a=descriptors,V8_PROTOTYPE_DEFINE_BUG=v8PrototypeDefineBug,definePropertyModule$3=objectDefineProperty,anObject$8=anObject$i,toIndexedObject$7=toIndexedObject$b,objectKeys$1=objectKeys$2;objectDefineProperties.f=DESCRIPTORS$a&&!V8_PROTOTYPE_DEFINE_BUG?Object.defineProperties:function(e,t){anObject$8(e);for(var r,n=toIndexedObject$7(t),i=objectKeys$1(t),o=i.length,a=0;o>a;)definePropertyModule$3.f(e,r=i[a++],n[r]);return e};var activeXDocument,anObject$7=anObject$i,definePropertiesModule$1=objectDefineProperties,enumBugKeys=enumBugKeys$3,hiddenKeys$2=hiddenKeys$6,html=html$2,documentCreateElement$1=documentCreateElement$2,sharedKey$2=sharedKey$4,GT=">",LT="<",PROTOTYPE$2="prototype",SCRIPT="script",IE_PROTO$1=sharedKey$2("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return LT+SCRIPT+GT+e+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(e){e.write(scriptTag("")),e.close();var t=e.parentWindow.Object;return e=null,t},NullProtoObjectViaIFrame=function(){var e,t=documentCreateElement$1("iframe"),r="java"+SCRIPT+":";return t.style.display="none",html.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(scriptTag("document.F=Object")),e.close(),e.F},NullProtoObject=function(){try{activeXDocument=new ActiveXObject("htmlfile")}catch(e){}NullProtoObject="undefined"!=typeof document?document.domain&&activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame():NullProtoObjectViaActiveX(activeXDocument);for(var e=enumBugKeys.length;e--;)delete NullProtoObject[PROTOTYPE$2][enumBugKeys[e]];return NullProtoObject()};hiddenKeys$2[IE_PROTO$1]=!0;var objectCreate=Object.create||function(e,t){var r;return null!==e?(EmptyConstructor[PROTOTYPE$2]=anObject$7(e),r=new EmptyConstructor,EmptyConstructor[PROTOTYPE$2]=null,r[IE_PROTO$1]=e):r=NullProtoObject(),void 0===t?r:definePropertiesModule$1.f(r,t)},fails$v=fails$G,arrayMethodIsStrict$6=function(e,t){var r=[][e];return!!r&&fails$v((function(){r.call(null,t||function(){return 1},1)}))},wellKnownSymbol$b=wellKnownSymbol$m,create$5=objectCreate,defineProperty$6=objectDefineProperty.f,UNSCOPABLES=wellKnownSymbol$b("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&defineProperty$6(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:create$5(null)});var IteratorPrototype$2,PrototypeOfArrayIteratorPrototype,arrayIterator,addToUnscopables$1=function(e){ArrayPrototype[UNSCOPABLES][e]=!0},fails$u=fails$G,correctPrototypeGetter=!fails$u((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),hasOwn$a=hasOwnProperty_1,isCallable$6=isCallable$p,toObject$8=toObject$a,sharedKey$1=sharedKey$4,CORRECT_PROTOTYPE_GETTER=correctPrototypeGetter,IE_PROTO=sharedKey$1("IE_PROTO"),$Object=Object,ObjectPrototype$4=$Object.prototype,objectGetPrototypeOf=CORRECT_PROTOTYPE_GETTER?$Object.getPrototypeOf:function(e){var t=toObject$8(e);if(hasOwn$a(t,IE_PROTO))return t[IE_PROTO];var r=t.constructor;return isCallable$6(r)&&t instanceof r?r.prototype:t instanceof $Object?ObjectPrototype$4:null},fails$t=fails$G,isCallable$5=isCallable$p,isObject$e=isObject$n,getPrototypeOf$3=objectGetPrototypeOf,defineBuiltIn$7=defineBuiltIn$d,wellKnownSymbol$a=wellKnownSymbol$m,ITERATOR$5=wellKnownSymbol$a("iterator"),BUGGY_SAFARI_ITERATORS$1=!1;[].keys&&("next"in(arrayIterator=[].keys())?(PrototypeOfArrayIteratorPrototype=getPrototypeOf$3(getPrototypeOf$3(arrayIterator)))!==Object.prototype&&(IteratorPrototype$2=PrototypeOfArrayIteratorPrototype):BUGGY_SAFARI_ITERATORS$1=!0);var NEW_ITERATOR_PROTOTYPE=!isObject$e(IteratorPrototype$2)||fails$t((function(){var e={};return IteratorPrototype$2[ITERATOR$5].call(e)!==e}));NEW_ITERATOR_PROTOTYPE&&(IteratorPrototype$2={}),isCallable$5(IteratorPrototype$2[ITERATOR$5])||defineBuiltIn$7(IteratorPrototype$2,ITERATOR$5,(function(){return this}));var iteratorsCore={IteratorPrototype:IteratorPrototype$2,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS$1},IteratorPrototype$1=iteratorsCore.IteratorPrototype,create$4=objectCreate,createPropertyDescriptor$3=createPropertyDescriptor$6,setToStringTag$4=setToStringTag$6,Iterators$2=iterators,returnThis$1=function(){return this},iteratorCreateConstructor=function(e,t,r,n){var i=t+" Iterator";return e.prototype=create$4(IteratorPrototype$1,{next:createPropertyDescriptor$3(+!n,r)}),setToStringTag$4(e,i,!1),Iterators$2[i]=returnThis$1,e},$$y=_export,call$9=functionCall,FunctionName$1=functionName,isCallable$4=isCallable$p,createIteratorConstructor=iteratorCreateConstructor,getPrototypeOf$2=objectGetPrototypeOf,setPrototypeOf$4=objectSetPrototypeOf,setToStringTag$3=setToStringTag$6,createNonEnumerableProperty$5=createNonEnumerableProperty$8,defineBuiltIn$6=defineBuiltIn$d,wellKnownSymbol$9=wellKnownSymbol$m,Iterators$1=iterators,IteratorsCore=iteratorsCore,PROPER_FUNCTION_NAME$2=FunctionName$1.PROPER,CONFIGURABLE_FUNCTION_NAME$1=FunctionName$1.CONFIGURABLE,IteratorPrototype=IteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS=IteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol$9("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis=function(){return this},iteratorDefine=function(e,t,r,n,i,o,a){createIteratorConstructor(r,t,n);var s,c,u,l=function(e){if(e===i&&y)return y;if(!BUGGY_SAFARI_ITERATORS&&e in f)return f[e];switch(e){case KEYS:case VALUES:case ENTRIES:return function(){return new r(this,e)}}return function(){return new r(this)}},d=t+" Iterator",h=!1,f=e.prototype,p=f[ITERATOR$4]||f["@@iterator"]||i&&f[i],y=!BUGGY_SAFARI_ITERATORS&&p||l(i),m="Array"==t&&f.entries||p;if(m&&(s=getPrototypeOf$2(m.call(new e)))!==Object.prototype&&s.next&&(getPrototypeOf$2(s)!==IteratorPrototype&&(setPrototypeOf$4?setPrototypeOf$4(s,IteratorPrototype):isCallable$4(s[ITERATOR$4])||defineBuiltIn$6(s,ITERATOR$4,returnThis)),setToStringTag$3(s,d,!0)),PROPER_FUNCTION_NAME$2&&i==VALUES&&p&&p.name!==VALUES&&(CONFIGURABLE_FUNCTION_NAME$1?createNonEnumerableProperty$5(f,"name",VALUES):(h=!0,y=function(){return call$9(p,this)})),i)if(c={values:l(VALUES),keys:o?y:l(KEYS),entries:l(ENTRIES)},a)for(u in c)(BUGGY_SAFARI_ITERATORS||h||!(u in f))&&defineBuiltIn$6(f,u,c[u]);else $$y({target:t,proto:!0,forced:BUGGY_SAFARI_ITERATORS||h},c);return f[ITERATOR$4]!==y&&defineBuiltIn$6(f,ITERATOR$4,y,{name:i}),Iterators$1[t]=y,c},createIterResultObject$3=function(e,t){return{value:e,done:t}},toIndexedObject$6=toIndexedObject$b,addToUnscopables=addToUnscopables$1,Iterators=iterators,InternalStateModule$6=internalState,defineProperty$5=objectDefineProperty.f,defineIterator$2=iteratorDefine,createIterResultObject$2=createIterResultObject$3,DESCRIPTORS$9=descriptors,ARRAY_ITERATOR="Array Iterator",setInternalState$5=InternalStateModule$6.set,getInternalState$4=InternalStateModule$6.getterFor(ARRAY_ITERATOR),es_array_iterator=defineIterator$2(Array,"Array",(function(e,t){setInternalState$5(this,{type:ARRAY_ITERATOR,target:toIndexedObject$6(e),index:0,kind:t})}),(function(){var e=getInternalState$4(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,createIterResultObject$2(void 0,!0)):createIterResultObject$2("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values"),values3=Iterators.Arguments=Iterators.Array;if(addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries"),DESCRIPTORS$9&&"values"!==values3.name)try{defineProperty$5(values3,"name",{value:"values"})}catch(e){}var arrayBufferBasicDetection="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,defineBuiltIn$5=defineBuiltIn$d,defineBuiltIns$2=function(e,t,r){for(var n in t)defineBuiltIn$5(e,n,t[n],r);return e},toIntegerOrInfinity$6=toIntegerOrInfinity$9,toLength$8=toLength$a,$RangeError$4=RangeError,toIndex$2=function(e){if(void 0===e)return 0;var t=toIntegerOrInfinity$6(e),r=toLength$8(t);if(t!==r)throw $RangeError$4("Wrong length or index");return r},$Array$3=Array,abs$1=Math.abs,pow$2=Math.pow,floor$5=Math.floor,log$3=Math.log,LN2=Math.LN2,pack=function(e,t,r){var n,i,o,a=$Array$3(r),s=8*r-t-1,c=(1<<s)-1,u=c>>1,l=23===t?pow$2(2,-24)-pow$2(2,-77):0,d=e<0||0===e&&1/e<0?1:0,h=0;for((e=abs$1(e))!=e||e===1/0?(i=e!=e?1:0,n=c):(n=floor$5(log$3(e)/LN2),e*(o=pow$2(2,-n))<1&&(n--,o*=2),(e+=n+u>=1?l/o:l*pow$2(2,1-u))*o>=2&&(n++,o/=2),n+u>=c?(i=0,n=c):n+u>=1?(i=(e*o-1)*pow$2(2,t),n+=u):(i=e*pow$2(2,u-1)*pow$2(2,t),n=0));t>=8;)a[h++]=255&i,i/=256,t-=8;for(n=n<<t|i,s+=t;s>0;)a[h++]=255&n,n/=256,s-=8;return a[--h]|=128*d,a},unpack=function(e,t){var r,n=e.length,i=8*n-t-1,o=(1<<i)-1,a=o>>1,s=i-7,c=n-1,u=e[c--],l=127&u;for(u>>=7;s>0;)l=256*l+e[c--],s-=8;for(r=l&(1<<-s)-1,l>>=-s,s+=t;s>0;)r=256*r+e[c--],s-=8;if(0===l)l=1-a;else{if(l===o)return r?NaN:u?-1/0:1/0;r+=pow$2(2,t),l-=a}return(u?-1:1)*r*pow$2(2,l-t)},ieee754={pack:pack,unpack:unpack},toObject$7=toObject$a,toAbsoluteIndex$6=toAbsoluteIndex$8,lengthOfArrayLike$a=lengthOfArrayLike$d,arrayFill$1=function(e){for(var t=toObject$7(this),r=lengthOfArrayLike$a(t),n=arguments.length,i=toAbsoluteIndex$6(n>1?arguments[1]:void 0,r),o=n>2?arguments[2]:void 0,a=void 0===o?r:toAbsoluteIndex$6(o,r);a>i;)t[i++]=e;return t},toPropertyKey$2=toPropertyKey$5,definePropertyModule$2=objectDefineProperty,createPropertyDescriptor$2=createPropertyDescriptor$6,createProperty$2=function(e,t,r){var n=toPropertyKey$2(t);n in e?definePropertyModule$2.f(e,n,createPropertyDescriptor$2(0,r)):e[n]=r},toAbsoluteIndex$5=toAbsoluteIndex$8,lengthOfArrayLike$9=lengthOfArrayLike$d,createProperty$1=createProperty$2,$Array$2=Array,max$1=Math.max,arraySliceSimple=function(e,t,r){for(var n=lengthOfArrayLike$9(e),i=toAbsoluteIndex$5(t,n),o=toAbsoluteIndex$5(void 0===r?n:r,n),a=$Array$2(max$1(o-i,0)),s=0;i<o;i++,s++)createProperty$1(a,s,e[i]);return a.length=s,a},global$j=global$C,uncurryThis$o=functionUncurryThis,DESCRIPTORS$8=descriptors,NATIVE_ARRAY_BUFFER$1=arrayBufferBasicDetection,FunctionName=functionName,createNonEnumerableProperty$4=createNonEnumerableProperty$8,defineBuiltInAccessor$3=defineBuiltInAccessor$5,defineBuiltIns$1=defineBuiltIns$2,fails$s=fails$G,anInstance$3=anInstance$5,toIntegerOrInfinity$5=toIntegerOrInfinity$9,toLength$7=toLength$a,toIndex$1=toIndex$2,IEEE754=ieee754,getPrototypeOf$1=objectGetPrototypeOf,setPrototypeOf$3=objectSetPrototypeOf,getOwnPropertyNames$2=objectGetOwnPropertyNames.f,arrayFill=arrayFill$1,arraySlice$5=arraySliceSimple,setToStringTag$2=setToStringTag$6,InternalStateModule$5=internalState,PROPER_FUNCTION_NAME$1=FunctionName.PROPER,CONFIGURABLE_FUNCTION_NAME=FunctionName.CONFIGURABLE,ARRAY_BUFFER="ArrayBuffer",DATA_VIEW="DataView",PROTOTYPE$1="prototype",WRONG_LENGTH$1="Wrong length",WRONG_INDEX="Wrong index",getInternalArrayBufferState=InternalStateModule$5.getterFor(ARRAY_BUFFER),getInternalDataViewState=InternalStateModule$5.getterFor(DATA_VIEW),setInternalState$4=InternalStateModule$5.set,NativeArrayBuffer=global$j[ARRAY_BUFFER],$ArrayBuffer=NativeArrayBuffer,ArrayBufferPrototype$1=$ArrayBuffer&&$ArrayBuffer[PROTOTYPE$1],$DataView=global$j[DATA_VIEW],DataViewPrototype$2=$DataView&&$DataView[PROTOTYPE$1],ObjectPrototype$3=Object.prototype,Array$1=global$j.Array,RangeError$3=global$j.RangeError,fill4=uncurryThis$o(arrayFill),reverse2=uncurryThis$o([].reverse),packIEEE754=IEEE754.pack,unpackIEEE754=IEEE754.unpack,packInt8=function(e){return[255&e]},packInt16=function(e){return[255&e,e>>8&255]},packInt32=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},unpackInt32=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},packFloat32=function(e){return packIEEE754(e,23,4)},packFloat64=function(e){return packIEEE754(e,52,8)},addGetter$1=function(e,t,r){defineBuiltInAccessor$3(e[PROTOTYPE$1],t,{configurable:!0,get:function(){return r(this)[t]}})},get2=function(e,t,r,n){var i=getInternalDataViewState(e),o=toIndex$1(r),a=!!n;if(o+t>i.byteLength)throw RangeError$3(WRONG_INDEX);var s=i.bytes,c=o+i.byteOffset,u=arraySlice$5(s,c,c+t);return a?u:reverse2(u)},set3=function(e,t,r,n,i,o){var a=getInternalDataViewState(e),s=toIndex$1(r),c=n(+i),u=!!o;if(s+t>a.byteLength)throw RangeError$3(WRONG_INDEX);for(var l=a.bytes,d=s+a.byteOffset,h=0;h<t;h++)l[d+h]=c[u?h:t-h-1]};if(NATIVE_ARRAY_BUFFER$1){var INCORRECT_ARRAY_BUFFER_NAME=PROPER_FUNCTION_NAME$1&&NativeArrayBuffer.name!==ARRAY_BUFFER;if(fails$s((function(){NativeArrayBuffer(1)}))&&fails$s((function(){new NativeArrayBuffer(-1)}))&&!fails$s((function(){return new NativeArrayBuffer,new NativeArrayBuffer(1.5),new NativeArrayBuffer(NaN),1!=NativeArrayBuffer.length||INCORRECT_ARRAY_BUFFER_NAME&&!CONFIGURABLE_FUNCTION_NAME})))INCORRECT_ARRAY_BUFFER_NAME&&CONFIGURABLE_FUNCTION_NAME&&createNonEnumerableProperty$4(NativeArrayBuffer,"name",ARRAY_BUFFER);else{($ArrayBuffer=function(e){return anInstance$3(this,ArrayBufferPrototype$1),new NativeArrayBuffer(toIndex$1(e))})[PROTOTYPE$1]=ArrayBufferPrototype$1;for(var key2,keys$1=getOwnPropertyNames$2(NativeArrayBuffer),j=0;keys$1.length>j;)(key2=keys$1[j++])in $ArrayBuffer||createNonEnumerableProperty$4($ArrayBuffer,key2,NativeArrayBuffer[key2]);ArrayBufferPrototype$1.constructor=$ArrayBuffer}setPrototypeOf$3&&getPrototypeOf$1(DataViewPrototype$2)!==ObjectPrototype$3&&setPrototypeOf$3(DataViewPrototype$2,ObjectPrototype$3);var testView=new $DataView(new $ArrayBuffer(2)),$setInt8=uncurryThis$o(DataViewPrototype$2.setInt8);testView.setInt8(0,2147483648),testView.setInt8(1,2147483649),!testView.getInt8(0)&&testView.getInt8(1)||defineBuiltIns$1(DataViewPrototype$2,{setInt8:function(e,t){$setInt8(this,e,t<<24>>24)},setUint8:function(e,t){$setInt8(this,e,t<<24>>24)}},{unsafe:!0})}else ArrayBufferPrototype$1=($ArrayBuffer=function(e){anInstance$3(this,ArrayBufferPrototype$1);var t=toIndex$1(e);setInternalState$4(this,{type:ARRAY_BUFFER,bytes:fill4(Array$1(t),0),byteLength:t}),DESCRIPTORS$8||(this.byteLength=t,this.detached=!1)})[PROTOTYPE$1],DataViewPrototype$2=($DataView=function(e,t,r){anInstance$3(this,DataViewPrototype$2),anInstance$3(e,ArrayBufferPrototype$1);var n=getInternalArrayBufferState(e),i=n.byteLength,o=toIntegerOrInfinity$5(t);if(o<0||o>i)throw RangeError$3("Wrong offset");if(o+(r=void 0===r?i-o:toLength$7(r))>i)throw RangeError$3(WRONG_LENGTH$1);setInternalState$4(this,{type:DATA_VIEW,buffer:e,byteLength:r,byteOffset:o,bytes:n.bytes}),DESCRIPTORS$8||(this.buffer=e,this.byteLength=r,this.byteOffset=o)})[PROTOTYPE$1],DESCRIPTORS$8&&(addGetter$1($ArrayBuffer,"byteLength",getInternalArrayBufferState),addGetter$1($DataView,"buffer",getInternalDataViewState),addGetter$1($DataView,"byteLength",getInternalDataViewState),addGetter$1($DataView,"byteOffset",getInternalDataViewState)),defineBuiltIns$1(DataViewPrototype$2,{getInt8:function(e){return get2(this,1,e)[0]<<24>>24},getUint8:function(e){return get2(this,1,e)[0]},getInt16:function(e){var t=get2(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=get2(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return unpackInt32(get2(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return unpackInt32(get2(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return unpackIEEE754(get2(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return unpackIEEE754(get2(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){set3(this,1,e,packInt8,t)},setUint8:function(e,t){set3(this,1,e,packInt8,t)},setInt16:function(e,t){set3(this,2,e,packInt16,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){set3(this,2,e,packInt16,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){set3(this,4,e,packInt32,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){set3(this,4,e,packInt32,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){set3(this,4,e,packFloat32,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){set3(this,8,e,packFloat64,t,arguments.length>2&&arguments[2])}});setToStringTag$2($ArrayBuffer,ARRAY_BUFFER),setToStringTag$2($DataView,DATA_VIEW);var arrayBuffer={ArrayBuffer:$ArrayBuffer,DataView:$DataView},$$x=_export,uncurryThis$n=functionUncurryThisClause,fails$r=fails$G,ArrayBufferModule$2=arrayBuffer,anObject$6=anObject$i,toAbsoluteIndex$4=toAbsoluteIndex$8,toLength$6=toLength$a,speciesConstructor$3=speciesConstructor$5,ArrayBuffer$4=ArrayBufferModule$2.ArrayBuffer,DataView$3=ArrayBufferModule$2.DataView,DataViewPrototype$1=DataView$3.prototype,nativeArrayBufferSlice$1=uncurryThis$n(ArrayBuffer$4.prototype.slice),getUint8$1=uncurryThis$n(DataViewPrototype$1.getUint8),setUint8$1=uncurryThis$n(DataViewPrototype$1.setUint8),INCORRECT_SLICE$1=fails$r((function(){return!new ArrayBuffer$4(2).slice(1,void 0).byteLength}));$$x({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:INCORRECT_SLICE$1},{slice:function(e,t){if(nativeArrayBufferSlice$1&&void 0===t)return nativeArrayBufferSlice$1(anObject$6(this),e);for(var r=anObject$6(this).byteLength,n=toAbsoluteIndex$4(e,r),i=toAbsoluteIndex$4(void 0===t?r:t,r),o=new(speciesConstructor$3(this,ArrayBuffer$4))(toLength$6(i-n)),a=new DataView$3(this),s=new DataView$3(o),c=0;n<i;)setUint8$1(s,c++,getUint8$1(a,n++));return o}});var NAME,Constructor,Prototype,typedArrayConstructor={exports:{}},NATIVE_ARRAY_BUFFER=arrayBufferBasicDetection,DESCRIPTORS$7=descriptors,global$i=global$C,isCallable$3=isCallable$p,isObject$d=isObject$n,hasOwn$9=hasOwnProperty_1,classof$6=classof$c,tryToString$2=tryToString$7,createNonEnumerableProperty$3=createNonEnumerableProperty$8,defineBuiltIn$4=defineBuiltIn$d,defineBuiltInAccessor$2=defineBuiltInAccessor$5,isPrototypeOf$5=objectIsPrototypeOf,getPrototypeOf3=objectGetPrototypeOf,setPrototypeOf$2=objectSetPrototypeOf,wellKnownSymbol$8=wellKnownSymbol$m,uid$2=uid$5,InternalStateModule$4=internalState,enforceInternalState$1=InternalStateModule$4.enforce,getInternalState$3=InternalStateModule$4.get,Int8Array$4=global$i.Int8Array,Int8ArrayPrototype$1=Int8Array$4&&Int8Array$4.prototype,Uint8ClampedArray$1=global$i.Uint8ClampedArray,Uint8ClampedArrayPrototype=Uint8ClampedArray$1&&Uint8ClampedArray$1.prototype,TypedArray$1=Int8Array$4&&getPrototypeOf3(Int8Array$4),TypedArrayPrototype$2=Int8ArrayPrototype$1&&getPrototypeOf3(Int8ArrayPrototype$1),ObjectPrototype$2=Object.prototype,TypeError$3=global$i.TypeError,TO_STRING_TAG$1=wellKnownSymbol$8("toStringTag"),TYPED_ARRAY_TAG$1=uid$2("TYPED_ARRAY_TAG"),TYPED_ARRAY_CONSTRUCTOR="TypedArrayConstructor",NATIVE_ARRAY_BUFFER_VIEWS$2=NATIVE_ARRAY_BUFFER&&!!setPrototypeOf$2&&"Opera"!==classof$6(global$i.opera),TYPED_ARRAY_TAG_REQUIRED=!1,TypedArrayConstructorsList={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},BigIntArrayConstructorsList={BigInt64Array:8,BigUint64Array:8},isView2=function(e){if(!isObject$d(e))return!1;var t=classof$6(e);return"DataView"===t||hasOwn$9(TypedArrayConstructorsList,t)||hasOwn$9(BigIntArrayConstructorsList,t)},getTypedArrayConstructor$1=function(e){var t=getPrototypeOf3(e);if(isObject$d(t)){var r=getInternalState$3(t);return r&&hasOwn$9(r,TYPED_ARRAY_CONSTRUCTOR)?r[TYPED_ARRAY_CONSTRUCTOR]:getTypedArrayConstructor$1(t)}},isTypedArray$1=function(e){if(!isObject$d(e))return!1;var t=classof$6(e);return hasOwn$9(TypedArrayConstructorsList,t)||hasOwn$9(BigIntArrayConstructorsList,t)},aTypedArray$m=function(e){if(isTypedArray$1(e))return e;throw TypeError$3("Target is not a typed array")},aTypedArrayConstructor$4=function(e){if(isCallable$3(e)&&(!setPrototypeOf$2||isPrototypeOf$5(TypedArray$1,e)))return e;throw TypeError$3(tryToString$2(e)+" is not a typed array constructor")},exportTypedArrayMethod$n=function(e,t,r,n){if(DESCRIPTORS$7){if(r)for(var i in TypedArrayConstructorsList){var o=global$i[i];if(o&&hasOwn$9(o.prototype,e))try{delete o.prototype[e]}catch(r){try{o.prototype[e]=t}catch(e){}}}TypedArrayPrototype$2[e]&&!r||defineBuiltIn$4(TypedArrayPrototype$2,e,r?t:NATIVE_ARRAY_BUFFER_VIEWS$2&&Int8ArrayPrototype$1[e]||t,n)}},exportTypedArrayStaticMethod$1=function(e,t,r){var n,i;if(DESCRIPTORS$7){if(setPrototypeOf$2){if(r)for(n in TypedArrayConstructorsList)if((i=global$i[n])&&hasOwn$9(i,e))try{delete i[e]}catch(e){}if(TypedArray$1[e]&&!r)return;try{return defineBuiltIn$4(TypedArray$1,e,r?t:NATIVE_ARRAY_BUFFER_VIEWS$2&&TypedArray$1[e]||t)}catch(e){}}for(n in TypedArrayConstructorsList)!(i=global$i[n])||i[e]&&!r||defineBuiltIn$4(i,e,t)}};for(NAME in TypedArrayConstructorsList)(Prototype=(Constructor=global$i[NAME])&&Constructor.prototype)?enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR]=Constructor:NATIVE_ARRAY_BUFFER_VIEWS$2=!1;for(NAME in BigIntArrayConstructorsList)(Prototype=(Constructor=global$i[NAME])&&Constructor.prototype)&&(enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR]=Constructor);if((!NATIVE_ARRAY_BUFFER_VIEWS$2||!isCallable$3(TypedArray$1)||TypedArray$1===Function.prototype)&&(TypedArray$1=function(){throw TypeError$3("Incorrect invocation")},NATIVE_ARRAY_BUFFER_VIEWS$2))for(NAME in TypedArrayConstructorsList)global$i[NAME]&&setPrototypeOf$2(global$i[NAME],TypedArray$1);if((!NATIVE_ARRAY_BUFFER_VIEWS$2||!TypedArrayPrototype$2||TypedArrayPrototype$2===ObjectPrototype$2)&&(TypedArrayPrototype$2=TypedArray$1.prototype,NATIVE_ARRAY_BUFFER_VIEWS$2))for(NAME in TypedArrayConstructorsList)global$i[NAME]&&setPrototypeOf$2(global$i[NAME].prototype,TypedArrayPrototype$2);if(NATIVE_ARRAY_BUFFER_VIEWS$2&&getPrototypeOf3(Uint8ClampedArrayPrototype)!==TypedArrayPrototype$2&&setPrototypeOf$2(Uint8ClampedArrayPrototype,TypedArrayPrototype$2),DESCRIPTORS$7&&!hasOwn$9(TypedArrayPrototype$2,TO_STRING_TAG$1))for(NAME in TYPED_ARRAY_TAG_REQUIRED=!0,defineBuiltInAccessor$2(TypedArrayPrototype$2,TO_STRING_TAG$1,{configurable:!0,get:function(){return isObject$d(this)?this[TYPED_ARRAY_TAG$1]:void 0}}),TypedArrayConstructorsList)global$i[NAME]&&createNonEnumerableProperty$3(global$i[NAME],TYPED_ARRAY_TAG$1,NAME);var arrayBufferViewCore={NATIVE_ARRAY_BUFFER_VIEWS:NATIVE_ARRAY_BUFFER_VIEWS$2,TYPED_ARRAY_TAG:TYPED_ARRAY_TAG_REQUIRED&&TYPED_ARRAY_TAG$1,aTypedArray:aTypedArray$m,aTypedArrayConstructor:aTypedArrayConstructor$4,exportTypedArrayMethod:exportTypedArrayMethod$n,exportTypedArrayStaticMethod:exportTypedArrayStaticMethod$1,getTypedArrayConstructor:getTypedArrayConstructor$1,isView:isView2,isTypedArray:isTypedArray$1,TypedArray:TypedArray$1,TypedArrayPrototype:TypedArrayPrototype$2},global$h=global$C,fails$q=fails$G,checkCorrectnessOfIteration$1=checkCorrectnessOfIteration$3,NATIVE_ARRAY_BUFFER_VIEWS$1=arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS,ArrayBuffer$3=global$h.ArrayBuffer,Int8Array$3=global$h.Int8Array,typedArrayConstructorsRequireWrappers=!NATIVE_ARRAY_BUFFER_VIEWS$1||!fails$q((function(){Int8Array$3(1)}))||!fails$q((function(){new Int8Array$3(-1)}))||!checkCorrectnessOfIteration$1((function(e){new Int8Array$3,new Int8Array$3(null),new Int8Array$3(1.5),new Int8Array$3(e)}),!0)||fails$q((function(){return 1!==new Int8Array$3(new ArrayBuffer$3(2),1,void 0).length})),isObject$c=isObject$n,floor$4=Math.floor,isIntegralNumber$1=Number.isInteger||function(e){return!isObject$c(e)&&isFinite(e)&&floor$4(e)===e},toIntegerOrInfinity$4=toIntegerOrInfinity$9,$RangeError$3=RangeError,toPositiveInteger$1=function(e){var t=toIntegerOrInfinity$4(e);if(t<0)throw $RangeError$3("The argument can't be less than 0");return t},toPositiveInteger=toPositiveInteger$1,$RangeError$2=RangeError,toOffset$2=function(e,t){var r=toPositiveInteger(e);if(r%t)throw $RangeError$2("Wrong offset");return r},classof$5=classof$c,isBigIntArray$1=function(e){var t=classof$5(e);return"BigInt64Array"==t||"BigUint64Array"==t},toPrimitive$1=toPrimitive$3,$TypeError$2=TypeError,toBigInt$2=function(e){var t=toPrimitive$1(e,"number");if("number"==typeof t)throw $TypeError$2("Can't convert number to bigint");return BigInt(t)},bind$3=functionBindContext,call$8=functionCall,aConstructor$1=aConstructor$3,toObject$6=toObject$a,lengthOfArrayLike$8=lengthOfArrayLike$d,getIterator=getIterator$2,getIteratorMethod=getIteratorMethod$3,isArrayIteratorMethod=isArrayIteratorMethod$2,isBigIntArray=isBigIntArray$1,aTypedArrayConstructor$3=arrayBufferViewCore.aTypedArrayConstructor,toBigInt$1=toBigInt$2,typedArrayFrom$1=function(e){var t,r,n,i,o,a,s,c,u=aConstructor$1(this),l=toObject$6(e),d=arguments.length,h=d>1?arguments[1]:void 0,f=void 0!==h,p=getIteratorMethod(l);if(p&&!isArrayIteratorMethod(p))for(c=(s=getIterator(l,p)).next,l=[];!(a=call$8(c,s)).done;)l.push(a.value);for(f&&d>2&&(h=bind$3(h,arguments[2])),r=lengthOfArrayLike$8(l),n=new(aTypedArrayConstructor$3(u))(r),i=isBigIntArray(n),t=0;r>t;t++)o=f?h(l[t],t):l[t],n[t]=i?toBigInt$1(o):+o;return n},classof$4=classofRaw$2,isArray$3=Array.isArray||function(e){return"Array"==classof$4(e)},isArray$2=isArray$3,isConstructor$1=isConstructor$3,isObject$b=isObject$n,wellKnownSymbol$7=wellKnownSymbol$m,SPECIES$2=wellKnownSymbol$7("species"),$Array$1=Array,arraySpeciesConstructor$1=function(e){var t;return isArray$2(e)&&(t=e.constructor,(isConstructor$1(t)&&(t===$Array$1||isArray$2(t.prototype))||isObject$b(t)&&null===(t=t[SPECIES$2]))&&(t=void 0)),void 0===t?$Array$1:t},arraySpeciesConstructor=arraySpeciesConstructor$1,arraySpeciesCreate$1=function(e,t){return new(arraySpeciesConstructor(e))(0===t?0:t)},bind$2=functionBindContext,uncurryThis$m=functionUncurryThis,IndexedObject$1=indexedObject,toObject$5=toObject$a,lengthOfArrayLike$7=lengthOfArrayLike$d,arraySpeciesCreate=arraySpeciesCreate$1,push$4=uncurryThis$m([].push),createMethod$3=function(e){var t=1==e,r=2==e,n=3==e,i=4==e,o=6==e,a=7==e,s=5==e||o;return function(c,u,l,d){for(var h,f,p=toObject$5(c),y=IndexedObject$1(p),m=bind$2(u,l),g=lengthOfArrayLike$7(y),v=0,b=d||arraySpeciesCreate,_=t?b(c,g):r||a?b(c,0):void 0;g>v;v++)if((s||v in y)&&(f=m(h=y[v],v,p),e))if(t)_[v]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return v;case 2:push$4(_,h)}else switch(e){case 4:return!1;case 7:push$4(_,h)}return o?-1:n||i?i:_}},arrayIteration={forEach:createMethod$3(0),map:createMethod$3(1),filter:createMethod$3(2),some:createMethod$3(3),every:createMethod$3(4),find:createMethod$3(5),findIndex:createMethod$3(6),filterReject:createMethod$3(7)},isCallable$2=isCallable$p,isObject$a=isObject$n,setPrototypeOf$1=objectSetPrototypeOf,inheritIfRequired$3=function(e,t,r){var n,i;return setPrototypeOf$1&&isCallable$2(n=t.constructor)&&n!==r&&isObject$a(i=n.prototype)&&i!==r.prototype&&setPrototypeOf$1(e,i),e},$$w=_export,global$g=global$C,call$7=functionCall,DESCRIPTORS$6=descriptors,TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1=typedArrayConstructorsRequireWrappers,ArrayBufferViewCore$o=arrayBufferViewCore,ArrayBufferModule$1=arrayBuffer,anInstance$2=anInstance$5,createPropertyDescriptor$1=createPropertyDescriptor$6,createNonEnumerableProperty$2=createNonEnumerableProperty$8,isIntegralNumber=isIntegralNumber$1,toLength$5=toLength$a,toIndex=toIndex$2,toOffset$1=toOffset$2,toPropertyKey$1=toPropertyKey$5,hasOwn$8=hasOwnProperty_1,classof$3=classof$c,isObject$9=isObject$n,isSymbol$2=isSymbol$5,create$3=objectCreate,isPrototypeOf$4=objectIsPrototypeOf,setPrototypeOf=objectSetPrototypeOf,getOwnPropertyNames$1=objectGetOwnPropertyNames.f,typedArrayFrom=typedArrayFrom$1,forEach$3=arrayIteration.forEach,setSpecies$1=setSpecies$3,defineBuiltInAccessor$1=defineBuiltInAccessor$5,definePropertyModule$1=objectDefineProperty,getOwnPropertyDescriptorModule$1=objectGetOwnPropertyDescriptor,InternalStateModule$3=internalState,inheritIfRequired$2=inheritIfRequired$3,getInternalState$2=InternalStateModule$3.get,setInternalState$3=InternalStateModule$3.set,enforceInternalState=InternalStateModule$3.enforce,nativeDefineProperty$1=definePropertyModule$1.f,nativeGetOwnPropertyDescriptor$2=getOwnPropertyDescriptorModule$1.f,round=Math.round,RangeError$2=global$g.RangeError,ArrayBuffer$2=ArrayBufferModule$1.ArrayBuffer,ArrayBufferPrototype=ArrayBuffer$2.prototype,DataView$2=ArrayBufferModule$1.DataView,NATIVE_ARRAY_BUFFER_VIEWS=ArrayBufferViewCore$o.NATIVE_ARRAY_BUFFER_VIEWS,TYPED_ARRAY_TAG=ArrayBufferViewCore$o.TYPED_ARRAY_TAG,TypedArray=ArrayBufferViewCore$o.TypedArray,TypedArrayPrototype$1=ArrayBufferViewCore$o.TypedArrayPrototype,aTypedArrayConstructor$2=ArrayBufferViewCore$o.aTypedArrayConstructor,isTypedArray=ArrayBufferViewCore$o.isTypedArray,BYTES_PER_ELEMENT="BYTES_PER_ELEMENT",WRONG_LENGTH="Wrong length",fromList=function(e,t){aTypedArrayConstructor$2(e);for(var r=0,n=t.length,i=new e(n);n>r;)i[r]=t[r++];return i},addGetter=function(e,t){defineBuiltInAccessor$1(e,t,{configurable:!0,get:function(){return getInternalState$2(this)[t]}})},isArrayBuffer=function(e){var t;return isPrototypeOf$4(ArrayBufferPrototype,e)||"ArrayBuffer"==(t=classof$3(e))||"SharedArrayBuffer"==t},isTypedArrayIndex=function(e,t){return isTypedArray(e)&&!isSymbol$2(t)&&t in e&&isIntegralNumber(+t)&&t>=0},wrappedGetOwnPropertyDescriptor=function(e,t){return t=toPropertyKey$1(t),isTypedArrayIndex(e,t)?createPropertyDescriptor$1(2,e[t]):nativeGetOwnPropertyDescriptor$2(e,t)},wrappedDefineProperty=function(e,t,r){return t=toPropertyKey$1(t),!(isTypedArrayIndex(e,t)&&isObject$9(r)&&hasOwn$8(r,"value"))||hasOwn$8(r,"get")||hasOwn$8(r,"set")||r.configurable||hasOwn$8(r,"writable")&&!r.writable||hasOwn$8(r,"enumerable")&&!r.enumerable?nativeDefineProperty$1(e,t,r):(e[t]=r.value,e)};DESCRIPTORS$6?(NATIVE_ARRAY_BUFFER_VIEWS||(getOwnPropertyDescriptorModule$1.f=wrappedGetOwnPropertyDescriptor,definePropertyModule$1.f=wrappedDefineProperty,addGetter(TypedArrayPrototype$1,"buffer"),addGetter(TypedArrayPrototype$1,"byteOffset"),addGetter(TypedArrayPrototype$1,"byteLength"),addGetter(TypedArrayPrototype$1,"length")),$$w({target:"Object",stat:!0,forced:!NATIVE_ARRAY_BUFFER_VIEWS},{getOwnPropertyDescriptor:wrappedGetOwnPropertyDescriptor,defineProperty:wrappedDefineProperty}),typedArrayConstructor.exports=function(e,t,r){var n=e.match(/\d+/)[0]/8,i=e+(r?"Clamped":"")+"Array",o="get"+e,a="set"+e,s=global$g[i],c=s,u=c&&c.prototype,l={},d=function(e,t){nativeDefineProperty$1(e,t,{get:function(){return function(e,t){var r=getInternalState$2(e);return r.view[o](t*n+r.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var o=getInternalState$2(e);r&&(i=(i=round(i))<0?0:i>255?255:255&i),o.view[a](t*n+o.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};NATIVE_ARRAY_BUFFER_VIEWS?TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1&&(c=t((function(e,t,r,i){return anInstance$2(e,u),inheritIfRequired$2(isObject$9(t)?isArrayBuffer(t)?void 0!==i?new s(t,toOffset$1(r,n),i):void 0!==r?new s(t,toOffset$1(r,n)):new s(t):isTypedArray(t)?fromList(c,t):call$7(typedArrayFrom,c,t):new s(toIndex(t)),e,c)})),setPrototypeOf&&setPrototypeOf(c,TypedArray),forEach$3(getOwnPropertyNames$1(s),(function(e){e in c||createNonEnumerableProperty$2(c,e,s[e])})),c.prototype=u):(c=t((function(e,t,r,i){anInstance$2(e,u);var o,a,s,l=0,h=0;if(isObject$9(t)){if(!isArrayBuffer(t))return isTypedArray(t)?fromList(c,t):call$7(typedArrayFrom,c,t);o=t,h=toOffset$1(r,n);var f=t.byteLength;if(void 0===i){if(f%n)throw RangeError$2(WRONG_LENGTH);if((a=f-h)<0)throw RangeError$2(WRONG_LENGTH)}else if((a=toLength$5(i)*n)+h>f)throw RangeError$2(WRONG_LENGTH);s=a/n}else s=toIndex(t),o=new ArrayBuffer$2(a=s*n);for(setInternalState$3(e,{buffer:o,byteOffset:h,byteLength:a,length:s,view:new DataView$2(o)});l<s;)d(e,l++)})),setPrototypeOf&&setPrototypeOf(c,TypedArray),u=c.prototype=create$3(TypedArrayPrototype$1)),u.constructor!==c&&createNonEnumerableProperty$2(u,"constructor",c),enforceInternalState(u).TypedArrayConstructor=c,TYPED_ARRAY_TAG&&createNonEnumerableProperty$2(u,TYPED_ARRAY_TAG,i);var h=c!=s;l[i]=c,$$w({global:!0,constructor:!0,forced:h,sham:!NATIVE_ARRAY_BUFFER_VIEWS},l),BYTES_PER_ELEMENT in c||createNonEnumerableProperty$2(c,BYTES_PER_ELEMENT,n),BYTES_PER_ELEMENT in u||createNonEnumerableProperty$2(u,BYTES_PER_ELEMENT,n),setSpecies$1(i)}):typedArrayConstructor.exports=function(){};var typedArrayConstructorExports=typedArrayConstructor.exports,tryToString$1=tryToString$7,$TypeError$1=TypeError,deletePropertyOrThrow$2=function(e,t){if(!delete e[t])throw $TypeError$1("Cannot delete property "+tryToString$1(t)+" of "+tryToString$1(e))},toObject$4=toObject$a,toAbsoluteIndex$3=toAbsoluteIndex$8,lengthOfArrayLike$6=lengthOfArrayLike$d,deletePropertyOrThrow$1=deletePropertyOrThrow$2,min$3=Math.min,arrayCopyWithin=[].copyWithin||function(e,t){var r=toObject$4(this),n=lengthOfArrayLike$6(r),i=toAbsoluteIndex$3(e,n),o=toAbsoluteIndex$3(t,n),a=arguments.length>2?arguments[2]:void 0,s=min$3((void 0===a?n:toAbsoluteIndex$3(a,n))-o,n-i),c=1;for(o<i&&i<o+s&&(c=-1,o+=s-1,i+=s-1);s-- >0;)o in r?r[i]=r[o]:deletePropertyOrThrow$1(r,i),i+=c,o+=c;return r},uncurryThis$l=functionUncurryThis,ArrayBufferViewCore$n=arrayBufferViewCore,$ArrayCopyWithin=arrayCopyWithin,u$ArrayCopyWithin=uncurryThis$l($ArrayCopyWithin),aTypedArray$l=ArrayBufferViewCore$n.aTypedArray,exportTypedArrayMethod$m=ArrayBufferViewCore$n.exportTypedArrayMethod;exportTypedArrayMethod$m("copyWithin",(function(e,t){return u$ArrayCopyWithin(aTypedArray$l(this),e,t,arguments.length>2?arguments[2]:void 0)}));var ArrayBufferViewCore$m=arrayBufferViewCore,$every=arrayIteration.every,aTypedArray$k=ArrayBufferViewCore$m.aTypedArray,exportTypedArrayMethod$l=ArrayBufferViewCore$m.exportTypedArrayMethod;exportTypedArrayMethod$l("every",(function(e){return $every(aTypedArray$k(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$l=arrayBufferViewCore,$fill=arrayFill$1,toBigInt=toBigInt$2,classof$2=classof$c,call$6=functionCall,uncurryThis$k=functionUncurryThis,fails$p=fails$G,aTypedArray$j=ArrayBufferViewCore$l.aTypedArray,exportTypedArrayMethod$k=ArrayBufferViewCore$l.exportTypedArrayMethod,slice5=uncurryThis$k("".slice),CONVERSION_BUG=fails$p((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e}));exportTypedArrayMethod$k("fill",(function(e){var t=arguments.length;aTypedArray$j(this);var r="Big"===slice5(classof$2(this),0,3)?toBigInt(e):+e;return call$6($fill,this,r,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}),CONVERSION_BUG);var lengthOfArrayLike$5=lengthOfArrayLike$d,arrayFromConstructorAndList$1=function(e,t){for(var r=0,n=lengthOfArrayLike$5(t),i=new e(n);n>r;)i[r]=t[r++];return i},ArrayBufferViewCore$k=arrayBufferViewCore,speciesConstructor$2=speciesConstructor$5,aTypedArrayConstructor$1=ArrayBufferViewCore$k.aTypedArrayConstructor,getTypedArrayConstructor=ArrayBufferViewCore$k.getTypedArrayConstructor,typedArraySpeciesConstructor$4=function(e){return aTypedArrayConstructor$1(speciesConstructor$2(e,getTypedArrayConstructor(e)))},arrayFromConstructorAndList=arrayFromConstructorAndList$1,typedArraySpeciesConstructor$3=typedArraySpeciesConstructor$4,typedArrayFromSpeciesAndList=function(e,t){return arrayFromConstructorAndList(typedArraySpeciesConstructor$3(e),t)},ArrayBufferViewCore$j=arrayBufferViewCore,$filter=arrayIteration.filter,fromSpeciesAndList=typedArrayFromSpeciesAndList,aTypedArray$i=ArrayBufferViewCore$j.aTypedArray,exportTypedArrayMethod$j=ArrayBufferViewCore$j.exportTypedArrayMethod;exportTypedArrayMethod$j("filter",(function(e){var t=$filter(aTypedArray$i(this),e,arguments.length>1?arguments[1]:void 0);return fromSpeciesAndList(this,t)}));var ArrayBufferViewCore$i=arrayBufferViewCore,$find=arrayIteration.find,aTypedArray$h=ArrayBufferViewCore$i.aTypedArray,exportTypedArrayMethod$i=ArrayBufferViewCore$i.exportTypedArrayMethod;exportTypedArrayMethod$i("find",(function(e){return $find(aTypedArray$h(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$h=arrayBufferViewCore,$findIndex=arrayIteration.findIndex,aTypedArray$g=ArrayBufferViewCore$h.aTypedArray,exportTypedArrayMethod$h=ArrayBufferViewCore$h.exportTypedArrayMethod;exportTypedArrayMethod$h("findIndex",(function(e){return $findIndex(aTypedArray$g(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$g=arrayBufferViewCore,$forEach$2=arrayIteration.forEach,aTypedArray$f=ArrayBufferViewCore$g.aTypedArray,exportTypedArrayMethod$g=ArrayBufferViewCore$g.exportTypedArrayMethod;exportTypedArrayMethod$g("forEach",(function(e){$forEach$2(aTypedArray$f(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$f=arrayBufferViewCore,$includes=arrayIncludes.includes,aTypedArray$e=ArrayBufferViewCore$f.aTypedArray,exportTypedArrayMethod$f=ArrayBufferViewCore$f.exportTypedArrayMethod;exportTypedArrayMethod$f("includes",(function(e){return $includes(aTypedArray$e(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$e=arrayBufferViewCore,$indexOf$1=arrayIncludes.indexOf,aTypedArray$d=ArrayBufferViewCore$e.aTypedArray,exportTypedArrayMethod$e=ArrayBufferViewCore$e.exportTypedArrayMethod;exportTypedArrayMethod$e("indexOf",(function(e){return $indexOf$1(aTypedArray$d(this),e,arguments.length>1?arguments[1]:void 0)}));var global$f=global$C,fails$o=fails$G,uncurryThis$j=functionUncurryThis,ArrayBufferViewCore$d=arrayBufferViewCore,ArrayIterators=es_array_iterator,wellKnownSymbol$6=wellKnownSymbol$m,ITERATOR$3=wellKnownSymbol$6("iterator"),Uint8Array$2=global$f.Uint8Array,arrayValues=uncurryThis$j(ArrayIterators.values),arrayKeys=uncurryThis$j(ArrayIterators.keys),arrayEntries=uncurryThis$j(ArrayIterators.entries),aTypedArray$c=ArrayBufferViewCore$d.aTypedArray,exportTypedArrayMethod$d=ArrayBufferViewCore$d.exportTypedArrayMethod,TypedArrayPrototype=Uint8Array$2&&Uint8Array$2.prototype,GENERIC=!fails$o((function(){TypedArrayPrototype[ITERATOR$3].call([1])})),ITERATOR_IS_VALUES=!!TypedArrayPrototype&&TypedArrayPrototype.values&&TypedArrayPrototype[ITERATOR$3]===TypedArrayPrototype.values&&"values"===TypedArrayPrototype.values.name,typedArrayValues=function(){return arrayValues(aTypedArray$c(this))};exportTypedArrayMethod$d("entries",(function(){return arrayEntries(aTypedArray$c(this))}),GENERIC),exportTypedArrayMethod$d("keys",(function(){return arrayKeys(aTypedArray$c(this))}),GENERIC),exportTypedArrayMethod$d("values",typedArrayValues,GENERIC||!ITERATOR_IS_VALUES,{name:"values"}),exportTypedArrayMethod$d(ITERATOR$3,typedArrayValues,GENERIC||!ITERATOR_IS_VALUES,{name:"values"});var ArrayBufferViewCore$c=arrayBufferViewCore,uncurryThis$i=functionUncurryThis,aTypedArray$b=ArrayBufferViewCore$c.aTypedArray,exportTypedArrayMethod$c=ArrayBufferViewCore$c.exportTypedArrayMethod,$join=uncurryThis$i([].join);exportTypedArrayMethod$c("join",(function(e){return $join(aTypedArray$b(this),e)}));var apply$4=functionApply,toIndexedObject$5=toIndexedObject$b,toIntegerOrInfinity$3=toIntegerOrInfinity$9,lengthOfArrayLike$4=lengthOfArrayLike$d,arrayMethodIsStrict$5=arrayMethodIsStrict$6,min$2=Math.min,$lastIndexOf$1=[].lastIndexOf,NEGATIVE_ZERO$1=!!$lastIndexOf$1&&1/[1].lastIndexOf(1,-0)<0,STRICT_METHOD$4=arrayMethodIsStrict$5("lastIndexOf"),FORCED$c=NEGATIVE_ZERO$1||!STRICT_METHOD$4,arrayLastIndexOf=FORCED$c?function(e){if(NEGATIVE_ZERO$1)return apply$4($lastIndexOf$1,this,arguments)||0;var t=toIndexedObject$5(this),r=lengthOfArrayLike$4(t),n=r-1;for(arguments.length>1&&(n=min$2(n,toIntegerOrInfinity$3(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in t&&t[n]===e)return n||0;return-1}:$lastIndexOf$1,ArrayBufferViewCore$b=arrayBufferViewCore,apply$3=functionApply,$lastIndexOf=arrayLastIndexOf,aTypedArray$a=ArrayBufferViewCore$b.aTypedArray,exportTypedArrayMethod$b=ArrayBufferViewCore$b.exportTypedArrayMethod;exportTypedArrayMethod$b("lastIndexOf",(function(e){var t=arguments.length;return apply$3($lastIndexOf,aTypedArray$a(this),t>1?[e,arguments[1]]:[e])}));var ArrayBufferViewCore$a=arrayBufferViewCore,$map$1=arrayIteration.map,typedArraySpeciesConstructor$2=typedArraySpeciesConstructor$4,aTypedArray$9=ArrayBufferViewCore$a.aTypedArray,exportTypedArrayMethod$a=ArrayBufferViewCore$a.exportTypedArrayMethod;exportTypedArrayMethod$a("map",(function(e){return $map$1(aTypedArray$9(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(typedArraySpeciesConstructor$2(e))(t)}))}));var aCallable$2=aCallable$c,toObject$3=toObject$a,IndexedObject=indexedObject,lengthOfArrayLike$3=lengthOfArrayLike$d,$TypeError=TypeError,createMethod$2=function(e){return function(t,r,n,i){aCallable$2(r);var o=toObject$3(t),a=IndexedObject(o),s=lengthOfArrayLike$3(o),c=e?s-1:0,u=e?-1:1;if(n<2)for(;;){if(c in a){i=a[c],c+=u;break}if(c+=u,e?c<0:s<=c)throw $TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=u)c in a&&(i=r(i,a[c],c,o));return i}},arrayReduce={left:createMethod$2(!1),right:createMethod$2(!0)},ArrayBufferViewCore$9=arrayBufferViewCore,$reduce$1=arrayReduce.left,aTypedArray$8=ArrayBufferViewCore$9.aTypedArray,exportTypedArrayMethod$9=ArrayBufferViewCore$9.exportTypedArrayMethod;exportTypedArrayMethod$9("reduce",(function(e){var t=arguments.length;return $reduce$1(aTypedArray$8(this),e,t,t>1?arguments[1]:void 0)}));var ArrayBufferViewCore$8=arrayBufferViewCore,$reduceRight=arrayReduce.right,aTypedArray$7=ArrayBufferViewCore$8.aTypedArray,exportTypedArrayMethod$8=ArrayBufferViewCore$8.exportTypedArrayMethod;exportTypedArrayMethod$8("reduceRight",(function(e){var t=arguments.length;return $reduceRight(aTypedArray$7(this),e,t,t>1?arguments[1]:void 0)}));var ArrayBufferViewCore$7=arrayBufferViewCore,aTypedArray$6=ArrayBufferViewCore$7.aTypedArray,exportTypedArrayMethod$7=ArrayBufferViewCore$7.exportTypedArrayMethod,floor$3=Math.floor;exportTypedArrayMethod$7("reverse",(function(){for(var e,t=this,r=aTypedArray$6(t).length,n=floor$3(r/2),i=0;i<n;)e=t[i],t[i++]=t[--r],t[r]=e;return t}));var global$e=global$C,call$5=functionCall,ArrayBufferViewCore$6=arrayBufferViewCore,lengthOfArrayLike$2=lengthOfArrayLike$d,toOffset=toOffset$2,toIndexedObject$4=toObject$a,fails$n=fails$G,RangeError$1=global$e.RangeError,Int8Array$2=global$e.Int8Array,Int8ArrayPrototype=Int8Array$2&&Int8Array$2.prototype,$set=Int8ArrayPrototype&&Int8ArrayPrototype.set,aTypedArray$5=ArrayBufferViewCore$6.aTypedArray,exportTypedArrayMethod$6=ArrayBufferViewCore$6.exportTypedArrayMethod,WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS=!fails$n((function(){var e=new Uint8ClampedArray(2);return call$5($set,e,{length:1,0:3},1),3!==e[1]})),TO_OBJECT_BUG=WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS&&ArrayBufferViewCore$6.NATIVE_ARRAY_BUFFER_VIEWS&&fails$n((function(){var e=new Int8Array$2(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));exportTypedArrayMethod$6("set",(function(e){aTypedArray$5(this);var t=toOffset(arguments.length>1?arguments[1]:void 0,1),r=toIndexedObject$4(e);if(WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS)return call$5($set,this,r,t);var n=this.length,i=lengthOfArrayLike$2(r),o=0;if(i+t>n)throw RangeError$1("Wrong length");for(;o<i;)this[t+o]=r[o++]}),!WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS||TO_OBJECT_BUG);var ArrayBufferViewCore$5=arrayBufferViewCore,typedArraySpeciesConstructor$1=typedArraySpeciesConstructor$4,fails$m=fails$G,arraySlice$4=arraySlice$9,aTypedArray$4=ArrayBufferViewCore$5.aTypedArray,exportTypedArrayMethod$5=ArrayBufferViewCore$5.exportTypedArrayMethod,FORCED$b=fails$m((function(){new Int8Array(1).slice()}));exportTypedArrayMethod$5("slice",(function(e,t){for(var r=arraySlice$4(aTypedArray$4(this),e,t),n=typedArraySpeciesConstructor$1(this),i=0,o=r.length,a=new n(o);o>i;)a[i]=r[i++];return a}),FORCED$b);var ArrayBufferViewCore$4=arrayBufferViewCore,$some$1=arrayIteration.some,aTypedArray$3=ArrayBufferViewCore$4.aTypedArray,exportTypedArrayMethod$4=ArrayBufferViewCore$4.exportTypedArrayMethod;exportTypedArrayMethod$4("some",(function(e){return $some$1(aTypedArray$3(this),e,arguments.length>1?arguments[1]:void 0)}));var arraySlice$3=arraySliceSimple,floor$2=Math.floor,mergeSort=function(e,t){var r=e.length,n=floor$2(r/2);return r<8?insertionSort(e,t):merge2(e,mergeSort(arraySlice$3(e,0,n),t),mergeSort(arraySlice$3(e,n),t),t)},insertionSort=function(e,t){for(var r,n,i=e.length,o=1;o<i;){for(n=o,r=e[o];n&&t(e[n-1],r)>0;)e[n]=e[--n];n!==o++&&(e[n]=r)}return e},merge2=function(e,t,r,n){for(var i=t.length,o=r.length,a=0,s=0;a<i||s<o;)e[a+s]=a<i&&s<o?n(t[a],r[s])<=0?t[a++]:r[s++]:a<i?t[a++]:r[s++];return e},arraySort=mergeSort,userAgent$1=engineUserAgent,firefox=userAgent$1.match(/firefox\/(\d+)/i),engineFfVersion=!!firefox&&+firefox[1],UA=engineUserAgent,engineIsIeOrEdge=/MSIE|Trident/.test(UA),userAgent=engineUserAgent,webkit=userAgent.match(/AppleWebKit\/(\d+)\./),engineWebkitVersion=!!webkit&&+webkit[1],global$d=global$C,uncurryThis$h=functionUncurryThisClause,fails$l=fails$G,aCallable$1=aCallable$c,internalSort$1=arraySort,ArrayBufferViewCore$3=arrayBufferViewCore,FF$1=engineFfVersion,IE_OR_EDGE$1=engineIsIeOrEdge,V8$1=engineV8Version,WEBKIT$1=engineWebkitVersion,aTypedArray$2=ArrayBufferViewCore$3.aTypedArray,exportTypedArrayMethod$3=ArrayBufferViewCore$3.exportTypedArrayMethod,Uint16Array$1=global$d.Uint16Array,nativeSort$1=Uint16Array$1&&uncurryThis$h(Uint16Array$1.prototype.sort),ACCEPT_INCORRECT_ARGUMENTS=!(!nativeSort$1||fails$l((function(){nativeSort$1(new Uint16Array$1(2),null)}))&&fails$l((function(){nativeSort$1(new Uint16Array$1(2),{})}))),STABLE_SORT$1=!!nativeSort$1&&!fails$l((function(){if(V8$1)return V8$1<74;if(FF$1)return FF$1<67;if(IE_OR_EDGE$1)return!0;if(WEBKIT$1)return WEBKIT$1<602;var e,t,r=new Uint16Array$1(516),n=Array(516);for(e=0;e<516;e++)t=e%4,r[e]=515-e,n[e]=e-2*t+3;for(nativeSort$1(r,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(r[e]!==n[e])return!0})),getSortCompare$1=function(e){return function(t,r){return void 0!==e?+e(t,r)||0:r!=r?-1:t!=t?1:0===t&&0===r?1/t>0&&1/r<0?1:-1:t>r}};exportTypedArrayMethod$3("sort",(function(e){return void 0!==e&&aCallable$1(e),STABLE_SORT$1?nativeSort$1(this,e):internalSort$1(aTypedArray$2(this),getSortCompare$1(e))}),!STABLE_SORT$1||ACCEPT_INCORRECT_ARGUMENTS);var ArrayBufferViewCore$2=arrayBufferViewCore,toLength$4=toLength$a,toAbsoluteIndex$2=toAbsoluteIndex$8,typedArraySpeciesConstructor=typedArraySpeciesConstructor$4,aTypedArray$1=ArrayBufferViewCore$2.aTypedArray,exportTypedArrayMethod$2=ArrayBufferViewCore$2.exportTypedArrayMethod;exportTypedArrayMethod$2("subarray",(function(e,t){var r=aTypedArray$1(this),n=r.length,i=toAbsoluteIndex$2(e,n);return new(typedArraySpeciesConstructor(r))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,toLength$4((void 0===t?n:toAbsoluteIndex$2(t,n))-i))}));var global$c=global$C,apply$2=functionApply,ArrayBufferViewCore$1=arrayBufferViewCore,fails$k=fails$G,arraySlice$2=arraySlice$9,Int8Array$1=global$c.Int8Array,aTypedArray=ArrayBufferViewCore$1.aTypedArray,exportTypedArrayMethod$1=ArrayBufferViewCore$1.exportTypedArrayMethod,$toLocaleString=[].toLocaleString,TO_LOCALE_STRING_BUG=!!Int8Array$1&&fails$k((function(){$toLocaleString.call(new Int8Array$1(1))})),FORCED$a=fails$k((function(){return[1,2].toLocaleString()!=new Int8Array$1([1,2]).toLocaleString()}))||!fails$k((function(){Int8Array$1.prototype.toLocaleString.call([1,2])}));exportTypedArrayMethod$1("toLocaleString",(function(){return apply$2($toLocaleString,TO_LOCALE_STRING_BUG?arraySlice$2(aTypedArray(this)):aTypedArray(this),arraySlice$2(arguments))}),FORCED$a);var exportTypedArrayMethod=arrayBufferViewCore.exportTypedArrayMethod,fails$j=fails$G,global$b=global$C,uncurryThis$g=functionUncurryThis,Uint8Array$1=global$b.Uint8Array,Uint8ArrayPrototype=Uint8Array$1&&Uint8Array$1.prototype||{},arrayToString=[].toString,join4=uncurryThis$g([].join);fails$j((function(){arrayToString.call({})}))&&(arrayToString=function(){return join4(this)});var IS_NOT_ARRAY_METHOD=Uint8ArrayPrototype.toString!=arrayToString;exportTypedArrayMethod("toString",arrayToString,IS_NOT_ARRAY_METHOD);var uncurryThis$f=functionUncurryThis,toIntegerOrInfinity$2=toIntegerOrInfinity$9,toString$c=toString$d,requireObjectCoercible$5=requireObjectCoercible$8,charAt$2=uncurryThis$f("".charAt),charCodeAt$1=uncurryThis$f("".charCodeAt),stringSlice$5=uncurryThis$f("".slice),createMethod$1=function(e){return function(t,r){var n,i,o=toString$c(requireObjectCoercible$5(t)),a=toIntegerOrInfinity$2(r),s=o.length;return a<0||a>=s?e?"":void 0:(n=charCodeAt$1(o,a))<55296||n>56319||a+1===s||(i=charCodeAt$1(o,a+1))<56320||i>57343?e?charAt$2(o,a):n:e?stringSlice$5(o,a,a+2):i-56320+(n-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$1(!1),charAt:createMethod$1(!0)},whitespaces$3="\t\n\v\f\r                 \u2028\u2029\ufeff",uncurryThis$e=functionUncurryThis,requireObjectCoercible$4=requireObjectCoercible$8,toString$b=toString$d,whitespaces$2=whitespaces$3,replace$1=uncurryThis$e("".replace),ltrim=RegExp("^["+whitespaces$2+"]+"),rtrim=RegExp("(^|[^"+whitespaces$2+"])["+whitespaces$2+"]+$"),createMethod=function(e){return function(t){var r=toString$b(requireObjectCoercible$4(t));return 1&e&&(r=replace$1(r,ltrim,"")),2&e&&(r=replace$1(r,rtrim,"$1")),r}},stringTrim={start:createMethod(1),end:createMethod(2),trim:createMethod(3)},$forEach$1=arrayIteration.forEach,arrayMethodIsStrict$4=arrayMethodIsStrict$6,STRICT_METHOD$3=arrayMethodIsStrict$4("forEach"),arrayForEach=STRICT_METHOD$3?[].forEach:function(e){return $forEach$1(this,e,arguments.length>1?arguments[1]:void 0)},$$v=_export,forEach$2=arrayForEach;$$v({target:"Array",proto:!0,forced:[].forEach!=arrayForEach},{forEach:arrayForEach});var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},documentCreateElement=documentCreateElement$2,classList=documentCreateElement("span").classList,DOMTokenListPrototype$2=classList&&classList.constructor&&classList.constructor.prototype,domTokenListPrototype=DOMTokenListPrototype$2===Object.prototype?void 0:DOMTokenListPrototype$2,global$a=global$C,DOMIterables$1=domIterables,DOMTokenListPrototype$1=domTokenListPrototype,forEach$1=arrayForEach,createNonEnumerableProperty$1=createNonEnumerableProperty$8,handlePrototype$1=function(e){if(e&&e.forEach!==forEach$1)try{createNonEnumerableProperty$1(e,"forEach",forEach$1)}catch(t){e.forEach=forEach$1}};for(var COLLECTION_NAME$1 in DOMIterables$1)DOMIterables$1[COLLECTION_NAME$1]&&handlePrototype$1(global$a[COLLECTION_NAME$1]&&global$a[COLLECTION_NAME$1].prototype);handlePrototype$1(DOMTokenListPrototype$1);var IntervalTimer=function(){function e(){_classCallCheck$4(this,e),this.timeID=null,this.func=null}return _createClass$4(e,[{key:"repeat",value:function(e,t){this.timeID=1,this.repeatInterval(e,t)}},{key:"repeatInterval",value:function(e,t){var r=this;this.timeID&&(null===this.func&&(this.func=e),this.func===e&&(this.timeID&&clearTimeout(this.timeID),this.timeID=null,this.timeID=setTimeout((function(){e(),r.repeatInterval(e,t)}),t)))}},{key:"clear",value:function(){clearTimeout(this.timeID),this.timeID=null}}]),e}(),IntervalTimer$1=IntervalTimer,$$u=_export,uncurryThis$d=functionUncurryThisClause,$indexOf=arrayIncludes.indexOf,arrayMethodIsStrict$3=arrayMethodIsStrict$6,nativeIndexOf=uncurryThis$d([].indexOf),NEGATIVE_ZERO=!!nativeIndexOf&&1/nativeIndexOf([1],1,-0)<0,FORCED$9=NEGATIVE_ZERO||!arrayMethodIsStrict$3("indexOf");$$u({target:"Array",proto:!0,forced:FORCED$9},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return NEGATIVE_ZERO?nativeIndexOf(this,e,t)||0:$indexOf(this,e,t)}});var isSupport$1=_isLocalStorageUsable$1();function probeSupport$1(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}function checkIfLocalStorageThrows$1(){var e="_localstorage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}function _isLocalStorageUsable$1(){return probeSupport$1&&!checkIfLocalStorageThrows$1()}var proxyLocalStorage={length:isSupport$1?localStorage.length:0,clear:function(e){try{for(var t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}}catch(e){}},getItem:function(e){try{return localStorage.getItem(e)}catch(e){return null}},key:function(e){try{return localStorage.key(e)}catch(e){return null}},setItem:function(e,t){try{localStorage.setItem(e,t)}catch(e){}},removeItem:function(e){try{localStorage.removeItem(e)}catch(e){}},isSupport:isSupport$1},proxyLocalStorage$1=proxyLocalStorage,CONTENT_TYPES={VIDEO:"video",AUDIO:"audio"},OP_NAME={APPEND:"appendBuffer",REMOVE:"removeBuffer"},MSE_EVENTS={MSE_ERROR:"mse_error",UPDATE_END:"updateend",MSE_OPEN:"mse_open",MSE_OPEN_DONE:"mse_open_done"},MSE=function(e){_inherits$3(r,EventEmitter$1);var t=_createSuper$3(r);function r(e,n){var i;return _classCallCheck$5(this,r),(i=t.call(this)).mediaSource=new window.MediaSource(e),i.url=window.URL.createObjectURL(i.mediaSource),i.queue=[],i._hasDestroyed=!1,i._onSourceOpen=i._onSourceOpen.bind(_assertThisInitialized$3(i)),i._onSourceBufferError=i._onSourceBufferError.bind(_assertThisInitialized$3(i)),i._onSourceBufferUpdateEnd=i._onSourceBufferUpdateEnd.bind(_assertThisInitialized$3(i)),i._mseStart=nowTime$1(),i._appendStart=-1,i.mediaSource.addEventListener("sourceopen",i._onSourceOpen),i.opQueues={},i.sourceBuffers={},i.updateHanders={},i.errorHandlers={},i.logger=n||function(){},i._sourceOpenDonePromise=new ProxyPromise$1,i._mseAppendFlag=!1,i._mseOpenTime=-1,i.mseFullFlag={},i}return _createClass$5(r,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_defineProperty$3({},CONTENT_TYPES.VIDEO,{mimeType:"video/mp4",codec:'video/mp4; codecs="avc1.64001E, mp4a.40.5"'});return this.contentTypes=e,this._sourceOpenDonePromise}},{key:"_onSourceOpen",value:function(){var e=this;this._mseOpenTime=nowTime$1()-this._mseStart,console.log("[mseOpen]==> costtime",this._mseOpenTime),this.mediaSource.removeEventListener("sourceopen",this._onSourceOpen),this.emit(MSE_EVENTS.MSE_OPEN,{costtime:this._mseOpenTime});for(var t=Object.keys(this.contentTypes),r=0;r<t.length;r++)try{!function(){var n=t[r],i=e.contentTypes[n].codec,o=e.mediaSource.addSourceBuffer(i),a=function(){return e._onSourceBufferError(n)};o.addEventListener("error",a);var s=function(){return e._onSourceBufferUpdateEnd(n)};o.addEventListener("updateend",s),e.updateHanders={},e.sourceBuffers[n]=o,e.opQueues[n]=[],e.updateHanders[n]=s,e.errorHandlers[n]=a}()}catch(e){e.errtype="open_error",this.emit(MSE_EVENTS.MSE_ERROR,e)}this.logger("[debug mse] mse init ready, readyState",this.mediaSource.readyState),this._mseAppendFlag=!0,this.emit(MSE_EVENTS.MSE_OPEN_DONE,{costtime:nowTime$1()-this._mseStart}),this._sourceOpenDonePromise.resolve()}},{key:"ready",get:function(){return this._mseAppendFlag}},{key:"_onSourceBufferError",value:function(e){if(!this._hasDestroyed){this.logger("[debug mse] sourceBuffer error, contentType",e,"readyState",this.mediaSource.readyState);var t=this.opQueues[e][0];this.emit(MSE_EVENTS.MSE_ERROR,{errtype:"append_error",name:t.name,context:t.context})}}},{key:"_onSourceBufferUpdateEnd",value:function(e){if(!this._hasDestroyed){var t=this.opQueues[e][0];t&&(this.emit(MSE_EVENTS.UPDATE_END,{name:t.name,context:t.context,costtime:nowTime$1()-this._appendStart}),this.pop(e))}}},{key:"state",get:function(){return this.mediaSource.readyState}},{key:"duration",get:function(){return this.mediaSource.duration}},{key:"setDuration",value:function(e){var t=this;this.mediaSource.duration>e||this.enqueueBlockOp((function(){t.ended()?t.logger("[debug mse] setDuration ended"):(t.logger("[debug mse] setDuration"),t.mediaSource.duration=e)}),"setDuration")}},{key:"appendBuffer",value:function(e,t,r){var n=this;return this.enqueueOp(e,(function(){return n._append(e,t,r)}),OP_NAME.APPEND,r)}},{key:"_append",value:function(e,t,r){this._appendStart=nowTime$1(),this.logger("[real appendBuffer], context,",r),this.sourceBuffers[e].appendBuffer(t)}},{key:"enqueueOp",value:function(e,t,r,n){var i=this;if(!this._hasDestroyed){var o={handler:t,context:n,name:r};return this._mseAppendFlag?this._enQueue(e,o):this._sourceOpenDonePromise.then((function(){i._hasDestroyed||i._enQueue(e,o)})),o.p}}},{key:"_enQueue",value:function(e,t){this.opQueues[e]||(this.opQueues[e]=[]),this.mseFullFlag[e]&&t.name===OP_NAME.REMOVE?(this.opQueues[e].splice(0,0,t),this.mseFullFlag[e]=!1,this.handleOp(e)):(this.opQueues[e].push(t),1===this.opQueues[e].length&&this.handleOp(e))}},{key:"enqueueBlockOp",value:function(e,t){var r=this;this._hasDestroyed||this._sourceOpenDonePromise.then((function(){if(!r._hasDestroyed){for(var n=[],i=Object.keys(r.contentTypes),o=function(e){var o=i[e],a=new ProxyPromise$1,s={handler:function(){return a.resolve()},p:a,name:t};r.opQueues[o]||(r.opQueues[o]=[]),r.opQueues[o].push(s),n.push(a),1===r.opQueues[o].length&&s.handler()},a=0;a<i.length;a++)o(a);Promise.all(n).then((function(){try{e()}catch(e){console.log(e)}finally{for(var t=0;t<i.length;t++){var n=i[t];r.pop(n)}}})).catch((function(e){console.log("waiting cath",e)}))}}))}},{key:"isFull",value:function(e){return e?this.mseFullFlag[e]:this.mseFullFlag[CONTENT_TYPES.VIDEO]}},{key:"handleOp",value:function(e){if(!this._hasDestroyed){var t=this.opQueues[e][0];if(t&&!this.mseFullFlag[e])try{t.handler()}catch(r){r&&r.message.indexOf("SourceBuffer is full")>=0?(this.mseFullFlag[e]=!0,this.logger("[MSE error], context,",t.context,",name,",t.name,",err,SourceBuffer is full")):this.pop(e),this.emit(MSE_EVENTS.MSE_ERROR,{errtype:"append_error",context:t.context,errMsg:r?r.message:null})}}}},{key:"pop",value:function(e){this._hasDestroyed||(this.opQueues[e].shift(),this.handleOp(e))}},{key:"clearOpqueues",value:function(e){var t,r=[];if(this.opQueues[e].map((function(e){e.context.isinit&&r.push(e)})),this.opQueues&&this.opQueues[e]&&this.opQueues[e].length>1)if(this.opQueues[e][0].name===OP_NAME.APPEND||this.opQueues[e][0].name===OP_NAME.REMOVE)this.logger("[debug mse] clearOpqueues, left:",1,", len,",this.opQueues[e].length),this.opQueues[e]=this.opQueues[e].slice(0,1);else{var n=Math.min(this.opQueues[e].length,Object.keys(this.contentTypes).length);this.logger("[debug mse] clearOpqueues, left:",n,", len,",this.opQueues[e].length),this.opQueues[e]=this.opQueues[e].slice(0,n)}r.length>0&&(t=this.opQueues[e]).push.apply(t,r)}},{key:"removeBuffer",value:function(e,t,r,n){var i=this;return this.enqueueOp(e,(function(){return i._remove(e,t,r,n)}),OP_NAME.REMOVE,n)}},{key:"_remove",value:function(e,t,r,n){r<=t?this._onSourceBufferUpdateEnd(e):(this.logger("[debug mse],real removeBuffer, context,",n),this._appendStart=nowTime$1(),this.sourceBuffers[e].remove(t,r))}},{key:"endOfStream",value:function(){var e=this;this._hasDestroyed||this.ended()||this.enqueueBlockOp((function(){e._hasDestroyed||e.ended()||(e.logger("[debug mse] endOfStream"),e.mediaSource.endOfStream())}),"endOfStream")}},{key:"ended",value:function(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}},{key:"isMediaSourceOpen",value:function(){return!!this.mediaSource&&"open"===this.mediaSource.readyState}},{key:"abort",value:function(e){var t=this;return this.isMediaSourceOpen()?this.enqueueOp(e,(function(){t.sourceBuffers[e].abort(),t._onSourceBufferUpdateEnd(e)}),"abort"):Promise.resolve()}},{key:"reuse",value:function(e,t){for(var r=Object.keys(this.contentTypes),n=0;n<r.length;n++){var i=r[n];this.removeBuffer(i,e,t,{start:e,end:t})}}},{key:"_forceAbort",value:function(){try{for(var e=Object.keys(this.contentTypes),t=0;t<e.length;t++){var r=e[t];this.sourceBuffers[r].abort()}}catch(e){console.log("forceAbort error")}}},{key:"destroy",value:function(){if(this.logger("[debug mse] destroy execute"),!this._hasDestroyed){this._forceAbort(),this._hasDestroyed=!0,window.URL.revokeObjectURL(this.url),this.mediaSource&&(this.mediaSource.removeEventListener("sourceclose",this._onMediaSourceClose),this.mediaSource.removeEventListener("sourceopen",this._onSourceOpen));for(var e=Object.keys(this.contentTypes),t=0;t<e.length;t++){var r=e[t],n=this.sourceBuffers[r];if(n){var i=this.errorHandlers[r];n.removeEventListener("error",i);var o=this.updateHanders[r];n.removeEventListener("updateend",o)}}this.opQueues={},this.sourceBuffers={}}}},{key:"buffered",value:function(e){return this.sourceBuffers[e]&&this.sourceBuffers[e].buffered}},{key:"sourceBuffer",value:function(e){return this.sourceBuffers[e]}},{key:"removeSourceBuffer",value:function(e){var t=this.sourceBuffer(e);if(t){this.mediaSource.removeSourceBuffer(t);var r=this.errorHandlers[e];t.removeEventListener("error",r);var n=this.updateHanders[e];t.removeEventListener("updateend",n),delete this.errorHandlers[e],delete this.sourceBuffers[e],delete this.updateHanders[e]}}},{key:"setTimeoffset",value:function(e,t){var r=this;return this.enqueueOp(e,(function(){t<0&&(t+=.001),r.sourceBuffers[e].timestampOffset=t,r._onSourceBufferUpdateEnd(e)}),"setTimeoffset")}}],[{key:"isSupported",value:function(e){return window.MediaSource&&window.MediaSource.isTypeSupported(e)}}]),r}(),nowTime$1=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},$$t=_export$2,uncurryThis$c=functionUncurryThisClause$2,fails$i=fails$1T,ArrayBufferModule=arrayBuffer$1,anObject$5=anObject$N,toAbsoluteIndex$1=toAbsoluteIndex$k,toLength$3=toLength$k,speciesConstructor$1=speciesConstructor$9,ArrayBuffer$1=ArrayBufferModule.ArrayBuffer,DataView$1=ArrayBufferModule.DataView,DataViewPrototype=DataView$1.prototype,nativeArrayBufferSlice=uncurryThis$c(ArrayBuffer$1.prototype.slice),getUint8=uncurryThis$c(DataViewPrototype.getUint8),setUint8=uncurryThis$c(DataViewPrototype.setUint8),INCORRECT_SLICE=fails$i((function(){return!new ArrayBuffer$1(2).slice(1,void 0).byteLength}));$$t({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:INCORRECT_SLICE},{slice:function(e,t){if(nativeArrayBufferSlice&&void 0===t)return nativeArrayBufferSlice(anObject$5(this),e);for(var r=anObject$5(this).byteLength,n=toAbsoluteIndex$1(e,r),i=toAbsoluteIndex$1(void 0===t?r:t,r),o=new(speciesConstructor$1(this,ArrayBuffer$1))(toLength$3(i-n)),a=new DataView$1(this),s=new DataView$1(o),c=0;n<i;)setUint8(s,c++,getUint8(a,n++));return o}});var collection$2=collection$5,collectionStrong$2=collectionStrong$5;collection$2("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),collectionStrong$2);var concat3={};Object.defineProperty(concat3,"__esModule",{value:!0}),concat3.default=function(e){for(var t=0,r=arguments.length,n=Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];var o=!0,a=!1,s=void 0;try{for(var c,u=n[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){t+=c.value.length}}catch(e){a=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(a)throw s}}var l=new e(t),d=0,h=!0,f=!1,p=void 0;try{for(var y,m=n[Symbol.iterator]();!(h=(y=m.next()).done);h=!0){var g=y.value;l.set(g,d),d+=g.length}}catch(e){f=!0,p=e}finally{try{!h&&m.return&&m.return()}finally{if(f)throw p}}return l};var _concat=concat3,_concat2=_interopRequireDefault(_concat);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var lib=_concat2.default,Concat=getDefaultExportFromCjs(lib);function _classCallCheck$3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$3(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$3(e,t,r){return t&&_defineProperties$3(e.prototype,t),r&&_defineProperties$3(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$2(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _slicedToArray$1(e,t){return _arrayWithHoles$1(e)||_iterableToArrayLimit$1(e,t)||_unsupportedIterableToArray$3(e,t)||_nonIterableRest$1()}function _toConsumableArray$2(e){return _arrayWithoutHoles$2(e)||_iterableToArray$2(e)||_unsupportedIterableToArray$3(e)||_nonIterableSpread$2()}function _arrayWithoutHoles$2(e){if(Array.isArray(e))return _arrayLikeToArray$3(e)}function _arrayWithHoles$1(e){if(Array.isArray(e))return e}function _iterableToArray$2(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterableToArrayLimit$1(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw i}}return o}}function _unsupportedIterableToArray$3(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$3(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$3(e,t):void 0}}function _arrayLikeToArray$3(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$2(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableRest$1(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var TrackType={VIDEO:"video",AUDIO:"audio",METADATA:"metadata"},VideoCodecType={AVC:"avc",HEVC:"hevc"},AudioCodecType={AAC:"aac",G711PCMA:"g7110a",G711PCMU:"g7110m"},VideoTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",1),_defineProperty$2(this,"type",TrackType.VIDEO),_defineProperty$2(this,"codecType",VideoCodecType.AVC),_defineProperty$2(this,"pid",-1),_defineProperty$2(this,"hvcC",void 0),_defineProperty$2(this,"codec",""),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"formatTimescale",0),_defineProperty$2(this,"sequenceNumber",0),_defineProperty$2(this,"baseMediaDecodeTime",0),_defineProperty$2(this,"baseDts",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"warnings",[]),_defineProperty$2(this,"samples",[]),_defineProperty$2(this,"pps",[]),_defineProperty$2(this,"sps",[]),_defineProperty$2(this,"vps",[]),_defineProperty$2(this,"fpsNum",0),_defineProperty$2(this,"fpsDen",0),_defineProperty$2(this,"sarRatio",[]),_defineProperty$2(this,"width",0),_defineProperty$2(this,"height",0),_defineProperty$2(this,"nalUnitSize",4),_defineProperty$2(this,"present",!1),_defineProperty$2(this,"isVideoEncryption",!1),_defineProperty$2(this,"isAudioEncryption",!1),_defineProperty$2(this,"kid",null),_defineProperty$2(this,"pssh",null),_defineProperty$2(this,"ext",void 0)}return _createClass$3(e,[{key:"reset",value:function(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}},{key:"exist",value:function(){return!!(this.pps.length&&this.sps.length&&this.codec)}},{key:"hasSample",value:function(){return!!this.samples.length}}]),e}(),AudioTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",2),_defineProperty$2(this,"type",TrackType.AUDIO),_defineProperty$2(this,"codecType",AudioCodecType.AAC),_defineProperty$2(this,"pid",-1),_defineProperty$2(this,"codec",""),_defineProperty$2(this,"sequenceNumber",0),_defineProperty$2(this,"sampleDuration",0),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"formatTimescale",0),_defineProperty$2(this,"baseMediaDecodeTime",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"warnings",[]),_defineProperty$2(this,"samples",[]),_defineProperty$2(this,"baseDts",0),_defineProperty$2(this,"sampleSize",16),_defineProperty$2(this,"sampleRate",0),_defineProperty$2(this,"channelCount",0),_defineProperty$2(this,"objectType",0),_defineProperty$2(this,"sampleRateIndex",0),_defineProperty$2(this,"config",[]),_defineProperty$2(this,"present",!1),_defineProperty$2(this,"isVideoEncryption",!1),_defineProperty$2(this,"isAudioEncryption",!1),_defineProperty$2(this,"kid",null),_defineProperty$2(this,"ext",void 0)}return _createClass$3(e,[{key:"reset",value:function(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}},{key:"exist",value:function(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===AudioCodecType.AAC)}},{key:"hasSample",value:function(){return!!this.samples.length}}]),e}(),VideoSample=function(){function e(t,r,n){_classCallCheck$3(this,e),_defineProperty$2(this,"flag",{}),_defineProperty$2(this,"keyframe",!1),_defineProperty$2(this,"gopId",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"size",0),_defineProperty$2(this,"units",[]),_defineProperty$2(this,"chromaFormat",420),this.originPts=this.pts=t,this.originDts=this.dts=r,n&&(this.units=n)}return _createClass$3(e,[{key:"cts",get:function(){return this.pts-this.dts}},{key:"setToKeyframe",value:function(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}]),e}(),AudioSample=_createClass$3((function e(t,r,n,i){_classCallCheck$3(this,e),_defineProperty$2(this,"duration",1024),_defineProperty$2(this,"flag",{dependsOn:2,isNonSyncSample:0}),_defineProperty$2(this,"keyframe",!0),this.originPts=this.pts=this.dts=t,this.data=r,this.size=r.byteLength,this.sampleOffset=i,n&&(this.duration=n)})),MetadataTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",3),_defineProperty$2(this,"type",TrackType.METADATA),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"flvScriptSamples",[]),_defineProperty$2(this,"seiSamples",[])}return _createClass$3(e,[{key:"exist",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}},{key:"reset",value:function(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}},{key:"hasSample",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}]),e}(),isBrowser="undefined"!=typeof window,ua=isBrowser&&navigator.userAgent.toLocaleLowerCase(),isFirefox=isBrowser&&ua.includes("firefox"),isAndroid=isBrowser&&ua.includes("android"),AAC=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"getRateIndexByRate",value:function(t){return e.FREQ.indexOf(t)}},{key:"parseADTS",value:function(t,r){for(var n=t.length,i=0;i+2<n&&(255!==t[i]||240!=(246&t[i+1]));)i++;if(!(i>=n)){var o=i,a=[],s=(60&t[i+2])>>>2,c=e.FREQ[s];if(!c)throw new Error("Invalid sampling index: ".concat(s));for(var u,l,d=1+((192&t[i+2])>>>6),h=(1&t[i+2])<<2|(192&t[i+3])>>>6,f=e._getConfig(s,h,d),p=f.config,y=f.codec,m=0,g=e.getFrameDuration(c);i+7<n;)if(255===t[i]&&240==(246&t[i+1])){if(n-i<(l=(3&t[i+3])<<11|t[i+4]<<3|(224&t[i+5])>>5))break;u=2*(1&~t[i+1]),a.push({pts:r+m*g,data:t.subarray(i+7+u,i+l)}),m++,i+=l}else i++;return{skip:o,remaining:i>=n?void 0:t.subarray(i),frames:a,samplingFrequencyIndex:s,sampleRate:c,objectType:d,channelCount:h,codec:y,config:p,originCodec:"mp4a.40.".concat(d)}}}},{key:"parseAudioSpecificConfig",value:function(t){if(t.length){var r=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,i=(120&t[1])>>>3,o=e.FREQ[n];if(!o)throw new Error("Invalid sampling index: ".concat(n));var a=e._getConfig(n,i,r);return{samplingFrequencyIndex:n,sampleRate:o,objectType:r,channelCount:i,config:a.config,codec:a.codec,originCodec:"mp4a.40.".concat(r)}}}},{key:"getFrameDuration",value:function(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}},{key:"_getConfig",value:function(e,t,r){var n,i,o=[];return isFirefox?e>=6?(n=5,i=e-3):(n=2,i=e):isAndroid?(n=2,i=e):(n=2===r||5===r?r:5,i=e,e>=6?i=e-3:1===t&&(n=2,i=e)),o[0]=n<<3,o[0]|=(14&e)>>1,o[1]=(1&e)<<7,o[1]|=t<<3,5===n&&(o[1]|=(14&i)>>1,o[2]=(1&i)<<7,o[2]|=8,o[3]=0),{config:o,codec:"mp4a.40.".concat(n)}}},{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}]),e}();function concatUint8Array$1(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t=t.filter(Boolean);var n=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){n.set(e,i),i+=e.byteLength})),n}_defineProperty$2(AAC,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);var MAX_SIZE=Math.pow(2,32);function readBig16(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function readBig24(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}function readBig32(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function readBig64(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return readBig32(e,t)*MAX_SIZE+readBig32(e,t+4)}function getAvcCodec(e){for(var t,r="avc1.",n=0;n<3;n++)(t=e[n].toString(16)).length<2&&(t="0".concat(t)),r+=t;return r}function formatIV(e){var t="";if(e.forEach((function(e){t+=bufferToString(e)})),t.length<=32)for(var r=32-t.length,n=0;n<r;n++)t+="0";return t}function parse3(e){if(!Array.isArray(e)){for(var t=[],r="",n=0;n<e.length;n++)n%2&&(r=e[n-1]+e[n],t.push(parseInt(r,16)),r="");return t}return e.map((function(e){return parseInt(e,16)}))}function bufferToString(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()}var MP4Parser=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"findBox",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=[];if(!t)return i;for(var o=0,a="",s=0;t.length>7;){if(o=readBig32(t),a=String.fromCharCode.apply(null,t.subarray(4,8)),s=8,1===o?(o=readBig64(t,8),s+=8):o||(o=t.length),!r[0]||a===r[0]){var c=t.subarray(0,o);if(!(r.length<2))return e.findBox(c.subarray(s),r.slice(1),n+s);i.push({start:n,size:o,headerSize:s,type:a,data:c})}n+=o,t=t.subarray(o)}return i}},{key:"tfhd",value:function(e){return parseBox(e,!0,(function(e,t){e.trackId=readBig32(t);var r=4,n=1&e.flags,i=2&e.flags,o=8&e.flags,a=16&e.flags,s=32&e.flags;n&&(r+=4,e.baseDataOffset=readBig32(t,r),r+=4),i&&(e.sampleDescriptionIndex=readBig32(t,r),r+=4),o&&(e.defaultSampleDuration=readBig32(t,r),r+=4),a&&(e.defaultSampleSize=readBig32(t,r),r+=4),s&&(e.defaultSampleFlags=readBig32(t,r))}))}},{key:"sidx",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;e.reference_ID=readBig32(t,r),r+=4,e.timescale=readBig32(t,r),r+=4,0===e.version?(e.earliest_presentation_time=readBig32(t,r),r+=4,e.first_offset=readBig32(t,r),r+=4):(e.earliest_presentation_time=readBig64(t,r),r+=8,e.first_offset=readBig64(t,r),r+=8),r+=2,e.references=[];var n=readBig16(t,r);r+=2;for(var i=0;i<n;i++){var o={};e.references.push(o);var a=readBig32(t,r);r+=4,o.reference_type=a>>31&1,o.referenced_size=2147483647&a,o.subsegment_duration=readBig32(t,r),a=readBig32(t,r+=4),r+=4,o.starts_with_SAP=a>>31&1,o.SAP_type=a>>28&7,o.SAP_delta_time=268435455&a}}))}},{key:"moov",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mvhd=e.mvhd(e.findBox(r,["mvhd"],n)[0]),t.trak=e.findBox(r,["trak"],n).map((function(t){return e.trak(t)})),t.pssh=e.pssh(e.findBox(r,["pssh"],n)[0])}))}},{key:"mvhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.timescale=readBig32(t,16),e.duration=readBig64(t,20),r+=28):(e.timescale=readBig32(t,8),e.duration=readBig32(t,12),r+=16),e.nextTrackId=readBig32(t,r+76)}))}},{key:"trak",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tkhd=e.tkhd(e.findBox(r,["tkhd"],n)[0]),t.mdia=e.mdia(e.findBox(r,["mdia"],n)[0])}))}},{key:"tkhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.trackId=readBig32(t,16),e.duration=readBig64(t,24),r+=32):(e.trackId=readBig32(t,8),e.duration=readBig32(t,16),r+=20),e.width=readBig32(t,r+52),e.height=readBig32(t,r+56)}))}},{key:"mdia",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mdhd=e.mdhd(e.findBox(r,["mdhd"],n)[0]),t.hdlr=e.hdlr(e.findBox(r,["hdlr"],n)[0]),t.minf=e.minf(e.findBox(r,["minf"],n)[0])}))}},{key:"mdhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.timescale=readBig32(t,16),e.duration=readBig64(t,20),r+=28):(e.timescale=readBig32(t,8),e.duration=readBig32(t,12),r+=16);var n=readBig16(t,r);e.language=String.fromCharCode(96+(n>>10&31),96+(n>>5&31),96+(31&n))}))}},{key:"hdlr",value:function(e){return parseBox(e,!0,(function(e,t){0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}},{key:"minf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.vmhd=e.vmhd(e.findBox(r,["vmhd"],n)[0]),t.smhd=e.smhd(e.findBox(r,["smhd"],n)[0]),t.stbl=e.stbl(e.findBox(r,["stbl"],n)[0])}))}},{key:"vmhd",value:function(e){return parseBox(e,!0,(function(e,t){e.graphicsmode=readBig16(t),e.opcolor=[readBig16(t,2),readBig16(t,4),readBig16(t,6)]}))}},{key:"smhd",value:function(e){return parseBox(e,!0,(function(e,t){e.balance=readBig16(t)}))}},{key:"stbl",value:function(t){return parseBox(t,!1,(function(t,r,n){t.stsd=e.stsd(e.findBox(r,["stsd"],n)[0]),t.stts=e.stts(e.findBox(r,["stts"],n)[0]),t.ctts=e.ctts(e.findBox(r,["ctts"],n)[0]),t.stsc=e.stsc(e.findBox(r,["stsc"],n)[0]),t.stsz=e.stsz(e.findBox(r,["stsz"],n)[0]),t.stco=e.stco(e.findBox(r,["stco"],n)[0]),t.stco||(t.co64=e.co64(e.findBox(r,["co64"],n)[0]),t.stco=t.co64),t.stss=e.stss(e.findBox(r,["stss"],n)[0]),t.senc=e.senc(e.findBox(r,["senc"],n)[0])}))}},{key:"senc",value:function(e){return parseBox(e,!0,(function(e,t){var r=0,n=readBig32(t,r);r+=4,e.samples=[];for(var i=0;i<n;i++){var o={};if(o.InitializationVector=[t[r],t[r+1],t[r+2],t[r+3],t[r+4],t[r+5],t[r+6],t[r+7]],r+=8,2&e.flags){o.subsamples=[];var a=readBig16(t,r);r+=2;for(var s=0;s<a;s++){var c={};c.BytesOfClearData=readBig16(t,r),r+=2,c.BytesOfProtectedData=readBig32(t,r),r+=4,o.subsamples.push(c)}}e.samples.push(o)}}))}},{key:"pssh",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=[],n=[],i=0,o=0;o<16;o++)n.push(toHex(t[i+o]));if(i+=16,e.version>0){var a=readBig32(t,i);i+=4;for(var s=0;s<(""+a).length;s++)for(var c=0;c<16;c++){var u=t[i];i+=1,r.push(toHex(u))}}var l=readBig32(t,i);e.data_size=l,i+=4,e.kid=r,e.system_id=n,e.buffer=t}))}},{key:"stsd",value:function(t){return parseBox(t,!0,(function(t,r,n){t.entryCount=readBig32(r),t.entries=e.findBox(r.subarray(4),[],n+4).map((function(t){switch(t.type){case"avc1":case"avc2":case"avc3":case"avc4":return e.avc1(t);case"hvc1":case"hev1":return e.hvc1(t);case"mp4a":return e.mp4a(t);case"alaw":case"ulaw":return e.alaw(t);case"enca":return parseBox(t,!1,(function(t,r,n){t.channelCount=readBig16(r,16),t.samplesize=readBig16(r,18),t.sampleRate=readBig32(r,24)/65536,r=r.subarray(28),t.sinf=e.sinf(e.findBox(r,["sinf"],n)[0]),t.esds=e.esds(e.findBox(r,["esds"],n)[0])}));case"encv":return parseBox(t,!1,(function(t,r,n){t.width=readBig16(r,24),t.height=readBig16(r,26),t.horizresolution=readBig32(r,28),t.vertresolution=readBig32(r,32),r=r.subarray(78),t.sinf=e.sinf(e.findBox(r,["sinf"],n)[0]),t.avcC=e.avcC(e.findBox(r,["avcC"],n)[0]),t.hvcC=e.hvcC(e.findBox(r,["hvcC"],n)[0]),t.pasp=e.pasp(e.findBox(r,["pasp"],n)[0])}))}})).filter(Boolean)}))}},{key:"tenc",value:function(e){return parseBox(e,!1,(function(e,t){var r=6;e.default_IsEncrypted=t[r],r+=1,e.default_IV_size=t[r],r+=1,e.default_KID=[];for(var n=0;n<16;n++)e.default_KID.push(toHex(t[r])),r+=1}))}},{key:"schi",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tenc=e.tenc(e.findBox(r,["tenc"],n)[0])}))}},{key:"sinf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.schi=e.schi(e.findBox(r,["schi"],n)[0]),t.frma=e.frma(e.findBox(r,["frma"],n)[0])}))}},{key:"frma",value:function(e){return parseBox(e,!1,(function(e,t){e.data_format="";for(var r=0;r<4;r++)e.data_format+=String.fromCharCode(t[r])}))}},{key:"avc1",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseVisualSampleEntry(t,r),o=r.subarray(i);n+=i,t.avcC=e.avcC(e.findBox(o,["avcC"],n)[0]),t.pasp=e.pasp(e.findBox(o,["pasp"],n)[0])}))}},{key:"avcC",value:function(e){return parseBox(e,!1,(function(e,t){e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=getAvcCodec([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];for(var r=6,n=0;n<e.spsLength;n++){var i=readBig16(t,r);r+=2,e.sps.push(t.subarray(r,r+i)),r+=i}e.ppsLength=t[r],r+=1,e.pps=[];for(var o=0;o<e.ppsLength;o++){var a=readBig16(t,r);r+=2,e.pps.push(t.subarray(r,r+=a)),r+=a}}))}},{key:"hvc1",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseVisualSampleEntry(t,r),o=r.subarray(i);n+=i,t.hvcC=e.hvcC(e.findBox(o,["hvcC"],n)[0]),t.pasp=e.pasp(e.findBox(o,["pasp"],n)[0])}))}},{key:"hvcC",value:function(e){return parseBox(e,!1,(function(t,r){t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=r[0];var n=r[1];t.generalProfileSpace=n>>6,t.generalTierFlag=(32&n)>>5,t.generalProfileIdc=31&n,t.generalProfileCompatibility=readBig32(r,2),t.generalConstraintIndicatorFlags=r.subarray(6,12),t.generalLevelIdc=r[12],t.avgFrameRate=readBig16(r,19),t.numOfArrays=r[22],t.vps=[],t.sps=[],t.pps=[];for(var i=23,o=0,a=0,s=0,c=0;c<t.numOfArrays;c++){o=63&r[i],a=readBig16(r,i+1),i+=3;for(var u,l=[],d=0;d<a;d++)s=readBig16(r,i),i+=2,l.push(r.subarray(i,i+s)),i+=s;if(32===o)(u=t.vps).push.apply(u,l);else if(33===o){var h;(h=t.sps).push.apply(h,l)}else if(34===o){var f;(f=t.pps).push.apply(f,l)}}}))}},{key:"pasp",value:function(e){return parseBox(e,!1,(function(e,t){e.hSpacing=readBig32(t),e.vSpacing=readBig32(t,4)}))}},{key:"mp4a",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseAudioSampleEntry(t,r);t.esds=e.esds(e.findBox(r.subarray(i),["esds"],n+i)[0])}))}},{key:"esds",value:function(e){return parseBox(e,!0,(function(e,t){e.codec="mp4a.";for(var r=0,n=0,i=0,o=0;t.length;){for(o=t[r=0],n=t[r+1],r+=2;128&n;)i=(127&n)<<7,n=t[r],r+=1;if(i+=127&n,3===o)t=t.subarray(r+3);else{if(4!==o){if(5===o){var a=e.config=t.subarray(r,r+i),s=(248&a[0])>>3;return 31===s&&a.length>=2&&(s=32+((7&a[0])<<3)+((224&a[1])>>5)),e.objectType=s,e.codec+=s.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[r].toString(16)+".").padStart(3,"0"),t=t.subarray(r+13)}}}))}},{key:"alaw",value:function(e){return parseBox(e,!1,(function(e,t){parseAudioSampleEntry(e,t)}))}},{key:"stts",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push({count:readBig32(t,i),delta:readBig32(t,i+4)}),i+=8;e.entryCount=r,e.entries=n}))}},{key:"ctts",value:function(e){return parseBox(e,!0,(function(e,t){var r=readBig32(t),n=[],i=4;if(1===e.version)for(var o=0;o<r;o++)n.push({count:readBig32(t,i),offset:readBig32(t,i+4)}),i+=8;else for(var a=0;a<r;a++)n.push({count:readBig32(t,i),offset:-(1+~readBig32(t,i+4))}),i+=8;e.entryCount=r,e.entries=n}))}},{key:"stsc",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push({firstChunk:readBig32(t,i),samplesPerChunk:readBig32(t,i+4),sampleDescriptionIndex:readBig32(t,i+8)}),i+=12;e.entryCount=r,e.entries=n}))}},{key:"stsz",value:function(e){return parseBox(e,!0,(function(e,t){var r=readBig32(t),n=readBig32(t,4),i=[];if(!r)for(var o=8,a=0;a<n;a++)i.push(readBig32(t,o)),o+=4;e.sampleSize=r,e.sampleCount=n,e.entrySizes=i}))}},{key:"stco",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig32(t,i)),i+=4;e.entryCount=r,e.entries=n}))}},{key:"co64",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig64(t,i)),i+=8;e.entryCount=r,e.entries=n}))}},{key:"stss",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig32(t,i)),i+=4;e.entryCount=r,e.entries=n}))}},{key:"moof",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mfhd=e.mfhd(e.findBox(r,["mfhd"],n)[0]),t.traf=e.findBox(r,["traf"],n).map((function(t){return e.traf(t)}))}))}},{key:"mfhd",value:function(e){return parseBox(e,!0,(function(e,t){e.sequenceNumber=readBig32(t)}))}},{key:"traf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tfhd=e.tfhd(e.findBox(r,["tfhd"],n)[0]),t.tfdt=e.tfdt(e.findBox(r,["tfdt"],n)[0]),t.trun=e.trun(e.findBox(r,["trun"],n)[0])}))}},{key:"trun",value:function(e){return parseBox(e,!0,(function(e,t){var r=e.version,n=e.flags,i=t.length,o=e.sampleCount=readBig32(t),a=4;if(i>a&&1&n&&(e.dataOffset=-(1+~readBig32(t,a)),a+=4),i>a&&4&n&&(e.firstSampleFlags=readBig32(t,a),a+=4),e.samples=[],i>a)for(var s,c=0;c<o;c++)s={},256&n&&(s.duration=readBig32(t,a),a+=4),512&n&&(s.size=readBig32(t,a),a+=4),1024&n&&(s.flags=readBig32(t,a),a+=4),2048&n&&(s.cts=r?-(1+~readBig32(t,a+4)):readBig32(t,a),a+=4),e.samples.push(s)}))}},{key:"tfdt",value:function(e){return parseBox(e,!0,(function(e,t){1===e.version?e.baseMediaDecodeTime=readBig64(t):e.baseMediaDecodeTime=readBig32(t)}))}},{key:"probe",value:function(t){return!!e.findBox(t,["ftyp"])}},{key:"parseSampleFlags",value:function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}},{key:"moovToTrack",value:function(e,t,r){var n,i,o=e.trak;if(o&&o.length){var a=o.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),s=o.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(a&&t){var c,u,l,d,h,f,p,y=t,m=null===(c=a.tkhd)||void 0===c?void 0:c.trackId;null!=m&&(y.id=a.tkhd.trackId),y.tkhdDuration=a.tkhd.duration,y.mvhdDurtion=e.mvhd.duration,y.mvhdTimecale=e.mvhd.timescale,y.timescale=y.formatTimescale=a.mdia.mdhd.timescale,y.duration=a.mdia.mdhd.duration||y.mvhdDurtion/y.mvhdTimecale*y.timescale;var g,v,b,_,$,A,E,T,S=a.mdia.minf.stbl.stsd.entries[0];if(y.width=S.width,y.height=S.height,S.pasp&&(y.sarRatio=[S.pasp.hSpacing,S.pasp.vSpacing]),S.hvcC)y.codecType=VideoCodecType.HEVC,y.codec=S.hvcC.codec,y.vps=S.hvcC.vps,y.sps=S.hvcC.sps,y.pps=S.hvcC.pps,y.hvcC=S.hvcC.data;else{if(!S.avcC)throw new Error("unknown video stsd entry");y.codec=S.avcC.codec,y.sps=S.avcC.sps,y.pps=S.avcC.pps}if(y.present=!0,y.ext={},y.ext.stss=null===(u=a.mdia)||void 0===u||null===(l=u.minf)||void 0===l||null===(d=l.stbl)||void 0===d?void 0:d.stss,y.ext.ctts=null===(h=a.mdia)||void 0===h||null===(f=h.minf)||void 0===f||null===(p=f.stbl)||void 0===p?void 0:p.ctts,S&&"encv"===S.type)y.isVideoEncryption=!0,S.default_KID=null===(g=S.sinf)||void 0===g||null===(v=g.schi)||void 0===v?void 0:v.tenc.default_KID,S.default_IsEncrypted=null===(b=S.sinf)||void 0===b||null===(_=b.schi)||void 0===_?void 0:_.tenc.default_IsEncrypted,S.default_IV_size=null===($=S.sinf)||void 0===$||null===(A=$.schi)||void 0===A?void 0:A.tenc.default_IV_size,y.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,S.data_format=null===(E=S.sinf)||void 0===E||null===(T=E.frma)||void 0===T?void 0:T.data_format,y.useEME=e.useEME,y.kidValue=e.kidValue,y.pssh=e.pssh,y.encv=S}if(s&&r){var I,w,R,P,O,C,k,x,L,D=r,M=null===(I=s.tkhd)||void 0===I?void 0:I.trackId;null!=M&&(D.id=s.tkhd.trackId),D.tkhdDuration=s.tkhd.duration,D.mvhdDurtion=e.mvhd.duration,D.mvhdTimecale=e.mvhd.timescale,D.timescale=D.formatTimescale=s.mdia.mdhd.timescale,D.duration=s.mdia.mdhd.duration||D.mvhdDurtion/D.mvhdTimecale*D.timescale;var N,G,V,U,Z,F,B,j,X=s.mdia.minf.stbl.stsd.entries[0];switch(D.sampleSize=X.sampleSize,D.sampleRate=X.sampleRate,D.channelCount=X.channelCount,D.present=!0,X.type){case"alaw":D.codecType=D.codec=AudioCodecType.G711PCMA,D.sampleRate=8e3;break;case"ulaw":D.codecType=D.codec=AudioCodecType.G711PCMU,D.sampleRate=8e3;break;default:D.sampleDuration=AAC.getFrameDuration(D.sampleRate,D.timescale),D.sampleRateIndex=AAC.getRateIndexByRate(D.sampleRate),D.objectType=(null===(n=X.esds)||void 0===n?void 0:n.objectType)||2,X.esds&&(D.config=Array.from(X.esds.config)),D.codec=(null===(i=X.esds)||void 0===i?void 0:i.codec)||"mp4a.40.2"}if(D.sampleDuration=AAC.getFrameDuration(D.sampleRate,D.timescale),D.objectType=(null===(w=X.esds)||void 0===w?void 0:w.objectType)||2,X.esds&&(X.esds.config?D.config=Array.from(X.esds.config):console.warn("esds config is null")),D.codec=(null===(R=X.esds)||void 0===R?void 0:R.codec)||"mp4a.40.2",D.sampleRateIndex=AAC.getRateIndexByRate(D.sampleRate),D.ext={},D.ext.stss=null===(P=s.mdia)||void 0===P||null===(O=P.minf)||void 0===O||null===(C=O.stbl)||void 0===C?void 0:C.stss,D.ext.ctts=null===(k=s.mdia)||void 0===k||null===(x=k.minf)||void 0===x||null===(L=x.stbl)||void 0===L?void 0:L.ctts,D.present=!0,X&&"enca"===X.type)D.isAudioEncryption=!0,X.data_format=null===(N=X.sinf)||void 0===N||null===(G=N.frma)||void 0===G?void 0:G.data_format,X.default_KID=null===(V=X.sinf)||void 0===V||null===(U=V.schi)||void 0===U?void 0:U.tenc.default_KID,X.default_IsEncrypted=null===(Z=X.sinf)||void 0===Z||null===(F=Z.schi)||void 0===F?void 0:F.tenc.default_IsEncrypted,X.default_IV_size=null===(B=X.sinf)||void 0===B||null===(j=B.schi)||void 0===j?void 0:j.tenc.default_IV_size,D.audioSenc=s.mdia.minf.stbl.senc&&s.mdia.minf.stbl.senc.samples,D.useEME=e.useEME,D.kidValue=e.kidValue,D.enca=X}if(r&&(r.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!r&&r.isAudioEncryption),null!=t&&t.encv||null!=r&&r.enca){var W,H,K=null==t||null===(W=t.encv)||void 0===W?void 0:W.default_KID,Y=null==r||null===(H=r.enca)||void 0===H?void 0:H.default_KID,z=K||Y?(K||Y).join(""):null;t&&(t.kid=z),r&&(r.kid=z)}return t&&(t.flags=3841),r&&(r.flags=1793),{videoTrack:t,audioTrack:r}}}},{key:"evaluateDefaultDuration",value:function(e,t,r){var n,i=null==t||null===(n=t.samples)||void 0===n?void 0:n.length;return i?1024*i/t.timescale*e.timescale/r:1024}},{key:"moofToSamples",value:function(t,r,n){var i={};return t.mfhd&&(r&&(r.sequenceNumber=t.mfhd.sequenceNumber),n&&(n.sequenceNumber=t.mfhd.sequenceNumber)),t.traf.forEach((function(t){var o=t.tfhd,a=t.tfdt,s=t.trun;if(o&&s){a&&(r&&r.id===o.trackId&&(r.baseMediaDecodeTime=a.baseMediaDecodeTime),n&&n.id===o.trackId&&(n.baseMediaDecodeTime=a.baseMediaDecodeTime));var c=o.defaultSampleSize||0,u=o.defaultSampleDuration||e.evaluateDefaultDuration(r,n,s.samples.length||s.sampleCount),l=s.dataOffset||0,d=0,h=-1;if(!s.samples.length&&s.sampleCount){i[o.trackId]=[];for(var f=0;f<s.sampleCount;f++)i[o.trackId].push({offset:l,dts:d,duration:u,size:c}),d+=u,l+=c}else i[o.trackId]=s.samples.map((function(e,t){return(e={offset:l,dts:d,pts:d+(e.cts||0),duration:e.duration||u,size:e.size||c,gopId:h,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(h++,e.gopId=h),d+=e.duration,l+=e.size,e}))}})),i}},{key:"moovToSamples",value:function(e){var t=e.trak;if(t&&t.length){var r=t.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),n=t.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(r||n){var i,o;if(r){var a,s,c=null===(a=r.mdia)||void 0===a||null===(s=a.minf)||void 0===s?void 0:s.stbl;if(!c)return;var u=c.stts,l=c.stsc,d=c.stsz,h=c.stco,f=c.stss,p=c.ctts;if(!(u&&l&&d&&h&&f))return;i=getSamples(u,l,d,h,p,f)}if(n){var y,m,g,v=null===(y=n.mdia)||void 0===y||null===(m=y.minf)||void 0===m?void 0:m.stbl;if(!v)return;var b=null===(g=n.mdia.mdhd)||void 0===g?void 0:g.timescale,_=v.stts,$=v.stsc,A=v.stsz,E=v.stco;if(!(b&&_&&$&&A&&E))return;o=getSamples(_,$,A,E)}return{videoSamples:i,audioSamples:o}}}}}]),e}();function getSamples(e,t,r,n,i,o){var a,s,c,u=[],l=null==i?void 0:i.entries,d=t.entries,h=n.entries,f=r.entrySizes,p=null==o?void 0:o.entries;p&&(a={},p.forEach((function(e){a[e-1]=!0}))),l&&(s=[],l.forEach((function(e){for(var t=e.count,r=e.offset,n=0;n<t;n++)s.push(r)})));var y=-1,m=0,g=0,v=0,b=0,_=0,$=d[0].samplesPerChunk,A=d[1]?d[1].firstChunk-1:1/0;return e.entries.forEach((function(e){for(var t=e.count,n=e.delta,i=0;i<t;i++)c={dts:m,duration:n,size:f[g]||r.sampleSize,offset:h[v]+_,index:g},p&&(c.keyframe=a[g],c.keyframe&&y++,c.gopId=y),s&&g<s.length&&(c.pts=c.dts+s[g]),u.push(c),m+=n,++g<$?_+=c.size:(v++,_=0,v>=A&&(b++,A=d[b+1]?d[b+1].firstChunk-1:1/0),$+=d[b].samplesPerChunk)})),u}function parseVisualSampleEntry(e,t){return e.dataReferenceIndex=readBig16(t,6),e.width=readBig16(t,24),e.height=readBig16(t,26),e.horizresolution=readBig32(t,28),e.vertresolution=readBig32(t,32),e.frameCount=readBig16(t,40),e.depth=readBig16(t,74),78}function parseAudioSampleEntry(e,t){return e.dataReferenceIndex=readBig16(t,6),e.channelCount=readBig16(t,16),e.sampleSize=readBig16(t,18),e.sampleRate=readBig32(t,24)/65536,28}function parseBox(e,t,r){if(e){if(e.size!==e.data.length)throw new Error("box ".concat(e.type," size !== data.length"));var n={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(n.version=e.data[e.headerSize],n.flags=readBig24(e.data,e.headerSize+1),n.headerSize+=4),r(n,e.data.subarray(n.headerSize),n.start+n.headerSize),n}}var padStart3=function(e,t,r){for(var n=String(r),i=t>>0,o=Math.ceil(i/n.length),a=[],s=String(e);o--;)a.push(n);return a.join("").substring(0,i-s.length)+s},toHex=function(){for(var e=[],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e.push(padStart3(Number(t).toString(16),2,0))})),e[0]},Buffer2=function(){function e(){_classCallCheck$3(this,e),this.buffer=new Uint8Array(0)}return _createClass$3(e,[{key:"write",value:function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];r.forEach((function(t){t?e.buffer=Concat(Uint8Array,e.buffer,t):window.console.warn(t)}))}}],[{key:"writeUint16",value:function(e){return new Uint8Array([e>>8&255,255&e])}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}]),e}(),UINT32_MAX=Math.pow(2,32)-1,MP4$1=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"box",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=8+(r=r.filter(Boolean)).reduce((function(e,t){return e+t.byteLength}),0),o=new Uint8Array(i);o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4);var a=8;return r.forEach((function(e){o.set(e,a),a+=e.byteLength})),o}},{key:"ftyp",value:function(t){return t.find((function(e){return e.type===TrackType.VIDEO&&e.codecType===VideoCodecType.HEVC}))?e.FTYPHEV1:e.FTYPAVC1}},{key:"initSegment",value:function(t){return concatUint8Array$1(e.ftyp(t),e.moov(t))}},{key:"pssh",value:function(t){var r=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],parse3(t.kid),[0,0,0,0]));return e.box(e.types.pssh,r)}},{key:"moov",value:function(t){if(t[0].useEME&&(t[0].encv||t[0].enca)){t[0].pssh||(t[0].pssh={kid:t[0].kid});var r=this.pssh(t[0].pssh);return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale),e.mvex(t)].concat(_toConsumableArray$2(t.map((function(t){return e.trak(t)}))),[r]))}return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale)].concat(_toConsumableArray$2(t.map((function(t){return e.trak(t)}))),[e.mvex(t)]))}},{key:"mvhd",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,t>>24&255,t>>16&255,t>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.tkhdDuration||0,t.width,t.height),e.mdia(t))}},{key:"tkhd",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,i>>8&255,255&i,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minf(t))}},{key:"mdhd",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,t>>24&255,t>>16&255,t>>8&255,255&t,85,196,0,0]))}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"minf",value:function(t){return e.box(e.types.minf,t.type===TrackType.VIDEO?e.VMHD:e.SMHD,e.DINF,e.stbl(t))}},{key:"stbl",value:function(t){var r=[];return t&&t.ext&&t.ext.stss&&r.push(e.stss(t.ext.stss.entries)),e.box(e.types.stbl,e.stsd(t),e.STTS,r[0],e.STSC,e.STSZ,e.STCO)}},{key:"stsd",value:function(t){var r;return r="audio"===t.type?t.useEME&&t.enca?e.enca(t):e.mp4a(t):t.useEME&&t.encv?e.encv(t):e.avc1hev1(t),e.box(e.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),r)}},{key:"enca",value:function(t){var r=t.enca.channelCount,n=t.enca.sampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,r,0,16,0,0,0,0,n>>8&255,255&n,0,0]),o=e.esds(t.config),a=e.sinf(t.enca);return e.box(e.types.enca,i,o,a)}},{key:"encv",value:function(t){var r,n,i=t.sps.length>0?t.sps[0]:[],o=t.pps.length>0?t.pps[0]:[],a=t.width,s=t.height,c=t.sarRatio[0],u=t.sarRatio[1],l=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a>>8&255,255&a,s>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),d=new Uint8Array((r=(n=[1,i[1],i[2],i[3],255,225,i.length>>>8&255,255&i.length]).concat.apply(n,_toConsumableArray$2(i)).concat([1,o.length>>>8&255,255&o.length])).concat.apply(r,_toConsumableArray$2(o))),h=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),f=e.sinf(t.encv),p=new Uint8Array([c>>24,c>>16&255,c>>8&255,255&c,u>>24,u>>16&255,u>>8&255,255&u]);return e.box(e.types.encv,l,e.box(e.types.avcC,d),e.box(e.types.btrt,h),f,e.box(e.types.pasp,p))}},{key:"schi",value:function(t){var r=new Uint8Array([]),n=e.tenc(t);return e.box(e.types.schi,r,n)}},{key:"tenc",value:function(t){var r=new Uint8Array([0,0,0,0,0,0,255&t.default_IsEncrypted,255&t.default_IV_size].concat(parse3(t.default_KID)));return e.box(e.types.tenc,r)}},{key:"sinf",value:function(t){var r=new Uint8Array([]),n=new Uint8Array([t.data_format.charCodeAt(0),t.data_format.charCodeAt(1),t.data_format.charCodeAt(2),t.data_format.charCodeAt(3)]),i=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),o=e.schi(t);return e.box(e.types.sinf,r,e.box(e.types.frma,n),e.box(e.types.schm,i),o)}},{key:"avc1hev1",value:function(t){var r=t.codecType===VideoCodecType.HEVC,n=r?e.types.hvc1:e.types.avc1,i=r?e.hvcC(t):e.avcC(t),o=[new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),i];return r?o.push(e.box(e.types.fiel,new Uint8Array([1,0]))):t.sarRatio&&t.sarRatio.length>1&&o.push(e.pasp(t.sarRatio)),e.box.apply(e,[n].concat(o))}},{key:"avcC",value:function(t){var r,n,i,o=[],a=[];return t.sps.forEach((function(e){i=e.byteLength,o.push(i>>>8&255),o.push(255&i),o.push.apply(o,_toConsumableArray$2(e))})),t.pps.forEach((function(e){i=e.byteLength,a.push(i>>>8&255),a.push(255&i),a.push.apply(a,_toConsumableArray$2(e))})),e.box(e.types.avcC,new Uint8Array((r=(n=[1,o[3],o[4],o[5],255,224|t.sps.length]).concat.apply(n,o).concat([t.pps.length])).concat.apply(r,a)))}},{key:"hvcC",value:function(t){var r=t.hvcC;if(r instanceof ArrayBuffer||r instanceof Uint8Array)return r;var n,i=t.vps,o=t.sps,a=t.pps;if(r){var s=r.generalProfileCompatibilityFlags,c=r.generalConstraintIndicatorFlags,u=(i.length&&1)+(o.length&&1)+(a.length&&1);n=[1,r.generalProfileSpace<<6|r.generalTierFlag<<5|r.generalProfileIdc,s>>>24,s>>>16,s>>>8,s,c[0],c[1],c[2],c[3],c[4],c[5],r.generalLevelIdc,240,0,252,252|r.chromaFormatIdc,248|r.bitDepthLumaMinus8,248|r.bitDepthChromaMinus8,0,0,r.numTemporalLayers<<3|r.temporalIdNested<<2|3,u];var l=function(e){var t;n.push(e.length>>8,e.length),(t=n).push.apply(t,_toConsumableArray$2(e))};i.length&&(n.push(160,0,i.length),i.forEach(l)),o.length&&(n.push(161,0,o.length),o.forEach(l)),a.length&&(n.push(162,0,a.length),a.forEach(l))}else n=[1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64];return e.box(e.types.hvcC,new Uint8Array(n))}},{key:"pasp",value:function(t){var r=_slicedToArray$1(t,2),n=r[0],i=r[1];return e.box(e.types.pasp,new Uint8Array([n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.sampleRate>>8&255,255&t.sampleRate,0,0]),t.config.length?e.esds(t.config):void 0)}},{key:"esds",value:function(t){var r=t.length;return e.box(e.types.esds,new Uint8Array([0,0,0,0,3,23+r,0,0,0,4,15+r,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([r]).concat(t).concat([6,1,2])))}},{key:"mvex",value:function(t){return e.box.apply(e,[e.types.mvex].concat(_toConsumableArray$2(t.map((function(t){return e.trex(t.id)})))))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trex1",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}},{key:"trex2",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}},{key:"moof",value:function(t){return e.box.apply(e,[e.types.moof,e.mfhd(t[0].samples?t[0].samples[0].gopId:0)].concat(_toConsumableArray$2(t.map((function(t){return e.traf(t)})))))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"traf",value:function(t){var r=e.tfhd(t.id),n=e.tfdt(t,t.baseMediaDecodeTime);if(t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)){if(t.isVideoEncryption){if(1===t.id){var i=e.saiz(t),o=e.saio(t),a=e.trun1(t),s=e.senc(t);return e.box(e.types.traf,r,n,i,o,a,s)}if(t.isAudioEncryption){var c=e.sbgp(),u=e.saiz(t),l=e.saio(t),d=e.senc(t),h=e.trun1(t);return e.box(e.types.traf,r,n,c,u,l,d,h)}var f=e.sbgp(),p=e.trun1(t);return e.box(e.types.traf,r,n,f,p)}if(1===t.id){var y=e.trun1(t);return e.box(e.types.traf,r,n,y)}var m=e.sbgp(),g=e.saiz(t),v=e.saio(t),b=e.senc(t),_=e.trun1(t);return e.box(e.types.traf,r,n,m,g,v,b,_)}var $=e.sdtp(t);return e.box(e.types.traf,r,n,$,e.trun(t.samples,$.byteLength+76))}},{key:"sdtp",value:function(t){var r=new Buffer2;return t.samples.forEach((function(e){r.write(new Uint8Array(1===t.id?[e.keyframe?32:16]:[16]))})),e.box(e.types.sdtp,this.extension(0,0),r.buffer)}},{key:"trun1",value:function(t){var r=new Buffer2,n=Buffer2.writeUint32(t.samples.length),i=null;if(1===t.id){var o=t.videoSencLength;i=Buffer2.writeUint32(16*t.samples.length+o+149),!t.isVideoEncryption&&t.isAudioEncryption&&(i=Buffer2.writeUint32(16*t.samples.length+92))}else{var a=12*t.samples.length+124;t.isAudioEncryption&&(a=12*t.samples.length+8*t.audioSenc.length+177),i=Buffer2.writeUint32(a)}return t.samples.forEach((function(e){r.write(Buffer2.writeUint32(e.duration)),r.write(Buffer2.writeUint32(e.size)),r.write(Buffer2.writeUint32(e.keyframe?33554432:65536)),1===t.id&&r.write(Buffer2.writeUint32(e.cts?e.cts:0))})),e.box(e.types.trun,this.extension(0,t.flags),n,i,r.buffer)}},{key:"senc",value:function(t){var r=new Buffer2,n=t.samples.length,i=1===t.id?16:8,o=1===t.id?2:0,a=[],s=0;return 1===t.id?(a=t.videoSenc,s=t.videoSencLength):a=t.audioSenc,s=s||i*n,r.write(Buffer2.writeUint32(16+s),e.types.senc,this.extension(0,o)),r.write(Buffer2.writeUint32(n)),a.forEach((function(e){for(var t=0;t<e.InitializationVector.length;t++)r.write(new Uint8Array([e.InitializationVector[t]]));e.subsamples&&e.subsamples.length&&(r.write(Buffer2.writeUint16(e.subsamples.length)),e.subsamples.forEach((function(e){r.write(Buffer2.writeUint16(e.BytesOfClearData)),r.write(Buffer2.writeUint32(e.BytesOfProtectedData))})))})),r.buffer}},{key:"saio",value:function(t){var r=12*t.samples.length+141;2===t.id&&t.isAudioEncryption&&(r=149);var n=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r]);return e.box(e.types.saio,n)}},{key:"saiz",value:function(t){var r=t.samples.length,n=new Uint8Array([0,0,0,0,16,r>>24&255,r>>16&255,r>>8&255,255&r]);return e.box(e.types.saiz,n)}},{key:"sbgp",value:function(){var t=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return e.box(e.types.sbgp,this.extension(0,0),t)}},{key:"extension",value:function(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}},{key:"tfhd",value:function(t){return e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"tfdt",value:function(t,r){var n=Math.floor(r/(UINT32_MAX+1)),i=Math.floor(r%(UINT32_MAX+1));return t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)?e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])):e.box(e.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"trun",value:function(t,r){var n=t.length,i=12+16*n;r+=8+i;var o=new Uint8Array(i);o.set([0,0,15,1,n>>>24&255,n>>>16&255,n>>>8&255,255&n,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0);for(var a=0;a<n;a++){var s=t[a],c=s.duration,u=s.size,l=s.flag,d=void 0===l?{}:l,h=s.cts,f=void 0===h?0:h;o.set([c>>>24&255,c>>>16&255,c>>>8&255,255&c,u>>>24&255,u>>>16&255,u>>>8&255,255&u,d.isLeading<<2|(null===d.dependsOn||void 0===d.dependsOn?1:d.dependsOn),d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|(null===d.isNonSyncSample||void 0===d.isNonSyncSample?1:d.isNonSyncSample),61440&d.degradationPriority,15&d.degradationPriority,f>>>24&255,f>>>16&255,f>>>8&255,255&f],12+16*a)}return e.box(e.types.trun,o)}},{key:"moovMP4",value:function(t){return e.box.apply(e,[e.types.moov,e.mvhd(t[0].duration,t[0].timescale)].concat(_toConsumableArray$2(t.map((function(t){return e.trackMP4(t)})))))}},{key:"trackMP4",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.duration,t.width,t.height),e.mdiaMP4(t))}},{key:"mdiaMP4",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minfMP4(t))}},{key:"minfMP4",value:function(t){return e.box(e.types.minf,t.type===TrackType.VIDEO?e.VMHD:e.SMHD,e.DINF,e.stblMP4(t))}},{key:"stblMP4",value:function(t){var r=t.ext,n=[e.stsd(t),e.stts(r.stts),e.stsc(r.stsc),e.stsz(r.stsz),e.stco(r.stco)];return r.stss.length&&n.push(e.stss(r.stss)),r.ctts.length&&n.push(e.ctts(r.ctts)),e.box.apply(e,[e.types.stbl].concat(n))}},{key:"stts",value:function(t){var r=t.length,n=new Uint8Array(8*r),i=0;return t.forEach((function(e){var t=e.value,r=e.count;n.set([r>>24,r>>16&255,r>>8&255,255&r,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.stts,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stsc",value:function(t){var r=t.length,n=new Uint8Array(12*r),i=0;return t.forEach((function(e){var t=e.firstChunk,r=e.samplesPerChunk,o=e.sampleDescIndex;n.set([t>>24,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o],i),i+=12})),e.box(e.types.stsc,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stsz",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stsz,concatUint8Array$1(new Uint8Array([0,0,0,0,0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stco",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stco,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stss",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stss,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"ctts",value:function(t){var r=t.length,n=new Uint8Array(8*r),i=0;return t.forEach((function(e){var t=e.value,r=e.count;n.set([r>>24,r>>16&255,r>>8&255,255&r,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.ctts,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"styp",value:function(){return e.box(e.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}},{key:"sidx",value:function(t){var r=t.timescale,n=t.samples[0].duration,i=n*t.samples.length,o=t.samples[0].sampleOffset*n,a=8;t.samples.forEach((function(e){a+=e.size}));var s=0;if(1===t.id){var c,u=0;t.videoSenc&&(c=t.videoSenc),1===t.id&&c.forEach((function(e){u+=8,e.subsamples&&e.subsamples.length&&(u+=2,u+=6*e.subsamples.length)})),t.videoSencLength=u,s=a+141+16*t.samples.length+u,t.useEME&&t.isAudioEncryption&&!t.isVideoEncryption&&(s=a+16*t.samples.length+84)}else s=a+116+12*t.samples.length,t.useEME&&t.isAudioEncryption&&(s=a+169+12*t.samples.length+8*t.audioSenc.length);var l=new Uint8Array([0,0,0,0,0,0,0,255&t.id,r>>24&255,r>>16&255,r>>8&255,255&r,o>>24&255,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,1,0,s>>16&255,s>>8&255,255&s,i>>24&255,i>>16&255,i>>8&255,255&i,144,0,0,0]);return e.box(e.types.sidx,l)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();_defineProperty$2(MP4$1,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp"].reduce((function(e,t){return e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e}),Object.create(null))),_defineProperty$2(MP4$1,"HDLR_TYPES",{video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])}),_defineProperty$2(MP4$1,"FTYPAVC1",MP4$1.box(MP4$1.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),_defineProperty$2(MP4$1,"FTYPHEV1",MP4$1.box(MP4$1.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),_defineProperty$2(MP4$1,"DINF",MP4$1.box(MP4$1.types.dinf,MP4$1.box(MP4$1.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),_defineProperty$2(MP4$1,"VMHD",MP4$1.box(MP4$1.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"SMHD",MP4$1.box(MP4$1.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),_defineProperty$2(MP4$1,"STTS",MP4$1.box(MP4$1.types.stts,MP4$1.StblTable)),_defineProperty$2(MP4$1,"STSC",MP4$1.box(MP4$1.types.stsc,MP4$1.StblTable)),_defineProperty$2(MP4$1,"STSZ",MP4$1.box(MP4$1.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"STCO",MP4$1.box(MP4$1.types.stco,MP4$1.StblTable));var Logger$1=function(){function e(t,r){_classCallCheck$3(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),e.disabled=r}return _createClass$3(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).debug.apply(t,[this._prefix].concat(n))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).log.apply(t,[this._prefix].concat(n))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).warn.apply(t,[this._prefix].concat(n))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).error.apply(t,[this._prefix].concat(n))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();_defineProperty$2(Logger$1,"disabled",!0);var FMP4Remuxer=function(){function e(t,r,n){_classCallCheck$3(this,e),this.videoTrack=t,this.audioTrack=r;var i=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=i&&Number(i[1])<50,this.log=new Logger$1("FMP4Remuxer",!n||!n.openLog||!n.openLog)}return _createClass$3(e,[{key:"remux",value:function(){var e,t,r,n,i,o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=this.videoTrack,c=this.audioTrack,u=s.exist(),l=c.exist(),d=[];return o&&(a&&a.initMerge?(u&&d.push(this.videoTrack),l&&d.push(this.audioTrack),r=MP4$1.initSegment(d)):(u&&(e=MP4$1.initSegment([this.videoTrack])),l&&(t=MP4$1.initSegment([this.audioTrack])))),u&&s.hasSample()&&(n=this._remuxVideo()),l&&c.hasSample()&&(i=this._remuxAudio()),s.samples=[],c.samples=[],{initSegment:r,videoInitSegment:e,audioInitSegment:t,videoSegment:n,audioSegment:i}}},{key:"_remuxVideo",value:function(){var e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});var t=e.samples,r=0;t.forEach((function(e){r+=e.units.reduce((function(e,t){return e+t.byteLength}),0),r+=4*e.units.length}));for(var n,i=new Uint8Array(r),o=new DataView(i.buffer),a=function(e,r,a,s){s=t[e];var c=0;s.units.forEach((function(e){o.setUint32(a,e.byteLength),a+=4,i.set(e,a),a+=e.byteLength,c+=4+e.byteLength})),s.size=c,u=a,n=s},s=0,c=t.length,u=0;s<c;s++)a(s,0,u,n);var l=MP4$1.mdat(i);return e.isVideoEncryption||e.isAudioEncryption?concatUint8Array$1(MP4$1.styp(),MP4$1.sidx(e),MP4$1.moof([e]),l):concatUint8Array$1(MP4$1.moof([e]),l)}},{key:"_remuxAudio",value:function(){var e=this.audioTrack,t=new Uint8Array(e.samples.reduce((function(e,t){return e+t.size}),0));e.samples.reduce((function(e,r){return t.set(r.data,e),e+r.size}),0);var r=MP4$1.mdat(t);return e.isVideoEncryption||e.isAudioEncryption?concatUint8Array$1(MP4$1.styp(),MP4$1.sidx(e),MP4$1.moof([e]),r):concatUint8Array$1(MP4$1.moof([e]),r)}},{key:"reset",value:function(){this.videoTrack.reset(),this.audioTrack.reset()}}]),e}(),Crypto={decryptWordArray:function(e,t,r){var n=Hex.parse(t),i=Hex.parse(formatIV(r)),o=WordArray.create(new Uint8Array(e)),a=AES.decrypt(CipherParams.create({ciphertext:o}),n,{iv:i,mode:CTR,padding:NoPadding});return Crypto.wordArrayToUint8Array(a)},wordArrayToUint8Array:function(e){for(var t=e.sigBytes,r=e.words,n=new Uint8Array(t),i=0,o=0;i!==t;){var a=r[o++];if(n[i++]=(4278190080&a)>>>24,i===t)break;if(n[i++]=(16711680&a)>>>16,i===t)break;if(n[i++]=(65280&a)>>>8,i===t)break;n[i++]=255&a}return n}},NEW_ARRAY_MAX_CNT=20,MP4Demuxer=function(){function e(t,r,n,i){var o=this;_classCallCheck$3(this,e),_defineProperty$2(this,"_videoSamples",[]),_defineProperty$2(this,"_audioSamples",[]),_defineProperty$2(this,"_lastRemainBuffer",[]),_defineProperty$2(this,"_lastRemainBufferStartPos",0),this.videoTrack=new VideoTrack,this.audioTrack=new AudioTrack,this.metadataTrack=n||new MetadataTrack,this.log=new Logger$1("MP4Demuxer",!i||!i.openLog||!i.openLog),t&&t.forEach((function(e){var t;(t=o._videoSamples).push.apply(t,_toConsumableArray$2(e.frames))})),r&&r.forEach((function(e){var t;(t=o._audioSamples).push.apply(t,_toConsumableArray$2(e.frames))}))}return _createClass$3(e,[{key:"parseSamples",value:function(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(MP4Parser.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){var t=MP4Parser.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}},{key:"demux",value:function(e,t,r,n,i){this.parseSamples(i);var o,a,s,c=this.videoTrack,u=this.audioTrack;if(c.samples=[],u.samples=[],r){for(var l,d=0,h=r[0],f=r[1];h<=f;h++){if(!(o=this._videoSamples[h]))throw new Error("cannot found video frame #".concat(h));s=o.offset-t,a=e.subarray(s,s+o.size),(l=new VideoSample(o.pts||o.dts,o.dts)).duration=o.duration,l.gopId=o.gopId,o.keyframe&&l.setToKeyframe();for(var p=0,y=a.length-1;p<y;)d=readBig32(a,p),p+=4,l.units.push(a.subarray(p,p+d)),p+=d;c.samples.push(l)}c.baseMediaDecodeTime=c.samples[0].dts}if(n){for(var m=n[0],g=n[1];m<=g;m++){if(!(o=this._audioSamples[m]))throw new Error("cannot found video frame #".concat(m));s=o.offset-t,a=e.subarray(s,s+o.size),u.samples.push(new AudioSample(o.dts,a,o.duration))}u.baseMediaDecodeTime=u.samples[0].dts}return{videoTrack:c,audioTrack:u,metadataTrack:this.metadataTrack}}},{key:"demuxPart",value:function(e,t,r,n,i,o,a){if(this.parseSamples(i),this.videoTrack.useEME=o,this.audioTrack.useEME=o,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength)for(var s=0;s<NEW_ARRAY_MAX_CNT;)try{var c=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),u=new Uint8Array(e.byteLength+c.byteLength);u.set(c,0),u.set(new Uint8Array(e),c.byteLength),e=u,t-=c.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(e){if(!(s<NEW_ARRAY_MAX_CNT))throw new Error("new Uint8Array error:,"+e.errorMessage);s++}var l,d,h,f=this.videoTrack,p=this.audioTrack;f.samples=[],p.samples=[],f.videoSenc=null,p.audioSenc=null;var y=0,m=0;if(this._videoSamples.length>0&&r.length>0){for(var g,v=e.byteLength+t,b=r[0];b<=r[1];b++){if(!(l=this._videoSamples[b]))throw new Error("cannot found video frame #".concat(b));l.offset>=t&&l.offset+l.size<=v&&(y=(h=l.offset-t)+l.size,d=e.subarray(h,y),(g=new VideoSample(l.pts||l.dts,l.dts)).duration=l.duration,g.gopId=l.gopId,g.sampleOffset=l.index,l.keyframe&&g.setToKeyframe(),g.data=d,g.size=l.size,f.samples.push(g))}f.samples.length>0&&(f.gopId=f.samples[0].gopId,f.baseMediaDecodeTime=f.samples[0].dts,f.startPts=f.samples[0].pts/f.timescale,f.endPts=f.samples[f.samples.length-1].pts/f.timescale,this.videoSenc&&(f.videoSenc=this.videoSenc.slice(f.samples[0].sampleOffset,f.samples[0].sampleOffset+f.samples.length),f.kidValue=a))}if(this._audioSamples.length>0&&n.length>0){for(var _=n[0];_<=n[1];_++){if(!(l=this._audioSamples[_]))throw new Error("cannot found video frame #".concat(_));l.offset>=t&&l.offset+l.size<=e.byteLength+t&&(m=(h=l.offset-t)+l.size,d=e.subarray(h,m),p.samples.push(new AudioSample(l.dts,d,l.duration,l.index)))}p.samples.length>0&&(p.gopId=p.samples[0].gopId||f.gopId,p.baseMediaDecodeTime=p.samples[0].dts,p.startPts=p.samples[0].pts/p.timescale,p.endPts=p.samples[p.samples.length-1].pts/p.timescale,this.audioSenc&&(p.audioSenc=this.audioSenc.slice(p.samples[0].sampleOffset,p.samples[0].sampleOffset+p.samples.length),p.kidValue=a))}this.decoderData(f,p);for(var $=0,A=0;A<f.samples.length;A++)for(var E=0,T=f.samples[A].data,S=T.length-1;E<S;)$=readBig32(T,E),E+=4,f.samples[A].units.push(T.subarray(E,E+$)),E+=$;return this._lastRemainBuffer=e.subarray(Math.max(y,m)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:f,audioTrack:p,metadataTrack:this.metadataTrack}}},{key:"reset",value:function(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}},{key:"decoderData",value:function(e,t){if(!e.useEME&&!t.useEME){if(e.videoSenc&&1===e.id){var r=e.kidValue,n=e.videoSenc;e.samples.forEach((function(t,i){var o=n[i],a=t.data,s=[],c=[],u=o.InitializationVector;if(o.subsamples&&o.subsamples.length)o.subsamples.forEach((function(e){var t=e.BytesOfClearData+e.BytesOfProtectedData,r=a.slice(0,t);s.push(r.slice(0,e.BytesOfClearData)),c.push(r.slice(e.BytesOfClearData)),a=a.slice(t)}));else{var l=t.size;s.push(a.slice(0,0)),c.push(a.slice(0,l)),a=a.slice(l)}var d=new Buffer2;d.write.apply(d,c);var h=Crypto.decryptWordArray(d.buffer,r,u),f=new Buffer2;s.forEach((function(e,t){var r=c[t].length,n=h.slice(0,r);f.write(e),f.write(n),h=h.slice(r)})),e.samples[i].data=f.buffer}))}if(t.audioSenc&&2===t.id){var i=t.kidValue,o=t.audioSenc;t.samples.forEach((function(e,r){var n=o[r],a=Crypto.decryptWordArray(e.data,i,n.InitializationVector);t.samples[r].data=a}))}}}}],[{key:"probe",value:function(e){return MP4Parser.probe(e)}}]),e}(),version="3.0.0-alpha.36-3",ERROR_CODES={416:-499899,401:-499898,403:-499897,404:-499896,timeout:-499895,"4xx":-499894,"5xx":-499893,networkError:-499892,contentError:-499891,mse:-499971,mseOpen:-499972,mseAppend:-499973,boxsError:-499980,moovError:-499981,notH264:-499982,mdatError:-499983,mdhdError:-499984,metaError:-499985,muxError:-499986,h265Error:-499987,noneURL:-499988,other:-499989,other1:-499990,waitTimeout:-499791,onWaitInBufferRange:-499792},ERROR_TYPES={network:1003,format:1005,runtime:1002,other:9999,demux:1006,remux:1007};function getErrorCodeByHttpCode(e){var t=0;switch(e){case 0:t=0;break;case-1:t=ERROR_CODES.networkError;break;case-2:t=ERROR_CODES.timeout;break;case-3:t=ERROR_CODES.contentError;break;default:t=e<500?ERROR_CODES[e]||e["4xx"]:ERROR_CODES[e]||e["5xx"]}return t}var NetWorkError=_createClass$6((function e(t,r,n){_classCallCheck$6(this,e);var i=0,o=0;n&&n.range&&n.range.length>1&&(i=n.range[0],o=n.range[1]);var a=getErrorCodeByHttpCode(r);return{errorCode:a,errorType:t,errorTypeCode:ERROR_TYPES[t],errorMessage:(null==n?void 0:n.httpText)||(null==n?void 0:n.message),url:null==n?void 0:n.url,httpCode:r,version:version,rangeStart:i,rangeEnd:o,ext:n,mediaError:{code:a,message:(null==n?void 0:n.httpText)||(null==n?void 0:n.message)}}})),ParserError=_createClass$6((function e(t,r,n){return _classCallCheck$6(this,e),{errorCode:r,errorType:t,errorTypeCode:ERROR_TYPES[t],version:version,errorMessage:n.msg,ext:n,mediaError:{code:r,message:n.msg}}})),$$s=_export$2,isArray$1=isArray$k;$$s({target:"Array",stat:!0},{isArray:isArray$1});var call$4=functionCall$2,fixRegExpWellKnownSymbolLogic$1=fixRegexpWellKnownSymbolLogic,anObject$4=anObject$N,isNullOrUndefined$3=isNullOrUndefined$m,toLength$2=toLength$k,toString$a=toString$E,requireObjectCoercible$3=requireObjectCoercible$m,getMethod$1=getMethod$e,advanceStringIndex$1=advanceStringIndex$3,regExpExec=regexpExecAbstract;fixRegExpWellKnownSymbolLogic$1("match",(function(e,t,r){return[function(t){var r=requireObjectCoercible$3(this),n=isNullOrUndefined$3(t)?void 0:getMethod$1(t,e);return n?call$4(n,t,r):new RegExp(t)[e](toString$a(r))},function(e){var n=anObject$4(this),i=toString$a(e),o=r(t,n,i);if(o.done)return o.value;if(!n.global)return regExpExec(n,i);var a=n.unicode;n.lastIndex=0;for(var s,c=[],u=0;null!==(s=regExpExec(n,i));){var l=toString$a(s[0]);c[u]=l,""===l&&(n.lastIndex=advanceStringIndex$1(i,toLength$2(n.lastIndex),a)),u++}return 0===u?null:c}]}));var util={};function ownKeys$1(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2$1(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$1(Object(r),!0).forEach((function(t){_defineProperty$1(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$1(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime$1(){_regeneratorRuntime$1=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function asyncGeneratorStep$1(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep$1(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep$1(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$2(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$2(e,t,r){return t&&_defineProperties$2(e.prototype,t),r&&_defineProperties$2(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$2(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$2(e,t)}function _getPrototypeOf$2(e){return(_getPrototypeOf$2=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$2(e,t){return(_setPrototypeOf$2=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$2(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _objectWithoutPropertiesLoose$1(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}function _objectWithoutProperties$1(e,t){if(null==e)return{};var r,n,i=_objectWithoutPropertiesLoose$1(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function _assertThisInitialized$2(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$2(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$2(e)}function _createSuper$2(e){var t=_isNativeReflectConstruct$2();return function(){var r,n=_getPrototypeOf$2(e);if(t){var i=_getPrototypeOf$2(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$2(this,r)}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray$2(e,t)||_nonIterableRest()}function _toConsumableArray$1(e){return _arrayWithoutHoles$1(e)||_iterableToArray$1(e)||_unsupportedIterableToArray$2(e)||_nonIterableSpread$1()}function _arrayWithoutHoles$1(e){if(Array.isArray(e))return _arrayLikeToArray$2(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArray$1(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw i}}return o}}function _unsupportedIterableToArray$2(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$2(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$2(e,t):void 0}}function _arrayLikeToArray$2(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$1(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ownKeys3(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys3(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys3(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime(){_regeneratorRuntime=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function _typeof$2(e){return(_typeof$2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function asyncGeneratorStep(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$1(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$1(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$1(e,t,r){return t&&_defineProperties$1(e.prototype,t),r&&_defineProperties$1(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$1(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$1(e,t)}function _getPrototypeOf$1(e){return(_getPrototypeOf$1=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$1(e,t){return(_setPrototypeOf$1=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$1(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _construct(e,t,r){return(_construct=_isNativeReflectConstruct$1()?Reflect.construct.bind():function(e,t,r){var n=[null];n.push.apply(n,t);var i=new(Function.bind.apply(e,n));return r&&_setPrototypeOf$1(i,r.prototype),i}).apply(null,arguments)}function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(e){if(null===e||!_isNativeFunction(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return _construct(e,arguments,_getPrototypeOf$1(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf$1(r,e)},_wrapNativeSuper(e)}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}function _objectWithoutProperties(e,t){if(null==e)return{};var r,n,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function _assertThisInitialized$1(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$1(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$1(e)}function _createSuper$1(e){var t=_isNativeReflectConstruct$1();return function(){var r,n=_getPrototypeOf$1(e);if(t){var i=_getPrototypeOf$1(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$1(this,r)}}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf$1(e)););return e}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=_superPropBase(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},_get.apply(this,arguments)}function _unsupportedIterableToArray$1(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$1(e,t):void 0}}function _arrayLikeToArray$1(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _createForOfIteratorHelper(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=_unsupportedIterableToArray$1(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function createPublicPromise(){var e,t,r=new Promise((function(r,n){e=r,t=n}));return r.used=!1,r.resolve=function(){return r.used=!0,e.apply(void 0,arguments)},r.reject=function(){return r.used=!0,t.apply(void 0,arguments)},r}function nowTime(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}util.findBox=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e.type!==t){if(e&&e.subBox){var n=e.subBox.filter((function(e){return e.type===t}));n.length?n.forEach((function(e){return r.push(e)})):e.subBox.forEach((function(e){return util.findBox(e,t,r)}))}}else r.push(e);return(r=[].concat(r)).length>1?r:r[0]},util.padStart=function(e,t,r){for(var n=String(r),i=t>>0,o=Math.ceil(i/n.length),a=[],s=String(e);o--;)a.push(n);return a.join("").substring(0,i-s.length)+s},util.toHex=function(){for(var e=[],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e.push(util.padStart(Number(t).toString(16),2,0))})),e},util.sum=function(){for(var e=0,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e+=t})),e},util.StringToArrayBuffer=function(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return t},util.fromHex=function(e){for(var t=new Uint8Array(e.length/2),r=0;r<e.length;r+=2)t[r/2]=window.parseInt(e.substr(r,2),16);return t},util.fromCharCode=function(e){for(var t="",r=0;r<e.length;r+=16e3){var n=e.subarray(r,r+16e3);t+=String.fromCharCode.apply(null,n)}return t},util.ArrayBufferToString=function(e){for(var t="",r=new Uint8Array(e),n=0;n<r.length;n++)t+=String.fromCharCode(r[n]);return t},util.Base64ToHex=function(e){for(var t=window.atob(e.replace(/-/g,"+").replace(/_/g,"/")),r="",n=0;n<t.length;n++)r+=("0"+t.charCodeAt(n).toString(16)).substr(-2);return r},util.toBase64=function(e,t){var r=util.fromCharCode(e);t=void 0===t||t;var n=window.btoa(r).replace(/\+/g,"-").replace(/\//g,"_");return t?n:n.replace(/=*$/,"")},util.toUTF8=function(e){for(var t=encodeURIComponent(e),r=unescape(t),n=new Uint8Array(r.length),i=0;i<r.length;++i)n[i]=r.charCodeAt(i);return n.buffer},util.bufferToString=function(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()},util.strToBuf=function(e){for(var t=[],r=0;r<e.length;r+=2)t.push(parseInt(e[r]+e[r+1],16));return new Uint8Array(t)},util.formatIV=function(e){var t="";if(e.forEach((function(e){t+=util.bufferToString(e)})),t.length<=32)for(var r=32-t.length,n=0;n<r;n++)t+="0";return t},util.str2hex=function(e){if(""===e)return"";for(var t=[],r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t},util.parse=function(e){if(!Array.isArray(e)){for(var t=[],r="",n=0;n<e.length;n++)n%2&&(r=e[n-1]+e[n],t.push(parseInt(r,16)),r="");return t}return e.map((function(e){return parseInt(e,16)}))},util.generateUniqueKey=function(e){var t=e.vid;e.start,e.end;var r=e.mediaType,n=e.definition;return e.preloadTime,r=r||"video",n=n||"0",t?"".concat(t,"#").concat(r,"#").concat(n,"#mp4"):null},util.validateFragment=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(e instanceof ArrayBuffer){try{if(2===t.length){var r=t[1]-t[0]+1;if(!(e.byteLength===r))return}}catch(e){return console.error(e),!1}return!0}return!1},util.typeOf=function(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]},util.getBufferSplits=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t-e-r<r/2||!t)return[[e,t]];for(var n=[];e<t;){var i=e+r;(i>t||t-i<r/2)&&(i=t),n.push([e,i]),e=i+1}return n},util.nowTime=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},util.extUrl=function(e,t){try{var r=e.indexOf("?");return r<0?Object.keys(t).map((function(r,n){e+=0===n?"?".concat(r,"=").concat(t[r]):"&".concat(r,"=").concat(t[r])})):Object.keys(t).map((function(n,i){r===e.length-1?e+="".concat(n,"=").concat(t[n]):e+="&".concat(n,"=").concat(t[n])})),e}catch(t){return e}},util.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(e){return 0}},util.hashVal=function(e){var t,r=0;if(0===e.length)return r;for(t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return r},util.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(e){return 0}},util.concatData=function(e,t){var r=[],n=0;e&&r.push(e),t&&r.push(t),r.every((function(e){return e&&(n+=e.byteLength),!0}));var i=new Uint8Array(n),o=0;return r.every((function(e){return e&&(i.set(e,o),o+=e.byteLength),!0})),i},util.getFragRange=function(e,t,r){var n=e<t.length?t[e]:null,i=e<r.length?r[e]:null,o=0,a=0;return e===t.length-1&&(o=-1),e===r.length-1&&(a=-1),[Math.min((null==n?void 0:n.range[0])||1/0,(null==i?void 0:i.range[0])||1/0),Math.max((null==n?void 0:n.range[1])+o||0,(null==i?void 0:i.range[1])+a||0)]};var Logger=function(){function e(t){_classCallCheck$1(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]")}return _createClass$1(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).debug.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).log.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).warn.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).error.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();_defineProperty(Logger,"disabled",!0);var LoaderType={FETCH:"fetch",XHR:"xhr"},ResponseType={ARRAY_BUFFER:"arraybuffer",TEXT:"text",JSON:"json"},NetError=function(e){_inherits$1(r,_wrapNativeSuper(Error));var t=_createSuper$1(r);function r(e,n,i,o){var a;return _classCallCheck$1(this,r),_defineProperty(_assertThisInitialized$1(a=t.call(this,o)),"retryCount",0),_defineProperty(_assertThisInitialized$1(a),"isTimeout",!1),_defineProperty(_assertThisInitialized$1(a),"loaderType",LoaderType.FETCH),_defineProperty(_assertThisInitialized$1(a),"startTime",0),_defineProperty(_assertThisInitialized$1(a),"endTime",0),a.url=e,a.request=n,a.response=i,a}return _createClass$1(r)}(),toString$9=Object.prototype.toString;function isObject$8(e){return null!==e&&"object"===_typeof$2(e)}function isPlainObject(e){if("[object Object]"!==toString$9.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function isDate(e){return"[object Date]"===toString$9.call(e)}function getRangeValue(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function encode(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function setUrlParams(e,t){if(e){if(!t)return e;var r,n=Object.keys(t).map((function(e){if(null!=(r=t[e]))return Array.isArray(r)?e+="[]":r=[r],r.map((function(t){return isDate(t)?t=t.toISOString():isObject$8(t)&&(t=JSON.stringify(t)),"".concat(encode(e),"=").concat(encode(t))})).join("&")})).filter(Boolean).join("&");if(n){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}}function createResponse(e,t,r,n,i,o,a,s,c,u,l){return i=null!=i?parseFloat(i):null,n=parseInt(n||"0",10),Number.isNaN(n)&&(n=0),{data:e,done:t,option:{range:c,vid:u,index:s,contentLength:n,age:i,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:l},response:r}}function calculateSpeed(e,t){return Math.round(8*e*1e3/t/1024)}var EVENT={ERROR:"error",TTFB:"core.ttfb",LOAD_START:"core.loadstart",LOAD_RESPONSE_HEADERS:"core.loadresponseheaders",LOAD_COMPLETE:"core.loadcomplete",LOAD_RETRY:"core.loadretry",SOURCEBUFFER_CREATED:"core.sourcebuffercreated",ANALYZE_DURATION_EXCEEDED:"core.analyzedurationexceeded",REMOVE_BUFFER:"core.removebuffer",BUFFEREOS:"core.buffereos",KEYFRAME:"core.keyframe",METADATA_PARSED:"core.metadataparsed",SEI:"core.sei",SEI_IN_TIME:"core.seiintime",FLV_SCRIPT_DATA:"core.flvscriptdata",LOWDECODE:"core.lowdecode",SWITCH_URL_SUCCESS:"core.switchurlsuccess",SWITCH_URL_FAILED:"core.switchurlfailed",SPEED:"core.speed",HLS_MANIFEST_LOADED:"core.hlsmanifestloaded",HLS_LEVEL_LOADED:"core.hlslevelloaded",STREAM_EXCEPTION:"core.streamexception",LARGE_AV_FIRST_FRAME_GAP_DETECT:"LARGE_AV_FIRST_FRAME_GAP_DETECT",LARGE_VIDEO_DTS_GAP_DETECT:"LARGE_VIDEO_DTS_GAP_DETECT",LARGE_AUDIO_DTS_GAP_DETECT:"LARGE_AUDIO_DTS_GAP_DETECT",AUDIO_GAP_DETECT:"AUDIO_GAP_DETECT",AUDIO_OVERLAP_DETECT:"AUDIO_OVERLAP_DETECT",MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT:"MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT",REAL_TIME_SPEED:"real_time_speed"},CACHESIZE=2097152,FetchLoader=function(e){_inherits$1(n,EventEmitter$1);var t,r=_createSuper$1(n);function n(){var e;return _classCallCheck$1(this,n),_defineProperty(_assertThisInitialized$1(e=r.call(this)),"_abortController",null),_defineProperty(_assertThisInitialized$1(e),"_timeoutTimer",null),_defineProperty(_assertThisInitialized$1(e),"_reader",null),_defineProperty(_assertThisInitialized$1(e),"_response",null),_defineProperty(_assertThisInitialized$1(e),"_aborted",!1),_defineProperty(_assertThisInitialized$1(e),"_index",-1),_defineProperty(_assertThisInitialized$1(e),"_range",null),_defineProperty(_assertThisInitialized$1(e),"_receivedLength",0),_defineProperty(_assertThisInitialized$1(e),"_running",!1),_defineProperty(_assertThisInitialized$1(e),"_logger",null),_defineProperty(_assertThisInitialized$1(e),"_vid",""),_defineProperty(_assertThisInitialized$1(e),"_onProcessMinLen",0),_defineProperty(_assertThisInitialized$1(e),"_onCancel",null),_defineProperty(_assertThisInitialized$1(e),"_priOptions",null),e}return _createClass$1(n,[{key:"load",value:function(e){var t,r=this,n=e.url,i=e.vid,o=e.timeout,a=e.responseType,s=e.onProgress,c=e.index,u=e.onTimeout,l=e.onCancel,d=e.range,h=e.transformResponse,f=e.request,p=e.params,y=e.logger,m=e.method,g=e.headers,v=e.body,b=e.mode,_=e.credentials,$=e.cache,A=e.redirect,E=e.referrer,T=e.referrerPolicy,S=e.onProcessMinLen,I=e.priOptions;this._logger=y,this._aborted=!1,this._onProcessMinLen=S,this._onCancel=l,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=c,this._range=d||[0,0],this._vid=i||n,this._priOptions=I||{};var w={method:m,headers:g,body:v,mode:b,credentials:_,cache:$,redirect:A,referrer:E,referrerPolicy:T,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},R=!1;clearTimeout(this._timeoutTimer),n=setUrlParams(n,p);var P=getRangeValue(d);P&&((g=f?f.headers:w.headers=w.headers||new Headers)instanceof Headers?g.append("Range",P):g.Range=P),o&&(this._timeoutTimer=setTimeout((function(){if(R=!0,r.cancel(),u){var e=new NetError(n,w,null,"timeout");e.isTimeout=!0,u(e,r._index)}}),o));var O=Date.now();return this._logger.debug("[fetch load start], index,",c,",range,",d),new Promise((function(e,t){fetch(f||n,f?void 0:w).then(function(){var i=_asyncToGenerator(_regeneratorRuntime().mark((function i(o){var u,l,f,p;return _regeneratorRuntime().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(r._timeoutTimer),r._response=o,!r._aborted&&r._running){i.next=4;break}return i.abrupt("return");case 4:if(h&&(o=h(o,n)||o),o.ok){i.next=7;break}throw new NetError(n,w,o,"bad network response");case 7:if(u=Date.now(),a!==ResponseType.TEXT){i.next=15;break}return i.next=11,o.text();case 11:l=i.sent,r._running=!1,i.next=37;break;case 15:if(a!==ResponseType.JSON){i.next=22;break}return i.next=18,o.json();case 18:l=i.sent,r._running=!1,i.next=37;break;case 22:if(!s){i.next=29;break}return r.resolve=e,r.reject=t,r._loadChunk(o,s,O,u),i.abrupt("return");case 29:return i.next=31,o.arrayBuffer();case 31:l=i.sent,l=new Uint8Array(l),r._running=!1,f=Date.now()-O,p=calculateSpeed(l.byteLength,f),r.emit(EVENT.REAL_TIME_SPEED,{speed:p});case 37:r._logger.debug("[fetch load end], index,",c,",range,",d),e(createResponse(l,!0,o,o.headers.get("Content-Length"),o.headers.get("age"),O,u,c,d,r._vid,r._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){clearTimeout(r._timeoutTimer),r._running=!1,r._aborted&&!R||((e=e instanceof NetError?e:new NetError(n,w,null,JSON.stringify(e))).startTime=O,e.endTime=Date.now(),e.isTimeout=R,t(e))}))}))}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel(this._index);case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,r,n){var i=this;if(!e.body||!e.body.getReader)return this._running=!1,void this.reject(NetError(e.url,"",e,"onProgress of bad response.body.getReader"));this._onProcessMinLen>0&&(this._cache=new Uint8Array(CACHESIZE),this._writeIdx=0);var o,a,s,c=this._reader=e.body.getReader(),u=function(){var l=_asyncToGenerator(_regeneratorRuntime().mark((function l(){var d,h,f,p,y,m;return _regeneratorRuntime().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return a=Date.now(),l.prev=1,l.next=4,c.read();case 4:o=l.sent,s=Date.now(),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),s=Date.now(),i._aborted||(i._running=!1,i.reject(l.t0)),l.abrupt("return");case 13:if(d=i._range[0]+i._receivedLength,!i._aborted){l.next=18;break}return i._running=!1,t(void 0,!1,{range:[d,d],vid:i._vid,index:i._index,startTime:a,endTime:s,priOptions:i._priOptions},e),l.abrupt("return");case 18:h=o.value?o.value.byteLength:0,i._receivedLength+=h,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",d,", end,",i._range[0]+i._receivedLength,", done,",o.done),i._onProcessMinLen>0?i._writeIdx+h>=i._onProcessMinLen||o.done?((f=new Uint8Array(i._writeIdx+h)).set(i._cache.slice(0,i._writeIdx),0),h>0&&f.set(o.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",o.done,",len,",f.byteLength,", writeIdx,",i._writeIdx)):h>0&&i._writeIdx+h<CACHESIZE?(i._cache.set(o.value,i._writeIdx),i._writeIdx+=h,i._logger.debug("【fetchLoader,onProgress cache】,len,",h,", writeIdx,",i._writeIdx)):h>0&&(p=new Uint8Array(i._writeIdx+h+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+h+2048,", datalen,",h,", writeIdx,",i._writeIdx),p.set(i._cache.slice(0,i._writeIdx),0),h>0&&p.set(o.value,i._writeIdx),i._writeIdx+=h,delete i._cache,i._cache=p,i._logger.debug("【fetchLoader,onProgress extra end】,len,",h,", writeIdx,",i._writeIdx)):f=o.value,(f&&f.byteLength>0||o.done)&&t(f,o.done,{range:[i._range[0]+i._receivedLength-(f?f.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:a,endTime:s,priOptions:i._priOptions},e),y=Date.now()-r,m=calculateSpeed(i._receivedLength,y),i.emit(EVENT.REAL_TIME_SPEED,{speed:m}),o.done?(i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",o.done),i.resolve(createResponse(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),a,n,i._index,i._range,i._vid,i._priOptions))):u();case 27:case"end":return l.stop()}}),l,null,[[1,8]])})));return function(){return l.apply(this,arguments)}}();u()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),n}();function getConfig$1(e){return _objectSpread2({loaderType:LoaderType.FETCH,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:ResponseType.TEXT,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}var XhrLoader=function(e){_inherits$1(r,EventEmitter$1);var t=_createSuper$1(r);function r(){var e;return _classCallCheck$1(this,r),_defineProperty(_assertThisInitialized$1(e=t.call(this)),"_xhr",null),_defineProperty(_assertThisInitialized$1(e),"_aborted",!1),_defineProperty(_assertThisInitialized$1(e),"_timeoutTimer",null),_defineProperty(_assertThisInitialized$1(e),"_range",null),_defineProperty(_assertThisInitialized$1(e),"_receivedLength",0),_defineProperty(_assertThisInitialized$1(e),"_url",null),_defineProperty(_assertThisInitialized$1(e),"_onProgress",null),_defineProperty(_assertThisInitialized$1(e),"_index",-1),_defineProperty(_assertThisInitialized$1(e),"_headers",null),_defineProperty(_assertThisInitialized$1(e),"_currentChunkSizeKB",384),_defineProperty(_assertThisInitialized$1(e),"_timeout",null),_defineProperty(_assertThisInitialized$1(e),"_xhr",null),_defineProperty(_assertThisInitialized$1(e),"_withCredentials",null),_defineProperty(_assertThisInitialized$1(e),"_startTime",-1),_defineProperty(_assertThisInitialized$1(e),"_loadCompleteResolve",null),_defineProperty(_assertThisInitialized$1(e),"_loadCompleteReject",null),_defineProperty(_assertThisInitialized$1(e),"_runing",!1),_defineProperty(_assertThisInitialized$1(e),"_logger",!1),_defineProperty(_assertThisInitialized$1(e),"_vid",""),_defineProperty(_assertThisInitialized$1(e),"_responseType",void 0),_defineProperty(_assertThisInitialized$1(e),"_credentials",void 0),_defineProperty(_assertThisInitialized$1(e),"_method",void 0),_defineProperty(_assertThisInitialized$1(e),"_transformResponse",void 0),_defineProperty(_assertThisInitialized$1(e),"_firstRtt",void 0),_defineProperty(_assertThisInitialized$1(e),"_subRangeStartTime",void 0),_defineProperty(_assertThisInitialized$1(e),"_onCancel",null),_defineProperty(_assertThisInitialized$1(e),"_priOptions",null),e}return _createClass$1(r,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range||[0,0],this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._credentials=e.credentials,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=setUrlParams(e.url,e.params);var r=Date.now();return new Promise((function(e,r){t._loadCompleteResolve=e,t._loadCompleteReject=r,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof NetError?e:new NetError(t._url,t._request)).startTime=r,e.endTime=Date.now(),e}))}},{key:"_startLoad",value:function(){var e=null;if(this._range&&this._range.length>1)if(this._onProgress){this._subRangeStartTime=Date.now(),this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,r=this._range[0]+this._receivedLength,n=this._range[1];t<this._range[1]-r&&(n=r+t),e=[r,n],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var r=this._xhr=new XMLHttpRequest;r.open(this._method||"GET",this._url,!0),r.responseType=this._responseType,this._timeout&&(r.timeout=this._timeout),r.withCredentials=this._credentials,r.onload=this._onLoad.bind(this),r.onreadystatechange=this._onReadyStatechange.bind(this),r.onerror=function(e){t._running=!1;var r=new NetError(t._url,t._request,{status:0},"onerror");t._loadCompleteReject(r)},r.ontimeout=function(e){t.cancel();var r=new NetError(t._url,t._request,{status:408},"timeout");t._onTimeout&&(r.isTimeout=!0,t._onTimeout(r,t._index)),t._loadCompleteReject(r)};var n=getRangeValue(e),i=null;n&&((i=this._headers||{}).Range=n),i&&Object.keys(i).forEach((function(e){r.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),r.send()}catch(e){this._loadCompleteReject(e)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t=e.target.status;if(t<200||t>299)return this._loadCompleteReject(new NetError(this._url,null,_objectSpread2(_objectSpread2({},e.target.response),{},{status:t}),"bad response,status:"+t));var r,n=null,i=!1;if(this._responseType===ResponseType.ARRAY_BUFFER){var o=new Uint8Array(e.target.response);if(r=this._range[0]+this._receivedLength,o&&o.byteLength>0){this._receivedLength+=o.byteLength;var a=Date.now()-this._subRangeStartTime,s=calculateSpeed(this._receivedLength,a);this.emit(EVENT.REAL_TIME_SPEED,{speed:s})}n=o,i=!(this._range.length>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",this._range[0]+this._receivedLength,",dataLen,",o?o.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",i)}else i=!0,n=e.target.response;var c={ok:t>=200&&t<300,status:t,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(c=this._transformResponse(c,this._url)||c),this._onProgress&&this._onProgress(n,i,{index:this._index,vid:this._vid,range:[r,this._range[0]+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},c),i?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(createResponse(this._onProgress?null:n,i,c,c.headers["content-length"],c.headers.age,this._startTime,-1,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,_get(_getPrototypeOf$1(r.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel(this._index),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,r={},n=_createForOfIteratorHelper(e.getAllResponseHeaders().trim().split("\r\n"));try{for(n.s();!(t=n.n()).done;){var i=t.value.split(": ");r[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(e){n.e(e)}finally{n.f()}return r}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),r}(),_excluded$1=["retry","retryDelay","onRetryError","transformError"],Task=function(){function e(t,r){_classCallCheck$1(this,e),this.promise=createPublicPromise(),this.alive=!!r.onProgress,!r.logger&&(r.logger=new Logger("Loader")),this._loaderType=t,this._loader=t===LoaderType.FETCH?new FetchLoader:new XhrLoader,this._config=r,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._logger=r.logger}var t;return _createClass$1(e,[{key:"exec",value:function(){var e=this,t=this._config,r=t.retry,n=t.retryDelay,i=t.onRetryError,o=t.transformError,a=_objectWithoutProperties(t,_excluded$1),s=function(){var t=_asyncToGenerator(_regeneratorRuntime().mark((function t(){var c,u;return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(a);case 3:c=t.sent,e.promise.resolve(c),t.next=28;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(!(t.t0.response&&t.t0.response.status>=400&&t.t0.response.status<=599)){t.next=16;break}return e.promise.reject(t.t0),t.abrupt("return");case 16:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,u=t.t0,o&&(u=o(u)||u),i&&e._retryCount>0&&i(u,e._retryCount,r),e._retryCount++,!(e._retryCount<=r)){t.next=27;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",a.range),e._retryTimer=setTimeout(s,n),t.abrupt("return");case 27:e.promise.reject(u);case 28:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return s(),this.promise}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function concatUint8Array(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if((t=t.filter(Boolean)).length<2)return t[0];var n=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){n.set(e,i),i+=e.byteLength})),n}function sleep(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var NetLoader=function(e){_inherits$1(n,EventEmitter$1);var t,r=_createSuper$1(n);function n(e){var t;return _classCallCheck$1(this,n),_defineProperty(_assertThisInitialized$1(t=r.call(this,e)),"type",LoaderType.FETCH),_defineProperty(_assertThisInitialized$1(t),"_queue",[]),_defineProperty(_assertThisInitialized$1(t),"_alive",[]),_defineProperty(_assertThisInitialized$1(t),"_currentTask",null),_defineProperty(_assertThisInitialized$1(t),"_config",void 0),t._config=getConfig$1(e),t._config.loaderType!==LoaderType.XHR&&FetchLoader.isSupported()||(t.type=LoaderType.XHR),t.log=e.logger,t}return _createClass$1(n,[{key:"isFetch",value:function(){return this.type===LoaderType.FETCH}},{key:"load",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?r=e:r.url=e||r.url||this._config.url,(r=Object.assign({},this._config,r)).params&&(r.params=Object.assign({},r.params)),r.headers&&isPlainObject(r.headers)&&(r.headers=Object.assign({},r.headers)),r.body&&isPlainObject(r.body)&&(r.body=Object.assign({},r.body)),r.transformRequest&&(r=r.transformRequest(r)||r),r.logger=this.log;var n=new Task(this.type,r);return n.loader.on(EVENT.REAL_TIME_SPEED,(function(e){t.emit(EVENT.REAL_TIME_SPEED,e)})),this._queue.push(n),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),n.promise}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){var t;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,sleep();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;this._currentTask=this._queue.shift(),this._currentTask&&(this._currentTask.alive&&this._alive.push(this._currentTask),this._currentTask.exec().catch((function(e){})).finally((function(){e._processTask()})))}}],[{key:"isFetchSupport",value:function(){return FetchLoader.isSupported()}}]),n}();function getConfig(e){return _objectSpread2$1({vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",cache:null},e)}var MediaError=_createClass$2((function e(t,r){_classCallCheck$2(this,e),this.type="file",this.message=t,this.data=r})),Cache=function(){function e(){_classCallCheck$2(this,e),_defineProperty$1(this,"_data",Object.create(null))}return _createClass$2(e,[{key:"set",value:function(e,t){this._data[e]=t}},{key:"get",value:function(e){return this._data[e]}},{key:"clear",value:function(){this._data=Object.create(null)}}]),e}();function moovToSegments(e,t){var r=e.trak;if(r&&r.length){var n=r.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),i=r.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(n||i){var o,a=[],s=[];if(n){var c,u,l,d=null===(c=n.mdia)||void 0===c||null===(u=c.minf)||void 0===u?void 0:u.stbl;if(!d)return;var h=null===(l=n.mdia.mdhd)||void 0===l?void 0:l.timescale,f=d.stts,p=d.stsc,y=d.stsz,m=d.stco,g=d.stss,v=d.ctts;if(!(h&&f&&p&&y&&m&&g))return;o=(a=getSegments(t,h,f,p,y,m,g,v)).map((function(e){return e.duration}))}if(i){var b,_,$,A=null===(b=i.mdia)||void 0===b||null===(_=b.minf)||void 0===_?void 0:_.stbl;if(!A)return;var E=null===($=i.mdia.mdhd)||void 0===$?void 0:$.timescale,T=A.stts,S=A.stsc,I=A.stsz,w=A.stco;if(!(E&&T&&S&&I&&w))return;s=getSegments(t,E,T,S,I,w,null,null,o)}return{videoSegments:a,audioSegments:s}}}}function getSegments(e,t,r,n,i,o,a,s,c){var u,l,d,h,f=[],p=[],y=[],m=n.entries,g=o.entries,v=i.entrySizes,b=null==a?void 0:a.entries,_=null==s?void 0:s.entries;_&&(u=[],_.forEach((function(e){for(var t=e.count,r=e.offset,n=0;n<t;n++)u.push(r)}))),b&&(l={},b.forEach((function(e){l[e-1]=!0})));var $=0,A=0,E=0,T=0,S=0,I=m[0].samplesPerChunk,w=m[1]?m[1].firstChunk-1:1/0,R=0,P=-1;r.entries.forEach((function(e){var t=e.count,r=e.delta;h=r;for(var n=0;n<t;n++)d={dts:R,startTime:$,duration:h,size:v[A]||i.sampleSize,offset:g[E]+S,index:A},b&&(d.keyframe=l[A],d.keyframe?(P++,p.push([d]),y.push(d.duration)):(p[p.length-1].push(d),y[p.length-1]+=d.duration),d.gopId=P),u&&A<u.length&&(d.pts=R+u[A]),0===A&&(d.pts=0),f.push(d),$+=h,R+=r,++A<I?S+=d.size:(E++,S=0,E>=w&&(T++,w=m[T+1]?m[T+1].firstChunk-1:1/0),I+=m[T].samplesPerChunk)}));var O=f.length;if(O&&(!a||f[0].keyframe)){var C,k=[],x=[],L=0,D=function(e){var r;C=x[x.length-1],k.push({index:k.length,startTime:(null===(r=k[k.length-1])||void 0===r?void 0:r.endTime)||x[0].startTime/t,endTime:(C.startTime+C.duration)/t,duration:e,range:[x[0].offset,C.offset+C.size],frames:x}),L=0,x=[]};if(a)for(var M=e*t,N=0,G=p.length;N<G;N++){var V;L+=y[N],(V=x).push.apply(V,_toConsumableArray$1(p[N])),N+1<G?(0===N||L>M)&&D(L/t):D(L/t)}else for(var U=(c=c||[])[0]||e,Z=0;Z<O;Z++)x.push(f[Z]),L+=f[Z].duration,(Z+1>=O||L/t>=U)&&(D(L/t),U=c[k.length]||e);return k}}function moovToMeta(e){var t="",r="",n=0,i=0,o=0,a=0,s=0,c=0,u=0;e.mvhd&&(s=e.mvhd.duration/e.mvhd.timescale);var l=e.trak;if(l){var d,h,f,p,y,m,g,v,b,_,$,A,E,T,S,I,w,R=l.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),P=l.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),O=null;if(R)if(O=null===(h=R.mdia)||void 0===h||null===(f=h.minf)||void 0===f||null===(p=f.stbl)||void 0===p?void 0:p.stsd.entries[0])if(n=O.width,i=O.height,c=null===(y=R.mdia)||void 0===y||null===(m=y.mdhd)||void 0===m?void 0:m.timescale,t=null===(g=O.avcC||O.hvcC)||void 0===g?void 0:g.codec,"encv"===O.type)d=null===(v=O.sinf)||void 0===v||null===(b=v.schi)||void 0===b?void 0:b.tenc.default_KID;if(P)if(O=null===(_=P.mdia)||void 0===_||null===($=_.minf)||void 0===$||null===(A=$.stbl)||void 0===A?void 0:A.stsd.entries[0])if(o=O.channelCount,a=O.sampleRate,r=null===(E=O.esds)||void 0===E?void 0:E.codec,u=null===(T=P.mdia)||void 0===T||null===(S=T.mdhd)||void 0===S?void 0:S.timescale,"enca"===O.type)d=d||(null===(I=O.sinf)||void 0===I||null===(w=I.schi)||void 0===w?void 0:w.tenc.default_KID);return{kid:d?d.join(""):null,videoCodec:t,audioCodec:r,width:n,height:i,videoTimescale:c,audioChannelCount:o,audioSampleRate:a,duration:s,audioTimescale:u,moov:e}}}function isNumber(e){return"number"==typeof e&&!Number.isNaN(e)}var _excluded=["vid","cache"],MP4Loader=function(e){_inherits$2(f,EventEmitter$1);var t,r,n,i,o,a,s,c,u,l,d,h=_createSuper$2(f);function f(e){var t;_classCallCheck$2(this,f),_defineProperty$1(_assertThisInitialized$2(t=h.call(this)),"vid",""),_defineProperty$1(_assertThisInitialized$2(t),"url",""),_defineProperty$1(_assertThisInitialized$2(t),"meta",{}),_defineProperty$1(_assertThisInitialized$2(t),"downloadInfo",[]),_defineProperty$1(_assertThisInitialized$2(t),"videoSegments",[]),_defineProperty$1(_assertThisInitialized$2(t),"audioSegments",[]),_defineProperty$1(_assertThisInitialized$2(t),"cache",null),_defineProperty$1(_assertThisInitialized$2(t),"_currentSegmentIndex",-1),_defineProperty$1(_assertThisInitialized$2(t),"_currentLoadingSegmentIndex",-1),_defineProperty$1(_assertThisInitialized$2(t),"buffer",void 0),_defineProperty$1(_assertThisInitialized$2(t),"_error",void 0),_defineProperty$1(_assertThisInitialized$2(t),"_transformError",(function(e){return e})),t._config=getConfig(e);var r=t._config,n=r.vid,i=r.cache,o=_objectWithoutProperties$1(r,_excluded);return t.cache=i||new Cache,t.vid=n||o.url,t.url=o.url,o.transformError=t._transformError,t.logger=new Logger("MP4Loader_"+t.vid),e.openLog&&Logger.enable(),o.logger=t.logger,t._loader=new NetLoader(o),t._loader.on(EVENT.REAL_TIME_SPEED,(function(e){t.emit(EVENT.REAL_TIME_SPEED,e)})),t}return _createClass$2(f,[{key:"isMetaLoaded",get:function(){return this.videoSegments.length||this.audioSegments.length}},{key:"setCurrentSegment",value:function(e){isNumber(e)&&(this._currentSegmentIndex=e)}},{key:"isLastSegment",value:function(e){var t,r;return!!isNumber(e)&&e===((null===(t=this.videoSegments[this.videoSegments.length-1])||void 0===t?void 0:t.index)||(null===(r=this.audioSegments[this.audioSegments.length-1])||void 0===r?void 0:r.index)||0)}},{key:"isSegmentLoading",value:function(e){return e===this._currentLoadingSegmentIndex}},{key:"changeUrl",value:(d=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:t,n=o.length>2?o[2]:void 0,i=o.length>3?o[3]:void 0,e.next=5,this.reset(i);case 5:t&&(this.url=t),r&&(this.vid=r),n&&(this._config.moovEnd=n);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"getOrLoadMeta",value:(l=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(t);case 3:return e.abrupt("return",this.meta);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"loadMetaProcess",value:(u=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n,i){var o,a,s,c,u=this;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=_slicedToArray(r,2),a=o[0],s=o[1],this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[a,s]),c=function(){var e=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(r,o,c){var l,d,h,f,p,y,m,g;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u.meta&&null!=c&&c.range&&c.range.length>0&&c.range[1]>=s&&(o=!0,u.logger.debug("[loadMetaProcess],data done,setstate true,[",a,s,"]")),o&&null!=c&&c.range&&c.range.length>0&&c.range[1]<s&&(o=!1,u.logger.debug("[loadMetaProcess],data not done,setstate false,[",a,s,"]")),u.logger.debug("[loadMetaProcess],task,[",a,s,"], range,",c.range,",dataLen,",r?r.byteLength:void 0,", state,",o,",err,",u._error),!u._error&&r&&r.byteLength>0&&n(r,o,c),!u.meta.moov&&!u._error){e.next=6;break}return e.abrupt("return");case 6:if(!(r&&r.byteLength>0)){e.next=44;break}if(u.buffer=concatUint8Array(u.buffer,r),l=MP4Parser.findBox(u.buffer,["moov"])[0]){e.next=23;break}if(d=MP4Parser.findBox(u.buffer,["mdat"])[0],!o){e.next=23;break}if(d){e.next=18;break}return u._error=!0,n(null,o,c,{err:"cannot find moov or mdat box"}),e.abrupt("return");case 18:return h=d.start+d.size,e.next=21,u.loadData([h,""],t,i);case 21:(f=e.sent)&&(l=MP4Parser.findBox(f.data,["moov"])[0]);case 23:if(!(l&&o&&l.size>l.data.length)){e.next=27;break}return u.logger.debug("[loadMetaProcess],moov not all, range,",c.range[1],",dataLen,",u.buffer.byteLength,", state,",o),e.next=27,u.loadMetaProcess(t,[c.range[1],l.start+l.size-1],n);case 27:if(!(l&&l.size<=l.data.length)||u.meta.moov){e.next=44;break}if(p=MP4Parser.moov(l)){e.next=33;break}return u._error=!0,n(null,o,c,{err:"cannot parse moov box"}),e.abrupt("return");case 33:if(y=moovToSegments(p,u._config.segmentDuration)){e.next=38;break}return u._error=!0,n(null,o,c,{err:"cannot parse segments"}),e.abrupt("return");case 38:u.meta=moovToMeta(p),m=y.videoSegments,g=y.audioSegments,u.videoSegments=m,u.audioSegments=g,u.logger.debug("[loadMetaProcess] moov ok"),n(void 0,o,{meta:{meta:u.meta,videoSegments:m,audioSegments:g}});case 44:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),e.next=6,this.loadData([a,s||this._config.moovEnd],t,_objectSpread2$1({onProgress:c},i));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n){return u.apply(this,arguments)})},{key:"loadMeta",value:(c=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n){var i,o,a,s,c,u,l,d,h;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],this.logger.debug("[loadMeta start]"),e.next=4,this.loadData([0,r||this._config.moovEnd],t,n);case 4:if(o=e.sent){e.next=7;break}return e.abrupt("return");case 7:if(i.push(o),a=MP4Parser.findBox(o.data,["moov"])[0]){e.next=23;break}if(s=MP4Parser.findBox(o.data,["mdat"])[0]){e.next=13;break}throw new MediaError("cannot find moov or mdat box",o.data);case 13:return c=s.start+s.size,e.next=16,this.loadData([c],t,n);case 16:if(o=e.sent){e.next=19;break}return e.abrupt("return");case 19:if(i.push(o),a=MP4Parser.findBox(o.data,["moov"],c)[0]){e.next=23;break}throw new MediaError("cannot find moov box",o.data);case 23:if(!(a.size>a.data.length)){e.next=31;break}return e.next=26,this.loadData([o.data.length,a.start+a.size-1],t,n);case 26:if(o=e.sent){e.next=29;break}return e.abrupt("return");case 29:i.push(o),a.data=concatUint8Array(a.data,o.data);case 31:if(u=MP4Parser.moov(a)){e.next=34;break}throw new MediaError("cannot parse moov box",a.data);case 34:if(l=moovToSegments(u,this._config.segmentDuration)){e.next=37;break}throw new MediaError("cannot parse segments",a.data);case 37:return this.meta=moovToMeta(u),d=l.videoSegments,h=l.audioSegments,this.videoSegments=d,this.audioSegments=h,this.logger.debug("[load moov end!!!!!]"),e.abrupt("return",{meta:this.meta,videoSegments:d,audioSegments:h,responses:i});case 43:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return c.apply(this,arguments)})},{key:"getSegmentByTime",value:function(e){var t,r;return this.videoSegments.length?(t=this.videoSegments.find((function(t){return t.startTime<=e&&t.endTime>e})))&&(r=this.audioSegments[t.index]):r=this.audioSegments.find((function(t){return t.startTime<=e&&t.endTime>e})),{video:t,audio:r}}},{key:"loadSegmentByTime",value:(s=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r){var n,i,o,a,s,c=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(c.length>2&&void 0!==c[2])||c[2],i=c.length>3&&void 0!==c[3]?c[3]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta(r);case 5:return o=this.getSegmentByTime(t),a=o.video,s=o.audio,e.abrupt("return",this._loadSegment(a,s,r,n,i));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return s.apply(this,arguments)})},{key:"loadNextSegment",value:(a=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o,a=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=!(a.length>1&&void 0!==a[1])||a[1],n=a.length>2&&void 0!==a[2]?a[2]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta();case 5:return i=this.videoSegments[this._currentSegmentIndex+1],o=this.audioSegments[this._currentSegmentIndex+1],e.abrupt("return",this._loadSegment(i,o,t,r,n));case 8:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"preload",value:(o=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o,a,s,c,u=this;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(!0);case 3:if(t&&!(t<0)){e.next=5;break}return e.abrupt("return");case 5:if(r=this.getSegmentByTime(t),n=r.video,i=r.audio,o=Math.max((null==n?void 0:n.index)||0,(null==i?void 0:i.index)||0)){e.next=9;break}return e.abrupt("return");case 9:return a=this.videoSegments.slice(0,o),s=this.audioSegments.slice(0,o),c=function(){var e=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>o)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,u._loadSegment(a[t],s[t],!0,!1);case 4:return e.next=6,c(t+1);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=14,c(0);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"cancel",value:function(){return this._loader.cancel()}},{key:"reset",value:(i=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(){var t=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.length>0&&void 0!==t[0]&&t[0]){e.next=5;break}return this.logger.debug("[MP4loader reset func call loader.cancel]"),e.next=5,this._loader.cancel();case 5:this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1;case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"destroy",value:(n=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.reset();case 2:this.cache.clear();case 3:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"_loadSegment",value:(r=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n,i,o){var a,s;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||r){e.next=2;break}return e.abrupt("return");case 2:return a=(null==t?void 0:t.index)||(null==r?void 0:r.index)||0,this._currentLoadingSegmentIndex=a,e.prev=4,e.next=7,this.loadData([Math.min((null==t?void 0:t.range[0])||1/0,(null==r?void 0:r.range[0])||1/0),Math.max((null==t?void 0:t.range[1])||0,(null==r?void 0:r.range[1])||0)],n,o);case 7:s=e.sent;case 8:return e.prev=8,this._currentLoadingSegmentIndex=-1,e.finish(8);case 11:if(s){e.next=13;break}return e.abrupt("return");case 13:return i&&(this._currentSegmentIndex=a),s.video=t,s.audio=r,e.abrupt("return",s);case 17:case"end":return e.stop()}}),e,this,[[4,,8,11]])}))),function(e,t,n,i,o){return r.apply(this,arguments)})},{key:"loadData",value:(t=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n){var i,o,a;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._getCacheKey(t),e.next=3,this.cache.get(i);case 3:if(o=e.sent){e.next=10;break}return e.next=7,this._loader.load(this.url,_objectSpread2$1({range:t,vid:this.vid},n));case 7:a=e.sent,e.next=11;break;case 10:a={data:o,state:!0,options:{fromCache:!0,range:t,vid:this.vid}};case 11:if(a){e.next=13;break}return e.abrupt("return");case 13:return o||(a.data&&this.downloadInfo.push({startTime:a.startTime,endTime:a.endTime,size:a.data.byteLength,range:t}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),e.abrupt("return",a);case 16:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"_getCacheKey",value:function(e){return(this.vid||this.url)+":"+e}}]),f}(),isSupport=_isLocalStorageUsable(),openLog=checkOpenLog();function probeSupport(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}function checkIfLocalStorageThrows(){var e="_localstorage_support_test";try{return window.localStorage.setItem(e,!0),window.localStorage.removeItem(e),!1}catch(e){return!0}}function checkOpenLog(){if(isSupport)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function _isLocalStorageUsable(){return probeSupport()&&!checkIfLocalStorageThrows()}function log$2(e){for(var t,r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];openLog&&console.log&&(t=console).log.apply(t,["[logger]",util.nowTime(),e].concat(n))}var apply$1=functionApply$2,call$3=functionCall$2,uncurryThis$b=functionUncurryThis$2,fixRegExpWellKnownSymbolLogic=fixRegexpWellKnownSymbolLogic,anObject$3=anObject$N,isNullOrUndefined$2=isNullOrUndefined$m,isRegExp=isRegexp,requireObjectCoercible$2=requireObjectCoercible$m,speciesConstructor=speciesConstructor$9,advanceStringIndex=advanceStringIndex$3,toLength$1=toLength$k,toString$8=toString$E,getMethod=getMethod$e,arraySlice$1=arraySliceSimple$2,callRegExpExec=regexpExecAbstract,regexpExec=regexpExec$3,stickyHelpers=regexpStickyHelpers,fails$h=fails$1T,UNSUPPORTED_Y=stickyHelpers.UNSUPPORTED_Y,MAX_UINT32=4294967295,min$1=Math.min,$push=[].push,exec$1=uncurryThis$b(/./.exec),push$3=uncurryThis$b($push),stringSlice$4=uncurryThis$b("".slice),SPLIT_WORKS_WITH_OVERWRITTEN_EXEC=!fails$h((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));fixRegExpWellKnownSymbolLogic("split",(function(e,t,r){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var n=toString$8(requireObjectCoercible$2(this)),i=void 0===r?MAX_UINT32:r>>>0;if(0===i)return[];if(void 0===e)return[n];if(!isRegExp(e))return call$3(t,n,e,i);for(var o,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,d=new RegExp(e.source,u+"g");(o=call$3(regexpExec,d,n))&&!((a=d.lastIndex)>l&&(push$3(c,stringSlice$4(n,l,o.index)),o.length>1&&o.index<n.length&&apply$1($push,c,arraySlice$1(o,1)),s=o[0].length,l=a,c.length>=i));)d.lastIndex===o.index&&d.lastIndex++;return l===n.length?!s&&exec$1(d,"")||push$3(c,""):push$3(c,stringSlice$4(n,l)),c.length>i?arraySlice$1(c,0,i):c}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:call$3(t,this,e,r)}:t,[function(t,r){var i=requireObjectCoercible$2(this),o=isNullOrUndefined$2(t)?void 0:getMethod(t,e);return o?call$3(o,t,i,r):call$3(n,toString$8(i),t,r)},function(e,i){var o=anObject$3(this),a=toString$8(e),s=r(n,o,a,i,n!==t);if(s.done)return s.value;var c=speciesConstructor(o,RegExp),u=o.unicode,l=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(UNSUPPORTED_Y?"g":"y"),d=new c(UNSUPPORTED_Y?"^(?:"+o.source+")":o,l),h=void 0===i?MAX_UINT32:i>>>0;if(0===h)return[];if(0===a.length)return null===callRegExpExec(d,a)?[a]:[];for(var f=0,p=0,y=[];p<a.length;){d.lastIndex=UNSUPPORTED_Y?0:p;var m,g=callRegExpExec(d,UNSUPPORTED_Y?stringSlice$4(a,p):a);if(null===g||(m=min$1(toLength$1(d.lastIndex+(UNSUPPORTED_Y?p:0)),a.length))===f)p=advanceStringIndex(a,p,u);else{if(push$3(y,stringSlice$4(a,f,p)),y.length===h)return y;for(var v=1;v<=g.length-1;v++)if(push$3(y,g[v]),y.length===h)return y;p=f=m}}return push$3(y,stringSlice$4(a,f)),y}]}),!SPLIT_WORKS_WITH_OVERWRITTEN_EXEC,UNSUPPORTED_Y);var MONITOR_HEADERS={"x-cache":"x_cache","x-response-sinfo":"server_ip","x-response-cinfo":"x-response-cinfo"};function transformHeaders(e){var t={};return Object.keys(MONITOR_HEADERS).forEach((function(r){var n=MONITOR_HEADERS[r];e&&e.get&&e.get(r)&&(t[n]=e.get(r))})),t}var metaSizeConfig=[{range:[0,90],size:614400},{range:[90,120],size:1228800},{range:[120,Number.MAX_VALUE],size:2048e3}];function getMetaSize(e,t,r){var n=r>51200?Math.min(r,t):t;if(!e)return n;for(var i=0;i<metaSizeConfig.length;i++)if(e>=metaSizeConfig[i].range[0]&&e<metaSizeConfig[i].range[1]){n=Math.min(Math.max(n,metaSizeConfig[i].size),r>0?r:t);break}return n}var encodedJs="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3JdP2FyZ3VtZW50c1tyXTp7fTtyJTI/dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gcih0KXtyZXR1cm4ocj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIGUmJmkodC5wcm90b3R5cGUsZSksciYmaSh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gcyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZjKHQsZSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4odT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0pKHQpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4oYz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfWZ1bmN0aW9uIGYoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybihsPWYoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobixlKTt2YXIgaT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh0LG4pKTtyZXR1cm4gciYmYyhpLHIucHJvdG90eXBlKSxpfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGQodCxlKXtpZihlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGgodCl7dmFyIGU9ZigpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49dSh0KTtpZihlKXt2YXIgaT11KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsaSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBkKHRoaXMscil9fWZ1bmN0aW9uIHAodCxlKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmbnVsbCE9PSh0PXUodCkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gdigpe3JldHVybiB2PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1wKHQsZSk7aWYobil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpO3JldHVybiBpLmdldD9pLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz90OnIpOmkudmFsdWV9fSx2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5KHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fWZ1bmN0aW9uIG0odCxlLHIpe3JldHVybiBlJiZnKHQucHJvdG90eXBlLGUpLHImJmcodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGIodCxlLHIpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWZ1bmN0aW9uIHcodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1yKXJldHVybjt2YXIgbixpLGE9W10sbz0hMCxzPSExO3RyeXtmb3Iocj1yLmNhbGwodCk7IShvPShuPXIubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhZXx8YS5sZW5ndGghPT1lKTtvPSEwKTt9Y2F0Y2godSl7cz0hMCxpPXV9ZmluYWxseXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fXJldHVybiBhfSh0LGUpfHx4KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBrKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBBKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8eCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB4KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBBKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/QSh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gQSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufXZhciBTPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sXz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fSxUPV8oIm9iamVjdCI9PSgidW5kZWZpbmVkIj09dHlwZW9mIGdsb2JhbFRoaXM/InVuZGVmaW5lZCI6cihnbG9iYWxUaGlzKSkmJmdsb2JhbFRoaXMpfHxfKCJvYmplY3QiPT0oInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/InVuZGVmaW5lZCI6cih3aW5kb3cpKSYmd2luZG93KXx8Xygib2JqZWN0Ij09KCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZj8idW5kZWZpbmVkIjpyKHNlbGYpKSYmc2VsZil8fF8oIm9iamVjdCI9PXIoUykmJlMpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLEU9e30sST1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2goZSl7cmV0dXJuITB9fSxPPSFJKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksTT17fSxDPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixCPVImJiFDLmNhbGwoezE6Mn0sMSk7TS5mPUI/ZnVuY3Rpb24odCl7dmFyIGU9Uih0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTpDO3ZhciBQPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fSxVPXt9LnRvU3RyaW5nLEQ9ZnVuY3Rpb24odCl7cmV0dXJuIFUuY2FsbCh0KS5zbGljZSg4LC0xKX0sej1ELGo9IiIuc3BsaXQsTD1JKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09eih0KT9qLmNhbGwodCwiIik6T2JqZWN0KHQpfTpPYmplY3QsRj1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIit0KTtyZXR1cm4gdH0sTj1MLFY9RixIPWZ1bmN0aW9uKHQpe3JldHVybiBOKFYodCkpfSxZPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT09cih0KT9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH0sSz1ZLFc9ZnVuY3Rpb24odCxlKXtpZighSyh0KSlyZXR1cm4gdDt2YXIgcixuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhSyhuPXIuY2FsbCh0KSkpcmV0dXJuIG47aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9dC52YWx1ZU9mKSYmIUsobj1yLmNhbGwodCkpKXJldHVybiBuO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIUsobj1yLmNhbGwodCkpKXJldHVybiBuO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9LEc9RixxPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoRyh0KSl9LFg9cSwkPXt9Lmhhc093blByb3BlcnR5LFE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gJC5jYWxsKFgodCksZSl9LFo9WSxKPVQuZG9jdW1lbnQsdHQ9WihKKSYmWihKLmNyZWF0ZUVsZW1lbnQpLGV0PWZ1bmN0aW9uKHQpe3JldHVybiB0dD9KLmNyZWF0ZUVsZW1lbnQodCk6e319LHJ0PWV0LG50PSFPJiYhSSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHJ0KCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSksaXQ9TyxhdD1NLG90PVAsc3Q9SCx1dD1XLGN0PVEsZnQ9bnQsbHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtFLmY9aXQ/bHQ6ZnVuY3Rpb24odCxlKXtpZih0PXN0KHQpLGU9dXQoZSwhMCksZnQpdHJ5e3JldHVybiBsdCh0LGUpfWNhdGNoKHIpe31pZihjdCh0LGUpKXJldHVybiBvdCghYXQuZi5jYWxsKHQsZSksdFtlXSl9O3ZhciBkdD17fSxodD1ZLHB0PWZ1bmN0aW9uKHQpe2lmKCFodCh0KSl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpO3JldHVybiB0fSx2dD1PLHl0PW50LGd0PXB0LG10PVcsYnQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O2R0LmY9dnQ/YnQ6ZnVuY3Rpb24odCxlLHIpe2lmKGd0KHQpLGU9bXQoZSwhMCksZ3QocikseXQpdHJ5e3JldHVybiBidCh0LGUscil9Y2F0Y2gobil7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gciYmKHRbZV09ci52YWx1ZSksdH07dmFyIHd0PWR0LGt0PVAseHQ9Tz9mdW5jdGlvbih0LGUscil7cmV0dXJuIHd0LmYodCxlLGt0KDEscikpfTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cix0fSxBdD17ZXhwb3J0czp7fX0sU3Q9VCxfdD14dCxUdD1mdW5jdGlvbih0LGUpe3RyeXtfdChTdCx0LGUpfWNhdGNoKHIpe1N0W3RdPWV9cmV0dXJuIGV9LEV0PVR0LEl0PSJfX2NvcmUtanNfc2hhcmVkX18iLE90PVRbSXRdfHxFdChJdCx7fSksTXQ9T3QsQ3Q9RnVuY3Rpb24udG9TdHJpbmc7ImZ1bmN0aW9uIiE9dHlwZW9mIE10Lmluc3BlY3RTb3VyY2UmJihNdC5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBDdC5jYWxsKHQpfSk7dmFyIFJ0PU10Lmluc3BlY3RTb3VyY2UsQnQ9UnQsUHQ9VC5XZWFrTWFwLFV0PSJmdW5jdGlvbiI9PXR5cGVvZiBQdCYmL25hdGl2ZSBjb2RlLy50ZXN0KEJ0KFB0KSksRHQ9e2V4cG9ydHM6e319LHp0PU90OyhEdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0W3RdfHwoenRbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMTIuMSIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSk7dmFyIGp0LEx0LEZ0LE50PTAsVnQ9TWF0aC5yYW5kb20oKSxIdD1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIrU3RyaW5nKHZvaWQgMD09PXQ/IiI6dCkrIilfIisoKytOdCtWdCkudG9TdHJpbmcoMzYpfSxZdD1EdC5leHBvcnRzLEt0PUh0LFd0PVl0KCJrZXlzIiksR3Q9ZnVuY3Rpb24odCl7cmV0dXJuIFd0W3RdfHwoV3RbdF09S3QodCkpfSxxdD17fSxYdD1VdCwkdD1ZLFF0PXh0LFp0PVEsSnQ9T3QsdGU9R3QsZWU9cXQscmU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixuZT1ULldlYWtNYXA7aWYoWHR8fEp0LnN0YXRlKXt2YXIgaWU9SnQuc3RhdGV8fChKdC5zdGF0ZT1uZXcgbmUpLGFlPWllLmdldCxvZT1pZS5oYXMsc2U9aWUuc2V0O2p0PWZ1bmN0aW9uKHQsZSl7aWYob2UuY2FsbChpZSx0KSl0aHJvdyBuZXcgVHlwZUVycm9yKHJlKTtyZXR1cm4gZS5mYWNhZGU9dCxzZS5jYWxsKGllLHQsZSksZX0sTHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFlLmNhbGwoaWUsdCl8fHt9fSxGdD1mdW5jdGlvbih0KXtyZXR1cm4gb2UuY2FsbChpZSx0KX19ZWxzZXt2YXIgdWU9dGUoInN0YXRlIik7ZWVbdWVdPSEwLGp0PWZ1bmN0aW9uKHQsZSl7aWYoWnQodCx1ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihyZSk7cmV0dXJuIGUuZmFjYWRlPXQsUXQodCx1ZSxlKSxlfSxMdD1mdW5jdGlvbih0KXtyZXR1cm4gWnQodCx1ZSk/dFt1ZV06e319LEZ0PWZ1bmN0aW9uKHQpe3JldHVybiBadCh0LHVlKX19dmFyIGNlPXtzZXQ6anQsZ2V0Okx0LGhhczpGdCxlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiBGdCh0KT9MdCh0KTpqdCh0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcjtpZighJHQoZSl8fChyPUx0KGUpKS50eXBlIT09dCl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIit0KyIgcmVxdWlyZWQiKTtyZXR1cm4gcn19fSxmZT1ULGxlPXh0LGRlPVEsaGU9VHQscGU9UnQsdmU9Y2UuZ2V0LHllPWNlLmVuZm9yY2UsZ2U9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhBdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGE9ISFuJiYhIW4udW5zYWZlLG89ISFuJiYhIW4uZW51bWVyYWJsZSxzPSEhbiYmISFuLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiByJiYoInN0cmluZyIhPXR5cGVvZiBlfHxkZShyLCJuYW1lIil8fGxlKHIsIm5hbWUiLGUpLChpPXllKHIpKS5zb3VyY2V8fChpLnNvdXJjZT1nZS5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSkpLHQhPT1mZT8oYT8hcyYmdFtlXSYmKG89ITApOmRlbGV0ZSB0W2VdLG8/dFtlXT1yOmxlKHQsZSxyKSk6bz90W2VdPXI6aGUoZSxyKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ2ZSh0aGlzKS5zb3VyY2V8fHBlKHRoaXMpfSkpO3ZhciBtZT1ULGJlPVQsd2U9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDB9LGtlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj93ZShtZVt0XSl8fHdlKGJlW3RdKTptZVt0XSYmbWVbdF1bZV18fGJlW3RdJiZiZVt0XVtlXX0seGU9e30sQWU9TWF0aC5jZWlsLFNlPU1hdGguZmxvb3IsX2U9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9TZTpBZSkodCl9LFRlPV9lLEVlPU1hdGgubWluLEllPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/RWUoVGUodCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sT2U9X2UsTWU9TWF0aC5tYXgsQ2U9TWF0aC5taW4sUmU9ZnVuY3Rpb24odCxlKXt2YXIgcj1PZSh0KTtyZXR1cm4gcjwwP01lKHIrZSwwKTpDZShyLGUpfSxCZT1ILFBlPUllLFVlPVJlLERlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7dmFyIGksYT1CZShlKSxvPVBlKGEubGVuZ3RoKSxzPVVlKG4sbyk7aWYodCYmciE9cil7Zm9yKDtvPnM7KWlmKChpPWFbcysrXSkhPWkpcmV0dXJuITB9ZWxzZSBmb3IoO28+cztzKyspaWYoKHR8fHMgaW4gYSkmJmFbc109PT1yKXJldHVybiB0fHxzfHwwO3JldHVybiF0JiYtMX19LHplPXtpbmNsdWRlczpEZSghMCksaW5kZXhPZjpEZSghMSl9LGplPVEsTGU9SCxGZT16ZS5pbmRleE9mLE5lPXF0LFZlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1MZSh0KSxpPTAsYT1bXTtmb3IociBpbiBuKSFqZShOZSxyKSYmamUobixyKSYmYS5wdXNoKHIpO2Zvcig7ZS5sZW5ndGg+aTspamUobixyPWVbaSsrXSkmJih+RmUoYSxyKXx8YS5wdXNoKHIpKTtyZXR1cm4gYX0sSGU9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxZZT1WZSxLZT1IZS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3hlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiBZZSh0LEtlKX07dmFyIFdlPXt9O1dlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgR2UscWUsWGU9eGUsJGU9V2UsUWU9cHQsWmU9a2UoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPVhlLmYoUWUodCkpLHI9JGUuZjtyZXR1cm4gcj9lLmNvbmNhdChyKHQpKTplfSxKZT1RLHRyPVplLGVyPUUscnI9ZHQsbnI9SSxpcj0vI3xcLnByb3RvdHlwZVwuLyxhcj1mdW5jdGlvbih0LGUpe3ZhciByPXNyW29yKHQpXTtyZXR1cm4gcj09Y3J8fHIhPXVyJiYoImZ1bmN0aW9uIj09dHlwZW9mIGU/bnIoZSk6ISFlKX0sb3I9YXIubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShpciwiLiIpLnRvTG93ZXJDYXNlKCl9LHNyPWFyLmRhdGE9e30sdXI9YXIuTkFUSVZFPSJOIixjcj1hci5QT0xZRklMTD0iUCIsZnI9YXIsbHI9VCxkcj1FLmYsaHI9eHQscHI9QXQuZXhwb3J0cyx2cj1UdCx5cj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10cihlKSxuPXJyLmYsaT1lci5mLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIG89clthXTtKZSh0LG8pfHxuKHQsbyxpKGUsbykpfX0sZ3I9ZnIsbXI9ZnVuY3Rpb24odCxlKXt2YXIgbixpLGEsbyxzLHU9dC50YXJnZXQsYz10Lmdsb2JhbCxmPXQuc3RhdDtpZihuPWM/bHI6Zj9sclt1XXx8dnIodSx7fSk6KGxyW3VdfHx7fSkucHJvdG90eXBlKWZvcihpIGluIGUpe2lmKG89ZVtpXSxhPXQubm9UYXJnZXRHZXQ/KHM9ZHIobixpKSkmJnMudmFsdWU6bltpXSwhZ3IoYz9pOnUrKGY/Ii4iOiIjIikraSx0LmZvcmNlZCkmJnZvaWQgMCE9PWEpe2lmKHIobyk9PT1yKGEpKWNvbnRpbnVlO3lyKG8sYSl9KHQuc2hhbXx8YSYmYS5zaGFtKSYmaHIobywic2hhbSIsITApLHByKG4saSxvLHQpfX0sYnI9RCx3cj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1icih0KX0sa3I9Vyx4cj1kdCxBcj1QLFNyPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1rcihlKTtuIGluIHQ/eHIuZih0LG4sQXIoMCxyKSk6dFtuXT1yfSxfcj1rZSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIiLFRyPV9yLEVyPVQucHJvY2VzcyxJcj1FciYmRXIudmVyc2lvbnMsT3I9SXImJklyLnY4O09yP3FlPShHZT1Pci5zcGxpdCgiLiIpKVswXTw0PzE6R2VbMF0rR2VbMV06VHImJighKEdlPVRyLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8R2VbMV0+PTc0KSYmKEdlPVRyLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocWU9R2VbMV0pO3ZhciBNcj1xZSYmK3FlLENyPU1yLFJyPUksQnI9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhUnIoKGZ1bmN0aW9uKCl7cmV0dXJuIVN0cmluZyhTeW1ib2woKSl8fCFTeW1ib2wuc2hhbSYmQ3ImJkNyPDQxfSkpLFByPUJyJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT1yKFN5bWJvbC5pdGVyYXRvciksVXI9VCxEcj1EdC5leHBvcnRzLHpyPVEsanI9SHQsTHI9QnIsRnI9UHIsTnI9RHIoIndrcyIpLFZyPVVyLlN5bWJvbCxIcj1Gcj9WcjpWciYmVnIud2l0aG91dFNldHRlcnx8anIsWXI9ZnVuY3Rpb24odCl7cmV0dXJuIHpyKE5yLHQpJiYoTHJ8fCJzdHJpbmciPT10eXBlb2YgTnJbdF0pfHwoTHImJnpyKFZyLHQpP05yW3RdPVZyW3RdOk5yW3RdPUhyKCJTeW1ib2wuIit0KSksTnJbdF19LEtyPVksV3I9d3IsR3I9WXIoInNwZWNpZXMiKSxxcj1mdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBXcih0KSYmKCJmdW5jdGlvbiIhPXR5cGVvZihyPXQuY29uc3RydWN0b3IpfHxyIT09QXJyYXkmJiFXcihyLnByb3RvdHlwZSk/S3IocikmJm51bGw9PT0ocj1yW0dyXSkmJihyPXZvaWQgMCk6cj12b2lkIDApLG5ldyh2b2lkIDA9PT1yP0FycmF5OnIpKDA9PT1lPzA6ZSl9LFhyPUksJHI9TXIsUXI9WXIoInNwZWNpZXMiKSxacj1mdW5jdGlvbih0KXtyZXR1cm4gJHI+PTUxfHwhWHIoKGZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuKGUuY29uc3RydWN0b3I9e30pW1FyXT1mdW5jdGlvbigpe3JldHVybntmb286MX19LDEhPT1lW3RdKEJvb2xlYW4pLmZvb30pKX0sSnI9bXIsdG49SSxlbj13cixybj1ZLG5uPXEsYW49SWUsb249U3Isc249cXIsdW49WnIsY249TXIsZm49WXIoImlzQ29uY2F0U3ByZWFkYWJsZSIpLGxuPTkwMDcxOTkyNTQ3NDA5OTEsZG49Ik1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIsaG49Y24+PTUxfHwhdG4oKGZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRbZm5dPSExLHQuY29uY2F0KClbMF0hPT10fSkpLHBuPXVuKCJjb25jYXQiKSx2bj1mdW5jdGlvbih0KXtpZighcm4odCkpcmV0dXJuITE7dmFyIGU9dFtmbl07cmV0dXJuIHZvaWQgMCE9PWU/ISFlOmVuKHQpfTtKcih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFobnx8IXBufSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbz1ubih0aGlzKSxzPXNuKG8sMCksdT0wO2ZvcihlPS0xLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKWlmKHZuKGE9LTE9PT1lP286YXJndW1lbnRzW2VdKSl7aWYodSsoaT1hbihhLmxlbmd0aCkpPmxuKXRocm93IFR5cGVFcnJvcihkbik7Zm9yKHI9MDtyPGk7cisrLHUrKylyIGluIGEmJm9uKHMsdSxhW3JdKX1lbHNle2lmKHU+PWxuKXRocm93IFR5cGVFcnJvcihkbik7b24ocyx1KyssYSl9cmV0dXJuIHMubGVuZ3RoPXUsc319KTt2YXIgeW49e307eW5bWXIoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgZ249IltvYmplY3Qgel0iPT09U3RyaW5nKHluKSxtbj1nbixibj1ELHduPVlyKCJ0b1N0cmluZ1RhZyIpLGtuPSJBcmd1bWVudHMiPT1ibihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLHhuPW1uP2JuOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihyPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHIpe319KGU9T2JqZWN0KHQpLHduKSk/cjprbj9ibihlKToiT2JqZWN0Ij09KG49Ym4oZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6bn0sQW49eG4sU249Z24/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK0FuKHRoaXMpKyJdIn0sX249Z24sVG49QXQuZXhwb3J0cyxFbj1Tbjtfbnx8VG4oT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLEVuLHt1bnNhZmU6ITB9KTt2YXIgSW49e0NTU1J1bGVMaXN0OjAsQ1NTU3R5bGVEZWNsYXJhdGlvbjowLENTU1ZhbHVlTGlzdDowLENsaWVudFJlY3RMaXN0OjAsRE9NUmVjdExpc3Q6MCxET01TdHJpbmdMaXN0OjAsRE9NVG9rZW5MaXN0OjEsRGF0YVRyYW5zZmVySXRlbUxpc3Q6MCxGaWxlTGlzdDowLEhUTUxBbGxDb2xsZWN0aW9uOjAsSFRNTENvbGxlY3Rpb246MCxIVE1MRm9ybUVsZW1lbnQ6MCxIVE1MU2VsZWN0RWxlbWVudDowLE1lZGlhTGlzdDowLE1pbWVUeXBlQXJyYXk6MCxOYW1lZE5vZGVNYXA6MCxOb2RlTGlzdDoxLFBhaW50UmVxdWVzdExpc3Q6MCxQbHVnaW46MCxQbHVnaW5BcnJheTowLFNWR0xlbmd0aExpc3Q6MCxTVkdOdW1iZXJMaXN0OjAsU1ZHUGF0aFNlZ0xpc3Q6MCxTVkdQb2ludExpc3Q6MCxTVkdTdHJpbmdMaXN0OjAsU1ZHVHJhbnNmb3JtTGlzdDowLFNvdXJjZUJ1ZmZlckxpc3Q6MCxTdHlsZVNoZWV0TGlzdDowLFRleHRUcmFja0N1ZUxpc3Q6MCxUZXh0VHJhY2tMaXN0OjAsVG91Y2hMaXN0OjB9LE9uPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcihTdHJpbmcodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiB0fSxNbj1PbixDbj1mdW5jdGlvbih0LGUscil7aWYoTW4odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwoZSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQuY2FsbChlLHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIHQuY2FsbChlLHIsbil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixuLGkpe3JldHVybiB0LmNhbGwoZSxyLG4saSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19LFJuPUNuLEJuPUwsUG49cSxVbj1JZSxEbj1xcix6bj1bXS5wdXNoLGpuPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PXQscj0yPT10LG49Mz09dCxpPTQ9PXQsYT02PT10LG89Nz09dCxzPTU9PXR8fGE7cmV0dXJuIGZ1bmN0aW9uKHUsYyxmLGwpe2Zvcih2YXIgZCxoLHA9UG4odSksdj1CbihwKSx5PVJuKGMsZiwzKSxnPVVuKHYubGVuZ3RoKSxtPTAsYj1sfHxEbix3PWU/Yih1LGcpOnJ8fG8/Yih1LDApOnZvaWQgMDtnPm07bSsrKWlmKChzfHxtIGluIHYpJiYoaD15KGQ9dlttXSxtLHApLHQpKWlmKGUpd1ttXT1oO2Vsc2UgaWYoaClzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gZDtjYXNlIDY6cmV0dXJuIG07Y2FzZSAyOnpuLmNhbGwodyxkKX1lbHNlIHN3aXRjaCh0KXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OnpuLmNhbGwodyxkKX1yZXR1cm4gYT8tMTpufHxpP2k6d319LExuPXtmb3JFYWNoOmpuKDApLG1hcDpqbigxKSxmaWx0ZXI6am4oMiksc29tZTpqbigzKSxldmVyeTpqbig0KSxmaW5kOmpuKDUpLGZpbmRJbmRleDpqbig2KSxmaWx0ZXJPdXQ6am4oNyl9LEZuPUksTm49ZnVuY3Rpb24odCxlKXt2YXIgcj1bXVt0XTtyZXR1cm4hIXImJkZuKChmdW5jdGlvbigpe3IuY2FsbChudWxsLGV8fGZ1bmN0aW9uKCl7dGhyb3cgMX0sMSl9KSl9LFZuPUxuLmZvckVhY2gsSG49Tm4oImZvckVhY2giKT9bXS5mb3JFYWNoOmZ1bmN0aW9uKHQpe3JldHVybiBWbih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxZbj1ULEtuPUluLFduPUhuLEduPXh0O2Zvcih2YXIgcW4gaW4gS24pe3ZhciBYbj1Zbltxbl0sJG49WG4mJlhuLnByb3RvdHlwZTtpZigkbiYmJG4uZm9yRWFjaCE9PVduKXRyeXtHbigkbiwiZm9yRWFjaCIsV24pfWNhdGNoKFN2KXskbi5mb3JFYWNoPVdufX12YXIgUW49TG4ubWFwO21yKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVpyKCJtYXAiKX0se21hcDpmdW5jdGlvbih0KXtyZXR1cm4gUW4odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgWm4sSm49VmUsdGk9SGUsZWk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBKbih0LHRpKX0scmk9ZHQsbmk9cHQsaWk9ZWksYWk9Tz9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe25pKHQpO2Zvcih2YXIgcixuPWlpKGUpLGk9bi5sZW5ndGgsYT0wO2k+YTspcmkuZih0LHI9blthKytdLGVbcl0pO3JldHVybiB0fSxvaT1rZSgiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKSxzaT1wdCx1aT1haSxjaT1IZSxmaT1xdCxsaT1vaSxkaT1ldCxoaT1HdCgiSUVfUFJPVE8iKSxwaT1mdW5jdGlvbigpe30sdmk9ZnVuY3Rpb24odCl7cmV0dXJuIjxzY3JpcHQ+Iit0KyI8LyIrInNjcmlwdD4ifSx5aT1mdW5jdGlvbigpe3RyeXtabj1kb2N1bWVudC5kb21haW4mJm5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKFN2KXt9dmFyIHQsZTt5aT1abj9mdW5jdGlvbih0KXt0LndyaXRlKHZpKCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9KFpuKTooKGU9ZGkoImlmcmFtZSIpKS5zdHlsZS5kaXNwbGF5PSJub25lIixsaS5hcHBlbmRDaGlsZChlKSxlLnNyYz1TdHJpbmcoImphdmFzY3JpcHQ6IiksKHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdC53cml0ZSh2aSgiZG9jdW1lbnQuRj1PYmplY3QiKSksdC5jbG9zZSgpLHQuRik7Zm9yKHZhciByPWNpLmxlbmd0aDtyLS07KWRlbGV0ZSB5aS5wcm90b3R5cGVbY2lbcl1dO3JldHVybiB5aSgpfTtmaVtoaV09ITA7dmFyIGdpPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIG51bGwhPT10PyhwaS5wcm90b3R5cGU9c2kodCkscj1uZXcgcGkscGkucHJvdG90eXBlPW51bGwscltoaV09dCk6cj15aSgpLHZvaWQgMD09PWU/cjp1aShyLGUpfSxtaT1naSxiaT1kdCx3aT1ZcigidW5zY29wYWJsZXMiKSxraT1BcnJheS5wcm90b3R5cGU7bnVsbD09a2lbd2ldJiZiaS5mKGtpLHdpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6bWkobnVsbCl9KTt2YXIgeGk9ZnVuY3Rpb24odCl7a2lbd2ldW3RdPSEwfSxBaT16ZS5pbmNsdWRlcyxTaT14aTttcih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtpbmNsdWRlczpmdW5jdGlvbih0KXtyZXR1cm4gQWkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxTaSgiaW5jbHVkZXMiKTt2YXIgX2k9WSxUaT1ELEVpPVlyKCJtYXRjaCIpLElpPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBfaSh0KSYmKHZvaWQgMCE9PShlPXRbRWldKT8hIWU6IlJlZ0V4cCI9PVRpKHQpKX0sT2k9WXIoIm1hdGNoIiksTWk9ZnVuY3Rpb24odCl7aWYoSWkodCkpdGhyb3cgVHlwZUVycm9yKCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gdH0sQ2k9Rjttcih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohZnVuY3Rpb24odCl7dmFyIGU9Ly4vO3RyeXsiLy4vIlt0XShlKX1jYXRjaChyKXt0cnl7cmV0dXJuIGVbT2ldPSExLCIvLi8iW3RdKGUpfWNhdGNoKG4pe319cmV0dXJuITF9KCJpbmNsdWRlcyIpfSx7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuISF+U3RyaW5nKENpKHRoaXMpKS5pbmRleE9mKE1pKHQpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgUmk9TG4uZmlsdGVyO21yKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVpyKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gUmkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgQmk9InZpZGVvIixQaT0iYXVkaW8iLFVpPSJtZXRhZGF0YSIsRGk9ImF2YyIsemk9ImhldmMiLGppPSJhYWMiLExpPSJnNzExMGEiLEZpPSJnNzExMG0iLE5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSxiKHRoaXMsImlkIiwxKSxiKHRoaXMsInR5cGUiLEJpKSxiKHRoaXMsImNvZGVjVHlwZSIsRGkpLGIodGhpcywicGlkIiwtMSksYih0aGlzLCJodmNDIix2b2lkIDApLGIodGhpcywiY29kZWMiLCIiKSxiKHRoaXMsInRpbWVzY2FsZSIsMCksYih0aGlzLCJmb3JtYXRUaW1lc2NhbGUiLDApLGIodGhpcywic2VxdWVuY2VOdW1iZXIiLDApLGIodGhpcywiYmFzZU1lZGlhRGVjb2RlVGltZSIsMCksYih0aGlzLCJiYXNlRHRzIiwwKSxiKHRoaXMsImR1cmF0aW9uIiwwKSxiKHRoaXMsIndhcm5pbmdzIixbXSksYih0aGlzLCJzYW1wbGVzIixbXSksYih0aGlzLCJwcHMiLFtdKSxiKHRoaXMsInNwcyIsW10pLGIodGhpcywidnBzIixbXSksYih0aGlzLCJmcHNOdW0iLDApLGIodGhpcywiZnBzRGVuIiwwKSxiKHRoaXMsInNhclJhdGlvIixbXSksYih0aGlzLCJ3aWR0aCIsMCksYih0aGlzLCJoZWlnaHQiLDApLGIodGhpcywibmFsVW5pdFNpemUiLDQpLGIodGhpcywicHJlc2VudCIsITEpLGIodGhpcywiaXNWaWRlb0VuY3J5cHRpb24iLCExKSxiKHRoaXMsImlzQXVkaW9FbmNyeXB0aW9uIiwhMSksYih0aGlzLCJraWQiLG51bGwpLGIodGhpcywicHNzaCIsbnVsbCksYih0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIG0odCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj10aGlzLndpZHRoPXRoaXMuaGVpZ2h0PXRoaXMuZnBzRGVuPXRoaXMuZnBzTnVtPXRoaXMuZHVyYXRpb249dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPXRoaXMudGltZXNjYWxlPTAsdGhpcy5jb2RlYz0iIix0aGlzLnByZXNlbnQ9ITEsdGhpcy5waWQ9LTEsdGhpcy5wcHM9W10sdGhpcy5zcHM9W10sdGhpcy52cHM9W10sdGhpcy5zYXJSYXRpbz1bXSx0aGlzLnNhbXBsZXM9W10sdGhpcy53YXJuaW5ncz1bXSx0aGlzLmh2Y0M9bnVsbH19LHtrZXk6ImV4aXN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhKHRoaXMucHBzLmxlbmd0aCYmdGhpcy5zcHMubGVuZ3RoJiZ0aGlzLmNvZGVjKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fV0pLHR9KCksVmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eSh0aGlzLHQpLGIodGhpcywiaWQiLDIpLGIodGhpcywidHlwZSIsUGkpLGIodGhpcywiY29kZWNUeXBlIixqaSksYih0aGlzLCJwaWQiLC0xKSxiKHRoaXMsImNvZGVjIiwiIiksYih0aGlzLCJzZXF1ZW5jZU51bWJlciIsMCksYih0aGlzLCJzYW1wbGVEdXJhdGlvbiIsMCksYih0aGlzLCJ0aW1lc2NhbGUiLDApLGIodGhpcywiZm9ybWF0VGltZXNjYWxlIiwwKSxiKHRoaXMsImJhc2VNZWRpYURlY29kZVRpbWUiLDApLGIodGhpcywiZHVyYXRpb24iLDApLGIodGhpcywid2FybmluZ3MiLFtdKSxiKHRoaXMsInNhbXBsZXMiLFtdKSxiKHRoaXMsImJhc2VEdHMiLDApLGIodGhpcywic2FtcGxlU2l6ZSIsMTYpLGIodGhpcywic2FtcGxlUmF0ZSIsMCksYih0aGlzLCJjaGFubmVsQ291bnQiLDApLGIodGhpcywib2JqZWN0VHlwZSIsMCksYih0aGlzLCJzYW1wbGVSYXRlSW5kZXgiLDApLGIodGhpcywiY29uZmlnIixbXSksYih0aGlzLCJwcmVzZW50IiwhMSksYih0aGlzLCJpc1ZpZGVvRW5jcnlwdGlvbiIsITEpLGIodGhpcywiaXNBdWRpb0VuY3J5cHRpb24iLCExKSxiKHRoaXMsImtpZCIsbnVsbCksYih0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIG0odCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj0wLHRoaXMudGltZXNjYWxlPTAsdGhpcy5zYW1wbGVEdXJhdGlvbj0wLHRoaXMuc2FtcGxlUmF0ZT0wLHRoaXMuY2hhbm5lbENvdW50PTAsdGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPTAsdGhpcy5wcmVzZW50PSExLHRoaXMucGlkPS0xLHRoaXMuY29kZWM9IiIsdGhpcy5zYW1wbGVzPVtdLHRoaXMuY29uZmlnPVtdLHRoaXMud2FybmluZ3M9W119fSx7a2V5OiJleGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnNhbXBsZVJhdGUmJnRoaXMuY2hhbm5lbENvdW50JiZ0aGlzLmNvZGVjJiZ0aGlzLmNvZGVjVHlwZT09PWppKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fV0pLHR9KCksSGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuKXt5KHRoaXMsdCksYih0aGlzLCJmbGFnIix7fSksYih0aGlzLCJrZXlmcmFtZSIsITEpLGIodGhpcywiZ29wSWQiLDApLGIodGhpcywiZHVyYXRpb24iLDApLGIodGhpcywic2l6ZSIsMCksYih0aGlzLCJ1bml0cyIsW10pLGIodGhpcywiY2hyb21hRm9ybWF0Iiw0MjApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPWUsdGhpcy5vcmlnaW5EdHM9dGhpcy5kdHM9cixuJiYodGhpcy51bml0cz1uKX1yZXR1cm4gbSh0LFt7a2V5OiJjdHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB0cy10aGlzLmR0c319LHtrZXk6InNldFRvS2V5ZnJhbWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5rZXlmcmFtZT0hMCx0aGlzLmZsYWcuZGVwZW5kc09uPTIsdGhpcy5mbGFnLmlzTm9uU3luY1NhbXBsZT0wfX1dKSx0fSgpLFlpPW0oKGZ1bmN0aW9uIHQoZSxyLG4saSl7eSh0aGlzLHQpLGIodGhpcywiZHVyYXRpb24iLDEwMjQpLGIodGhpcywiZmxhZyIse2RlcGVuZHNPbjoyLGlzTm9uU3luY1NhbXBsZTowfSksYih0aGlzLCJrZXlmcmFtZSIsITApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPXRoaXMuZHRzPWUsdGhpcy5kYXRhPXIsdGhpcy5zaXplPXIuYnl0ZUxlbmd0aCx0aGlzLnNhbXBsZU9mZnNldD1pLG4mJih0aGlzLmR1cmF0aW9uPW4pfSkpLEtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSxiKHRoaXMsImlkIiwzKSxiKHRoaXMsInR5cGUiLFVpKSxiKHRoaXMsInRpbWVzY2FsZSIsMCksYih0aGlzLCJmbHZTY3JpcHRTYW1wbGVzIixbXSksYih0aGlzLCJzZWlTYW1wbGVzIixbXSl9cmV0dXJuIG0odCxbe2tleToiZXhpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGh8fCF0aGlzLnRpbWVzY2FsZSl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVzY2FsZT0wLHRoaXMuZmx2U2NyaXB0U2FtcGxlcz1bXSx0aGlzLnNlaVNhbXBsZXM9W119fSx7a2V5OiJoYXNTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGgpfX1dKSx0fSgpLFdpPVksR2k9cHQscWk9ZnVuY3Rpb24odCl7aWYoIVdpKHQpJiZudWxsIT09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IHNldCAiK1N0cmluZyh0KSsiIGFzIGEgcHJvdG90eXBlIik7cmV0dXJuIHR9LFhpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciB0LGU9ITEscj17fTt0cnl7KHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpLmNhbGwocixbXSksZT1yIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goU3Ype31yZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gR2kocikscWkobiksZT90LmNhbGwocixuKTpyLl9fcHJvdG9fXz1uLHJ9fSgpOnZvaWQgMCksJGk9WSxRaT1YaSxaaT1mdW5jdGlvbih0LGUscil7dmFyIG4saTtyZXR1cm4gUWkmJiJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiZuIT09ciYmJGkoaT1uLnByb3RvdHlwZSkmJmkhPT1yLnByb3RvdHlwZSYmUWkodCxpKSx0fSxKaT1GLHRhPSJbXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZl0iLGVhPVJlZ0V4cCgiXiIrdGErdGErIioiKSxyYT1SZWdFeHAodGErdGErIiokIiksbmE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPVN0cmluZyhKaShlKSk7cmV0dXJuIDEmdCYmKHI9ci5yZXBsYWNlKGVhLCIiKSksMiZ0JiYocj1yLnJlcGxhY2UocmEsIiIpKSxyfX0saWE9e3N0YXJ0Om5hKDEpLGVuZDpuYSgyKSx0cmltOm5hKDMpfSxhYT1PLG9hPVQsc2E9ZnIsdWE9QXQuZXhwb3J0cyxjYT1RLGZhPUQsbGE9WmksZGE9VyxoYT1JLHBhPWdpLHZhPXhlLmYseWE9RS5mLGdhPWR0LmYsbWE9aWEudHJpbSxiYT0iTnVtYmVyIix3YT1vYS5OdW1iZXIsa2E9d2EucHJvdG90eXBlLHhhPWZhKHBhKGthKSk9PWJhLEFhPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzLHUsYz1kYSh0LCExKTtpZigic3RyaW5nIj09dHlwZW9mIGMmJmMubGVuZ3RoPjIpaWYoNDM9PT0oZT0oYz1tYShjKSkuY2hhckNvZGVBdCgwKSl8fDQ1PT09ZSl7aWYoODg9PT0ocj1jLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1yKXJldHVybiBOYU59ZWxzZSBpZig0OD09PWUpe3N3aXRjaChjLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpuPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOm49OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK2N9Zm9yKG89KGE9Yy5zbGljZSgyKSkubGVuZ3RoLHM9MDtzPG87cysrKWlmKCh1PWEuY2hhckNvZGVBdChzKSk8NDh8fHU+aSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChhLG4pfXJldHVybitjfTtpZihzYShiYSwhd2EoIiAwbzEiKXx8IXdhKCIwYjEiKXx8d2EoIisweDEiKSkpe2Zvcih2YXIgU2EsX2E9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxyPXRoaXM7cmV0dXJuIHIgaW5zdGFuY2VvZiBfYSYmKHhhP2hhKChmdW5jdGlvbigpe2thLnZhbHVlT2YuY2FsbChyKX0pKTpmYShyKSE9YmEpP2xhKG5ldyB3YShBYShlKSkscixfYSk6QWEoZSl9LFRhPWFhP3ZhKHdhKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIsZnJvbVN0cmluZyxyYW5nZSIuc3BsaXQoIiwiKSxFYT0wO1RhLmxlbmd0aD5FYTtFYSsrKWNhKHdhLFNhPVRhW0VhXSkmJiFjYShfYSxTYSkmJmdhKF9hLFNhLHlhKHdhLFNhKSk7X2EucHJvdG90eXBlPWthLGthLmNvbnN0cnVjdG9yPV9hLHVhKG9hLGJhLF9hKX12YXIgSWEsT2EsTWEsQ2E9e30sUmE9IUkoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSksQmE9USxQYT1xLFVhPVJhLERhPUd0KCJJRV9QUk9UTyIpLHphPU9iamVjdC5wcm90b3R5cGUsamE9VWE/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0PVBhKHQpLEJhKHQsRGEpP3RbRGFdOiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbnN0cnVjdG9yJiZ0IGluc3RhbmNlb2YgdC5jb25zdHJ1Y3Rvcj90LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgT2JqZWN0P3phOm51bGx9LExhPUksRmE9amEsTmE9eHQsVmE9USxIYT1ZcigiaXRlcmF0b3IiKSxZYT0hMTtbXS5rZXlzJiYoIm5leHQiaW4oTWE9W10ua2V5cygpKT8oT2E9RmEoRmEoTWEpKSkhPT1PYmplY3QucHJvdG90eXBlJiYoSWE9T2EpOllhPSEwKSwobnVsbD09SWF8fExhKChmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiBJYVtIYV0uY2FsbCh0KSE9PXR9KSkpJiYoSWE9e30pLFZhKElhLEhhKXx8TmEoSWEsSGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIEthPXtJdGVyYXRvclByb3RvdHlwZTpJYSxCVUdHWV9TQUZBUklfSVRFUkFUT1JTOllhfSxXYT1kdC5mLEdhPVEscWE9WXIoInRvU3RyaW5nVGFnIiksWGE9ZnVuY3Rpb24odCxlLHIpe3QmJiFHYSh0PXI/dDp0LnByb3RvdHlwZSxxYSkmJldhKHQscWEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9LCRhPUthLkl0ZXJhdG9yUHJvdG90eXBlLFFhPWdpLFphPVAsSmE9WGEsdG89Q2EsZW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scm89bXIsbm89ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPVFhKCRhLHtuZXh0OlphKDEscil9KSxKYSh0LG4sITEpLHRvW25dPWVvLHR9LGlvPWphLGFvPVhpLG9vPVhhLHNvPXh0LHVvPUF0LmV4cG9ydHMsY289Q2EsZm89S2EuSXRlcmF0b3JQcm90b3R5cGUsbG89S2EuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxobz1ZcigiaXRlcmF0b3IiKSxwbz0ia2V5cyIsdm89InZhbHVlcyIseW89ImVudHJpZXMiLGdvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG1vPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe25vKHIsZSxuKTt2YXIgcyx1LGMsZj1mdW5jdGlvbih0KXtpZih0PT09aSYmdilyZXR1cm4gdjtpZighbG8mJnQgaW4gaClyZXR1cm4gaFt0XTtzd2l0Y2godCl7Y2FzZSBwbzpjYXNlIHZvOmNhc2UgeW86cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzKX19LGw9ZSsiIEl0ZXJhdG9yIixkPSExLGg9dC5wcm90b3R5cGUscD1oW2hvXXx8aFsiQEBpdGVyYXRvciJdfHxpJiZoW2ldLHY9IWxvJiZwfHxmKGkpLHk9IkFycmF5Ij09ZSYmaC5lbnRyaWVzfHxwO2lmKHkmJihzPWlvKHkuY2FsbChuZXcgdCkpLGZvIT09T2JqZWN0LnByb3RvdHlwZSYmcy5uZXh0JiYoaW8ocykhPT1mbyYmKGFvP2FvKHMsZm8pOiJmdW5jdGlvbiIhPXR5cGVvZiBzW2hvXSYmc28ocyxobyxnbykpLG9vKHMsbCwhMCkpKSxpPT12byYmcCYmcC5uYW1lIT09dm8mJihkPSEwLHY9ZnVuY3Rpb24oKXtyZXR1cm4gcC5jYWxsKHRoaXMpfSksaFtob10hPT12JiZzbyhoLGhvLHYpLGNvW2VdPXYsaSlpZih1PXt2YWx1ZXM6Zih2byksa2V5czphP3Y6ZihwbyksZW50cmllczpmKHlvKX0sbylmb3IoYyBpbiB1KShsb3x8ZHx8IShjIGluIGgpKSYmdW8oaCxjLHVbY10pO2Vsc2Ugcm8oe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpsb3x8ZH0sdSk7cmV0dXJuIHV9LGJvPUgsd289eGksa289Q2EseG89Y2UsQW89bW8sU289IkFycmF5IEl0ZXJhdG9yIixfbz14by5zZXQsVG89eG8uZ2V0dGVyRm9yKFNvKSxFbz1BbyhBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe19vKHRoaXMse3R5cGU6U28sdGFyZ2V0OmJvKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1Ubyh0aGlzKSxlPXQudGFyZ2V0LHI9dC5raW5kLG49dC5pbmRleCsrO3JldHVybiFlfHxuPj1lLmxlbmd0aD8odC50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pOiJrZXlzIj09cj97dmFsdWU6bixkb25lOiExfToidmFsdWVzIj09cj97dmFsdWU6ZVtuXSxkb25lOiExfTp7dmFsdWU6W24sZVtuXV0sZG9uZTohMX19KSwidmFsdWVzIik7a28uQXJndW1lbnRzPWtvLkFycmF5LHdvKCJrZXlzIiksd28oInZhbHVlcyIpLHdvKCJlbnRyaWVzIik7dmFyIElvPXtleHBvcnRzOnt9fSxPbz1ZcigiaXRlcmF0b3IiKSxNbz0hMTt0cnl7dmFyIENvPTAsUm89e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIUNvKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtNbz0hMH19O1JvW09vXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKFJvLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goU3Ype312YXIgQm8sUG89ZnVuY3Rpb24odCxlKXtpZighZSYmIU1vKXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgbj17fTtuW09vXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19fX0sdChuKX1jYXRjaChTdil7fXJldHVybiByfSxVbz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LERvPVVvLHpvPU8sam89VCxMbz1ZLEZvPVEsTm89eG4sVm89eHQsSG89QXQuZXhwb3J0cyxZbz1kdC5mLEtvPWphLFdvPVhpLEdvPVlyLHFvPUh0LFhvPWpvLkludDhBcnJheSwkbz1YbyYmWG8ucHJvdG90eXBlLFFvPWpvLlVpbnQ4Q2xhbXBlZEFycmF5LFpvPVFvJiZRby5wcm90b3R5cGUsSm89WG8mJktvKFhvKSx0cz0kbyYmS28oJG8pLGVzPU9iamVjdC5wcm90b3R5cGUscnM9ZXMuaXNQcm90b3R5cGVPZixucz1HbygidG9TdHJpbmdUYWciKSxpcz1xbygiVFlQRURfQVJSQVlfVEFHIiksYXM9RG8mJiEhV28mJiJPcGVyYSIhPT1Obyhqby5vcGVyYSksb3M9ITEsc3M9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSx1cz17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LGNzPWZ1bmN0aW9uKHQpe2lmKCFMbyh0KSlyZXR1cm4hMTt2YXIgZT1Obyh0KTtyZXR1cm4gRm8oc3MsZSl8fEZvKHVzLGUpfTtmb3IoQm8gaW4gc3Mpam9bQm9dfHwoYXM9ITEpO2lmKCghYXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBKb3x8Sm89PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoSm89ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9LGFzKSlmb3IoQm8gaW4gc3Mpam9bQm9dJiZXbyhqb1tCb10sSm8pO2lmKCghYXN8fCF0c3x8dHM9PT1lcykmJih0cz1Kby5wcm90b3R5cGUsYXMpKWZvcihCbyBpbiBzcylqb1tCb10mJldvKGpvW0JvXS5wcm90b3R5cGUsdHMpO2lmKGFzJiZLbyhabykhPT10cyYmV28oWm8sdHMpLHpvJiYhRm8odHMsbnMpKWZvcihCbyBpbiBvcz0hMCxZbyh0cyxucyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIExvKHRoaXMpP3RoaXNbaXNdOnZvaWQgMH19KSxzcylqb1tCb10mJlZvKGpvW0JvXSxpcyxCbyk7dmFyIGZzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOmFzLFRZUEVEX0FSUkFZX1RBRzpvcyYmaXMsYVR5cGVkQXJyYXk6ZnVuY3Rpb24odCl7aWYoY3ModCkpcmV0dXJuIHQ7dGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXtpZihXbyl7aWYocnMuY2FsbChKbyx0KSlyZXR1cm4gdH1lbHNlIGZvcih2YXIgZSBpbiBzcylpZihGbyhzcyxCbykpe3ZhciByPWpvW2VdO2lmKHImJih0PT09cnx8cnMuY2FsbChyLHQpKSlyZXR1cm4gdH10aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKHQsZSxyKXtpZih6byl7aWYocilmb3IodmFyIG4gaW4gc3Mpe3ZhciBpPWpvW25dO2lmKGkmJkZvKGkucHJvdG90eXBlLHQpKXRyeXtkZWxldGUgaS5wcm90b3R5cGVbdF19Y2F0Y2goU3Ype319dHNbdF0mJiFyfHxIbyh0cyx0LHI/ZTphcyYmJG9bdF18fGUpfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbih0LGUscil7dmFyIG4saTtpZih6byl7aWYoV28pe2lmKHIpZm9yKG4gaW4gc3MpaWYoKGk9am9bbl0pJiZGbyhpLHQpKXRyeXtkZWxldGUgaVt0XX1jYXRjaChTdil7fWlmKEpvW3RdJiYhcilyZXR1cm47dHJ5e3JldHVybiBIbyhKbyx0LHI/ZTphcyYmSm9bdF18fGUpfWNhdGNoKFN2KXt9fWZvcihuIGluIHNzKSEoaT1qb1tuXSl8fGlbdF0mJiFyfHxIbyhpLHQsZSl9fSxpc1ZpZXc6ZnVuY3Rpb24odCl7aWYoIUxvKHQpKXJldHVybiExO3ZhciBlPU5vKHQpO3JldHVybiJEYXRhVmlldyI9PT1lfHxGbyhzcyxlKXx8Rm8odXMsZSl9LGlzVHlwZWRBcnJheTpjcyxUeXBlZEFycmF5OkpvLFR5cGVkQXJyYXlQcm90b3R5cGU6dHN9LGxzPVQsZHM9SSxocz1Qbyxwcz1mcy5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLHZzPWxzLkFycmF5QnVmZmVyLHlzPWxzLkludDhBcnJheSxncz0hcHN8fCFkcygoZnVuY3Rpb24oKXt5cygxKX0pKXx8IWRzKChmdW5jdGlvbigpe25ldyB5cygtMSl9KSl8fCFocygoZnVuY3Rpb24odCl7bmV3IHlzLG5ldyB5cyhudWxsKSxuZXcgeXMoMS41KSxuZXcgeXModCl9KSwhMCl8fGRzKChmdW5jdGlvbigpe3JldHVybiAxIT09bmV3IHlzKG5ldyB2cygyKSwxLHZvaWQgMCkubGVuZ3RofSkpLG1zPUF0LmV4cG9ydHMsYnM9ZnVuY3Rpb24odCxlLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKHI/cisiICI6IiIpKyJpbnZvY2F0aW9uIik7cmV0dXJuIHR9LHdzPV9lLGtzPUllLHhzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIDA7dmFyIGU9d3ModCkscj1rcyhlKTtpZihlIT09cil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gcn0sQXM9TWF0aC5hYnMsU3M9TWF0aC5wb3csX3M9TWF0aC5mbG9vcixUcz1NYXRoLmxvZyxFcz1NYXRoLkxOMixJcz1xLE9zPVJlLE1zPUllLENzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1Jcyh0aGlzKSxyPU1zKGUubGVuZ3RoKSxuPWFyZ3VtZW50cy5sZW5ndGgsaT1PcyhuPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxyKSxhPW4+Mj9hcmd1bWVudHNbMl06dm9pZCAwLG89dm9pZCAwPT09YT9yOk9zKGEscik7bz5pOyllW2krK109dDtyZXR1cm4gZX0sUnM9VCxCcz1PLFBzPVVvLFVzPXh0LERzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4gaW4gZSltcyh0LG4sZVtuXSxyKTtyZXR1cm4gdH0senM9SSxqcz1icyxMcz1fZSxGcz1JZSxOcz14cyxWcz17cGFjazpmdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG89bmV3IEFycmF5KHIpLHM9OCpyLWUtMSx1PSgxPDxzKS0xLGM9dT4+MSxmPTIzPT09ZT9TcygyLC0yNCktU3MoMiwtNzcpOjAsbD10PDB8fDA9PT10JiYxL3Q8MD8xOjAsZD0wO2ZvcigodD1Bcyh0KSkhPXR8fHQ9PT0xLzA/KGk9dCE9dD8xOjAsbj11KToobj1fcyhUcyh0KS9FcyksdCooYT1TcygyLC1uKSk8MSYmKG4tLSxhKj0yKSwodCs9bitjPj0xP2YvYTpmKlNzKDIsMS1jKSkqYT49MiYmKG4rKyxhLz0yKSxuK2M+PXU/KGk9MCxuPXUpOm4rYz49MT8oaT0odCphLTEpKlNzKDIsZSksbis9Yyk6KGk9dCpTcygyLGMtMSkqU3MoMixlKSxuPTApKTtlPj04O29bZCsrXT0yNTUmaSxpLz0yNTYsZS09OCk7Zm9yKG49bjw8ZXxpLHMrPWU7cz4wO29bZCsrXT0yNTUmbixuLz0yNTYscy09OCk7cmV0dXJuIG9bLS1kXXw9MTI4Kmwsb30sdW5wYWNrOmZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10Lmxlbmd0aCxpPTgqbi1lLTEsYT0oMTw8aSktMSxvPWE+PjEscz1pLTcsdT1uLTEsYz10W3UtLV0sZj0xMjcmYztmb3IoYz4+PTc7cz4wO2Y9MjU2KmYrdFt1XSx1LS0scy09OCk7Zm9yKHI9ZiYoMTw8LXMpLTEsZj4+PS1zLHMrPWU7cz4wO3I9MjU2KnIrdFt1XSx1LS0scy09OCk7aWYoMD09PWYpZj0xLW87ZWxzZXtpZihmPT09YSlyZXR1cm4gcj9OYU46Yz8tMS8wOjEvMDtyKz1TcygyLGUpLGYtPW99cmV0dXJuKGM/LTE6MSkqcipTcygyLGYtZSl9fSxIcz1qYSxZcz1YaSxLcz14ZS5mLFdzPWR0LmYsR3M9Q3MscXM9WGEsWHM9Y2UuZ2V0LCRzPWNlLnNldCxRcz0iQXJyYXlCdWZmZXIiLFpzPSJEYXRhVmlldyIsSnM9Ildyb25nIGluZGV4Iix0dT1Scy5BcnJheUJ1ZmZlcixldT10dSxydT1Scy5EYXRhVmlldyxudT1ydSYmcnUucHJvdG90eXBlLGl1PU9iamVjdC5wcm90b3R5cGUsYXU9UnMuUmFuZ2VFcnJvcixvdT1Wcy5wYWNrLHN1PVZzLnVucGFjayx1dT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnRdfSxjdT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfSxmdT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTUsdD4+MTYmMjU1LHQ+PjI0JjI1NV19LGx1PWZ1bmN0aW9uKHQpe3JldHVybiB0WzNdPDwyNHx0WzJdPDwxNnx0WzFdPDw4fHRbMF19LGR1PWZ1bmN0aW9uKHQpe3JldHVybiBvdSh0LDIzLDQpfSxodT1mdW5jdGlvbih0KXtyZXR1cm4gb3UodCw1Miw4KX0scHU9ZnVuY3Rpb24odCxlKXtXcyh0LnByb3RvdHlwZSxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWHModGhpcylbZV19fSl9LHZ1PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPU5zKHIpLGE9WHModCk7aWYoaStlPmEuYnl0ZUxlbmd0aCl0aHJvdyBhdShKcyk7dmFyIG89WHMoYS5idWZmZXIpLmJ5dGVzLHM9aSthLmJ5dGVPZmZzZXQsdT1vLnNsaWNlKHMscytlKTtyZXR1cm4gbj91OnUucmV2ZXJzZSgpfSx5dT1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89TnMocikscz1Ycyh0KTtpZihvK2U+cy5ieXRlTGVuZ3RoKXRocm93IGF1KEpzKTtmb3IodmFyIHU9WHMocy5idWZmZXIpLmJ5dGVzLGM9bytzLmJ5dGVPZmZzZXQsZj1uKCtpKSxsPTA7bDxlO2wrKyl1W2MrbF09ZlthP2w6ZS1sLTFdfTtpZihQcyl7aWYoIXpzKChmdW5jdGlvbigpe3R1KDEpfSkpfHwhenMoKGZ1bmN0aW9uKCl7bmV3IHR1KC0xKX0pKXx8enMoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0dSxuZXcgdHUoMS41KSxuZXcgdHUoTmFOKSx0dS5uYW1lIT1Rc30pKSl7Zm9yKHZhciBndSxtdT0oZXU9ZnVuY3Rpb24odCl7cmV0dXJuIGpzKHRoaXMsZXUpLG5ldyB0dShOcyh0KSl9KS5wcm90b3R5cGU9dHUucHJvdG90eXBlLGJ1PUtzKHR1KSx3dT0wO2J1Lmxlbmd0aD53dTspKGd1PWJ1W3d1KytdKWluIGV1fHxVcyhldSxndSx0dVtndV0pO211LmNvbnN0cnVjdG9yPWV1fVlzJiZIcyhudSkhPT1pdSYmWXMobnUsaXUpO3ZhciBrdT1uZXcgcnUobmV3IGV1KDIpKSx4dT1udS5zZXRJbnQ4O2t1LnNldEludDgoMCwyMTQ3NDgzNjQ4KSxrdS5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIWt1LmdldEludDgoMCkmJmt1LmdldEludDgoMSl8fERzKG51LHtzZXRJbnQ4OmZ1bmN0aW9uKHQsZSl7eHUuY2FsbCh0aGlzLHQsZTw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXt4dS5jYWxsKHRoaXMsdCxlPDwyND4+MjQpfX0se3Vuc2FmZTohMH0pfWVsc2UgZXU9ZnVuY3Rpb24odCl7anModGhpcyxldSxRcyk7dmFyIGU9TnModCk7JHModGhpcyx7Ynl0ZXM6R3MuY2FsbChuZXcgQXJyYXkoZSksMCksYnl0ZUxlbmd0aDplfSksQnN8fCh0aGlzLmJ5dGVMZW5ndGg9ZSl9LHJ1PWZ1bmN0aW9uKHQsZSxyKXtqcyh0aGlzLHJ1LFpzKSxqcyh0LGV1LFpzKTt2YXIgbj1Ycyh0KS5ieXRlTGVuZ3RoLGk9THMoZSk7aWYoaTwwfHxpPm4pdGhyb3cgYXUoIldyb25nIG9mZnNldCIpO2lmKGkrKHI9dm9pZCAwPT09cj9uLWk6RnMocikpPm4pdGhyb3cgYXUoIldyb25nIGxlbmd0aCIpOyRzKHRoaXMse2J1ZmZlcjp0LGJ5dGVMZW5ndGg6cixieXRlT2Zmc2V0Oml9KSxCc3x8KHRoaXMuYnVmZmVyPXQsdGhpcy5ieXRlTGVuZ3RoPXIsdGhpcy5ieXRlT2Zmc2V0PWkpfSxCcyYmKHB1KGV1LCJieXRlTGVuZ3RoIikscHUocnUsImJ1ZmZlciIpLHB1KHJ1LCJieXRlTGVuZ3RoIikscHUocnUsImJ5dGVPZmZzZXQiKSksRHMocnUucHJvdG90eXBlLHtnZXRJbnQ4OmZ1bmN0aW9uKHQpe3JldHVybiB2dSh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24odCl7cmV0dXJuIHZ1KHRoaXMsMSx0KVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24odCl7dmFyIGU9dnUodGhpcywyLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybihlWzFdPDw4fGVbMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbih0KXt2YXIgZT12dSh0aGlzLDIsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuIGVbMV08PDh8ZVswXX0sZ2V0SW50MzI6ZnVuY3Rpb24odCl7cmV0dXJuIGx1KHZ1KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSl9LGdldFVpbnQzMjpmdW5jdGlvbih0KXtyZXR1cm4gbHUodnUodGhpcyw0LHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24odCl7cmV0dXJuIHN1KHZ1KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSwyMyl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24odCl7cmV0dXJuIHN1KHZ1KHRoaXMsOCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSw1Mil9LHNldEludDg6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDEsdCx1dSxlKX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDEsdCx1dSxlKX0sc2V0SW50MTY6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDIsdCxjdSxlLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0VWludDE2OmZ1bmN0aW9uKHQsZSl7eXUodGhpcywyLHQsY3UsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEludDMyOmZ1bmN0aW9uKHQsZSl7eXUodGhpcyw0LHQsZnUsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldFVpbnQzMjpmdW5jdGlvbih0LGUpe3l1KHRoaXMsNCx0LGZ1LGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKHQsZSl7eXUodGhpcyw0LHQsZHUsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDgsdCxodSxlLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX19KTtxcyhldSxRcykscXMocnUsWnMpO3ZhciBBdT17QXJyYXlCdWZmZXI6ZXUsRGF0YVZpZXc6cnV9LFN1PV9lLF91PWZ1bmN0aW9uKHQpe3ZhciBlPVN1KHQpO2lmKGU8MCl0aHJvdyBSYW5nZUVycm9yKCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDAiKTtyZXR1cm4gZX0sVHU9ZnVuY3Rpb24odCxlKXt2YXIgcj1fdSh0KTtpZihyJWUpdGhyb3cgUmFuZ2VFcnJvcigiV3Jvbmcgb2Zmc2V0Iik7cmV0dXJuIHJ9LEV1PXhuLEl1PUNhLE91PVlyKCJpdGVyYXRvciIpLE11PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpcmV0dXJuIHRbT3VdfHx0WyJAQGl0ZXJhdG9yIl18fEl1W0V1KHQpXX0sQ3U9Q2EsUnU9WXIoIml0ZXJhdG9yIiksQnU9QXJyYXkucHJvdG90eXBlLFB1PWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoQ3UuQXJyYXk9PT10fHxCdVtSdV09PT10KX0sVXU9cSxEdT1JZSx6dT1NdSxqdT1QdSxMdT1DbixGdT1mcy5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLE51PWtlLFZ1PWR0LEh1PU8sWXU9WXIoInNwZWNpZXMiKSxLdT1mdW5jdGlvbih0KXt2YXIgZT1OdSh0KSxyPVZ1LmY7SHUmJmUmJiFlW1l1XSYmcihlLFl1LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9LFd1PW1yLEd1PVQscXU9TyxYdT1ncywkdT1mcyxRdT1BdSxadT1icyxKdT1QLHRjPXh0LGVjPUllLHJjPXhzLG5jPVR1LGljPVcsYWM9USxvYz14bixzYz1ZLHVjPWdpLGNjPVhpLGZjPXhlLmYsbGM9ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHM9VXUodCksdT1hcmd1bWVudHMubGVuZ3RoLGM9dT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsZj12b2lkIDAhPT1jLGw9enUocyk7aWYobnVsbCE9bCYmIWp1KGwpKWZvcihvPShhPWwuY2FsbChzKSkubmV4dCxzPVtdOyEoaT1vLmNhbGwoYSkpLmRvbmU7KXMucHVzaChpLnZhbHVlKTtmb3IoZiYmdT4yJiYoYz1MdShjLGFyZ3VtZW50c1syXSwyKSkscj1EdShzLmxlbmd0aCksbj1uZXcoRnUodGhpcykpKHIpLGU9MDtyPmU7ZSsrKW5bZV09Zj9jKHNbZV0sZSk6c1tlXTtyZXR1cm4gbn0sZGM9TG4uZm9yRWFjaCxoYz1LdSxwYz1kdCx2Yz1FLHljPVppLGdjPWNlLmdldCxtYz1jZS5zZXQsYmM9cGMuZix3Yz12Yy5mLGtjPU1hdGgucm91bmQseGM9R3UuUmFuZ2VFcnJvcixBYz1RdS5BcnJheUJ1ZmZlcixTYz1RdS5EYXRhVmlldyxfYz0kdS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLFRjPSR1LlRZUEVEX0FSUkFZX1RBRyxFYz0kdS5UeXBlZEFycmF5LEljPSR1LlR5cGVkQXJyYXlQcm90b3R5cGUsT2M9JHUuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixNYz0kdS5pc1R5cGVkQXJyYXksQ2M9IkJZVEVTX1BFUl9FTEVNRU5UIixSYz0iV3JvbmcgbGVuZ3RoIixCYz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGgsaT1uZXcoT2ModCkpKG4pO24+cjspaVtyXT1lW3IrK107cmV0dXJuIGl9LFBjPWZ1bmN0aW9uKHQsZSl7YmModCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ2ModGhpcylbZV19fSl9LFVjPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0IGluc3RhbmNlb2YgQWN8fCJBcnJheUJ1ZmZlciI9PShlPW9jKHQpKXx8IlNoYXJlZEFycmF5QnVmZmVyIj09ZX0sRGM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWModCkmJiJzeW1ib2wiIT1yKGUpJiZlIGluIHQmJlN0cmluZygrZSk9PVN0cmluZyhlKX0semM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGModCxlPWljKGUsITApKT9KdSgyLHRbZV0pOndjKHQsZSl9LGpjPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4hKERjKHQsZT1pYyhlLCEwKSkmJnNjKHIpJiZhYyhyLCJ2YWx1ZSIpKXx8YWMociwiZ2V0Iil8fGFjKHIsInNldCIpfHxyLmNvbmZpZ3VyYWJsZXx8YWMociwid3JpdGFibGUiKSYmIXIud3JpdGFibGV8fGFjKHIsImVudW1lcmFibGUiKSYmIXIuZW51bWVyYWJsZT9iYyh0LGUscik6KHRbZV09ci52YWx1ZSx0KX07cXU/KF9jfHwodmMuZj16YyxwYy5mPWpjLFBjKEljLCJidWZmZXIiKSxQYyhJYywiYnl0ZU9mZnNldCIpLFBjKEljLCJieXRlTGVuZ3RoIiksUGMoSWMsImxlbmd0aCIpKSxXdSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFfY30se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjp6YyxkZWZpbmVQcm9wZXJ0eTpqY30pLElvLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQubWF0Y2goL1xkKyQvKVswXS84LGk9dCsocj8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsYT0iZ2V0Iit0LG89InNldCIrdCxzPUd1W2ldLHU9cyxjPXUmJnUucHJvdG90eXBlLGY9e30sbD1mdW5jdGlvbih0LGUpe2JjKHQsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9Z2ModCk7cmV0dXJuIHIudmlld1thXShlKm4rci5ieXRlT2Zmc2V0LCEwKX0odGhpcyxlKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUsaSl7dmFyIGE9Z2ModCk7ciYmKGk9KGk9a2MoaSkpPDA/MDppPjI1NT8yNTU6MjU1JmkpLGEudmlld1tvXShlKm4rYS5ieXRlT2Zmc2V0LGksITApfSh0aGlzLGUsdCl9LGVudW1lcmFibGU6ITB9KX07X2M/WHUmJih1PWUoKGZ1bmN0aW9uKHQsZSxyLGEpe3JldHVybiBadSh0LHUsaSkseWMoc2MoZSk/VWMoZSk/dm9pZCAwIT09YT9uZXcgcyhlLG5jKHIsbiksYSk6dm9pZCAwIT09cj9uZXcgcyhlLG5jKHIsbikpOm5ldyBzKGUpOk1jKGUpP0JjKHUsZSk6bGMuY2FsbCh1LGUpOm5ldyBzKHJjKGUpKSx0LHUpfSkpLGNjJiZjYyh1LEVjKSxkYyhmYyhzKSwoZnVuY3Rpb24odCl7dCBpbiB1fHx0Yyh1LHQsc1t0XSl9KSksdS5wcm90b3R5cGU9Yyk6KHU9ZSgoZnVuY3Rpb24odCxlLHIsYSl7WnUodCx1LGkpO3ZhciBvLHMsYyxmPTAsZD0wO2lmKHNjKGUpKXtpZighVWMoZSkpcmV0dXJuIE1jKGUpP0JjKHUsZSk6bGMuY2FsbCh1LGUpO289ZSxkPW5jKHIsbik7dmFyIGg9ZS5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PWEpe2lmKGglbil0aHJvdyB4YyhSYyk7aWYoKHM9aC1kKTwwKXRocm93IHhjKFJjKX1lbHNlIGlmKChzPWVjKGEpKm4pK2Q+aCl0aHJvdyB4YyhSYyk7Yz1zL259ZWxzZSBjPXJjKGUpLG89bmV3IEFjKHM9YypuKTtmb3IobWModCx7YnVmZmVyOm8sYnl0ZU9mZnNldDpkLGJ5dGVMZW5ndGg6cyxsZW5ndGg6Yyx2aWV3Om5ldyBTYyhvKX0pO2Y8YzspbCh0LGYrKyl9KSksY2MmJmNjKHUsRWMpLGM9dS5wcm90b3R5cGU9dWMoSWMpKSxjLmNvbnN0cnVjdG9yIT09dSYmdGMoYywiY29uc3RydWN0b3IiLHUpLFRjJiZ0YyhjLFRjLGkpLGZbaV09dSxXdSh7Z2xvYmFsOiEwLGZvcmNlZDp1IT1zLHNoYW06IV9jfSxmKSxDYyBpbiB1fHx0Yyh1LENjLG4pLENjIGluIGN8fHRjKGMsQ2MsbiksaGMoaSl9KTpJby5leHBvcnRzPWZ1bmN0aW9uKCl7fSwoMCxJby5leHBvcnRzKSgiVWludDgiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KHRoaXMsZSxyLG4pfX0pKTt2YXIgTGM9SWUsRmM9X2UsTmM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImF0IiwoZnVuY3Rpb24odCl7dmFyIGU9TmModGhpcykscj1MYyhlLmxlbmd0aCksbj1GYyh0KSxpPW4+PTA/bjpyK247cmV0dXJuIGk8MHx8aT49cj92b2lkIDA6ZVtpXX0pKTt2YXIgVmM9cSxIYz1SZSxZYz1JZSxLYz1NYXRoLm1pbixXYz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbih0LGUpe3ZhciByPVZjKHRoaXMpLG49WWMoci5sZW5ndGgpLGk9SGModCxuKSxhPUhjKGUsbiksbz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPUtjKCh2b2lkIDA9PT1vP246SGMobyxuKSktYSxuLWkpLHU9MTtmb3IoYTxpJiZpPGErcyYmKHU9LTEsYSs9cy0xLGkrPXMtMSk7cy0tID4wOylhIGluIHI/cltpXT1yW2FdOmRlbGV0ZSByW2ldLGkrPXUsYSs9dTtyZXR1cm4gcn0sR2M9V2MscWM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImNvcHlXaXRoaW4iLChmdW5jdGlvbih0LGUpe3JldHVybiBHYy5jYWxsKHFjKHRoaXMpLHQsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9KSk7dmFyIFhjPUxuLmV2ZXJ5LCRjPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJldmVyeSIsKGZ1bmN0aW9uKHQpe3JldHVybiBYYygkYyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgUWM9Q3MsWmM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gUWMuYXBwbHkoWmModGhpcyksYXJndW1lbnRzKX0pKTt2YXIgSmM9cHQsdGY9T24sZWY9WXIoInNwZWNpZXMiKSxyZj1mdW5jdGlvbih0LGUpe3ZhciByLG49SmModCkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PW58fG51bGw9PShyPUpjKG4pW2VmXSk/ZTp0ZihyKX0sbmY9ZnMuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixhZj1yZixvZj1Mbi5maWx0ZXIsc2Y9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9YWYodCx0LmNvbnN0cnVjdG9yKSxuPTAsaT1lLmxlbmd0aCxhPW5ldyhuZihyKSkoaSk7aT5uOylhW25dPWVbbisrXTtyZXR1cm4gYX0sdWY9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlciIsKGZ1bmN0aW9uKHQpe3ZhciBlPW9mKHVmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBzZih0aGlzLGUpfSkpO3ZhciBjZj1Mbi5maW5kLGZmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kIiwoZnVuY3Rpb24odCl7cmV0dXJuIGNmKGZmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBsZj1Mbi5maW5kSW5kZXgsZGY9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKHQpe3JldHVybiBsZihkZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgaGY9Q24scGY9TCx2Zj1xLHlmPUllLGdmPWZ1bmN0aW9uKHQpe3ZhciBlPTY9PXQ7cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtmb3IodmFyIGEsbz12ZihyKSxzPXBmKG8pLHU9aGYobixpLDMpLGM9eWYocy5sZW5ndGgpO2MtLSA+MDspaWYodShhPXNbY10sYyxvKSlzd2l0Y2godCl7Y2FzZSA1OnJldHVybiBhO2Nhc2UgNjpyZXR1cm4gY31yZXR1cm4gZT8tMTp2b2lkIDB9fSxtZj17ZmluZExhc3Q6Z2YoNSksZmluZExhc3RJbmRleDpnZig2KX0sYmY9bWYuZmluZExhc3Qsd2Y9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRMYXN0IiwoZnVuY3Rpb24odCl7cmV0dXJuIGJmKHdmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBrZj1tZi5maW5kTGFzdEluZGV4LHhmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kTGFzdEluZGV4IiwoZnVuY3Rpb24odCl7cmV0dXJuIGtmKHhmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBBZj1Mbi5mb3JFYWNoLFNmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmb3JFYWNoIiwoZnVuY3Rpb24odCl7QWYoU2YodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIF9mPXplLmluY2x1ZGVzLFRmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJpbmNsdWRlcyIsKGZ1bmN0aW9uKHQpe3JldHVybiBfZihUZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgRWY9emUuaW5kZXhPZixJZj1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiaW5kZXhPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiBFZihJZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgT2Y9VCxNZj1mcyxDZj1FbyxSZj1ZcigiaXRlcmF0b3IiKSxCZj1PZi5VaW50OEFycmF5LFBmPUNmLnZhbHVlcyxVZj1DZi5rZXlzLERmPUNmLmVudHJpZXMsemY9TWYuYVR5cGVkQXJyYXksamY9TWYuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxMZj1CZiYmQmYucHJvdG90eXBlW1JmXSxGZj0hIUxmJiYoInZhbHVlcyI9PUxmLm5hbWV8fG51bGw9PUxmLm5hbWUpLE5mPWZ1bmN0aW9uKCl7cmV0dXJuIFBmLmNhbGwoemYodGhpcykpfTtqZigiZW50cmllcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIERmLmNhbGwoemYodGhpcykpfSkpLGpmKCJrZXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gVWYuY2FsbCh6Zih0aGlzKSl9KSksamYoInZhbHVlcyIsTmYsIUZmKSxqZihSZixOZiwhRmYpO3ZhciBWZj1mcy5hVHlwZWRBcnJheSxIZj1bXS5qb2luOygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJqb2luIiwoZnVuY3Rpb24odCl7cmV0dXJuIEhmLmFwcGx5KFZmKHRoaXMpLGFyZ3VtZW50cyl9KSk7dmFyIFlmPUgsS2Y9X2UsV2Y9SWUsR2Y9Tm4scWY9TWF0aC5taW4sWGY9W10ubGFzdEluZGV4T2YsJGY9ISFYZiYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxRZj1HZigibGFzdEluZGV4T2YiKSxaZj0kZnx8IVFmP2Z1bmN0aW9uKHQpe2lmKCRmKXJldHVybiBYZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9WWYodGhpcykscj1XZihlLmxlbmd0aCksbj1yLTE7Zm9yKGFyZ3VtZW50cy5sZW5ndGg+MSYmKG49cWYobixLZihhcmd1bWVudHNbMV0pKSksbjwwJiYobj1yK24pO24+PTA7bi0tKWlmKG4gaW4gZSYmZVtuXT09PXQpcmV0dXJuIG58fDA7cmV0dXJuLTF9OlhmLEpmPVpmLHRsPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJsYXN0SW5kZXhPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiBKZi5hcHBseSh0bCh0aGlzKSxhcmd1bWVudHMpfSkpO3ZhciBlbD1Mbi5tYXAscmw9cmYsbmw9ZnMuYVR5cGVkQXJyYXksaWw9ZnMuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGVsKG5sKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyhpbChybCh0LHQuY29uc3RydWN0b3IpKSkoZSl9KSl9KSk7dmFyIGFsPU9uLG9sPXEsc2w9TCx1bD1JZSxjbD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSl7YWwocik7dmFyIGE9b2woZSksbz1zbChhKSxzPXVsKGEubGVuZ3RoKSx1PXQ/cy0xOjAsYz10Py0xOjE7aWYobjwyKWZvcig7Oyl7aWYodSBpbiBvKXtpPW9bdV0sdSs9YzticmVha31pZih1Kz1jLHQ/dTwwOnM8PXUpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt0P3U+PTA6cz51O3UrPWMpdSBpbiBvJiYoaT1yKGksb1t1XSx1LGEpKTtyZXR1cm4gaX19LGZsPXtsZWZ0OmNsKCExKSxyaWdodDpjbCghMCl9LGxsPWZsLmxlZnQsZGw9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInJlZHVjZSIsKGZ1bmN0aW9uKHQpe3JldHVybiBsbChkbCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBobD1mbC5yaWdodCxwbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgicmVkdWNlUmlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4gaGwocGwodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgdmw9ZnMuYVR5cGVkQXJyYXkseWw9ZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxnbD1NYXRoLmZsb29yO3lsKCJyZXZlcnNlIiwoZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLHI9dmwoZSkubGVuZ3RoLG49Z2woci8yKSxpPTA7aTxuOyl0PWVbaV0sZVtpKytdPWVbLS1yXSxlW3JdPXQ7cmV0dXJuIGV9KSk7dmFyIG1sPUllLGJsPVR1LHdsPXEsa2w9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKHQpe2tsKHRoaXMpO3ZhciBlPWJsKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLHI9dGhpcy5sZW5ndGgsbj13bCh0KSxpPW1sKG4ubGVuZ3RoKSxhPTA7aWYoaStlPnIpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIik7Zm9yKDthPGk7KXRoaXNbZSthXT1uW2ErK119KSxJKChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KX0pKSk7dmFyIHhsPXJmLEFsPWZzLmFUeXBlZEFycmF5LFNsPWZzLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsX2w9W10uc2xpY2U7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNsaWNlIiwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9X2wuY2FsbChBbCh0aGlzKSx0LGUpLG49eGwodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxpPTAsYT1yLmxlbmd0aCxvPW5ldyhTbChuKSkoYSk7YT5pOylvW2ldPXJbaSsrXTtyZXR1cm4gb30pLEkoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zbGljZSgpfSkpKTt2YXIgVGw9TG4uc29tZSxFbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29tZSIsKGZ1bmN0aW9uKHQpe3JldHVybiBUbChFbCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgSWw9ZnMuYVR5cGVkQXJyYXksT2w9W10uc29ydDsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29ydCIsKGZ1bmN0aW9uKHQpe3JldHVybiBPbC5jYWxsKElsKHRoaXMpLHQpfSkpO3ZhciBNbD1JZSxDbD1SZSxSbD1yZixCbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic3ViYXJyYXkiLChmdW5jdGlvbih0LGUpe3ZhciByPUJsKHRoaXMpLG49ci5sZW5ndGgsaT1DbCh0LG4pO3JldHVybiBuZXcoUmwocixyLmNvbnN0cnVjdG9yKSkoci5idWZmZXIsci5ieXRlT2Zmc2V0K2kqci5CWVRFU19QRVJfRUxFTUVOVCxNbCgodm9pZCAwPT09ZT9uOkNsKGUsbikpLWkpKX0pKTt2YXIgUGw9ZnMsVWw9SSxEbD1ULkludDhBcnJheSx6bD1QbC5hVHlwZWRBcnJheSxqbD1QbC5leHBvcnRUeXBlZEFycmF5TWV0aG9kLExsPVtdLnRvTG9jYWxlU3RyaW5nLEZsPVtdLnNsaWNlLE5sPSEhRGwmJlVsKChmdW5jdGlvbigpe0xsLmNhbGwobmV3IERsKDEpKX0pKTtqbCgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBMbC5hcHBseShObD9GbC5jYWxsKHpsKHRoaXMpKTp6bCh0aGlzKSxhcmd1bWVudHMpfSksVWwoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IERsKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhVWwoKGZ1bmN0aW9uKCl7RGwucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgVmw9ZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxIbD1JLFlsPVQuVWludDhBcnJheSxLbD1ZbCYmWWwucHJvdG90eXBlfHx7fSxXbD1bXS50b1N0cmluZyxHbD1bXS5qb2luO0hsKChmdW5jdGlvbigpe1dsLmNhbGwoe30pfSkpJiYoV2w9ZnVuY3Rpb24oKXtyZXR1cm4gR2wuY2FsbCh0aGlzKX0pO3ZhciBxbD1LbC50b1N0cmluZyE9V2w7VmwoInRvU3RyaW5nIixXbCxxbCk7dmFyIFhsPXB0LCRsPWZ1bmN0aW9uKCl7dmFyIHQ9WGwodGhpcyksZT0iIjtyZXR1cm4gdC5nbG9iYWwmJihlKz0iZyIpLHQuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQuZG90QWxsJiYoZSs9InMiKSx0LnVuaWNvZGUmJihlKz0idSIpLHQuc3RpY2t5JiYoZSs9InkiKSxlfSxRbD1BdC5leHBvcnRzLFpsPXB0LEpsPUksdGQ9JGwsZWQ9InRvU3RyaW5nIixyZD1SZWdFeHAucHJvdG90eXBlLG5kPXJkLnRvU3RyaW5nLGlkPUpsKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9bmQuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxhZD1uZC5uYW1lIT1lZDsoaWR8fGFkKSYmUWwoUmVnRXhwLnByb3RvdHlwZSxlZCwoZnVuY3Rpb24oKXt2YXIgdD1abCh0aGlzKSxlPVN0cmluZyh0LnNvdXJjZSkscj10LmZsYWdzO3JldHVybiIvIitlKyIvIitTdHJpbmcodm9pZCAwPT09ciYmdCBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gcmQpP3RkLmNhbGwodCk6cil9KSx7dW5zYWZlOiEwfSk7dmFyIG9kPW1yLHNkPVksdWQ9d3IsY2Q9UmUsZmQ9SWUsbGQ9SCxkZD1TcixoZD1ZcixwZD1acigic2xpY2UiKSx2ZD1oZCgic3BlY2llcyIpLHlkPVtdLnNsaWNlLGdkPU1hdGgubWF4O29kKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IXBkfSx7c2xpY2U6ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYT1sZCh0aGlzKSxvPWZkKGEubGVuZ3RoKSxzPWNkKHQsbyksdT1jZCh2b2lkIDA9PT1lP286ZSxvKTtpZih1ZChhKSYmKCJmdW5jdGlvbiIhPXR5cGVvZihyPWEuY29uc3RydWN0b3IpfHxyIT09QXJyYXkmJiF1ZChyLnByb3RvdHlwZSk/c2QocikmJm51bGw9PT0ocj1yW3ZkXSkmJihyPXZvaWQgMCk6cj12b2lkIDAscj09PUFycmF5fHx2b2lkIDA9PT1yKSlyZXR1cm4geWQuY2FsbChhLHMsdSk7Zm9yKG49bmV3KHZvaWQgMD09PXI/QXJyYXk6cikoZ2QodS1zLDApKSxpPTA7czx1O3MrKyxpKyspcyBpbiBhJiZkZChuLGksYVtzXSk7cmV0dXJuIG4ubGVuZ3RoPWksbn19KTt2YXIgbWQ9TyxiZD1kdC5mLHdkPUZ1bmN0aW9uLnByb3RvdHlwZSxrZD13ZC50b1N0cmluZyx4ZD0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLyxBZD0ibmFtZSI7bWQmJiEoQWQgaW4gd2QpJiZiZCh3ZCxBZCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4ga2QuY2FsbCh0aGlzKS5tYXRjaCh4ZClbMV19Y2F0Y2goU3Ype3JldHVybiIifX19KTt2YXIgU2Q9bXIsX2Q9SCxUZD1bXS5qb2luLEVkPUwhPU9iamVjdCxJZD1Obigiam9pbiIsIiwiKTtTZCh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOkVkfHwhSWR9LHtqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBUZC5jYWxsKF9kKHRoaXMpLHZvaWQgMD09PXQ/IiwiOnQpfX0pO3ZhciBPZD17fSxNZD1JO2Z1bmN0aW9uIENkKHQsZSl7cmV0dXJuIFJlZ0V4cCh0LGUpfU9kLlVOU1VQUE9SVEVEX1k9TWQoKGZ1bmN0aW9uKCl7dmFyIHQ9Q2QoImEiLCJ5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJhYmNkIil9KSksT2QuQlJPS0VOX0NBUkVUPU1kKChmdW5jdGlvbigpe3ZhciB0PUNkKCJeciIsImd5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJzdHIiKX0pKTt2YXIgUmQsQmQsUGQ9JGwsVWQ9T2QsRGQ9RHQuZXhwb3J0cyx6ZD1SZWdFeHAucHJvdG90eXBlLmV4ZWMsamQ9RGQoIm5hdGl2ZS1zdHJpbmctcmVwbGFjZSIsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxMZD16ZCxGZD0oUmQ9L2EvLEJkPS9iKi9nLHpkLmNhbGwoUmQsImEiKSx6ZC5jYWxsKEJkLCJhIiksMCE9PVJkLmxhc3RJbmRleHx8MCE9PUJkLmxhc3RJbmRleCksTmQ9VWQuVU5TVVBQT1JURURfWXx8VWQuQlJPS0VOX0NBUkVULFZkPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoRmR8fFZkfHxOZCkmJihMZD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhPXRoaXMsbz1OZCYmYS5zdGlja3kscz1QZC5jYWxsKGEpLHU9YS5zb3VyY2UsYz0wLGY9dDtyZXR1cm4gbyYmKC0xPT09KHM9cy5yZXBsYWNlKCJ5IiwiIikpLmluZGV4T2YoImciKSYmKHMrPSJnIiksZj1TdHJpbmcodCkuc2xpY2UoYS5sYXN0SW5kZXgpLGEubGFzdEluZGV4PjAmJighYS5tdWx0aWxpbmV8fGEubXVsdGlsaW5lJiYiXG4iIT09dFthLmxhc3RJbmRleC0xXSkmJih1PSIoPzogIit1KyIpIixmPSIgIitmLGMrKykscj1uZXcgUmVnRXhwKCJeKD86Iit1KyIpIixzKSksVmQmJihyPW5ldyBSZWdFeHAoIl4iK3UrIiQoPyFcXHMpIixzKSksRmQmJihlPWEubGFzdEluZGV4KSxuPXpkLmNhbGwobz9yOmEsZiksbz9uPyhuLmlucHV0PW4uaW5wdXQuc2xpY2UoYyksblswXT1uWzBdLnNsaWNlKGMpLG4uaW5kZXg9YS5sYXN0SW5kZXgsYS5sYXN0SW5kZXgrPW5bMF0ubGVuZ3RoKTphLmxhc3RJbmRleD0wOkZkJiZuJiYoYS5sYXN0SW5kZXg9YS5nbG9iYWw/bi5pbmRleCtuWzBdLmxlbmd0aDplKSxWZCYmbiYmbi5sZW5ndGg+MSYmamQuY2FsbChuWzBdLHIsKGZ1bmN0aW9uKCl7Zm9yKGk9MTtpPGFyZ3VtZW50cy5sZW5ndGgtMjtpKyspdm9pZCAwPT09YXJndW1lbnRzW2ldJiYobltpXT12b2lkIDApfSkpLG59KTttcih7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PUxkfSx7ZXhlYzpMZH0pO3ZhciBIZCxZZCxLZD1tcixXZD1ZLEdkPShIZD0hMSwoWWQ9L1thY10vKS5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIEhkPSEwLC8uLy5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sITA9PT1ZZC50ZXN0KCJhYmMiKSYmSGQpLHFkPS8uLy50ZXN0O0tkKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOiFHZH0se3Rlc3Q6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuZXhlYylyZXR1cm4gcWQuY2FsbCh0aGlzLHQpO3ZhciBlPXRoaXMuZXhlYyh0KTtpZihudWxsIT09ZSYmIVdkKGUpKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuISFlfX0pO3ZhciBYZD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdywkZD1YZCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvY2FsZUxvd2VyQ2FzZSgpO1hkJiYvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvLnRlc3QoJGQpO3ZhciBRZD1YZCYmJGQuaW5jbHVkZXMoImZpcmVmb3giKSxaZD1YZCYmJGQuaW5jbHVkZXMoImFuZHJvaWQiKSxKZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt5KHRoaXMsdCl9cmV0dXJuIG0odCxudWxsLFt7a2V5OiJnZXRSYXRlSW5kZXhCeVJhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LkZSRVEuaW5kZXhPZihlKX19LHtrZXk6InBhcnNlQURUUyIsdmFsdWU6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49ZS5sZW5ndGgsaT0wO2krMjxuJiYoMjU1IT09ZVtpXXx8MjQwIT0oMjQ2JmVbaSsxXSkpOylpKys7aWYoIShpPj1uKSl7dmFyIGE9aSxvPVtdLHM9KDYwJmVbaSsyXSk+Pj4yLHU9dC5GUkVRW3NdO2lmKCF1KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzYW1wbGluZyBpbmRleDogIi5jb25jYXQocykpO2Zvcih2YXIgYyxmLGw9MSsoKDE5MiZlW2krMl0pPj4+NiksZD0oMSZlW2krMl0pPDwyfCgxOTImZVtpKzNdKT4+PjYsaD10Ll9nZXRDb25maWcocyxkLGwpLHA9aC5jb25maWcsdj1oLmNvZGVjLHk9MCxnPXQuZ2V0RnJhbWVEdXJhdGlvbih1KTtpKzc8bjspaWYoMjU1PT09ZVtpXSYmMjQwPT0oMjQ2JmVbaSsxXSkpe2lmKG4taTwoZj0oMyZlW2krM10pPDwxMXxlW2krNF08PDN8KDIyNCZlW2krNV0pPj41KSlicmVhaztjPTIqKDEmfmVbaSsxXSksby5wdXNoKHtwdHM6cit5KmcsZGF0YTplLnN1YmFycmF5KGkrNytjLGkrZil9KSx5KyssaSs9Zn1lbHNlIGkrKztyZXR1cm57c2tpcDphLHJlbWFpbmluZzppPj1uP3ZvaWQgMDplLnN1YmFycmF5KGkpLGZyYW1lczpvLHNhbXBsaW5nRnJlcXVlbmN5SW5kZXg6cyxzYW1wbGVSYXRlOnUsb2JqZWN0VHlwZTpsLGNoYW5uZWxDb3VudDpkLGNvZGVjOnYsY29uZmlnOnAsb3JpZ2luQ29kZWM6Im1wNGEuNDAuIi5jb25jYXQobCl9fX19LHtrZXk6InBhcnNlQXVkaW9TcGVjaWZpY0NvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGgpe3ZhciByPWVbMF0+Pj4zLG49KDcmZVswXSk8PDF8ZVsxXT4+PjcsaT0oMTIwJmVbMV0pPj4+MyxhPXQuRlJFUVtuXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2FtcGxpbmcgaW5kZXg6ICIuY29uY2F0KG4pKTt2YXIgbz10Ll9nZXRDb25maWcobixpLHIpO3JldHVybntzYW1wbGluZ0ZyZXF1ZW5jeUluZGV4Om4sc2FtcGxlUmF0ZTphLG9iamVjdFR5cGU6cixjaGFubmVsQ291bnQ6aSxjb25maWc6by5jb25maWcsY29kZWM6by5jb2RlYyxvcmlnaW5Db2RlYzoibXA0YS40MC4iLmNvbmNhdChyKX19fX0se2tleToiZ2V0RnJhbWVEdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNDtyZXR1cm4gMTAyNCplL3R9fSx7a2V5OiJfZ2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG4saSxhPVtdO3JldHVybiBRZD90Pj02PyhuPTUsaT10LTMpOihuPTIsaT10KTpaZD8obj0yLGk9dCk6KG49Mj09PXJ8fDU9PT1yP3I6NSxpPXQsdD49Nj9pPXQtMzoxPT09ZSYmKG49MixpPXQpKSxhWzBdPW48PDMsYVswXXw9KDE0JnQpPj4xLGFbMV09KDEmdCk8PDcsYVsxXXw9ZTw8Myw1PT09biYmKGFbMV18PSgxNCZpKT4+MSxhWzJdPSgxJmkpPDw3LGFbMl18PTgsYVszXT0wKSx7Y29uZmlnOmEsY29kZWM6Im1wNGEuNDAuIi5jb25jYXQobil9fX0se2tleToiZ2V0U2lsZW50RnJhbWUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIm1wNGEuNDAuMiI9PT10KXtpZigxPT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDM1LDEyOF0pO2lmKDI9PT1lKXJldHVybiBuZXcgVWludDhBcnJheShbMzMsMCw3MywxNDQsMiwyNSwwLDM1LDEyOF0pO2lmKDM9PT1lKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxNDJdKTtpZig0PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTI4LDQ0LDEyOCw4LDIsNTZdKTtpZig1PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsNTZdKTtpZig2PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsMCwxNzgsMCwzMiw4LDIyNF0pfWVsc2V7aWYoMT09PWUpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsNzgsMjMwLDEyOCwxODYsOCwwLDAsMCwyOCw2LDI0MSwxOTMsMTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTRdKTtpZigyPT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzEsNjQsMzQsMTI4LDE2Myw5NCwyMzAsMTI4LDE4Niw4LDAsMCwwLDAsMTQ5LDAsNiwyNDEsMTYxLDEwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDk0XSk7aWYoMz09PWUpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsOTQsMjMwLDEyOCwxODYsOCwwLDAsMCwwLDE0OSwwLDYsMjQxLDE2MSwxMCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5NF0pfX19XSksdH0oKTtmdW5jdGlvbiB0aCgpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO2U9ZS5maWx0ZXIoQm9vbGVhbik7dmFyIG49bmV3IFVpbnQ4QXJyYXkoZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5ieXRlTGVuZ3RofSksMCkpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnNldCh0LGkpLGkrPXQuYnl0ZUxlbmd0aH0pKSxufWIoSmQsIkZSRVEiLFs5NmUzLDg4MjAwLDY0ZTMsNDhlMyw0NDEwMCwzMmUzLDI0ZTMsMjIwNTAsMTZlMywxMmUzLDExMDI1LDhlMyw3MzUwXSk7dmFyIGVoPU1hdGgucG93KDIsMzIpO2Z1bmN0aW9uIHJoKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybih0W2VdPDw4KSsodFtlKzFdfHwwKX1mdW5jdGlvbiBuaCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4odFtlXTw8MjQ+Pj4wKSsodFtlKzFdPDwxNikrKHRbZSsyXTw8OCkrKHRbZSszXXx8MCl9ZnVuY3Rpb24gaWgodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuIG5oKHQsZSkqZWgrbmgodCxlKzQpfWZ1bmN0aW9uIGFoKHQpe3ZhciBlPSIiO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZSs9ZnVuY3Rpb24odCl7cmV0dXJuKCIwIitOdW1iZXIodCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikudG9VcHBlckNhc2UoKX0odCl9KSksZS5sZW5ndGg8PTMyKWZvcih2YXIgcj0zMi1lLmxlbmd0aCxuPTA7bjxyO24rKyllKz0iMCI7cmV0dXJuIGV9ZnVuY3Rpb24gb2godCl7aWYoIUFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgZT1bXSxyPSIiLG49MDtuPHQubGVuZ3RoO24rKyluJTImJihyPXRbbi0xXSt0W25dLGUucHVzaChwYXJzZUludChyLDE2KSkscj0iIik7cmV0dXJuIGV9cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxNil9KSl9dmFyIHNoPU8sdWg9ZHQsY2g9JGwsZmg9T2QuVU5TVVBQT1JURURfWTtzaCYmKCJnIiE9Ly4vZy5mbGFnc3x8ZmgpJiZ1aC5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpjaH0pO3ZhciBsaD1ULGRoPUluLGhoPUVvLHBoPXh0LHZoPVlyLHloPXZoKCJpdGVyYXRvciIpLGdoPXZoKCJ0b1N0cmluZ1RhZyIpLG1oPWhoLnZhbHVlcztmb3IodmFyIGJoIGluIGRoKXt2YXIgd2g9bGhbYmhdLGtoPXdoJiZ3aC5wcm90b3R5cGU7aWYoa2gpe2lmKGtoW3loXSE9PW1oKXRyeXtwaChraCx5aCxtaCl9Y2F0Y2goU3Ype2toW3loXT1taH1pZihraFtnaF18fHBoKGtoLGdoLGJoKSxkaFtiaF0pZm9yKHZhciB4aCBpbiBoaClpZihraFt4aF0hPT1oaFt4aF0pdHJ5e3BoKGtoLHhoLGhoW3hoXSl9Y2F0Y2goU3Ype2toW3hoXT1oaFt4aF19fX12YXIgQWg9X2UsU2g9RixfaD1JZSxUaD1mdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcoU2godGhpcykpLHI9IiIsbj1BaCh0KTtpZihuPDB8fG49PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMiKTtmb3IoO24+MDsobj4+Pj0xKSYmKGUrPWUpKTEmbiYmKHIrPWUpO3JldHVybiByfSxFaD1GLEloPU1hdGguY2VpbCxPaD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3ZhciBpLGEsbz1TdHJpbmcoRWgoZSkpLHM9by5sZW5ndGgsdT12b2lkIDA9PT1uPyIgIjpTdHJpbmcobiksYz1faChyKTtyZXR1cm4gYzw9c3x8IiI9PXU/bzooaT1jLXMsKGE9VGguY2FsbCh1LEloKGkvdS5sZW5ndGgpKSkubGVuZ3RoPmkmJihhPWEuc2xpY2UoMCxpKSksdD9vK2E6YStvKX19LE1oPXtzdGFydDpPaCghMSksZW5kOk9oKCEwKX0sQ2g9L1ZlcnNpb25cLzEwKD86XC5cZCspezEsMn0oPzogW1x3Li9dKyk/KD86IE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3QoX3IpLFJoPU1oLnN0YXJ0O21yKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOkNofSx7cGFkU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIFJoKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIEJoPW1yLFBoPUxuLmZpbmQsVWg9eGksRGg9ImZpbmQiLHpoPSEwO0RoIGluW10mJkFycmF5KDEpLmZpbmQoKGZ1bmN0aW9uKCl7emg9ITF9KSksQmgoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp6aH0se2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIFBoKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksVWgoRGgpO3ZhciBqaD1wdCxMaD1wdCxGaD1mdW5jdGlvbih0KXt2YXIgZT10LnJldHVybjtpZih2b2lkIDAhPT1lKXJldHVybiBqaChlLmNhbGwodCkpLnZhbHVlfSxOaD1DbixWaD1xLEhoPWZ1bmN0aW9uKHQsZSxyLG4pe3RyeXtyZXR1cm4gbj9lKExoKHIpWzBdLHJbMV0pOmUocil9Y2F0Y2goU3Ype3Rocm93IEZoKHQpLFN2fX0sWWg9UHUsS2g9SWUsV2g9U3IsR2g9TXUscWg9ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHM9VmgodCksdT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGM9YXJndW1lbnRzLmxlbmd0aCxmPWM+MT9hcmd1bWVudHNbMV06dm9pZCAwLGw9dm9pZCAwIT09ZixkPUdoKHMpLGg9MDtpZihsJiYoZj1OaChmLGM+Mj9hcmd1bWVudHNbMl06dm9pZCAwLDIpKSxudWxsPT1kfHx1PT1BcnJheSYmWWgoZCkpZm9yKHI9bmV3IHUoZT1LaChzLmxlbmd0aCkpO2U+aDtoKyspbz1sP2Yoc1toXSxoKTpzW2hdLFdoKHIsaCxvKTtlbHNlIGZvcihhPShpPWQuY2FsbChzKSkubmV4dCxyPW5ldyB1OyEobj1hLmNhbGwoaSkpLmRvbmU7aCsrKW89bD9IaChpLGYsW24udmFsdWUsaF0sITApOm4udmFsdWUsV2gocixoLG8pO3JldHVybiByLmxlbmd0aD1oLHJ9O21yKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDohUG8oKGZ1bmN0aW9uKHQpe0FycmF5LmZyb20odCl9KSl9LHtmcm9tOnFofSk7dmFyIFhoPV9lLCRoPUYsUWg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG4saSxhPVN0cmluZygkaChlKSksbz1YaChyKSxzPWEubGVuZ3RoO3JldHVybiBvPDB8fG8+PXM/dD8iIjp2b2lkIDA6KG49YS5jaGFyQ29kZUF0KG8pKTw1NTI5Nnx8bj41NjMxOXx8bysxPT09c3x8KGk9YS5jaGFyQ29kZUF0KG8rMSkpPDU2MzIwfHxpPjU3MzQzP3Q/YS5jaGFyQXQobyk6bjp0P2Euc2xpY2UobyxvKzIpOmktNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNn19LFpoPXtjb2RlQXQ6UWgoITEpLGNoYXJBdDpRaCghMCl9LmNoYXJBdCxKaD1jZSx0cD1tbyxlcD0iU3RyaW5nIEl0ZXJhdG9yIixycD1KaC5zZXQsbnA9SmguZ2V0dGVyRm9yKGVwKTt0cChTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKHQpe3JwKHRoaXMse3R5cGU6ZXAsc3RyaW5nOlN0cmluZyh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPW5wKHRoaXMpLHI9ZS5zdHJpbmcsbj1lLmluZGV4O3JldHVybiBuPj1yLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PVpoKHIsbiksZS5pbmRleCs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSkpO3ZhciBpcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt5KHRoaXMsdCl9cmV0dXJuIG0odCxudWxsLFt7a2V5OiJmaW5kQm94Iix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGk9W107aWYoIWUpcmV0dXJuIGk7Zm9yKHZhciBhPTAsbz0iIixzPTA7ZS5sZW5ndGg+Nzspe2lmKGE9bmgoZSksbz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZS5zdWJhcnJheSg0LDgpKSxzPTgsMT09PWE/KGE9aWgoZSw4KSxzKz04KTphfHwoYT1lLmxlbmd0aCksIXJbMF18fG89PT1yWzBdKXt2YXIgdT1lLnN1YmFycmF5KDAsYSk7aWYoIShyLmxlbmd0aDwyKSlyZXR1cm4gdC5maW5kQm94KHUuc3ViYXJyYXkocyksci5zbGljZSgxKSxuK3MpO2kucHVzaCh7c3RhcnQ6bixzaXplOmEsaGVhZGVyU2l6ZTpzLHR5cGU6byxkYXRhOnV9KX1uKz1hLGU9ZS5zdWJhcnJheShhKX1yZXR1cm4gaX19LHtrZXk6InRmaGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3QudHJhY2tJZD1uaChlKTt2YXIgcj00LG49MSZ0LmZsYWdzLGk9MiZ0LmZsYWdzLGE9OCZ0LmZsYWdzLG89MTYmdC5mbGFncyxzPTMyJnQuZmxhZ3M7biYmKHIrPTQsdC5iYXNlRGF0YU9mZnNldD1uaChlLHIpLHIrPTQpLGkmJih0LnNhbXBsZURlc2NyaXB0aW9uSW5kZXg9bmgoZSxyKSxyKz00KSxhJiYodC5kZWZhdWx0U2FtcGxlRHVyYXRpb249bmgoZSxyKSxyKz00KSxvJiYodC5kZWZhdWx0U2FtcGxlU2l6ZT1uaChlLHIpLHIrPTQpLHMmJih0LmRlZmF1bHRTYW1wbGVGbGFncz1uaChlLHIpKX0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7dC5yZWZlcmVuY2VfSUQ9bmgoZSxyKSxyKz00LHQudGltZXNjYWxlPW5oKGUscikscis9NCwwPT09dC52ZXJzaW9uPyh0LmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPW5oKGUscikscis9NCx0LmZpcnN0X29mZnNldD1uaChlLHIpLHIrPTQpOih0LmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPWloKGUscikscis9OCx0LmZpcnN0X29mZnNldD1paChlLHIpLHIrPTgpLHIrPTIsdC5yZWZlcmVuY2VzPVtdO3ZhciBuPXJoKGUscik7cis9Mjtmb3IodmFyIGk9MDtpPG47aSsrKXt2YXIgYT17fTt0LnJlZmVyZW5jZXMucHVzaChhKTt2YXIgbz1uaChlLHIpO3IrPTQsYS5yZWZlcmVuY2VfdHlwZT1vPj4zMSYxLGEucmVmZXJlbmNlZF9zaXplPTIxNDc0ODM2NDcmbyxhLnN1YnNlZ21lbnRfZHVyYXRpb249bmgoZSxyKSxvPW5oKGUscis9NCkscis9NCxhLnN0YXJ0c193aXRoX1NBUD1vPj4zMSYxLGEuU0FQX3R5cGU9bz4+MjgmNyxhLlNBUF9kZWx0YV90aW1lPTI2ODQzNTQ1NSZvfX0pKX19LHtrZXk6Im1vb3YiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5tdmhkPXQubXZoZCh0LmZpbmRCb3gocixbIm12aGQiXSxuKVswXSksZS50cmFrPXQuZmluZEJveChyLFsidHJhayJdLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSxlLnBzc2g9dC5wc3NoKHQuZmluZEJveChyLFsicHNzaCJdLG4pWzBdKX0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7MT09PXQudmVyc2lvbj8odC50aW1lc2NhbGU9bmgoZSwxNiksdC5kdXJhdGlvbj1paChlLDIwKSxyKz0yOCk6KHQudGltZXNjYWxlPW5oKGUsOCksdC5kdXJhdGlvbj1uaChlLDEyKSxyKz0xNiksdC5uZXh0VHJhY2tJZD1uaChlLHIrNzYpfSkpfX0se2tleToidHJhayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRraGQ9dC50a2hkKHQuZmluZEJveChyLFsidGtoZCJdLG4pWzBdKSxlLm1kaWE9dC5tZGlhKHQuZmluZEJveChyLFsibWRpYSJdLG4pWzBdKX0pKX19LHtrZXk6InRraGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7MT09PXQudmVyc2lvbj8odC50cmFja0lkPW5oKGUsMTYpLHQuZHVyYXRpb249aWgoZSwyNCkscis9MzIpOih0LnRyYWNrSWQ9bmgoZSw4KSx0LmR1cmF0aW9uPW5oKGUsMTYpLHIrPTIwKSx0LndpZHRoPW5oKGUscis1MiksdC5oZWlnaHQ9bmgoZSxyKzU2KX0pKX19LHtrZXk6Im1kaWEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5tZGhkPXQubWRoZCh0LmZpbmRCb3gocixbIm1kaGQiXSxuKVswXSksZS5oZGxyPXQuaGRscih0LmZpbmRCb3gocixbImhkbHIiXSxuKVswXSksZS5taW5mPXQubWluZih0LmZpbmRCb3gocixbIm1pbmYiXSxuKVswXSl9KSl9fSx7a2V5OiJtZGhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt2YXIgcj0wOzE9PT10LnZlcnNpb24/KHQudGltZXNjYWxlPW5oKGUsMTYpLHQuZHVyYXRpb249aWgoZSwyMCkscis9MjgpOih0LnRpbWVzY2FsZT1uaChlLDgpLHQuZHVyYXRpb249bmgoZSwxMikscis9MTYpO3ZhciBuPXJoKGUscik7dC5sYW5ndWFnZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDk2KyhuPj4xMCYzMSksOTYrKG4+PjUmMzEpLDk2KygzMSZuKSl9KSl9fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXswPT09dC52ZXJzaW9uJiYodC5oYW5kbGVyVHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZS5zdWJhcnJheSg0LDgpKSl9KSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uudm1oZD10LnZtaGQodC5maW5kQm94KHIsWyJ2bWhkIl0sbilbMF0pLGUuc21oZD10LnNtaGQodC5maW5kQm94KHIsWyJzbWhkIl0sbilbMF0pLGUuc3RibD10LnN0YmwodC5maW5kQm94KHIsWyJzdGJsIl0sbilbMF0pfSkpfX0se2tleToidm1oZCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITAsKGZ1bmN0aW9uKHQsZSl7dC5ncmFwaGljc21vZGU9cmgoZSksdC5vcGNvbG9yPVtyaChlLDIpLHJoKGUsNCkscmgoZSw2KV19KSl9fSx7a2V5OiJzbWhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LmJhbGFuY2U9cmgoZSl9KSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uuc3RzZD10LnN0c2QodC5maW5kQm94KHIsWyJzdHNkIl0sbilbMF0pLGUuc3R0cz10LnN0dHModC5maW5kQm94KHIsWyJzdHRzIl0sbilbMF0pLGUuY3R0cz10LmN0dHModC5maW5kQm94KHIsWyJjdHRzIl0sbilbMF0pLGUuc3RzYz10LnN0c2ModC5maW5kQm94KHIsWyJzdHNjIl0sbilbMF0pLGUuc3Rzej10LnN0c3oodC5maW5kQm94KHIsWyJzdHN6Il0sbilbMF0pLGUuc3Rjbz10LnN0Y28odC5maW5kQm94KHIsWyJzdGNvIl0sbilbMF0pLGUuc3Rjb3x8KGUuY282ND10LmNvNjQodC5maW5kQm94KHIsWyJjbzY0Il0sbilbMF0pLGUuc3Rjbz1lLmNvNjQpLGUuc3Rzcz10LnN0c3ModC5maW5kQm94KHIsWyJzdHNzIl0sbilbMF0pLGUuc2VuYz10LnNlbmModC5maW5kQm94KHIsWyJzZW5jIl0sbilbMF0pfSkpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITAsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9MCxuPW5oKGUscik7cis9NCx0LnNhbXBsZXM9W107Zm9yKHZhciBpPTA7aTxuO2krKyl7dmFyIGE9e307aWYoYS5Jbml0aWFsaXphdGlvblZlY3Rvcj1bZVtyXSxlW3IrMV0sZVtyKzJdLGVbciszXSxlW3IrNF0sZVtyKzVdLGVbcis2XSxlW3IrN11dLHIrPTgsMiZ0LmZsYWdzKXthLnN1YnNhbXBsZXM9W107dmFyIG89cmgoZSxyKTtyKz0yO2Zvcih2YXIgcz0wO3M8bztzKyspe3ZhciB1PXt9O3UuQnl0ZXNPZkNsZWFyRGF0YT1yaChlLHIpLHIrPTIsdS5CeXRlc09mUHJvdGVjdGVkRGF0YT1uaChlLHIpLHIrPTQsYS5zdWJzYW1wbGVzLnB1c2godSl9fXQuc2FtcGxlcy5wdXNoKGEpfX0pKX19LHtrZXk6InBzc2giLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPVtdLGk9MCxhPTA7YTwxNjthKyspbi5wdXNoKGZwKGVbaSthXSkpO2lmKGkrPTE2LHQudmVyc2lvbj4wKXt2YXIgbz1uaChlLGkpO2krPTQ7Zm9yKHZhciBzPTA7czwoIiIrbykubGVuZ3RoO3MrKylmb3IodmFyIHU9MDt1PDE2O3UrKyl7dmFyIGM9ZVtpXTtpKz0xLHIucHVzaChmcChjKSl9fXZhciBmPW5oKGUsaSk7dC5kYXRhX3NpemU9ZixpKz00LHQua2lkPXIsdC5zeXN0ZW1faWQ9bix0LmJ1ZmZlcj1lfSkpfX0se2tleToic3RzZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITAsKGZ1bmN0aW9uKGUscixuKXtlLmVudHJ5Q291bnQ9bmgociksZS5lbnRyaWVzPXQuZmluZEJveChyLnN1YmFycmF5KDQpLFtdLG4rNCkubWFwKChmdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlImF2YzEiOmNhc2UiYXZjMiI6Y2FzZSJhdmMzIjpjYXNlImF2YzQiOnJldHVybiB0LmF2YzEoZSk7Y2FzZSJodmMxIjpjYXNlImhldjEiOnJldHVybiB0Lmh2YzEoZSk7Y2FzZSJtcDRhIjpyZXR1cm4gdC5tcDRhKGUpO2Nhc2UiYWxhdyI6Y2FzZSJ1bGF3IjpyZXR1cm4gdC5hbGF3KGUpO2Nhc2UiZW5jYSI6cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLmNoYW5uZWxDb3VudD1yaChyLDE2KSxlLnNhbXBsZXNpemU9cmgociwxOCksZS5zYW1wbGVSYXRlPW5oKHIsMjQpLzY1NTM2LHI9ci5zdWJhcnJheSgyOCksZS5zaW5mPXQuc2luZih0LmZpbmRCb3gocixbInNpbmYiXSxuKVswXSksZS5lc2RzPXQuZXNkcyh0LmZpbmRCb3gocixbImVzZHMiXSxuKVswXSl9KSk7Y2FzZSJlbmN2IjpyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uud2lkdGg9cmgociwyNCksZS5oZWlnaHQ9cmgociwyNiksZS5ob3JpenJlc29sdXRpb249bmgociwyOCksZS52ZXJ0cmVzb2x1dGlvbj1uaChyLDMyKSxyPXIuc3ViYXJyYXkoNzgpLGUuc2luZj10LnNpbmYodC5maW5kQm94KHIsWyJzaW5mIl0sbilbMF0pLGUuYXZjQz10LmF2Y0ModC5maW5kQm94KHIsWyJhdmNDIl0sbilbMF0pLGUuaHZjQz10Lmh2Y0ModC5maW5kQm94KHIsWyJodmNDIl0sbilbMF0pLGUucGFzcD10LnBhc3AodC5maW5kQm94KHIsWyJwYXNwIl0sbilbMF0pfSkpfX0pKS5maWx0ZXIoQm9vbGVhbil9KSl9fSx7a2V5OiJ0ZW5jIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24odCxlKXt2YXIgcj02O3QuZGVmYXVsdF9Jc0VuY3J5cHRlZD1lW3JdLHIrPTEsdC5kZWZhdWx0X0lWX3NpemU9ZVtyXSxyKz0xLHQuZGVmYXVsdF9LSUQ9W107Zm9yKHZhciBuPTA7bjwxNjtuKyspdC5kZWZhdWx0X0tJRC5wdXNoKGZwKGVbcl0pKSxyKz0xfSkpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRlbmM9dC50ZW5jKHQuZmluZEJveChyLFsidGVuYyJdLG4pWzBdKX0pKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5zY2hpPXQuc2NoaSh0LmZpbmRCb3gocixbInNjaGkiXSxuKVswXSksZS5mcm1hPXQuZnJtYSh0LmZpbmRCb3gocixbImZybWEiXSxuKVswXSl9KSl9fSx7a2V5OiJmcm1hIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24odCxlKXt0LmRhdGFfZm9ybWF0PSIiO2Zvcih2YXIgcj0wO3I8NDtyKyspdC5kYXRhX2Zvcm1hdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW3JdKX0pKX19LHtrZXk6ImF2YzEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7dmFyIGk9b3AoZSxyKSxhPXIuc3ViYXJyYXkoaSk7bis9aSxlLmF2Y0M9dC5hdmNDKHQuZmluZEJveChhLFsiYXZjQyJdLG4pWzBdKSxlLnBhc3A9dC5wYXNwKHQuZmluZEJveChhLFsicGFzcCJdLG4pWzBdKX0pKX19LHtrZXk6ImF2Y0MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCExLChmdW5jdGlvbih0LGUpe3QuY29uZmlndXJhdGlvblZlcnNpb249ZVswXSx0LkFWQ1Byb2ZpbGVJbmRpY2F0aW9uPWVbMV0sdC5wcm9maWxlQ29tcGF0aWJpbGl0eT1lWzJdLHQuQVZDTGV2ZWxJbmRpY2F0aW9uPWVbM10sdC5jb2RlYz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj0iYXZjMS4iLG49MDtuPDM7bisrKShlPXRbbl0udG9TdHJpbmcoMTYpKS5sZW5ndGg8MiYmKGU9IjAiLmNvbmNhdChlKSkscis9ZTtyZXR1cm4gcn0oW2VbMV0sZVsyXSxlWzNdXSksdC5sZW5ndGhTaXplTWludXNPbmU9MyZlWzRdLHQuc3BzTGVuZ3RoPTMxJmVbNV0sdC5zcHM9W107Zm9yKHZhciByPTYsbj0wO248dC5zcHNMZW5ndGg7bisrKXt2YXIgaT1yaChlLHIpO3IrPTIsdC5zcHMucHVzaChlLnN1YmFycmF5KHIscitpKSkscis9aX10LnBwc0xlbmd0aD1lW3JdLHIrPTEsdC5wcHM9W107Zm9yKHZhciBhPTA7YTx0LnBwc0xlbmd0aDthKyspe3ZhciBvPXJoKGUscik7cis9Mix0LnBwcy5wdXNoKGUuc3ViYXJyYXkocixyKz1vKSkscis9b319KSl9fSx7a2V5OiJodmMxIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe3ZhciBpPW9wKGUsciksYT1yLnN1YmFycmF5KGkpO24rPWksZS5odmNDPXQuaHZjQyh0LmZpbmRCb3goYSxbImh2Y0MiXSxuKVswXSksZS5wYXNwPXQucGFzcCh0LmZpbmRCb3goYSxbInBhc3AiXSxuKVswXSl9KSl9fSx7a2V5OiJodmNDIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24oZSxyKXtlLmRhdGE9dC5kYXRhLGUuY29kZWM9ImhldjEuMS42Lkw5My5CMCIsZS5jb25maWd1cmF0aW9uVmVyc2lvbj1yWzBdO3ZhciBuPXJbMV07ZS5nZW5lcmFsUHJvZmlsZVNwYWNlPW4+PjYsZS5nZW5lcmFsVGllckZsYWc9KDMyJm4pPj41LGUuZ2VuZXJhbFByb2ZpbGVJZGM9MzEmbixlLmdlbmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0eT1uaChyLDIpLGUuZ2VuZXJhbENvbnN0cmFpbnRJbmRpY2F0b3JGbGFncz1yLnN1YmFycmF5KDYsMTIpLGUuZ2VuZXJhbExldmVsSWRjPXJbMTJdLGUuYXZnRnJhbWVSYXRlPXJoKHIsMTkpLGUubnVtT2ZBcnJheXM9clsyMl0sZS52cHM9W10sZS5zcHM9W10sZS5wcHM9W107Zm9yKHZhciBpPTIzLGE9MCxvPTAscz0wLHU9MDt1PGUubnVtT2ZBcnJheXM7dSsrKXthPTYzJnJbaV0sbz1yaChyLGkrMSksaSs9Mztmb3IodmFyIGMsZj1bXSxsPTA7bDxvO2wrKylzPXJoKHIsaSksaSs9MixmLnB1c2goci5zdWJhcnJheShpLGkrcykpLGkrPXM7aWYoMzI9PT1hKShjPWUudnBzKS5wdXNoLmFwcGx5KGMsZik7ZWxzZSBpZigzMz09PWEpe3ZhciBkOyhkPWUuc3BzKS5wdXNoLmFwcGx5KGQsZil9ZWxzZSBpZigzND09PWEpe3ZhciBoOyhoPWUucHBzKS5wdXNoLmFwcGx5KGgsZil9fX0pKX19LHtrZXk6InBhc3AiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCExLChmdW5jdGlvbih0LGUpe3QuaFNwYWNpbmc9bmgoZSksdC52U3BhY2luZz1uaChlLDQpfSkpfX0se2tleToibXA0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXt2YXIgaT1zcChlLHIpO2UuZXNkcz10LmVzZHModC5maW5kQm94KHIuc3ViYXJyYXkoaSksWyJlc2RzIl0sbitpKVswXSl9KSl9fSx7a2V5OiJlc2RzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LmNvZGVjPSJtcDRhLiI7Zm9yKHZhciByPTAsbj0wLGk9MCxhPTA7ZS5sZW5ndGg7KXtmb3IoYT1lW3I9MF0sbj1lW3IrMV0scis9MjsxMjgmbjspaT0oMTI3Jm4pPDw3LG49ZVtyXSxyKz0xO2lmKGkrPTEyNyZuLDM9PT1hKWU9ZS5zdWJhcnJheShyKzMpO2Vsc2V7aWYoNCE9PWEpe2lmKDU9PT1hKXt2YXIgbz10LmNvbmZpZz1lLnN1YmFycmF5KHIscitpKSxzPSgyNDgmb1swXSk+PjM7cmV0dXJuIDMxPT09cyYmby5sZW5ndGg+PTImJihzPTMyKygoNyZvWzBdKTw8MykrKCgyMjQmb1sxXSk+PjUpKSx0Lm9iamVjdFR5cGU9cyx0LmNvZGVjKz1zLnRvU3RyaW5nKDE2KSx2b2lkKCIuIj09PXQuY29kZWNbdC5jb2RlYy5sZW5ndGgtMV0mJih0LmNvZGVjPXQuY29kZWMuc3Vic3RyaW5nKDAsdC5jb2RlYy5sZW5ndGgtMSkpKX1yZXR1cm4gdm9pZCgiLiI9PT10LmNvZGVjW3QuY29kZWMubGVuZ3RoLTFdJiYodC5jb2RlYz10LmNvZGVjLnN1YnN0cmluZygwLHQuY29kZWMubGVuZ3RoLTEpKSl9dC5jb2RlYys9KGVbcl0udG9TdHJpbmcoMTYpKyIuIikucGFkU3RhcnQoMywiMCIpLGU9ZS5zdWJhcnJheShyKzEzKX19fSkpfX0se2tleToiYWxhdyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITEsKGZ1bmN0aW9uKHQsZSl7c3AodCxlKX0pKX19LHtrZXk6InN0dHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uaChlKSxuPVtdLGk9NCxhPTA7YTxyO2ErKyluLnB1c2goe2NvdW50Om5oKGUsaSksZGVsdGE6bmgoZSxpKzQpfSksaSs9ODt0LmVudHJ5Q291bnQ9cix0LmVudHJpZXM9bn0pKX19LHtrZXk6ImN0dHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPW5oKGUpLG49W10saT00O2lmKDE9PT10LnZlcnNpb24pZm9yKHZhciBhPTA7YTxyO2ErKyluLnB1c2goe2NvdW50Om5oKGUsaSksb2Zmc2V0Om5oKGUsaSs0KX0pLGkrPTg7ZWxzZSBmb3IodmFyIG89MDtvPHI7bysrKW4ucHVzaCh7Y291bnQ6bmgoZSxpKSxvZmZzZXQ6LSgxK35uaChlLGkrNCkpfSksaSs9ODt0LmVudHJ5Q291bnQ9cix0LmVudHJpZXM9bn0pKX19LHtrZXk6InN0c2MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uaChlKSxuPVtdLGk9NCxhPTA7YTxyO2ErKyluLnB1c2goe2ZpcnN0Q2h1bms6bmgoZSxpKSxzYW1wbGVzUGVyQ2h1bms6bmgoZSxpKzQpLHNhbXBsZURlc2NyaXB0aW9uSW5kZXg6bmgoZSxpKzgpfSksaSs9MTI7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJzdHN6Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt2YXIgcj1uaChlKSxuPW5oKGUsNCksaT1bXTtpZighcilmb3IodmFyIGE9OCxvPTA7bzxuO28rKylpLnB1c2gobmgoZSxhKSksYSs9NDt0LnNhbXBsZVNpemU9cix0LnNhbXBsZUNvdW50PW4sdC5lbnRyeVNpemVzPWl9KSl9fSx7a2V5OiJzdGNvIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKG5oKGUsaSkpLGkrPTQ7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJjbzY0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKGloKGUsaSkpLGkrPTg7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJzdHNzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKG5oKGUsaSkpLGkrPTQ7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJtb29mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2UubWZoZD10Lm1maGQodC5maW5kQm94KHIsWyJtZmhkIl0sbilbMF0pLGUudHJhZj10LmZpbmRCb3gocixbInRyYWYiXSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnRyYWYoZSl9KSl9KSl9fSx7a2V5OiJtZmhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LnNlcXVlbmNlTnVtYmVyPW5oKGUpfSkpfX0se2tleToidHJhZiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRmaGQ9dC50ZmhkKHQuZmluZEJveChyLFsidGZoZCJdLG4pWzBdKSxlLnRmZHQ9dC50ZmR0KHQuZmluZEJveChyLFsidGZkdCJdLG4pWzBdKSxlLnRydW49dC50cnVuKHQuZmluZEJveChyLFsidHJ1biJdLG4pWzBdKX0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPXQudmVyc2lvbixuPXQuZmxhZ3MsaT1lLmxlbmd0aCxhPXQuc2FtcGxlQ291bnQ9bmgoZSksbz00O2lmKGk+byYmMSZuJiYodC5kYXRhT2Zmc2V0PS0oMSt+bmgoZSxvKSksbys9NCksaT5vJiY0Jm4mJih0LmZpcnN0U2FtcGxlRmxhZ3M9bmgoZSxvKSxvKz00KSx0LnNhbXBsZXM9W10saT5vKWZvcih2YXIgcyx1PTA7dTxhO3UrKylzPXt9LDI1NiZuJiYocy5kdXJhdGlvbj1uaChlLG8pLG8rPTQpLDUxMiZuJiYocy5zaXplPW5oKGUsbyksbys9NCksMTAyNCZuJiYocy5mbGFncz1uaChlLG8pLG8rPTQpLDIwNDgmbiYmKHMuY3RzPXI/LSgxK35uaChlLG8rNCkpOm5oKGUsbyksbys9NCksdC5zYW1wbGVzLnB1c2gocyl9KSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXsxPT09dC52ZXJzaW9uP3QuYmFzZU1lZGlhRGVjb2RlVGltZT1paChlKTp0LmJhc2VNZWRpYURlY29kZVRpbWU9bmgoZSl9KSl9fSx7a2V5OiJwcm9iZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0LmZpbmRCb3goZSxbImZ0eXAiXSl9fSx7a2V5OiJwYXJzZVNhbXBsZUZsYWdzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57aXNMZWFkaW5nOigxMiZ0WzBdKT4+PjIsZGVwZW5kc09uOjMmdFswXSxpc0RlcGVuZGVkT246KDE5MiZ0WzFdKT4+PjYsaGFzUmVkdW5kYW5jeTooNDgmdFsxXSk+Pj40LHBhZGRpbmdWYWx1ZTooMTQmdFsxXSk+Pj4xLGlzTm9uU3luY1NhbXBsZToxJnRbMV0sZGVncmFkYXRpb25Qcmlvcml0eTp0WzJdPDw4fHRbM119fX0se2tleToibW9vdlRvVHJhY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGE9dC50cmFrO2lmKGEmJmEubGVuZ3RoKXt2YXIgbz1hLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSkscz1hLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSk7aWYobyYmZSl7dmFyIHUsYyxmLGwsZCxoLHAsdj1lLHk9bnVsbD09PSh1PW8udGtoZCl8fHZvaWQgMD09PXU/dm9pZCAwOnUudHJhY2tJZDtudWxsIT15JiYodi5pZD1vLnRraGQudHJhY2tJZCksdi50a2hkRHVyYXRpb249by50a2hkLmR1cmF0aW9uLHYubXZoZER1cnRpb249dC5tdmhkLmR1cmF0aW9uLHYubXZoZFRpbWVjYWxlPXQubXZoZC50aW1lc2NhbGUsdi50aW1lc2NhbGU9di5mb3JtYXRUaW1lc2NhbGU9by5tZGlhLm1kaGQudGltZXNjYWxlLHYuZHVyYXRpb249by5tZGlhLm1kaGQuZHVyYXRpb258fHYubXZoZER1cnRpb24vdi5tdmhkVGltZWNhbGUqdi50aW1lc2NhbGU7dmFyIGcsbSxiLHcsayx4LEEsUyxfPW8ubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdO2lmKHYud2lkdGg9Xy53aWR0aCx2LmhlaWdodD1fLmhlaWdodCxfLnBhc3AmJih2LnNhclJhdGlvPVtfLnBhc3AuaFNwYWNpbmcsXy5wYXNwLnZTcGFjaW5nXSksXy5odmNDKXYuY29kZWNUeXBlPXppLHYuY29kZWM9Xy5odmNDLmNvZGVjLHYudnBzPV8uaHZjQy52cHMsdi5zcHM9Xy5odmNDLnNwcyx2LnBwcz1fLmh2Y0MucHBzLHYuaHZjQz1fLmh2Y0MuZGF0YTtlbHNle2lmKCFfLmF2Y0MpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHZpZGVvIHN0c2QgZW50cnkiKTt2LmNvZGVjPV8uYXZjQy5jb2RlYyx2LnNwcz1fLmF2Y0Muc3BzLHYucHBzPV8uYXZjQy5wcHN9aWYodi5wcmVzZW50PSEwLHYuZXh0PXt9LHYuZXh0LnN0c3M9bnVsbD09PShjPW8ubWRpYSl8fHZvaWQgMD09PWN8fG51bGw9PT0oZj1jLm1pbmYpfHx2b2lkIDA9PT1mfHxudWxsPT09KGw9Zi5zdGJsKXx8dm9pZCAwPT09bD92b2lkIDA6bC5zdHNzLHYuZXh0LmN0dHM9bnVsbD09PShkPW8ubWRpYSl8fHZvaWQgMD09PWR8fG51bGw9PT0oaD1kLm1pbmYpfHx2b2lkIDA9PT1ofHxudWxsPT09KHA9aC5zdGJsKXx8dm9pZCAwPT09cD92b2lkIDA6cC5jdHRzLF8mJiJlbmN2Ij09PV8udHlwZSl2LmlzVmlkZW9FbmNyeXB0aW9uPSEwLF8uZGVmYXVsdF9LSUQ9bnVsbD09PShnPV8uc2luZil8fHZvaWQgMD09PWd8fG51bGw9PT0obT1nLnNjaGkpfHx2b2lkIDA9PT1tP3ZvaWQgMDptLnRlbmMuZGVmYXVsdF9LSUQsXy5kZWZhdWx0X0lzRW5jcnlwdGVkPW51bGw9PT0oYj1fLnNpbmYpfHx2b2lkIDA9PT1ifHxudWxsPT09KHc9Yi5zY2hpKXx8dm9pZCAwPT09dz92b2lkIDA6dy50ZW5jLmRlZmF1bHRfSXNFbmNyeXB0ZWQsXy5kZWZhdWx0X0lWX3NpemU9bnVsbD09PShrPV8uc2luZil8fHZvaWQgMD09PWt8fG51bGw9PT0oeD1rLnNjaGkpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LnRlbmMuZGVmYXVsdF9JVl9zaXplLHYudmlkZW9TZW5jPW8ubWRpYS5taW5mLnN0Ymwuc2VuYyYmby5tZGlhLm1pbmYuc3RibC5zZW5jLnNhbXBsZXMsXy5kYXRhX2Zvcm1hdD1udWxsPT09KEE9Xy5zaW5mKXx8dm9pZCAwPT09QXx8bnVsbD09PShTPUEuZnJtYSl8fHZvaWQgMD09PVM/dm9pZCAwOlMuZGF0YV9mb3JtYXQsdi51c2VFTUU9dC51c2VFTUUsdi5raWRWYWx1ZT10LmtpZFZhbHVlLHYucHNzaD10LnBzc2gsdi5lbmN2PV99aWYocyYmcil7dmFyIFQsRSxJLE8sTSxDLFIsQixQLFU9cixEPW51bGw9PT0oVD1zLnRraGQpfHx2b2lkIDA9PT1UP3ZvaWQgMDpULnRyYWNrSWQ7bnVsbCE9RCYmKFUuaWQ9cy50a2hkLnRyYWNrSWQpLFUudGtoZER1cmF0aW9uPXMudGtoZC5kdXJhdGlvbixVLm12aGREdXJ0aW9uPXQubXZoZC5kdXJhdGlvbixVLm12aGRUaW1lY2FsZT10Lm12aGQudGltZXNjYWxlLFUudGltZXNjYWxlPVUuZm9ybWF0VGltZXNjYWxlPXMubWRpYS5tZGhkLnRpbWVzY2FsZSxVLmR1cmF0aW9uPXMubWRpYS5tZGhkLmR1cmF0aW9ufHxVLm12aGREdXJ0aW9uL1UubXZoZFRpbWVjYWxlKlUudGltZXNjYWxlO3ZhciB6LGosTCxGLE4sVixILFksSz1zLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXTtzd2l0Y2goVS5zYW1wbGVTaXplPUsuc2FtcGxlU2l6ZSxVLnNhbXBsZVJhdGU9Sy5zYW1wbGVSYXRlLFUuY2hhbm5lbENvdW50PUsuY2hhbm5lbENvdW50LFUucHJlc2VudD0hMCxLLnR5cGUpe2Nhc2UiYWxhdyI6VS5jb2RlY1R5cGU9VS5jb2RlYz1MaSxVLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2Nhc2UidWxhdyI6VS5jb2RlY1R5cGU9VS5jb2RlYz1GaSxVLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2RlZmF1bHQ6VS5zYW1wbGVEdXJhdGlvbj1KZC5nZXRGcmFtZUR1cmF0aW9uKFUuc2FtcGxlUmF0ZSxVLnRpbWVzY2FsZSksVS5zYW1wbGVSYXRlSW5kZXg9SmQuZ2V0UmF0ZUluZGV4QnlSYXRlKFUuc2FtcGxlUmF0ZSksVS5vYmplY3RUeXBlPShudWxsPT09KG49Sy5lc2RzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5vYmplY3RUeXBlKXx8MixLLmVzZHMmJihVLmNvbmZpZz1BcnJheS5mcm9tKEsuZXNkcy5jb25maWcpKSxVLmNvZGVjPShudWxsPT09KGk9Sy5lc2RzKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jb2RlYyl8fCJtcDRhLjQwLjIifWlmKFUuc2FtcGxlRHVyYXRpb249SmQuZ2V0RnJhbWVEdXJhdGlvbihVLnNhbXBsZVJhdGUsVS50aW1lc2NhbGUpLFUub2JqZWN0VHlwZT0obnVsbD09PShFPUsuZXNkcyl8fHZvaWQgMD09PUU/dm9pZCAwOkUub2JqZWN0VHlwZSl8fDIsSy5lc2RzJiYoSy5lc2RzLmNvbmZpZz9VLmNvbmZpZz1BcnJheS5mcm9tKEsuZXNkcy5jb25maWcpOmNvbnNvbGUud2FybigiZXNkcyBjb25maWcgaXMgbnVsbCIpKSxVLmNvZGVjPShudWxsPT09KEk9Sy5lc2RzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5jb2RlYyl8fCJtcDRhLjQwLjIiLFUuc2FtcGxlUmF0ZUluZGV4PUpkLmdldFJhdGVJbmRleEJ5UmF0ZShVLnNhbXBsZVJhdGUpLFUuZXh0PXt9LFUuZXh0LnN0c3M9bnVsbD09PShPPXMubWRpYSl8fHZvaWQgMD09PU98fG51bGw9PT0oTT1PLm1pbmYpfHx2b2lkIDA9PT1NfHxudWxsPT09KEM9TS5zdGJsKXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5zdHNzLFUuZXh0LmN0dHM9bnVsbD09PShSPXMubWRpYSl8fHZvaWQgMD09PVJ8fG51bGw9PT0oQj1SLm1pbmYpfHx2b2lkIDA9PT1CfHxudWxsPT09KFA9Qi5zdGJsKXx8dm9pZCAwPT09UD92b2lkIDA6UC5jdHRzLFUucHJlc2VudD0hMCxLJiYiZW5jYSI9PT1LLnR5cGUpVS5pc0F1ZGlvRW5jcnlwdGlvbj0hMCxLLmRhdGFfZm9ybWF0PW51bGw9PT0oej1LLnNpbmYpfHx2b2lkIDA9PT16fHxudWxsPT09KGo9ei5mcm1hKXx8dm9pZCAwPT09aj92b2lkIDA6ai5kYXRhX2Zvcm1hdCxLLmRlZmF1bHRfS0lEPW51bGw9PT0oTD1LLnNpbmYpfHx2b2lkIDA9PT1MfHxudWxsPT09KEY9TC5zY2hpKXx8dm9pZCAwPT09Rj92b2lkIDA6Ri50ZW5jLmRlZmF1bHRfS0lELEsuZGVmYXVsdF9Jc0VuY3J5cHRlZD1udWxsPT09KE49Sy5zaW5mKXx8dm9pZCAwPT09Tnx8bnVsbD09PShWPU4uc2NoaSl8fHZvaWQgMD09PVY/dm9pZCAwOlYudGVuYy5kZWZhdWx0X0lzRW5jcnlwdGVkLEsuZGVmYXVsdF9JVl9zaXplPW51bGw9PT0oSD1LLnNpbmYpfHx2b2lkIDA9PT1IfHxudWxsPT09KFk9SC5zY2hpKXx8dm9pZCAwPT09WT92b2lkIDA6WS50ZW5jLmRlZmF1bHRfSVZfc2l6ZSxVLmF1ZGlvU2VuYz1zLm1kaWEubWluZi5zdGJsLnNlbmMmJnMubWRpYS5taW5mLnN0Ymwuc2VuYy5zYW1wbGVzLFUudXNlRU1FPXQudXNlRU1FLFUua2lkVmFsdWU9dC5raWRWYWx1ZSxVLmVuY2E9S31pZihyJiYoci5pc1ZpZGVvRW5jcnlwdGlvbj0hIWUmJmUuaXNWaWRlb0VuY3J5cHRpb24pLGUmJihlLmlzQXVkaW9FbmNyeXB0aW9uPSEhciYmci5pc0F1ZGlvRW5jcnlwdGlvbiksbnVsbCE9ZSYmZS5lbmN2fHxudWxsIT1yJiZyLmVuY2Epe3ZhciBXLEcscT1udWxsPT1lfHxudWxsPT09KFc9ZS5lbmN2KXx8dm9pZCAwPT09Vz92b2lkIDA6Vy5kZWZhdWx0X0tJRCxYPW51bGw9PXJ8fG51bGw9PT0oRz1yLmVuY2EpfHx2b2lkIDA9PT1HP3ZvaWQgMDpHLmRlZmF1bHRfS0lELCQ9cXx8WD8ocXx8WCkuam9pbigiIik6bnVsbDtlJiYoZS5raWQ9JCksciYmKHIua2lkPSQpfXJldHVybiBlJiYoZS5mbGFncz0zODQxKSxyJiYoci5mbGFncz0xNzkzKSx7dmlkZW9UcmFjazplLGF1ZGlvVHJhY2s6cn19fX0se2tleToiZXZhbHVhdGVEZWZhdWx0RHVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPW51bGw9PWV8fG51bGw9PT0obj1lLnNhbXBsZXMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmxlbmd0aDtyZXR1cm4gaT8xMDI0KmkvZS50aW1lc2NhbGUqdC50aW1lc2NhbGUvcjoxMDI0fX0se2tleToibW9vZlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oZSxyLG4pe3ZhciBpPXt9O3JldHVybiBlLm1maGQmJihyJiYoci5zZXF1ZW5jZU51bWJlcj1lLm1maGQuc2VxdWVuY2VOdW1iZXIpLG4mJihuLnNlcXVlbmNlTnVtYmVyPWUubWZoZC5zZXF1ZW5jZU51bWJlcikpLGUudHJhZi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgYT1lLnRmaGQsbz1lLnRmZHQscz1lLnRydW47aWYoYSYmcyl7byYmKHImJnIuaWQ9PT1hLnRyYWNrSWQmJihyLmJhc2VNZWRpYURlY29kZVRpbWU9by5iYXNlTWVkaWFEZWNvZGVUaW1lKSxuJiZuLmlkPT09YS50cmFja0lkJiYobi5iYXNlTWVkaWFEZWNvZGVUaW1lPW8uYmFzZU1lZGlhRGVjb2RlVGltZSkpO3ZhciB1PWEuZGVmYXVsdFNhbXBsZVNpemV8fDAsYz1hLmRlZmF1bHRTYW1wbGVEdXJhdGlvbnx8dC5ldmFsdWF0ZURlZmF1bHREdXJhdGlvbihyLG4scy5zYW1wbGVzLmxlbmd0aHx8cy5zYW1wbGVDb3VudCksZj1zLmRhdGFPZmZzZXR8fDAsbD0wLGQ9LTE7aWYoIXMuc2FtcGxlcy5sZW5ndGgmJnMuc2FtcGxlQ291bnQpe2lbYS50cmFja0lkXT1bXTtmb3IodmFyIGg9MDtoPHMuc2FtcGxlQ291bnQ7aCsrKWlbYS50cmFja0lkXS5wdXNoKHtvZmZzZXQ6ZixkdHM6bCxkdXJhdGlvbjpjLHNpemU6dX0pLGwrPWMsZis9dX1lbHNlIGlbYS50cmFja0lkXT1zLnNhbXBsZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybih0PXtvZmZzZXQ6ZixkdHM6bCxwdHM6bCsodC5jdHN8fDApLGR1cmF0aW9uOnQuZHVyYXRpb258fGMsc2l6ZTp0LnNpemV8fHUsZ29wSWQ6ZCxrZXlmcmFtZTowPT09ZXx8bnVsbCE9PXQuZmxhZ3MmJnZvaWQgMCE9PXQuZmxhZ3MmJig2NTUzNiZ0LmZsYWdzKT4+PjAhPTY1NTM2fSkua2V5ZnJhbWUmJihkKyssdC5nb3BJZD1kKSxsKz10LmR1cmF0aW9uLGYrPXQuc2l6ZSx0fSkpfX0pKSxpfX0se2tleToibW9vdlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFrO2lmKGUmJmUubGVuZ3RoKXt2YXIgcj1lLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSksbj1lLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSk7aWYocnx8bil7dmFyIGksYTtpZihyKXt2YXIgbyxzLHU9bnVsbD09PShvPXIubWRpYSl8fHZvaWQgMD09PW98fG51bGw9PT0ocz1vLm1pbmYpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0Ymw7aWYoIXUpcmV0dXJuO3ZhciBjPXUuc3R0cyxmPXUuc3RzYyxsPXUuc3RzeixkPXUuc3RjbyxoPXUuc3RzcyxwPXUuY3R0cztpZighKGMmJmYmJmwmJmQmJmgpKXJldHVybjtpPWFwKGMsZixsLGQscCxoKX1pZihuKXt2YXIgdix5LGcsbT1udWxsPT09KHY9bi5tZGlhKXx8dm9pZCAwPT09dnx8bnVsbD09PSh5PXYubWluZil8fHZvaWQgMD09PXk/dm9pZCAwOnkuc3RibDtpZighbSlyZXR1cm47dmFyIGI9bnVsbD09PShnPW4ubWRpYS5tZGhkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy50aW1lc2NhbGUsdz1tLnN0dHMsaz1tLnN0c2MseD1tLnN0c3osQT1tLnN0Y287aWYoIShiJiZ3JiZrJiZ4JiZBKSlyZXR1cm47YT1hcCh3LGsseCxBKX1yZXR1cm57dmlkZW9TYW1wbGVzOmksYXVkaW9TYW1wbGVzOmF9fX19fV0pLHR9KCk7ZnVuY3Rpb24gYXAodCxlLHIsbixpLGEpe3ZhciBvLHMsdSxjPVtdLGY9bnVsbD09aT92b2lkIDA6aS5lbnRyaWVzLGw9ZS5lbnRyaWVzLGQ9bi5lbnRyaWVzLGg9ci5lbnRyeVNpemVzLHA9bnVsbD09YT92b2lkIDA6YS5lbnRyaWVzO3AmJihvPXt9LHAuZm9yRWFjaCgoZnVuY3Rpb24odCl7b1t0LTFdPSEwfSkpKSxmJiYocz1bXSxmLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNvdW50LHI9dC5vZmZzZXQsbj0wO248ZTtuKyspcy5wdXNoKHIpfSkpKTt2YXIgdj0tMSx5PTAsZz0wLG09MCxiPTAsdz0wLGs9bFswXS5zYW1wbGVzUGVyQ2h1bmsseD1sWzFdP2xbMV0uZmlyc3RDaHVuay0xOjEvMDtyZXR1cm4gdC5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNvdW50LG49dC5kZWx0YSxpPTA7aTxlO2krKyl1PXtkdHM6eSxkdXJhdGlvbjpuLHNpemU6aFtnXXx8ci5zYW1wbGVTaXplLG9mZnNldDpkW21dK3csaW5kZXg6Z30scCYmKHUua2V5ZnJhbWU9b1tnXSx1LmtleWZyYW1lJiZ2KyssdS5nb3BJZD12KSxzJiZnPHMubGVuZ3RoJiYodS5wdHM9dS5kdHMrc1tnXSksYy5wdXNoKHUpLHkrPW4sKytnPGs/dys9dS5zaXplOihtKyssdz0wLG0+PXgmJihiKysseD1sW2IrMV0/bFtiKzFdLmZpcnN0Q2h1bmstMToxLzApLGsrPWxbYl0uc2FtcGxlc1BlckNodW5rKX0pKSxjfWZ1bmN0aW9uIG9wKHQsZSl7cmV0dXJuIHQuZGF0YVJlZmVyZW5jZUluZGV4PXJoKGUsNiksdC53aWR0aD1yaChlLDI0KSx0LmhlaWdodD1yaChlLDI2KSx0Lmhvcml6cmVzb2x1dGlvbj1uaChlLDI4KSx0LnZlcnRyZXNvbHV0aW9uPW5oKGUsMzIpLHQuZnJhbWVDb3VudD1yaChlLDQwKSx0LmRlcHRoPXJoKGUsNzQpLDc4fWZ1bmN0aW9uIHNwKHQsZSl7cmV0dXJuIHQuZGF0YVJlZmVyZW5jZUluZGV4PXJoKGUsNiksdC5jaGFubmVsQ291bnQ9cmgoZSwxNiksdC5zYW1wbGVTaXplPXJoKGUsMTgpLHQuc2FtcGxlUmF0ZT1uaChlLDI0KS82NTUzNiwyOH1mdW5jdGlvbiB1cCh0LGUscil7aWYodCl7aWYodC5zaXplIT09dC5kYXRhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImJveCAiLmNvbmNhdCh0LnR5cGUsIiBzaXplICE9PSBkYXRhLmxlbmd0aCIpKTt2YXIgbj17c3RhcnQ6dC5zdGFydCxzaXplOnQuc2l6ZSxoZWFkZXJTaXplOnQuaGVhZGVyU2l6ZSx0eXBlOnQudHlwZX07cmV0dXJuIGUmJihuLnZlcnNpb249dC5kYXRhW3QuaGVhZGVyU2l6ZV0sbi5mbGFncz1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4odFtlXTw8MTYpKyh0W2UrMV08PDgpKyh0W2UrMl18fDApfSh0LmRhdGEsdC5oZWFkZXJTaXplKzEpLG4uaGVhZGVyU2l6ZSs9NCkscihuLHQuZGF0YS5zdWJhcnJheShuLmhlYWRlclNpemUpLG4uc3RhcnQrbi5oZWFkZXJTaXplKSxufX12YXIgY3A9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1TdHJpbmcociksaT1lPj4wLGE9TWF0aC5jZWlsKGkvbi5sZW5ndGgpLG89W10scz1TdHJpbmcodCk7YS0tOylvLnB1c2gobik7cmV0dXJuIG8uam9pbigiIikuc3Vic3RyaW5nKDAsaS1zLmxlbmd0aCkrc30sZnA9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChjcChOdW1iZXIoZSkudG9TdHJpbmcoMTYpLDIsMCkpfSkpLHRbMF19LGxwPUt1LGRwPSJBcnJheUJ1ZmZlciIsaHA9QXUuQXJyYXlCdWZmZXI7bXIoe2dsb2JhbDohMCxmb3JjZWQ6VC5BcnJheUJ1ZmZlciE9PWhwfSx7QXJyYXlCdWZmZXI6aHB9KSxscChkcCk7dmFyIHBwLHZwPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2cCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdnAuZGVmYXVsdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIGE9ITAsbz0hMSxzPXZvaWQgMDt0cnl7Zm9yKHZhciB1LGM9bltTeW1ib2wuaXRlcmF0b3JdKCk7IShhPSh1PWMubmV4dCgpKS5kb25lKTthPSEwKXt2YXIgZj11LnZhbHVlO2UrPWYubGVuZ3RofX1jYXRjaChiKXtvPSEwLHM9Yn1maW5hbGx5e3RyeXshYSYmYy5yZXR1cm4mJmMucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IHN9fXZhciBsPW5ldyB0KGUpLGQ9MCxoPSEwLHA9ITEsdj12b2lkIDA7dHJ5e2Zvcih2YXIgeSxnPW5bU3ltYm9sLml0ZXJhdG9yXSgpOyEoaD0oeT1nLm5leHQoKSkuZG9uZSk7aD0hMCl7dmFyIG09eS52YWx1ZTtsLnNldChtLGQpLGQrPW0ubGVuZ3RofX1jYXRjaChiKXtwPSEwLHY9Yn1maW5hbGx5e3RyeXshaCYmZy5yZXR1cm4mJmcucmV0dXJuKCl9ZmluYWxseXtpZihwKXRocm93IHZ9fXJldHVybiBsfTt2YXIgeXA9KChwcD12cCkmJnBwLl9fZXNNb2R1bGU/cHA6e2RlZmF1bHQ6cHB9KS5kZWZhdWx0LGdwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgwKX1yZXR1cm4gbSh0LFt7a2V5OiJ3cml0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07ci5mb3JFYWNoKChmdW5jdGlvbihlKXtlP3QuYnVmZmVyPXlwKFVpbnQ4QXJyYXksdC5idWZmZXIsZSk6d2luZG93LmNvbnNvbGUud2FybihlKX0pKX19XSxbe2tleToid3JpdGVVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVWludDhBcnJheShbdD4+OCYyNTUsMjU1JnRdKX19LHtrZXk6IndyaXRlVWludDMyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3Q+PjI0LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdF0pfX1dKSx0fSgpLG1wPU1hdGgucG93KDIsMzIpLTEsYnA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eSh0aGlzLHQpfXJldHVybiBtKHQsbnVsbCxbe2tleToiYm94Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlPjE/ZS0xOjApLG49MTtuPGU7bisrKXJbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9OCsocj1yLmZpbHRlcihCb29sZWFuKSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuYnl0ZUxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkoaSk7YVswXT1pPj4yNCYyNTUsYVsxXT1pPj4xNiYyNTUsYVsyXT1pPj44JjI1NSxhWzNdPTI1NSZpLGEuc2V0KHQsNCk7dmFyIG89ODtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbih0KXthLnNldCh0LG8pLG8rPXQuYnl0ZUxlbmd0aH0pKSxhfX0se2tleToiZnR5cCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PUJpJiZ0LmNvZGVjVHlwZT09PXppfSkpP3QuRlRZUEhFVjE6dC5GVFlQQVZDMX19LHtrZXk6ImluaXRTZWdtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGgodC5mdHlwKGUpLHQubW9vdihlKSl9fSx7a2V5OiJwc3NoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgVWludDhBcnJheShbMSwwLDAsMF0uY29uY2F0KFsxNiwxMTksMjM5LDIzNiwxOTIsMTc4LDc3LDIsMTcyLDIyNyw2MCwzMCw4MiwyMjYsMjUxLDc1XSxbMCwwLDAsMV0sb2goZS5raWQpLFswLDAsMCwwXSkpO3JldHVybiB0LmJveCh0LnR5cGVzLnBzc2gscil9fSx7a2V5OiJtb292Iix2YWx1ZTpmdW5jdGlvbihlKXtpZihlWzBdLnVzZUVNRSYmKGVbMF0uZW5jdnx8ZVswXS5lbmNhKSl7ZVswXS5wc3NofHwoZVswXS5wc3NoPXtraWQ6ZVswXS5raWR9KTt2YXIgcj10aGlzLnBzc2goZVswXS5wc3NoKTtyZXR1cm4gdC5ib3guYXBwbHkodCxbdC50eXBlcy5tb292LHQubXZoZChlWzBdLm12aGREdXJ0aW9ufHxlWzBdLmR1cmF0aW9uLGVbMF0ubXZoZFRpbWVjYWxlfHxlWzBdLnRpbWVzY2FsZSksdC5tdmV4KGUpXS5jb25jYXQoayhlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSksW3JdKSl9cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubW9vdix0Lm12aGQoZVswXS5tdmhkRHVydGlvbnx8ZVswXS5kdXJhdGlvbixlWzBdLm12aGRUaW1lY2FsZXx8ZVswXS50aW1lc2NhbGUpXS5jb25jYXQoayhlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSksW3QubXZleChlKV0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo5ZTQsbj10LmJveCh0LnR5cGVzLm12aGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLHI+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIsZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSwwLDEsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKSk7cmV0dXJuIG59fSx7a2V5OiJ0cmFrIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmFrLHQudGtoZChlLmlkLGUudGtoZER1cmF0aW9ufHwwLGUud2lkdGgsZS5oZWlnaHQpLHQubWRpYShlKSl9fSx7a2V5OiJ0a2hkIix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAsYT10LmJveCh0LnR5cGVzLnRraGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDcsMCwwLDAsMCwwLDAsMCwwLGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUsMCwwLDAsMCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY0LDAsMCwwLG4+PjgmMjU1LDI1NSZuLDAsMCxpPj44JjI1NSwyNTUmaSwwLDBdKSk7cmV0dXJuIGF9fSx7a2V5OiJtZGlhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5tZGlhLHQubWRoZChlLmR1cmF0aW9uLGUudGltZXNjYWxlKSx0LmhkbHIoZS50eXBlKSx0Lm1pbmYoZSkpfX0se2tleToibWRoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNCxuPXQuYm94KHQudHlwZXMubWRoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAscj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDg1LDE5NiwwLDBdKSk7cmV0dXJuIG59fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5oZGxyLHQuSERMUl9UWVBFU1tlXSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5taW5mLGUudHlwZT09PUJpP3QuVk1IRDp0LlNNSEQsdC5ESU5GLHQuc3RibChlKSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1bXTtyZXR1cm4gZSYmZS5leHQmJmUuZXh0LnN0c3MmJnIucHVzaCh0LnN0c3MoZS5leHQuc3Rzcy5lbnRyaWVzKSksdC5ib3godC50eXBlcy5zdGJsLHQuc3RzZChlKSx0LlNUVFMsclswXSx0LlNUU0MsdC5TVFNaLHQuU1RDTyl9fSx7a2V5OiJzdHNkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gcj0iYXVkaW8iPT09ZS50eXBlP2UudXNlRU1FJiZlLmVuY2E/dC5lbmNhKGUpOnQubXA0YShlKTplLnVzZUVNRSYmZS5lbmN2P3QuZW5jdihlKTp0LmF2YzFoZXYxKGUpLHQuYm94KHQudHlwZXMuc3RzZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxXSkscil9fSx7a2V5OiJlbmNhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmVuY2EuY2hhbm5lbENvdW50LG49ZS5lbmNhLnNhbXBsZVJhdGUsaT1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLHIsMCwxNiwwLDAsMCwwLG4+PjgmMjU1LDI1NSZuLDAsMF0pLGE9dC5lc2RzKGUuY29uZmlnKSxvPXQuc2luZihlLmVuY2EpO3JldHVybiB0LmJveCh0LnR5cGVzLmVuY2EsaSxhLG8pfX0se2tleToiZW5jdiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHIsbixpPWUuc3BzLmxlbmd0aD4wP2Uuc3BzWzBdOltdLGE9ZS5wcHMubGVuZ3RoPjA/ZS5wcHNbMF06W10sbz1lLndpZHRoLHM9ZS5oZWlnaHQsdT1lLnNhclJhdGlvWzBdLGM9ZS5zYXJSYXRpb1sxXSxmPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxvPj44JjI1NSwyNTUmbyxzPj44JjI1NSwyNTUmcywwLDcyLDAsMCwwLDcyLDAsMCwwLDAsMCwwLDAsMSwxOCwxMDAsOTcsMTA1LDEwOCwxMjEsMTA5LDExMSwxMTYsMTA1LDExMSwxMTAsNDcsMTA0LDEwOCwxMTUsNDYsMTA2LDExNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxsPW5ldyBVaW50OEFycmF5KChyPShuPVsxLGlbMV0saVsyXSxpWzNdLDI1NSwyMjUsaS5sZW5ndGg+Pj44JjI1NSwyNTUmaS5sZW5ndGhdKS5jb25jYXQuYXBwbHkobixrKGkpKS5jb25jYXQoWzEsYS5sZW5ndGg+Pj44JjI1NSwyNTUmYS5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KHIsayhhKSkpLGQ9bmV3IFVpbnQ4QXJyYXkoWzAsMCw4OCw1NywwLDE1LDIwMCwxOTIsMCw0LDg2LDcyXSksaD10LnNpbmYoZS5lbmN2KSxwPW5ldyBVaW50OEFycmF5KFt1Pj4yNCx1Pj4xNiYyNTUsdT4+OCYyNTUsMjU1JnUsYz4+MjQsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuZW5jdixmLHQuYm94KHQudHlwZXMuYXZjQyxsKSx0LmJveCh0LnR5cGVzLmJ0cnQsZCksaCx0LmJveCh0LnR5cGVzLnBhc3AscCkpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IFVpbnQ4QXJyYXkoW10pLG49dC50ZW5jKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnNjaGkscixuKX19LHtrZXk6InRlbmMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwyNTUmZS5kZWZhdWx0X0lzRW5jcnlwdGVkLDI1NSZlLmRlZmF1bHRfSVZfc2l6ZV0uY29uY2F0KG9oKGUuZGVmYXVsdF9LSUQpKSk7cmV0dXJuIHQuYm94KHQudHlwZXMudGVuYyxyKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBVaW50OEFycmF5KFtdKSxuPW5ldyBVaW50OEFycmF5KFtlLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMCksZS5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDEpLGUuZGF0YV9mb3JtYXQuY2hhckNvZGVBdCgyKSxlLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMyldKSxpPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDk5LDEwMSwxMTAsOTksMCwxLDAsMF0pLGE9dC5zY2hpKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnNpbmYscix0LmJveCh0LnR5cGVzLmZybWEsbiksdC5ib3godC50eXBlcy5zY2htLGkpLGEpfX0se2tleToiYXZjMWhldjEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuY29kZWNUeXBlPT09emksbj1yP3QudHlwZXMuaHZjMTp0LnR5cGVzLmF2YzEsaT1yP3QuaHZjQyhlKTp0LmF2Y0MoZSksYT1bbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLGUud2lkdGg+PjgmMjU1LDI1NSZlLndpZHRoLGUuaGVpZ2h0Pj44JjI1NSwyNTUmZS5oZWlnaHQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxpXTtyZXR1cm4gcj9hLnB1c2godC5ib3godC50eXBlcy5maWVsLG5ldyBVaW50OEFycmF5KFsxLDBdKSkpOmUuc2FyUmF0aW8mJmUuc2FyUmF0aW8ubGVuZ3RoPjEmJmEucHVzaCh0LnBhc3AoZS5zYXJSYXRpbykpLHQuYm94LmFwcGx5KHQsW25dLmNvbmNhdChhKSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcixuLGksYT1bXSxvPVtdO3JldHVybiBlLnNwcy5mb3JFYWNoKChmdW5jdGlvbih0KXtpPXQuYnl0ZUxlbmd0aCxhLnB1c2goaT4+PjgmMjU1KSxhLnB1c2goMjU1JmkpLGEucHVzaC5hcHBseShhLGsodCkpfSkpLGUucHBzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2k9dC5ieXRlTGVuZ3RoLG8ucHVzaChpPj4+OCYyNTUpLG8ucHVzaCgyNTUmaSksby5wdXNoLmFwcGx5KG8sayh0KSl9KSksdC5ib3godC50eXBlcy5hdmNDLG5ldyBVaW50OEFycmF5KChyPShuPVsxLGFbM10sYVs0XSxhWzVdLDI1NSwyMjR8ZS5zcHMubGVuZ3RoXSkuY29uY2F0LmFwcGx5KG4sYSkuY29uY2F0KFtlLnBwcy5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KHIsbykpKX19LHtrZXk6Imh2Y0MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuaHZjQztpZihyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiByO3ZhciBuLGk9ZS52cHMsYT1lLnNwcyxvPWUucHBzO2lmKHIpe3ZhciBzPXIuZ2VuZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5RmxhZ3MsdT1yLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3MsYz0oaS5sZW5ndGgmJjEpKyhhLmxlbmd0aCYmMSkrKG8ubGVuZ3RoJiYxKTtuPVsxLHIuZ2VuZXJhbFByb2ZpbGVTcGFjZTw8NnxyLmdlbmVyYWxUaWVyRmxhZzw8NXxyLmdlbmVyYWxQcm9maWxlSWRjLHM+Pj4yNCxzPj4+MTYscz4+Pjgscyx1WzBdLHVbMV0sdVsyXSx1WzNdLHVbNF0sdVs1XSxyLmdlbmVyYWxMZXZlbElkYywyNDAsMCwyNTIsMjUyfHIuY2hyb21hRm9ybWF0SWRjLDI0OHxyLmJpdERlcHRoTHVtYU1pbnVzOCwyNDh8ci5iaXREZXB0aENocm9tYU1pbnVzOCwwLDAsci5udW1UZW1wb3JhbExheWVyczw8M3xyLnRlbXBvcmFsSWROZXN0ZWQ8PDJ8MyxjXTt2YXIgZj1mdW5jdGlvbih0KXt2YXIgZTtuLnB1c2godC5sZW5ndGg+PjgsdC5sZW5ndGgpLChlPW4pLnB1c2guYXBwbHkoZSxrKHQpKX07aS5sZW5ndGgmJihuLnB1c2goMTYwLDAsaS5sZW5ndGgpLGkuZm9yRWFjaChmKSksYS5sZW5ndGgmJihuLnB1c2goMTYxLDAsYS5sZW5ndGgpLGEuZm9yRWFjaChmKSksby5sZW5ndGgmJihuLnB1c2goMTYyLDAsby5sZW5ndGgpLG8uZm9yRWFjaChmKSl9ZWxzZSBuPVsxLDEsOTYsMCwwLDAsMTQ0LDAsMCwwLDAsMCw5MywyNDAsMCwyNTIsMjUzLDI0OCwyNDgsMCwwLDE1LDMsMTYwLDAsMSwwLDI0LDY0LDEsMTIsMSwyNTUsMjU1LDEsOTYsMCwwLDMsMCwxNDQsMCwwLDMsMCwwLDMsMCw5MywxNTMsMTUyLDksMTYxLDAsMSwwLDQ1LDY2LDEsMSwxLDk2LDAsMCwzLDAsMTQ0LDAsMCwzLDAsMCwzLDAsOTMsMTYwLDIsMTI4LDEyOCw0NSwyMiw4OSwxNTMsMTY0LDE0Nyw0MywxNTQsMTI4LDEyOCwxMjgsMTMwLDAsMCwzLDAsMiwwLDAsMywwLDUwLDE2LDE2MiwwLDEsMCw3LDY4LDEsMTkzLDExNCwxODAsOTgsNjRdO3JldHVybiB0LmJveCh0LnR5cGVzLmh2Y0MsbmV3IFVpbnQ4QXJyYXkobikpfX0se2tleToicGFzcCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9dyhlLDIpLG49clswXSxpPXJbMV07cmV0dXJuIHQuYm94KHQudHlwZXMucGFzcCxuZXcgVWludDhBcnJheShbbj4+MjQsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKX19LHtrZXk6Im1wNGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1wNGEsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCxlLmNoYW5uZWxDb3VudCwwLDE2LDAsMCwwLDAsZS5zYW1wbGVSYXRlPj44JjI1NSwyNTUmZS5zYW1wbGVSYXRlLDAsMF0pLGUuY29uZmlnLmxlbmd0aD90LmVzZHMoZS5jb25maWcpOnZvaWQgMCl9fSx7a2V5OiJlc2RzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gdC5ib3godC50eXBlcy5lc2RzLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDMsMjMrciwwLDAsMCw0LDE1K3IsNjQsMjEsMCw2LDAsMCwwLDIxOCwxOTIsMCwwLDIxOCwxOTIsNV0uY29uY2F0KFtyXSkuY29uY2F0KGUpLmNvbmNhdChbNiwxLDJdKSkpfX0se2tleToibXZleCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubXZleF0uY29uY2F0KGsoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnRyZXgoZS5pZCl9KSkpKSl9fSx7a2V5OiJ0cmV4Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmV4LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGU+PjI0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwxXSkpfX0se2tleToidHJleDEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLnRyZXgsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDAsMCwwLDEsMCwwLDIsMCwwLDAsMCwwLDAsMSwwLDBdKSl9fSx7a2V5OiJ0cmV4MiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMudHJleCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUsMCwwLDAsMSwwLDAsNCwwLDAsMCwwLDAsMiwwLDAsMF0pKX19LHtrZXk6Im1vb2YiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveC5hcHBseSh0LFt0LnR5cGVzLm1vb2YsdC5tZmhkKGVbMF0uc2FtcGxlcz9lWzBdLnNhbXBsZXNbMF0uZ29wSWQ6MCldLmNvbmNhdChrKGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC50cmFmKGUpfSkpKSkpfX0se2tleToibWZoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMubWZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdKSl9fSx7a2V5OiJ0cmFmIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj10LnRmaGQoZS5pZCksbj10LnRmZHQoZSxlLmJhc2VNZWRpYURlY29kZVRpbWUpO2lmKGUudXNlRU1FJiYoZS5pc1ZpZGVvRW5jcnlwdGlvbnx8ZS5pc0F1ZGlvRW5jcnlwdGlvbikpe2lmKGUuaXNWaWRlb0VuY3J5cHRpb24pe2lmKDE9PT1lLmlkKXt2YXIgaT10LnNhaXooZSksYT10LnNhaW8oZSksbz10LnRydW4xKGUpLHM9dC5zZW5jKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnRyYWYscixuLGksYSxvLHMpfWlmKGUuaXNBdWRpb0VuY3J5cHRpb24pe3ZhciB1PXQuc2JncCgpLGM9dC5zYWl6KGUpLGY9dC5zYWlvKGUpLGw9dC5zZW5jKGUpLGQ9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbix1LGMsZixsLGQpfXZhciBoPXQuc2JncCgpLHA9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbixoLHApfWlmKDE9PT1lLmlkKXt2YXIgdj10LnRydW4xKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnRyYWYscixuLHYpfXZhciB5PXQuc2JncCgpLGc9dC5zYWl6KGUpLG09dC5zYWlvKGUpLGI9dC5zZW5jKGUpLHc9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbix5LGcsbSxiLHcpfXZhciBrPXQuc2R0cChlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbixrLHQudHJ1bihlLnNhbXBsZXMsay5ieXRlTGVuZ3RoKzc2KSl9fSx7a2V5OiJzZHRwIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgZ3A7cmV0dXJuIGUuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKG5ldyBVaW50OEFycmF5KDE9PT1lLmlkP1t0LmtleWZyYW1lPzMyOjE2XTpbMTZdKSl9KSksdC5ib3godC50eXBlcy5zZHRwLHRoaXMuZXh0ZW5zaW9uKDAsMCksci5idWZmZXIpfX0se2tleToidHJ1bjEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBncCxuPWdwLndyaXRlVWludDMyKGUuc2FtcGxlcy5sZW5ndGgpLGk9bnVsbDtpZigxPT09ZS5pZCl7dmFyIGE9ZS52aWRlb1NlbmNMZW5ndGg7aT1ncC53cml0ZVVpbnQzMigxNiplLnNhbXBsZXMubGVuZ3RoK2ErMTQ5KSwhZS5pc1ZpZGVvRW5jcnlwdGlvbiYmZS5pc0F1ZGlvRW5jcnlwdGlvbiYmKGk9Z3Aud3JpdGVVaW50MzIoMTYqZS5zYW1wbGVzLmxlbmd0aCs5MikpfWVsc2V7dmFyIG89MTIqZS5zYW1wbGVzLmxlbmd0aCsxMjQ7ZS5pc0F1ZGlvRW5jcnlwdGlvbiYmKG89MTIqZS5zYW1wbGVzLmxlbmd0aCs4KmUuYXVkaW9TZW5jLmxlbmd0aCsxNzcpLGk9Z3Aud3JpdGVVaW50MzIobyl9cmV0dXJuIGUuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKGdwLndyaXRlVWludDMyKHQuZHVyYXRpb24pKSxyLndyaXRlKGdwLndyaXRlVWludDMyKHQuc2l6ZSkpLHIud3JpdGUoZ3Aud3JpdGVVaW50MzIodC5rZXlmcmFtZT8zMzU1NDQzMjo2NTUzNikpLDE9PT1lLmlkJiZyLndyaXRlKGdwLndyaXRlVWludDMyKHQuY3RzP3QuY3RzOjApKX0pKSx0LmJveCh0LnR5cGVzLnRydW4sdGhpcy5leHRlbnNpb24oMCxlLmZsYWdzKSxuLGksci5idWZmZXIpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IGdwLG49ZS5zYW1wbGVzLmxlbmd0aCxpPTE9PT1lLmlkPzE2OjgsYT0xPT09ZS5pZD8yOjAsbz1bXSxzPTA7cmV0dXJuIDE9PT1lLmlkPyhvPWUudmlkZW9TZW5jLHM9ZS52aWRlb1NlbmNMZW5ndGgpOm89ZS5hdWRpb1NlbmMscz1zfHxpKm4sci53cml0ZShncC53cml0ZVVpbnQzMigxNitzKSx0LnR5cGVzLnNlbmMsdGhpcy5leHRlbnNpb24oMCxhKSksci53cml0ZShncC53cml0ZVVpbnQzMihuKSksby5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQuSW5pdGlhbGl6YXRpb25WZWN0b3IubGVuZ3RoO2UrKylyLndyaXRlKG5ldyBVaW50OEFycmF5KFt0LkluaXRpYWxpemF0aW9uVmVjdG9yW2VdXSkpO3Quc3Vic2FtcGxlcyYmdC5zdWJzYW1wbGVzLmxlbmd0aCYmKHIud3JpdGUoZ3Aud3JpdGVVaW50MTYodC5zdWJzYW1wbGVzLmxlbmd0aCkpLHQuc3Vic2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKGdwLndyaXRlVWludDE2KHQuQnl0ZXNPZkNsZWFyRGF0YSkpLHIud3JpdGUoZ3Aud3JpdGVVaW50MzIodC5CeXRlc09mUHJvdGVjdGVkRGF0YSkpfSkpKX0pKSxyLmJ1ZmZlcn19LHtrZXk6InNhaW8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPTEyKmUuc2FtcGxlcy5sZW5ndGgrMTQxOzI9PT1lLmlkJiZlLmlzQXVkaW9FbmNyeXB0aW9uJiYocj0xNDkpO3ZhciBuPW5ldyBVaW50OEFycmF5KFsxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2FpbyxuKX19LHtrZXk6InNhaXoiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuc2FtcGxlcy5sZW5ndGgsbj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxNixyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2FpeixuKX19LHtrZXk6InNiZ3AiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkoWzExNCwxMTEsMTA4LDEwOCwwLDAsMCwxLDAsMCwxLDI1LDAsMCwwLDFdKTtyZXR1cm4gdC5ib3godC50eXBlcy5zYmdwLHRoaXMuZXh0ZW5zaW9uKDAsMCksZSl9fSx7a2V5OiJleHRlbnNpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFt0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0pfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMudGZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdKSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPU1hdGguZmxvb3Ioci8obXArMSkpLGk9TWF0aC5mbG9vcihyJShtcCsxKSk7cmV0dXJuIGUudXNlRU1FJiYoZS5pc1ZpZGVvRW5jcnlwdGlvbnx8ZS5pc0F1ZGlvRW5jcnlwdGlvbik/dC5ib3godC50eXBlcy50ZmR0LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKTp0LmJveCh0LnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDAsbj4+MjQsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKGUscil7dmFyIG49ZS5sZW5ndGgsaT0xMisxNipuO3IrPTgraTt2YXIgYT1uZXcgVWludDhBcnJheShpKTthLnNldChbMCwwLDE1LDEsbj4+PjI0JjI1NSxuPj4+MTYmMjU1LG4+Pj44JjI1NSwyNTUmbixyPj4+MjQmMjU1LHI+Pj4xNiYyNTUscj4+PjgmMjU1LDI1NSZyXSwwKTtmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW29dLHU9cy5kdXJhdGlvbixjPXMuc2l6ZSxmPXMuZmxhZyxsPXZvaWQgMD09PWY/e306ZixkPXMuY3RzLGg9dm9pZCAwPT09ZD8wOmQ7YS5zZXQoW3U+Pj4yNCYyNTUsdT4+PjE2JjI1NSx1Pj4+OCYyNTUsMjU1JnUsYz4+PjI0JjI1NSxjPj4+MTYmMjU1LGM+Pj44JjI1NSwyNTUmYyxsLmlzTGVhZGluZzw8MnwobnVsbD09PWwuZGVwZW5kc09ufHx2b2lkIDA9PT1sLmRlcGVuZHNPbj8xOmwuZGVwZW5kc09uKSxsLmlzRGVwZW5kZWRPbjw8NnxsLmhhc1JlZHVuZGFuY3k8PDR8bC5wYWRkaW5nVmFsdWU8PDF8KG51bGw9PT1sLmlzTm9uU3luY1NhbXBsZXx8dm9pZCAwPT09bC5pc05vblN5bmNTYW1wbGU/MTpsLmlzTm9uU3luY1NhbXBsZSksNjE0NDAmbC5kZWdyYWRhdGlvblByaW9yaXR5LDE1JmwuZGVncmFkYXRpb25Qcmlvcml0eSxoPj4+MjQmMjU1LGg+Pj4xNiYyNTUsaD4+PjgmMjU1LDI1NSZoXSwxMisxNipvKX1yZXR1cm4gdC5ib3godC50eXBlcy50cnVuLGEpfX0se2tleToibW9vdk1QNCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubW9vdix0Lm12aGQoZVswXS5kdXJhdGlvbixlWzBdLnRpbWVzY2FsZSldLmNvbmNhdChrKGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC50cmFja01QNChlKX0pKSkpKX19LHtrZXk6InRyYWNrTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmFrLHQudGtoZChlLmlkLGUuZHVyYXRpb24sZS53aWR0aCxlLmhlaWdodCksdC5tZGlhTVA0KGUpKX19LHtrZXk6Im1kaWFNUDQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1kaWEsdC5tZGhkKGUuZHVyYXRpb24sZS50aW1lc2NhbGUpLHQuaGRscihlLnR5cGUpLHQubWluZk1QNChlKSl9fSx7a2V5OiJtaW5mTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5taW5mLGUudHlwZT09PUJpP3QuVk1IRDp0LlNNSEQsdC5ESU5GLHQuc3RibE1QNChlKSl9fSx7a2V5OiJzdGJsTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmV4dCxuPVt0LnN0c2QoZSksdC5zdHRzKHIuc3R0cyksdC5zdHNjKHIuc3RzYyksdC5zdHN6KHIuc3RzeiksdC5zdGNvKHIuc3RjbyldO3JldHVybiByLnN0c3MubGVuZ3RoJiZuLnB1c2godC5zdHNzKHIuc3RzcykpLHIuY3R0cy5sZW5ndGgmJm4ucHVzaCh0LmN0dHMoci5jdHRzKSksdC5ib3guYXBwbHkodCxbdC50eXBlcy5zdGJsXS5jb25jYXQobikpfX0se2tleToic3R0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSg4KnIpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLHI9dC5jb3VudDtuLnNldChbcj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGU+PjI0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0saSksaSs9OH0pKSx0LmJveCh0LnR5cGVzLnN0dHMsdGgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAscj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSksbikpfX0se2tleToic3RzYyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSgxMipyKSxpPTA7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdENodW5rLHI9dC5zYW1wbGVzUGVyQ2h1bmssYT10LnNhbXBsZURlc2NJbmRleDtuLnNldChbZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixhPj4yNCxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmFdLGkpLGkrPTEyfSkpLHQuYm94KHQudHlwZXMuc3RzYyx0aChuZXcgVWludDhBcnJheShbMCwwLDAsMCxyPj4yNCxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnJdKSxuKSl9fSx7a2V5OiJzdHN6Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KDQqciksaT0wO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe24uc2V0KFt0Pj4yNCx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdLGkpLGkrPTR9KSksdC5ib3godC50eXBlcy5zdHN6LHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAscj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSksbikpfX0se2tleToic3RjbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSg0KnIpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnNldChbdD4+MjQsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0XSxpKSxpKz00fSkpLHQuYm94KHQudHlwZXMuc3Rjbyx0aChuZXcgVWludDhBcnJheShbMCwwLDAsMCxyPj4yNCxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnJdKSxuKSl9fSx7a2V5OiJzdHNzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KDQqciksaT0wO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe24uc2V0KFt0Pj4yNCx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdLGkpLGkrPTR9KSksdC5ib3godC50eXBlcy5zdHNzLHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcl0pLG4pKX19LHtrZXk6ImN0dHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkoOCpyKSxpPTA7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC52YWx1ZSxyPXQuY291bnQ7bi5zZXQoW3I+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdLGkpLGkrPTh9KSksdC5ib3godC50eXBlcy5jdHRzLHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcl0pLG4pKX19LHtrZXk6InN0eXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHQuYm94KHQudHlwZXMuc3R5cCxuZXcgVWludDhBcnJheShbMTA5LDExNSwxMDAsMTA0LDAsMCwwLDAsMTA5LDExNSwxMDAsMTA0LDEwOSwxMTUsMTA1LDEyMF0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUudGltZXNjYWxlLG49ZS5zYW1wbGVzWzBdLmR1cmF0aW9uLGk9biplLnNhbXBsZXMubGVuZ3RoLGE9ZS5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCpuLG89ODtlLnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bys9dC5zaXplfSkpO3ZhciBzPTA7aWYoMT09PWUuaWQpe3ZhciB1LGM9MDtlLnZpZGVvU2VuYyYmKHU9ZS52aWRlb1NlbmMpLDE9PT1lLmlkJiZ1LmZvckVhY2goKGZ1bmN0aW9uKHQpe2MrPTgsdC5zdWJzYW1wbGVzJiZ0LnN1YnNhbXBsZXMubGVuZ3RoJiYoYys9MixjKz02KnQuc3Vic2FtcGxlcy5sZW5ndGgpfSkpLGUudmlkZW9TZW5jTGVuZ3RoPWMscz1vKzE0MSsxNiplLnNhbXBsZXMubGVuZ3RoK2MsZS51c2VFTUUmJmUuaXNBdWRpb0VuY3J5cHRpb24mJiFlLmlzVmlkZW9FbmNyeXB0aW9uJiYocz1vKzE2KmUuc2FtcGxlcy5sZW5ndGgrODQpfWVsc2Ugcz1vKzExNisxMiplLnNhbXBsZXMubGVuZ3RoLGUudXNlRU1FJiZlLmlzQXVkaW9FbmNyeXB0aW9uJiYocz1vKzE2OSsxMiplLnNhbXBsZXMubGVuZ3RoKzgqZS5hdWRpb1NlbmMubGVuZ3RoKTt2YXIgZj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwyNTUmZS5pZCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGE+PjI0JjI1NSxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmEsMCwwLDAsMCwwLDAsMCwxLDAscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1JmksMTQ0LDAsMCwwXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2lkeCxmKX19LHtrZXk6Im1kYXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1kYXQsZSl9fV0pLHR9KCk7YihicCwidHlwZXMiLFsiYXZjMSIsImF2Y0MiLCJodmMxIiwiaHZjQyIsImRpbmYiLCJkcmVmIiwiZXNkcyIsImZ0eXAiLCJoZGxyIiwibWRhdCIsIm1kaGQiLCJtZGlhIiwibWZoZCIsIm1pbmYiLCJtb29mIiwibW9vdiIsIm1wNGEiLCJtdmV4IiwibXZoZCIsInBhc3AiLCJzdGJsIiwic3RjbyIsInN0c2MiLCJzdHNkIiwic3RzeiIsInN0dHMiLCJ0ZmR0IiwidGZoZCIsInRyYWYiLCJ0cmFrIiwidHJleCIsInRraGQiLCJ2bWhkIiwic21oZCIsImN0dHMiLCJzdHNzIiwic3R5cCIsInBzc2giLCJzaWR4Iiwic2JncCIsInNhaXoiLCJzYWlvIiwic2VuYyIsInRydW4iLCJlbmN2IiwiZW5jYSIsInNpbmYiLCJidHJ0IiwiZnJtYSIsInRlbmMiLCJzY2htIiwic2NoaSIsIm1laGQiLCJmaWVsIiwic2R0cCJdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1bZS5jaGFyQ29kZUF0KDApLGUuY2hhckNvZGVBdCgxKSxlLmNoYXJDb2RlQXQoMiksZS5jaGFyQ29kZUF0KDMpXSx0fSksT2JqZWN0LmNyZWF0ZShudWxsKSkpLGIoYnAsIkhETFJfVFlQRVMiLHt2aWRlbzpuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExOCwxMDUsMTAwLDEwMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4NiwxMDUsMTAwLDEwMSwxMTEsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksYXVkaW86bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTUsMTExLDExNywxMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTExLDExNywxMTAsMTAwLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pfSksYihicCwiRlRZUEFWQzEiLGJwLmJveChicC50eXBlcy5mdHlwLG5ldyBVaW50OEFycmF5KFsxMDUsMTE1LDExMSwxMDksMCwwLDAsMSwxMDUsMTE1LDExMSwxMDksOTcsMTE4LDk5LDQ5XSkpKSxiKGJwLCJGVFlQSEVWMSIsYnAuYm94KGJwLnR5cGVzLmZ0eXAsbmV3IFVpbnQ4QXJyYXkoWzEwNSwxMTUsMTExLDEwOSwwLDAsMCwxLDEwNSwxMTUsMTExLDEwOSwxMDQsMTAxLDExOCw0OV0pKSksYihicCwiRElORiIsYnAuYm94KGJwLnR5cGVzLmRpbmYsYnAuYm94KGJwLnR5cGVzLmRyZWYsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMiwxMTcsMTE0LDEwOCwzMiwwLDAsMCwxXSkpKSksYihicCwiVk1IRCIsYnAuYm94KGJwLnR5cGVzLnZtaGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTTUhEIixicC5ib3goYnAudHlwZXMuc21oZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTdGJsVGFibGUiLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSksYihicCwiU1RUUyIsYnAuYm94KGJwLnR5cGVzLnN0dHMsYnAuU3RibFRhYmxlKSksYihicCwiU1RTQyIsYnAuYm94KGJwLnR5cGVzLnN0c2MsYnAuU3RibFRhYmxlKSksYihicCwiU1RTWiIsYnAuYm94KGJwLnR5cGVzLnN0c3osbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTVENPIixicC5ib3goYnAudHlwZXMuc3RjbyxicC5TdGJsVGFibGUpKTt2YXIgd3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscil7eSh0aGlzLHQpLHRoaXMubmFtZT1lfHwiIix0aGlzLl9wcmVmaXg9IlsiLmNvbmNhdCh0aGlzLm5hbWUsIl0iKSx0LmRpc2FibGVkPXJ9cmV0dXJuIG0odCxbe2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmRlYnVnLmFwcGx5KGUsW3RoaXMuX3ByZWZpeF0uY29uY2F0KG4pKX19fSx7a2V5OiJsb2ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmxvZy5hcHBseShlLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChuKSl9fX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtpZighdC5kaXNhYmxlZCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07KGU9Y29uc29sZSkud2Fybi5hcHBseShlLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChuKSl9fX0se2tleToiZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmVycm9yLmFwcGx5KGUsW3RoaXMuX3ByZWZpeF0uY29uY2F0KG4pKX19fSx7a2V5OiJ0YWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTt0LmRpc2FibGVkfHwoY29uc29sZS5ncm91cCh0aGlzLl9wcmVmaXgpLChlPWNvbnNvbGUpLnRhYmxlLmFwcGx5KGUsYXJndW1lbnRzKSxjb25zb2xlLmdyb3VwRW5kKCkpfX1dLFt7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dC5kaXNhYmxlZD0hMX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dC5kaXNhYmxlZD0hMH19XSksdH0oKTtiKHdwLCJkaXNhYmxlZCIsITApO2Zvcih2YXIga3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuKXt5KHRoaXMsdCksdGhpcy52aWRlb1RyYWNrPWUsdGhpcy5hdWRpb1RyYWNrPXI7dmFyIGk9L0Nocm9tZVwvKFteLl0rKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTt0aGlzLmZvcmNlRmlyc3RJRFI9aSYmTnVtYmVyKGlbMV0pPDUwLHRoaXMubG9nPW5ldyB3cCgiRk1QNFJlbXV4ZXIiLCFufHwhbi5vcGVuTG9nfHwhbi5vcGVuTG9nKX1yZXR1cm4gbSh0LFt7a2V5OiJyZW11eCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxzPXRoaXMudmlkZW9UcmFjayx1PXRoaXMuYXVkaW9UcmFjayxjPXMuZXhpc3QoKSxmPXUuZXhpc3QoKSxsPVtdO3JldHVybiBhJiYobyYmby5pbml0TWVyZ2U/KGMmJmwucHVzaCh0aGlzLnZpZGVvVHJhY2spLGYmJmwucHVzaCh0aGlzLmF1ZGlvVHJhY2spLHI9YnAuaW5pdFNlZ21lbnQobCkpOihjJiYodD1icC5pbml0U2VnbWVudChbdGhpcy52aWRlb1RyYWNrXSkpLGYmJihlPWJwLmluaXRTZWdtZW50KFt0aGlzLmF1ZGlvVHJhY2tdKSkpKSxjJiZzLmhhc1NhbXBsZSgpJiYobj10aGlzLl9yZW11eFZpZGVvKCkpLGYmJnUuaGFzU2FtcGxlKCkmJihpPXRoaXMuX3JlbXV4QXVkaW8oKSkscy5zYW1wbGVzPVtdLHUuc2FtcGxlcz1bXSx7aW5pdFNlZ21lbnQ6cix2aWRlb0luaXRTZWdtZW50OnQsYXVkaW9Jbml0U2VnbWVudDplLHZpZGVvU2VnbWVudDpuLGF1ZGlvU2VnbWVudDppfX19LHtrZXk6Il9yZW11eFZpZGVvIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlkZW9UcmFjazt0aGlzLmZvcmNlRmlyc3RJRFImJih0LnNhbXBsZXNbMF0uZmxhZz17ZGVwZW5kc09uOjIsaXNOb25TeW5jU2FtcGxlOjB9KTt2YXIgZT10LnNhbXBsZXMscj0wO2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7cis9dC51bml0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5ieXRlTGVuZ3RofSksMCkscis9NCp0LnVuaXRzLmxlbmd0aH0pKTtmb3IodmFyIG4saT1uZXcgVWludDhBcnJheShyKSxhPW5ldyBEYXRhVmlldyhpLmJ1ZmZlciksbz1mdW5jdGlvbih0LHIsbyxzKXtzPWVbdF07dmFyIHU9MDtzLnVuaXRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Euc2V0VWludDMyKG8sdC5ieXRlTGVuZ3RoKSxvKz00LGkuc2V0KHQsbyksbys9dC5ieXRlTGVuZ3RoLHUrPTQrdC5ieXRlTGVuZ3RofSkpLHMuc2l6ZT11LGM9byxuPXN9LHM9MCx1PWUubGVuZ3RoLGM9MDtzPHU7cysrKW8ocywwLGMsbik7dmFyIGY9YnAubWRhdChpKTtyZXR1cm4gdC5pc1ZpZGVvRW5jcnlwdGlvbnx8dC5pc0F1ZGlvRW5jcnlwdGlvbj90aChicC5zdHlwKCksYnAuc2lkeCh0KSxicC5tb29mKFt0XSksZik6dGgoYnAubW9vZihbdF0pLGYpfX0se2tleToiX3JlbXV4QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdWRpb1RyYWNrLGU9bmV3IFVpbnQ4QXJyYXkodC5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnNpemV9KSwwKSk7dC5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5zZXQoci5kYXRhLHQpLHQrci5zaXplfSksMCk7dmFyIHI9YnAubWRhdChlKTtyZXR1cm4gdC5pc1ZpZGVvRW5jcnlwdGlvbnx8dC5pc0F1ZGlvRW5jcnlwdGlvbj90aChicC5zdHlwKCksYnAuc2lkeCh0KSxicC5tb29mKFt0XSkscik6dGgoYnAubW9vZihbdF0pLHIpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCl9fV0pLHR9KCkseHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bih0aGlzLHQpfXJldHVybiBhKHQsW3trZXk6Im1peEluIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx0aGlzKSx0fX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGwodGhpcyxlKX19XSksdH0oKSxBcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7dmFyIHQsaT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NCppLmxlbmd0aDtuKHRoaXMsciksdD1lLmNhbGwodGhpcyk7dmFyIG89aTtpZihvIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihvPW5ldyBVaW50OEFycmF5KG8pKSwobyBpbnN0YW5jZW9mIEludDhBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHxvIGluc3RhbmNlb2YgSW50MTZBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHxvIGluc3RhbmNlb2YgSW50MzJBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHxvIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHxvIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKG89bmV3IFVpbnQ4QXJyYXkoby5idWZmZXIsby5ieXRlT2Zmc2V0LG8uYnl0ZUxlbmd0aCkpLG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHM9by5ieXRlTGVuZ3RoLHU9W10sYz0wO2M8cztjKz0xKXVbYz4+PjJdfD1vW2NdPDwyNC1jJTQqODt0LndvcmRzPXUsdC5zaWdCeXRlcz1zfWVsc2UgdC53b3Jkcz1pLHQuc2lnQnl0ZXM9YTtyZXR1cm4gdH1yZXR1cm4gYShyLFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06U3A7cmV0dXJuIHQuc3RyaW5naWZ5KHRoaXMpfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLndvcmRzLHI9dC53b3JkcyxuPXRoaXMuc2lnQnl0ZXMsaT10LnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxuJTQpZm9yKHZhciBhPTA7YTxpO2ErPTEpe3ZhciBvPXJbYT4+PjJdPj4+MjQtYSU0KjgmMjU1O2VbbithPj4+Ml18PW88PDI0LShuK2EpJTQqOH1lbHNlIGZvcih2YXIgcz0wO3M8aTtzKz00KWVbbitzPj4+Ml09cltzPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPWksdGhpc319LHtrZXk6ImNsYW1wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMud29yZHMsZT10aGlzLnNpZ0J5dGVzO3RbZT4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1lJTQqOCx0Lmxlbmd0aD1NYXRoLmNlaWwoZS80KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXYodShyLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH19XSxbe2tleToicmFuZG9tIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj1bXSxpPWZ1bmN0aW9uKHQpe3ZhciBlPXQscj05ODc2NTQzMjEsbj00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe3ZhciB0PSgocj0zNjk2OSooNjU1MzUmcikrKHI+PjE2KSZuKTw8MTYpKyhlPTE4ZTMqKDY1NTM1JmUpKyhlPj4xNikmbikmbjtyZXR1cm4gdC89NDI5NDk2NzI5NiwodCs9LjUpKihNYXRoLnJhbmRvbSgpPi41PzE6LTEpfX0sYT0wO2E8dDthKz00KXt2YXIgbz1pKDQyOTQ5NjcyOTYqKGV8fE1hdGgucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSpvKCksbi5wdXNoKDQyOTQ5NjcyOTYqbygpfDApfXJldHVybiBuZXcgcihuLHQpfX1dKSxyfSh4cCksU3A9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxyPXQuc2lnQnl0ZXMsbj1bXSxpPTA7aTxyO2krPTEpe3ZhciBhPWVbaT4+PjJdPj4+MjQtaSU0KjgmMjU1O24ucHVzaCgoYT4+PjQpLnRvU3RyaW5nKDE2KSksbi5wdXNoKCgxNSZhKS50b1N0cmluZygxNikpfXJldHVybiBuLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1bXSxuPTA7bjxlO24rPTIpcltuPj4+M118PXBhcnNlSW50KHQuc3Vic3RyKG4sMiksMTYpPDwyNC1uJTgqNDtyZXR1cm4gbmV3IEFwKHIsZS8yKX19LF9wPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPVtdLG49MDtuPGU7bis9MSlyW24+Pj4yXXw9KDI1NSZ0LmNoYXJDb2RlQXQobikpPDwyNC1uJTQqODtyZXR1cm4gbmV3IEFwKHIsZSl9LFRwPWZ1bmN0aW9uKHQpe3JldHVybiBfcCh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX0sRXA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3ZhciB0O3JldHVybiBuKHRoaXMsciksKHQ9ZS5jYWxsKHRoaXMpKS5fbWluQnVmZmVyU2l6ZT0wLHR9cmV0dXJuIGEocixbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgQXAsdGhpcy5fbkRhdGFCeXRlcz0wfX0se2tleToiX2FwcGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dDsic3RyaW5nIj09dHlwZW9mIGUmJihlPVRwKGUpKSx0aGlzLl9kYXRhLmNvbmNhdChlKSx0aGlzLl9uRGF0YUJ5dGVzKz1lLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5fZGF0YSxuPXRoaXMuYmxvY2tTaXplLGk9ci53b3JkcyxhPXIuc2lnQnl0ZXMsbz1hLyg0Km4pLHM9KG89dD9NYXRoLmNlaWwobyk6TWF0aC5tYXgoKDB8byktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqbix1PU1hdGgubWluKDQqcyxhKTtpZihzKXtmb3IodmFyIGM9MDtjPHM7Yys9bil0aGlzLl9kb1Byb2Nlc3NCbG9jayhpLGMpO2U9aS5zcGxpY2UoMCxzKSxyLnNpZ0J5dGVzLT11fXJldHVybiBuZXcgQXAoZSx1KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXYodShyLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fX1dKSxyfSh4cCksSXA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0KXt2YXIgaTtyZXR1cm4gbih0aGlzLHIpLChpPWUuY2FsbCh0aGlzKSkuYmxvY2tTaXplPTE2LGkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLHQpLGkucmVzZXQoKSxpfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc319LHtrZXk6ImZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdGhpcy5fYXBwZW5kKHQpLHRoaXMuX2RvRmluYWxpemUoKX19XSxbe2tleToiX2NyZWF0ZUhlbHBlciIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIG5ldyB0KHIpLmZpbmFsaXplKGUpfX19LHtrZXk6Il9jcmVhdGVIbWFjSGVscGVyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gbmV3IE9wKHQscikuZmluYWxpemUoZSl9fX1dKSxyfShFcCksT3A9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0LGkpe3ZhciBhO24odGhpcyxyKSxhPWUuY2FsbCh0aGlzKTt2YXIgbz1uZXcgdDthLl9oYXNoZXI9bzt2YXIgcz1pOyJzdHJpbmciPT10eXBlb2YgcyYmKHM9VHAocykpO3ZhciB1PW8uYmxvY2tTaXplLGM9NCp1O3Muc2lnQnl0ZXM+YyYmKHM9by5maW5hbGl6ZShpKSkscy5jbGFtcCgpO3ZhciBmPXMuY2xvbmUoKTthLl9vS2V5PWY7dmFyIGw9cy5jbG9uZSgpO2EuX2lLZXk9bDtmb3IodmFyIGQ9Zi53b3JkcyxoPWwud29yZHMscD0wO3A8dTtwKz0xKWRbcF1ePTE1NDk1NTY4MjgsaFtwXV49OTA5NTIyNDg2O3JldHVybiBmLnNpZ0J5dGVzPWMsbC5zaWdCeXRlcz1jLGEucmVzZXQoKSxhfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKHQpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faGFzaGVyLHI9ZS5maW5hbGl6ZSh0KTtyZXR1cm4gZS5yZXNldCgpLGUuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChyKSl9fV0pLHJ9KHhwKSxNcD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPXQud29yZHMscj10LnNpZ0J5dGVzLG49dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIGk9W10sYT0wO2E8cjthKz0zKWZvcih2YXIgbz0oZVthPj4+Ml0+Pj4yNC1hJTQqOCYyNTUpPDwxNnwoZVthKzE+Pj4yXT4+PjI0LShhKzEpJTQqOCYyNTUpPDw4fGVbYSsyPj4+Ml0+Pj4yNC0oYSsyKSU0KjgmMjU1LHM9MDtzPDQmJmErLjc1KnM8cjtzKz0xKWkucHVzaChuLmNoYXJBdChvPj4+NiooMy1zKSY2MykpO3ZhciB1PW4uY2hhckF0KDY0KTtpZih1KWZvcig7aS5sZW5ndGglNDspaS5wdXNoKHUpO3JldHVybiBpLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxyPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe3RoaXMuX3JldmVyc2VNYXA9W10sbj10aGlzLl9yZXZlcnNlTWFwO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSs9MSluW3IuY2hhckNvZGVBdChpKV09aX12YXIgYT1yLmNoYXJBdCg2NCk7aWYoYSl7dmFyIG89dC5pbmRleE9mKGEpOy0xIT09byYmKGU9byl9cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49W10saT0wLGE9MDthPGU7YSs9MSlpZihhJTQpe3ZhciBvPXJbdC5jaGFyQ29kZUF0KGEtMSldPDxhJTQqMnxyW3QuY2hhckNvZGVBdChhKV0+Pj42LWElNCoyO25baT4+PjJdfD1vPDwyNC1pJTQqOCxpKz0xfXJldHVybiBBcC5jcmVhdGUobixpKX0odCxlLG4pfSxfbWFwOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSJ9LENwPVtdLFJwPTA7UnA8NjQ7UnArPTEpQ3BbUnBdPTQyOTQ5NjcyOTYqTWF0aC5hYnMoTWF0aC5zaW4oUnArMSkpfDA7dmFyIEJwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGUmcnx+ZSZuKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LFBwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGUmbnxyJn5uKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LFVwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGVecl5uKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LERwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKHJeKGV8fm4pKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LHpwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbih0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBhKHIsW3trZXk6Il9kb1Jlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IEFwKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX19LHtrZXk6Il9kb1Byb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dCxuPTA7bjwxNjtuKz0xKXt2YXIgaT1lK24sYT10W2ldO3JbaV09MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9dmFyIG89dGhpcy5faGFzaC53b3JkcyxzPXJbZSswXSx1PXJbZSsxXSxjPXJbZSsyXSxmPXJbZSszXSxsPXJbZSs0XSxkPXJbZSs1XSxoPXJbZSs2XSxwPXJbZSs3XSx2PXJbZSs4XSx5PXJbZSs5XSxnPXJbZSsxMF0sbT1yW2UrMTFdLGI9cltlKzEyXSx3PXJbZSsxM10saz1yW2UrMTRdLHg9cltlKzE1XSxBPW9bMF0sUz1vWzFdLF89b1syXSxUPW9bM107QT1CcChBLFMsXyxULHMsNyxDcFswXSksVD1CcChULEEsUyxfLHUsMTIsQ3BbMV0pLF89QnAoXyxULEEsUyxjLDE3LENwWzJdKSxTPUJwKFMsXyxULEEsZiwyMixDcFszXSksQT1CcChBLFMsXyxULGwsNyxDcFs0XSksVD1CcChULEEsUyxfLGQsMTIsQ3BbNV0pLF89QnAoXyxULEEsUyxoLDE3LENwWzZdKSxTPUJwKFMsXyxULEEscCwyMixDcFs3XSksQT1CcChBLFMsXyxULHYsNyxDcFs4XSksVD1CcChULEEsUyxfLHksMTIsQ3BbOV0pLF89QnAoXyxULEEsUyxnLDE3LENwWzEwXSksUz1CcChTLF8sVCxBLG0sMjIsQ3BbMTFdKSxBPUJwKEEsUyxfLFQsYiw3LENwWzEyXSksVD1CcChULEEsUyxfLHcsMTIsQ3BbMTNdKSxfPUJwKF8sVCxBLFMsaywxNyxDcFsxNF0pLFM9QnAoUyxfLFQsQSx4LDIyLENwWzE1XSksQT1QcChBLFMsXyxULHUsNSxDcFsxNl0pLFQ9UHAoVCxBLFMsXyxoLDksQ3BbMTddKSxfPVBwKF8sVCxBLFMsbSwxNCxDcFsxOF0pLFM9UHAoUyxfLFQsQSxzLDIwLENwWzE5XSksQT1QcChBLFMsXyxULGQsNSxDcFsyMF0pLFQ9UHAoVCxBLFMsXyxnLDksQ3BbMjFdKSxfPVBwKF8sVCxBLFMseCwxNCxDcFsyMl0pLFM9UHAoUyxfLFQsQSxsLDIwLENwWzIzXSksQT1QcChBLFMsXyxULHksNSxDcFsyNF0pLFQ9UHAoVCxBLFMsXyxrLDksQ3BbMjVdKSxfPVBwKF8sVCxBLFMsZiwxNCxDcFsyNl0pLFM9UHAoUyxfLFQsQSx2LDIwLENwWzI3XSksQT1QcChBLFMsXyxULHcsNSxDcFsyOF0pLFQ9UHAoVCxBLFMsXyxjLDksQ3BbMjldKSxfPVBwKF8sVCxBLFMscCwxNCxDcFszMF0pLFM9UHAoUyxfLFQsQSxiLDIwLENwWzMxXSksQT1VcChBLFMsXyxULGQsNCxDcFszMl0pLFQ9VXAoVCxBLFMsXyx2LDExLENwWzMzXSksXz1VcChfLFQsQSxTLG0sMTYsQ3BbMzRdKSxTPVVwKFMsXyxULEEsaywyMyxDcFszNV0pLEE9VXAoQSxTLF8sVCx1LDQsQ3BbMzZdKSxUPVVwKFQsQSxTLF8sbCwxMSxDcFszN10pLF89VXAoXyxULEEsUyxwLDE2LENwWzM4XSksUz1VcChTLF8sVCxBLGcsMjMsQ3BbMzldKSxBPVVwKEEsUyxfLFQsdyw0LENwWzQwXSksVD1VcChULEEsUyxfLHMsMTEsQ3BbNDFdKSxfPVVwKF8sVCxBLFMsZiwxNixDcFs0Ml0pLFM9VXAoUyxfLFQsQSxoLDIzLENwWzQzXSksQT1VcChBLFMsXyxULHksNCxDcFs0NF0pLFQ9VXAoVCxBLFMsXyxiLDExLENwWzQ1XSksXz1VcChfLFQsQSxTLHgsMTYsQ3BbNDZdKSxTPVVwKFMsXyxULEEsYywyMyxDcFs0N10pLEE9RHAoQSxTLF8sVCxzLDYsQ3BbNDhdKSxUPURwKFQsQSxTLF8scCwxMCxDcFs0OV0pLF89RHAoXyxULEEsUyxrLDE1LENwWzUwXSksUz1EcChTLF8sVCxBLGQsMjEsQ3BbNTFdKSxBPURwKEEsUyxfLFQsYiw2LENwWzUyXSksVD1EcChULEEsUyxfLGYsMTAsQ3BbNTNdKSxfPURwKF8sVCxBLFMsZywxNSxDcFs1NF0pLFM9RHAoUyxfLFQsQSx1LDIxLENwWzU1XSksQT1EcChBLFMsXyxULHYsNixDcFs1Nl0pLFQ9RHAoVCxBLFMsXyx4LDEwLENwWzU3XSksXz1EcChfLFQsQSxTLGgsMTUsQ3BbNThdKSxTPURwKFMsXyxULEEsdywyMSxDcFs1OV0pLEE9RHAoQSxTLF8sVCxsLDYsQ3BbNjBdKSxUPURwKFQsQSxTLF8sbSwxMCxDcFs2MV0pLF89RHAoXyxULEEsUyxjLDE1LENwWzYyXSksUz1EcChTLF8sVCxBLHksMjEsQ3BbNjNdKSxvWzBdPW9bMF0rQXwwLG9bMV09b1sxXStTfDAsb1syXT1vWzJdK198MCxvWzNdPW9bM10rVHwwfX0se2tleToiX2RvRmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMscj04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgaT1NYXRoLmZsb29yKHIvNDI5NDk2NzI5NiksYT1yO2VbMTUrKG4rNjQ+Pj45PDw0KV09MTY3MTE5MzUmKGk8PDh8aT4+PjI0KXw0Mjc4MjU1MzYwJihpPDwyNHxpPj4+OCksZVsxNCsobis2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG89dGhpcy5faGFzaCxzPW8ud29yZHMsdT0wO3U8NDt1Kz0xKXt2YXIgYz1zW3VdO3NbdV09MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCl9cmV0dXJuIG99fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12KHUoci5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19XSkscn0oSXApO0lwLl9jcmVhdGVIZWxwZXIoenApLElwLl9jcmVhdGVIbWFjSGVscGVyKHpwKTt2YXIganA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0KXt2YXIgaTtyZXR1cm4gbih0aGlzLHIpLChpPWUuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLHtrZXlTaXplOjQsaGFzaGVyOnpwLGl0ZXJhdGlvbnM6MX0sdCksaX1yZXR1cm4gYShyLFt7a2V5OiJjb21wdXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPXRoaXMuY2ZnLGk9bi5oYXNoZXIuY3JlYXRlKCksYT1BcC5jcmVhdGUoKSxvPWEud29yZHMscz1uLmtleVNpemUsdT1uLml0ZXJhdGlvbnM7by5sZW5ndGg8czspe3ImJmkudXBkYXRlKHIpLHI9aS51cGRhdGUodCkuZmluYWxpemUoZSksaS5yZXNldCgpO2Zvcih2YXIgYz0xO2M8dTtjKz0xKXI9aS5maW5hbGl6ZShyKSxpLnJlc2V0KCk7YS5jb25jYXQocil9cmV0dXJuIGEuc2lnQnl0ZXM9NCpzLGF9fV0pLHJ9KHhwKSxMcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKHQsaSxhKXt2YXIgbztyZXR1cm4gbih0aGlzLHIpLChvPWUuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLGEpLG8uX3hmb3JtTW9kZT10LG8uX2tleT1pLG8ucmVzZXQoKSxvfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InByb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hcHBlbmQodCksdGhpcy5fZG9GaW5hbGl6ZSgpfX1dLFt7a2V5OiJjcmVhdGVFbmNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQsZSl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLHQsZSl9fSx7a2V5OiJfY3JlYXRlSGVscGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/WHA6R3B9O3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZShuKS5lbmNyeXB0KHQscixuLGkpfSxkZWNyeXB0OmZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZShuKS5kZWNyeXB0KHQscixuLGkpfX19fV0pLHJ9KEVwKTtMcC5fRU5DX1hGT1JNX01PREU9MSxMcC5fREVDX1hGT1JNX01PREU9MixMcC5rZXlTaXplPTQsTHAuaXZTaXplPTQ7dmFyIEZwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIodCxpKXt2YXIgYTtyZXR1cm4gbih0aGlzLHIpLChhPWUuY2FsbCh0aGlzKSkuX2NpcGhlcj10LGEuX2l2PWksYX1yZXR1cm4gYShyLG51bGwsW3trZXk6ImNyZWF0ZUVuY3J5cHRvciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQsZSl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZSh0LGUpfX1dKSxyfSh4cCk7ZnVuY3Rpb24gTnAodCxlLHIpe3ZhciBuLGk9dCxhPXRoaXMuX2l2O2E/KG49YSx0aGlzLl9pdj12b2lkIDApOm49dGhpcy5fcHJldkJsb2NrO2Zvcih2YXIgbz0wO288cjtvKz0xKWlbZStvXV49bltvXX12YXIgVnA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocil9KEZwKTtWcC5FbmNyeXB0b3I9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2NpcGhlcixuPXIuYmxvY2tTaXplO05wLmNhbGwodGhpcyx0LGUsbiksci5lbmNyeXB0QmxvY2sodCxlKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fV0pLHJ9KFZwKSxWcC5EZWNyeXB0b3I9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2NpcGhlcixuPXIuYmxvY2tTaXplLGk9dC5zbGljZShlLGUrbik7ci5kZWNyeXB0QmxvY2sodCxlKSxOcC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3ByZXZCbG9jaz1pfX1dKSxyfShWcCk7dmFyIEhwPXtwYWQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9NCplLG49ci10LnNpZ0J5dGVzJXIsaT1uPDwyNHxuPDwxNnxuPDw4fG4sYT1bXSxvPTA7bzxuO28rPTQpYS5wdXNoKGkpO3ZhciBzPUFwLmNyZWF0ZShhLG4pO3QuY29uY2F0KHMpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgZT10LHI9MjU1JmUud29yZHNbZS5zaWdCeXRlcy0xPj4+Ml07ZS5zaWdCeXRlcy09cn19LFlwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIodCxpLGEpe3ZhciBvO3JldHVybiBuKHRoaXMsciksKG89ZS5jYWxsKHRoaXMsdCxpLE9iamVjdC5hc3NpZ24oe21vZGU6VnAscGFkZGluZzpIcH0sYSkpKS5ibG9ja1NpemU9NCxvfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpO3ZhciBlPXRoaXMuY2ZnLG49ZS5pdixpPWUubW9kZTt0aGlzLl94Zm9ybU1vZGU9PT10aGlzLmNvbnN0cnVjdG9yLl9FTkNfWEZPUk1fTU9ERT90PWkuY3JlYXRlRW5jcnlwdG9yOih0PWkuY3JlYXRlRGVjcnlwdG9yLHRoaXMuX21pbkJ1ZmZlclNpemU9MSksdGhpcy5fbW9kZT10LmNhbGwoaSx0aGlzLG4mJm4ud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPXR9fSx7a2V5OiJfZG9Qcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxlKX19LHtrZXk6Il9kb0ZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5jZmcucGFkZGluZztyZXR1cm4gdGhpcy5feGZvcm1Nb2RlPT09dGhpcy5jb25zdHJ1Y3Rvci5fRU5DX1hGT1JNX01PREU/KGUucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpLHQ9dGhpcy5fcHJvY2VzcyghMCkpOih0PXRoaXMuX3Byb2Nlc3MoITApLGUudW5wYWQodCkpLHR9fV0pLHJ9KExwKSxLcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKHQpe3ZhciBpO3JldHVybiBuKHRoaXMsciksKGk9ZS5jYWxsKHRoaXMpKS5taXhJbih0KSxpfXJldHVybiBhKHIsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19XSkscn0oeHApLFdwPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaXBoZXJ0ZXh0LHI9dC5zYWx0O3JldHVybihyP0FwLmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KHIpLmNvbmNhdChlKTplKS50b1N0cmluZyhNcCl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlLHI9TXAucGFyc2UodCksbj1yLndvcmRzO3JldHVybiAxMzk4ODkzNjg0PT09blswXSYmMTcwMTA3NjgzMT09PW5bMV0mJihlPUFwLmNyZWF0ZShuLnNsaWNlKDIsNCkpLG4uc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTYpLEtwLmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6ZX0pfX0sR3A9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixudWxsLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1PYmplY3QuYXNzaWduKG5ldyB4cCx0aGlzLmNmZyxuKSxhPXQuY3JlYXRlRW5jcnlwdG9yKHIsaSksbz1hLmZpbmFsaXplKGUpLHM9YS5jZmc7cmV0dXJuIEtwLmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTpyLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOmEuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfX0se2tleToiZGVjcnlwdCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ZSxhPU9iamVjdC5hc3NpZ24obmV3IHhwLHRoaXMuY2ZnLG4pO3JldHVybiBpPXRoaXMuX3BhcnNlKGksYS5mb3JtYXQpLHQuY3JlYXRlRGVjcnlwdG9yKHIsYSkuZmluYWxpemUoaS5jaXBoZXJ0ZXh0KX19LHtrZXk6Il9wYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZS5wYXJzZSh0LHRoaXMpOnR9fV0pLHJ9KHhwKTtHcC5jZmc9T2JqZWN0LmFzc2lnbihuZXcgeHAse2Zvcm1hdDpXcH0pO3ZhciBxcD17ZXhlY3V0ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1uO2l8fChpPUFwLnJhbmRvbSg4KSk7dmFyIGE9anAuY3JlYXRlKHtrZXlTaXplOmUrcn0pLmNvbXB1dGUodCxpKSxvPUFwLmNyZWF0ZShhLndvcmRzLnNsaWNlKGUpLDQqcik7cmV0dXJuIGEuc2lnQnl0ZXM9NCplLEtwLmNyZWF0ZSh7a2V5OmEsaXY6byxzYWx0Oml9KX19LFhwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbih0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBhKHIsbnVsbCxbe2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9T2JqZWN0LmFzc2lnbihuZXcgeHAsdGhpcy5jZmcsbiksYT1pLmtkZi5leGVjdXRlKHIsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PWEuaXY7dmFyIG89R3AuZW5jcnlwdC5jYWxsKHRoaXMsdCxlLGEua2V5LGkpO3JldHVybiBvLm1peEluKGEpLG99fSx7a2V5OiJkZWNyeXB0Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1lLGE9T2JqZWN0LmFzc2lnbihuZXcgeHAsdGhpcy5jZmcsbik7aT10aGlzLl9wYXJzZShpLGEuZm9ybWF0KTt2YXIgbz1hLmtkZi5leGVjdXRlKHIsdC5rZXlTaXplLHQuaXZTaXplLGkuc2FsdCk7cmV0dXJuIGEuaXY9by5pdixHcC5kZWNyeXB0LmNhbGwodGhpcyx0LGksby5rZXksYSl9fV0pLHJ9KEdwKTtYcC5jZmc9T2JqZWN0LmFzc2lnbihHcC5jZmcse2tkZjpxcH0pO2Zvcih2YXIgJHA9W10sUXA9W10sWnA9W10sSnA9W10sdHY9W10sZXY9W10scnY9W10sbnY9W10saXY9W10sYXY9W10sb3Y9W10sc3Y9MDtzdjwyNTY7c3YrPTEpb3Zbc3ZdPXN2PDEyOD9zdjw8MTpzdjw8MV4yODM7Zm9yKHZhciB1dj0wLGN2PTAsZnY9MDtmdjwyNTY7ZnYrPTEpe3ZhciBsdj1jdl5jdjw8MV5jdjw8Ml5jdjw8M15jdjw8NDtsdj1sdj4+PjheMjU1Jmx2Xjk5LCRwW3V2XT1sdixRcFtsdl09dXY7dmFyIGR2PW92W3V2XSxodj1vdltkdl0scHY9b3ZbaHZdLHZ2PTI1Nypvdltsdl1eMTY4NDMwMDgqbHY7WnBbdXZdPXZ2PDwyNHx2dj4+PjgsSnBbdXZdPXZ2PDwxNnx2dj4+PjE2LHR2W3V2XT12djw8OHx2dj4+PjI0LGV2W3V2XT12dix2dj0xNjg0MzAwOSpwdl42NTUzNypodl4yNTcqZHZeMTY4NDMwMDgqdXYscnZbbHZdPXZ2PDwyNHx2dj4+PjgsbnZbbHZdPXZ2PDwxNnx2dj4+PjE2LGl2W2x2XT12djw8OHx2dj4+PjI0LGF2W2x2XT12dix1dj8odXY9ZHZeb3Zbb3Zbb3ZbcHZeZHZdXV0sY3ZePW92W292W2N2XV0pOnV2PWN2PTF9dmFyIHl2PVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxndj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXk7dmFyIGU9dGhpcy5fa2V5UHJpb3JSZXNldCxyPWUud29yZHMsbj1lLnNpZ0J5dGVzLzQ7dGhpcy5fblJvdW5kcz1uKzY7dmFyIGk9NCoodGhpcy5fblJvdW5kcysxKTt0aGlzLl9rZXlTY2hlZHVsZT1bXTtmb3IodmFyIGE9dGhpcy5fa2V5U2NoZWR1bGUsbz0wO288aTtvKz0xKW88bj9hW29dPXJbb106KHQ9YVtvLTFdLG8lbj9uPjYmJm8lbj09NCYmKHQ9JHBbdD4+PjI0XTw8MjR8JHBbdD4+PjE2JjI1NV08PDE2fCRwW3Q+Pj44JjI1NV08PDh8JHBbMjU1JnRdKToodD0kcFsodD10PDw4fHQ+Pj4yNCk+Pj4yNF08PDI0fCRwW3Q+Pj4xNiYyNTVdPDwxNnwkcFt0Pj4+OCYyNTVdPDw4fCRwWzI1NSZ0XSx0Xj15dltvL258MF08PDI0KSxhW29dPWFbby1uXV50KTt0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXTtmb3IodmFyIHM9dGhpcy5faW52S2V5U2NoZWR1bGUsdT0wO3U8aTt1Kz0xKXt2YXIgYz1pLXU7dD11JTQ/YVtjXTphW2MtNF0sc1t1XT11PDR8fGM8PTQ/dDpydlskcFt0Pj4+MjRdXV5udlskcFt0Pj4+MTYmMjU1XV1eaXZbJHBbdD4+PjgmMjU1XV1eYXZbJHBbMjU1JnRdXX19fX0se2tleToiZW5jcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LGUsdGhpcy5fa2V5U2NoZWR1bGUsWnAsSnAsdHYsZXYsJHApfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXQsbj1yW2UrMV07cltlKzFdPXJbZSszXSxyW2UrM109bix0aGlzLl9kb0NyeXB0QmxvY2socixlLHRoaXMuX2ludktleVNjaGVkdWxlLHJ2LG52LGl2LGF2LFFwKSxuPXJbZSsxXSxyW2UrMV09cltlKzNdLHJbZSszXT1ufX0se2tleToiX2RvQ3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzKXtmb3IodmFyIHU9dCxjPXRoaXMuX25Sb3VuZHMsZj11W2VdXnJbMF0sbD11W2UrMV1eclsxXSxkPXVbZSsyXV5yWzJdLGg9dVtlKzNdXnJbM10scD00LHY9MTt2PGM7dis9MSl7dmFyIHk9bltmPj4+MjRdXmlbbD4+PjE2JjI1NV1eYVtkPj4+OCYyNTVdXm9bMjU1JmhdXnJbcF07cCs9MTt2YXIgZz1uW2w+Pj4yNF1eaVtkPj4+MTYmMjU1XV5hW2g+Pj44JjI1NV1eb1syNTUmZl1ecltwXTtwKz0xO3ZhciBtPW5bZD4+PjI0XV5pW2g+Pj4xNiYyNTVdXmFbZj4+PjgmMjU1XV5vWzI1NSZsXV5yW3BdO3ArPTE7dmFyIGI9bltoPj4+MjRdXmlbZj4+PjE2JjI1NV1eYVtsPj4+OCYyNTVdXm9bMjU1JmRdXnJbcF07cCs9MSxmPXksbD1nLGQ9bSxoPWJ9dmFyIHc9KHNbZj4+PjI0XTw8MjR8c1tsPj4+MTYmMjU1XTw8MTZ8c1tkPj4+OCYyNTVdPDw4fHNbMjU1JmhdKV5yW3BdO3ArPTE7dmFyIGs9KHNbbD4+PjI0XTw8MjR8c1tkPj4+MTYmMjU1XTw8MTZ8c1toPj4+OCYyNTVdPDw4fHNbMjU1JmZdKV5yW3BdO3ArPTE7dmFyIHg9KHNbZD4+PjI0XTw8MjR8c1toPj4+MTYmMjU1XTw8MTZ8c1tmPj4+OCYyNTVdPDw4fHNbMjU1JmxdKV5yW3BdO3ArPTE7dmFyIEE9KHNbaD4+PjI0XTw8MjR8c1tmPj4+MTYmMjU1XTw8MTZ8c1tsPj4+OCYyNTVdPDw4fHNbMjU1JmRdKV5yW3BdO3ArPTEsdVtlXT13LHVbZSsxXT1rLHVbZSsyXT14LHVbZSszXT1BfX1dKSxyfShZcCk7Z3Yua2V5U2l6ZT04O3ZhciBtdj1ZcC5fY3JlYXRlSGVscGVyKGd2KSxidj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyKX0oRnApO2J2LkVuY3J5cHRvcj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyLFt7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPXRoaXMuX2NpcGhlcixpPW4uYmxvY2tTaXplLGE9dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO2EmJih0aGlzLl9jb3VudGVyPWEuc2xpY2UoMCksbz10aGlzLl9jb3VudGVyLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHM9by5zbGljZSgwKTtuLmVuY3J5cHRCbG9jayhzLDApLG9baS0xXT1vW2ktMV0rMXwwO2Zvcih2YXIgdT0wO3U8aTt1Kz0xKXJbZSt1XV49c1t1XX19XSkscn0oYnYpLGJ2LkRlY3J5cHRvcj1idi5FbmNyeXB0b3I7dmFyIHd2PXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sa3Y9e2RlY3J5cHRXb3JkQXJyYXk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVNwLnBhcnNlKGUpLGk9U3AucGFyc2UoYWgocikpLGE9QXAuY3JlYXRlKG5ldyBVaW50OEFycmF5KHQpKSxvPW12LmRlY3J5cHQoS3AuY3JlYXRlKHtjaXBoZXJ0ZXh0OmF9KSxuLHtpdjppLG1vZGU6YnYscGFkZGluZzp3dn0pO3JldHVybiBrdi53b3JkQXJyYXlUb1VpbnQ4QXJyYXkobyl9LHdvcmRBcnJheVRvVWludDhBcnJheTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zaWdCeXRlcyxyPXQud29yZHMsbj1uZXcgVWludDhBcnJheShlKSxpPTAsYT0wO2khPT1lOyl7dmFyIG89clthKytdO2lmKG5baSsrXT0oNDI3ODE5MDA4MCZvKT4+PjI0LGk9PT1lKWJyZWFrO2lmKG5baSsrXT0oMTY3MTE2ODAmbyk+Pj4xNixpPT09ZSlicmVhaztpZihuW2krK109KDY1MjgwJm8pPj4+OCxpPT09ZSlicmVhaztuW2krK109MjU1Jm99cmV0dXJuIG59fSx4dj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4saSl7dmFyIGE9dGhpczt5KHRoaXMsdCksYih0aGlzLCJfdmlkZW9TYW1wbGVzIixbXSksYih0aGlzLCJfYXVkaW9TYW1wbGVzIixbXSksYih0aGlzLCJfbGFzdFJlbWFpbkJ1ZmZlciIsW10pLGIodGhpcywiX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyIsMCksdGhpcy52aWRlb1RyYWNrPW5ldyBOaSx0aGlzLmF1ZGlvVHJhY2s9bmV3IFZpLHRoaXMubWV0YWRhdGFUcmFjaz1ufHxuZXcgS2ksdGhpcy5sb2c9bmV3IHdwKCJNUDREZW11eGVyIiwhaXx8IWkub3BlbkxvZ3x8IWkub3BlbkxvZyksZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTsoZT1hLl92aWRlb1NhbXBsZXMpLnB1c2guYXBwbHkoZSxrKHQuZnJhbWVzKSl9KSksciYmci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTsoZT1hLl9hdWRpb1NhbXBsZXMpLnB1c2guYXBwbHkoZSxrKHQuZnJhbWVzKSl9KSl9cmV0dXJuIG0odCxbe2tleToicGFyc2VTYW1wbGVzIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIm1vb3YgaXMgcmVxdWlyZWQiKTtpZih0aGlzLnZpZGVvVHJhY2suY29kZWN8fHRoaXMuYXVkaW9UcmFjay5jb2RlY3x8KGlwLm1vb3ZUb1RyYWNrKHQsdGhpcy52aWRlb1RyYWNrLHRoaXMuYXVkaW9UcmFjayksdGhpcy52aWRlb1NlbmM9dGhpcy52aWRlb1RyYWNrLnZpZGVvU2VuYyx0aGlzLmF1ZGlvU2VuYz10aGlzLmF1ZGlvVHJhY2suYXVkaW9TZW5jKSwhdGhpcy5fYXVkaW9TYW1wbGVzLmxlbmd0aCYmIXRoaXMuX3ZpZGVvU2FtcGxlcy5sZW5ndGgpe3ZhciBlPWlwLm1vb3ZUb1NhbXBsZXModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgcGFyc2Ugc2FtcGxlcyBmcm9tIG1vb3YgYm94Iik7dGhpcy5fdmlkZW9TYW1wbGVzPWUudmlkZW9TYW1wbGVzfHxbXSx0aGlzLl9hdWRpb1NhbXBsZXM9ZS5hdWRpb1NhbXBsZXN8fFtdfX19LHtrZXk6ImRlbXV4Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuLGkpe3RoaXMucGFyc2VTYW1wbGVzKGkpO3ZhciBhLG8scyx1PXRoaXMudmlkZW9UcmFjayxjPXRoaXMuYXVkaW9UcmFjaztpZih1LnNhbXBsZXM9W10sYy5zYW1wbGVzPVtdLHIpe2Zvcih2YXIgZixsPTAsZD1yWzBdLGg9clsxXTtkPD1oO2QrKyl7aWYoIShhPXRoaXMuX3ZpZGVvU2FtcGxlc1tkXSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KGQpKTtzPWEub2Zmc2V0LWUsbz10LnN1YmFycmF5KHMscythLnNpemUpLChmPW5ldyBIaShhLnB0c3x8YS5kdHMsYS5kdHMpKS5kdXJhdGlvbj1hLmR1cmF0aW9uLGYuZ29wSWQ9YS5nb3BJZCxhLmtleWZyYW1lJiZmLnNldFRvS2V5ZnJhbWUoKTtmb3IodmFyIHA9MCx2PW8ubGVuZ3RoLTE7cDx2OylsPW5oKG8scCkscCs9NCxmLnVuaXRzLnB1c2goby5zdWJhcnJheShwLHArbCkpLHArPWw7dS5zYW1wbGVzLnB1c2goZil9dS5iYXNlTWVkaWFEZWNvZGVUaW1lPXUuc2FtcGxlc1swXS5kdHN9aWYobil7Zm9yKHZhciB5PW5bMF0sZz1uWzFdO3k8PWc7eSsrKXtpZighKGE9dGhpcy5fYXVkaW9TYW1wbGVzW3ldKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoeSkpO3M9YS5vZmZzZXQtZSxvPXQuc3ViYXJyYXkocyxzK2Euc2l6ZSksYy5zYW1wbGVzLnB1c2gobmV3IFlpKGEuZHRzLG8sYS5kdXJhdGlvbikpfWMuYmFzZU1lZGlhRGVjb2RlVGltZT1jLnNhbXBsZXNbMF0uZHRzfXJldHVybnt2aWRlb1RyYWNrOnUsYXVkaW9UcmFjazpjLG1ldGFkYXRhVHJhY2s6dGhpcy5tZXRhZGF0YVRyYWNrfX19LHtrZXk6ImRlbXV4UGFydCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7aWYodGhpcy5wYXJzZVNhbXBsZXMoaSksdGhpcy52aWRlb1RyYWNrLnVzZUVNRT1hLHRoaXMuYXVkaW9UcmFjay51c2VFTUU9YSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyJiZ0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg+MCYmZT50aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MmJmU8PXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyt0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGgpZm9yKHZhciBzPTA7czwyMDspdHJ5e3ZhciB1PXRoaXMuX2xhc3RSZW1haW5CdWZmZXIuc3ViYXJyYXkoMCxlLXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyksYz1uZXcgVWludDhBcnJheSh0LmJ5dGVMZW5ndGgrdS5ieXRlTGVuZ3RoKTtjLnNldCh1LDApLGMuc2V0KG5ldyBVaW50OEFycmF5KHQpLHUuYnl0ZUxlbmd0aCksdD1jLGUtPXUuYnl0ZUxlbmd0aCx0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTA7YnJlYWt9Y2F0Y2goVCl7aWYoIShzPDIwKSl0aHJvdyBuZXcgRXJyb3IoIm5ldyBVaW50OEFycmF5IGVycm9yOiwiK1QuZXJyb3JNZXNzYWdlKTtzKyt9dmFyIGYsbCxkLGg9dGhpcy52aWRlb1RyYWNrLHA9dGhpcy5hdWRpb1RyYWNrO2guc2FtcGxlcz1bXSxwLnNhbXBsZXM9W10saC52aWRlb1NlbmM9bnVsbCxwLmF1ZGlvU2VuYz1udWxsO3ZhciB2PTAseT0wO2lmKHRoaXMuX3ZpZGVvU2FtcGxlcy5sZW5ndGg+MCYmci5sZW5ndGg+MCl7Zm9yKHZhciBnLG09dC5ieXRlTGVuZ3RoK2UsYj1yWzBdO2I8PXJbMV07YisrKXtpZighKGY9dGhpcy5fdmlkZW9TYW1wbGVzW2JdKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoYikpO2Yub2Zmc2V0Pj1lJiZmLm9mZnNldCtmLnNpemU8PW0mJih2PShkPWYub2Zmc2V0LWUpK2Yuc2l6ZSxsPXQuc3ViYXJyYXkoZCx2KSwoZz1uZXcgSGkoZi5wdHN8fGYuZHRzLGYuZHRzKSkuZHVyYXRpb249Zi5kdXJhdGlvbixnLmdvcElkPWYuZ29wSWQsZy5zYW1wbGVPZmZzZXQ9Zi5pbmRleCxmLmtleWZyYW1lJiZnLnNldFRvS2V5ZnJhbWUoKSxnLmRhdGE9bCxnLnNpemU9Zi5zaXplLGguc2FtcGxlcy5wdXNoKGcpKX1oLnNhbXBsZXMubGVuZ3RoPjAmJihoLmdvcElkPWguc2FtcGxlc1swXS5nb3BJZCxoLmJhc2VNZWRpYURlY29kZVRpbWU9aC5zYW1wbGVzWzBdLmR0cyxoLnN0YXJ0UHRzPWguc2FtcGxlc1swXS5wdHMvaC50aW1lc2NhbGUsaC5lbmRQdHM9aC5zYW1wbGVzW2guc2FtcGxlcy5sZW5ndGgtMV0ucHRzL2gudGltZXNjYWxlLHRoaXMudmlkZW9TZW5jJiYoaC52aWRlb1NlbmM9dGhpcy52aWRlb1NlbmMuc2xpY2UoaC5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCxoLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0K2guc2FtcGxlcy5sZW5ndGgpLGgua2lkVmFsdWU9bykpfWlmKHRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGg+MCYmbi5sZW5ndGg+MCl7Zm9yKHZhciB3PW5bMF07dzw9blsxXTt3Kyspe2lmKCEoZj10aGlzLl9hdWRpb1NhbXBsZXNbd10pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdCh3KSk7Zi5vZmZzZXQ+PWUmJmYub2Zmc2V0K2Yuc2l6ZTw9dC5ieXRlTGVuZ3RoK2UmJih5PShkPWYub2Zmc2V0LWUpK2Yuc2l6ZSxsPXQuc3ViYXJyYXkoZCx5KSxwLnNhbXBsZXMucHVzaChuZXcgWWkoZi5kdHMsbCxmLmR1cmF0aW9uLGYuaW5kZXgpKSl9cC5zYW1wbGVzLmxlbmd0aD4wJiYocC5nb3BJZD1wLnNhbXBsZXNbMF0uZ29wSWR8fGguZ29wSWQscC5iYXNlTWVkaWFEZWNvZGVUaW1lPXAuc2FtcGxlc1swXS5kdHMscC5zdGFydFB0cz1wLnNhbXBsZXNbMF0ucHRzL3AudGltZXNjYWxlLHAuZW5kUHRzPXAuc2FtcGxlc1twLnNhbXBsZXMubGVuZ3RoLTFdLnB0cy9wLnRpbWVzY2FsZSx0aGlzLmF1ZGlvU2VuYyYmKHAuYXVkaW9TZW5jPXRoaXMuYXVkaW9TZW5jLnNsaWNlKHAuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQscC5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCtwLnNhbXBsZXMubGVuZ3RoKSxwLmtpZFZhbHVlPW8pKX10aGlzLmRlY29kZXJEYXRhKGgscCk7Zm9yKHZhciBrPTAseD0wO3g8aC5zYW1wbGVzLmxlbmd0aDt4KyspZm9yKHZhciBBPTAsUz1oLnNhbXBsZXNbeF0uZGF0YSxfPVMubGVuZ3RoLTE7QTxfOylrPW5oKFMsQSksQSs9NCxoLnNhbXBsZXNbeF0udW5pdHMucHVzaChTLnN1YmFycmF5KEEsQStrKSksQSs9aztyZXR1cm4gdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj10LnN1YmFycmF5KE1hdGgubWF4KHYseSkpLHRoaXMuX2xhc3RSZW1haW5CdWZmZXIuYnl0ZUxlbmd0aD4wP3RoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz1lK3QuYnl0ZUxlbmd0aC10aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg6dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAse3ZpZGVvVHJhY2s6aCxhdWRpb1RyYWNrOnAsbWV0YWRhdGFUcmFjazp0aGlzLm1ldGFkYXRhVHJhY2t9fX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdmlkZW9TYW1wbGVzPVtdLHRoaXMuX2F1ZGlvU2FtcGxlcz1bXSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAsdGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCksdGhpcy5tZXRhZGF0YVRyYWNrLnJlc2V0KCl9fSx7a2V5OiJkZWNvZGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdC51c2VFTUUmJiFlLnVzZUVNRSl7aWYodC52aWRlb1NlbmMmJjE9PT10LmlkKXt2YXIgcj10LmtpZFZhbHVlLG49dC52aWRlb1NlbmM7dC5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9bltpXSxvPWUuZGF0YSxzPVtdLHU9W10sYz1hLkluaXRpYWxpemF0aW9uVmVjdG9yO2lmKGEuc3Vic2FtcGxlcyYmYS5zdWJzYW1wbGVzLmxlbmd0aClhLnN1YnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5CeXRlc09mQ2xlYXJEYXRhK3QuQnl0ZXNPZlByb3RlY3RlZERhdGEscj1vLnNsaWNlKDAsZSk7cy5wdXNoKHIuc2xpY2UoMCx0LkJ5dGVzT2ZDbGVhckRhdGEpKSx1LnB1c2goci5zbGljZSh0LkJ5dGVzT2ZDbGVhckRhdGEpKSxvPW8uc2xpY2UoZSl9KSk7ZWxzZXt2YXIgZj1lLnNpemU7cy5wdXNoKG8uc2xpY2UoMCwwKSksdS5wdXNoKG8uc2xpY2UoMCxmKSksbz1vLnNsaWNlKGYpfXZhciBsPW5ldyBncDtsLndyaXRlLmFwcGx5KGwsdSk7dmFyIGQ9a3YuZGVjcnlwdFdvcmRBcnJheShsLmJ1ZmZlcixyLGMpLGg9bmV3IGdwO3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgcj11W2VdLmxlbmd0aCxuPWQuc2xpY2UoMCxyKTtoLndyaXRlKHQpLGgud3JpdGUobiksZD1kLnNsaWNlKHIpfSkpLHQuc2FtcGxlc1tpXS5kYXRhPWguYnVmZmVyfSkpfWlmKGUuYXVkaW9TZW5jJiYyPT09ZS5pZCl7dmFyIGk9ZS5raWRWYWx1ZSxhPWUuYXVkaW9TZW5jO2Uuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0LHIpe3ZhciBuPWFbcl0sbz1rdi5kZWNyeXB0V29yZEFycmF5KHQuZGF0YSxpLG4uSW5pdGlhbGl6YXRpb25WZWN0b3IpO2Uuc2FtcGxlc1tyXS5kYXRhPW99KSl9fX19XSxbe2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBpcC5wcm9iZSh0KX19XSksdH0oKSxBdj17ZmluZEJveDpmdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXTtpZih0LnR5cGUhPT1lKXtpZih0JiZ0LnN1YkJveCl7dmFyIG49dC5zdWJCb3guZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ZX0pKTtuLmxlbmd0aD9uLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiByLnB1c2godCl9KSk6dC5zdWJCb3guZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEF2LmZpbmRCb3godCxlLHIpfSkpfX1lbHNlIHIucHVzaCh0KTtyZXR1cm4ocj1bXS5jb25jYXQocikpLmxlbmd0aD4xP3I6clswXX0scGFkU3RhcnQ6ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1TdHJpbmcociksaT1lPj4wLGE9TWF0aC5jZWlsKGkvbi5sZW5ndGgpLG89W10scz1TdHJpbmcodCk7YS0tOylvLnB1c2gobik7cmV0dXJuIG8uam9pbigiIikuc3Vic3RyaW5nKDAsaS1zLmxlbmd0aCkrc30sdG9IZXg6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChBdi5wYWRTdGFydChOdW1iZXIoZSkudG9TdHJpbmcoMTYpLDIsMCkpfSkpLHR9LHN1bTpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbihlKXt0Kz1lfSkpLHR9LFN0cmluZ1RvQXJyYXlCdWZmZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheUJ1ZmZlcih0Lmxlbmd0aCkscj1uZXcgVWludDhBcnJheShlKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIGV9LGZyb21IZXg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoLzIpLHI9MDtyPHQubGVuZ3RoO3IrPTIpZVtyLzJdPXdpbmRvdy5wYXJzZUludCh0LnN1YnN0cihyLDIpLDE2KTtyZXR1cm4gZX0sZnJvbUNoYXJDb2RlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixyPTA7cjx0Lmxlbmd0aDtyKz0xNmUzKXt2YXIgbj10LnN1YmFycmF5KHIscisxNmUzKTtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbil9cmV0dXJuIGV9LEFycmF5QnVmZmVyVG9TdHJpbmc6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLHI9bmV3IFVpbnQ4QXJyYXkodCksbj0wO248ci5sZW5ndGg7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUocltuXSk7cmV0dXJuIGV9LEJhc2U2NFRvSGV4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT13aW5kb3cuYXRvYih0LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpKSxyPSIiLG49MDtuPGUubGVuZ3RoO24rKylyKz0oIjAiK2UuY2hhckNvZGVBdChuKS50b1N0cmluZygxNikpLnN1YnN0cigtMik7cmV0dXJuIHJ9LHRvQmFzZTY0OmZ1bmN0aW9uKHQsZSl7dmFyIHI9QXYuZnJvbUNoYXJDb2RlKHQpO2U9dm9pZCAwPT09ZXx8ZTt2YXIgbj13aW5kb3cuYnRvYShyKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpO3JldHVybiBlP246bi5yZXBsYWNlKC89KiQvLCIiKX0sdG9VVEY4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1lbmNvZGVVUklDb21wb25lbnQodCkscj11bmVzY2FwZShlKSxuPW5ldyBVaW50OEFycmF5KHIubGVuZ3RoKSxpPTA7aTxyLmxlbmd0aDsrK2kpbltpXT1yLmNoYXJDb2RlQXQoaSk7cmV0dXJuIG4uYnVmZmVyfSxidWZmZXJUb1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4oIjAiK051bWJlcih0KS50b1N0cmluZygxNikpLnNsaWNlKC0yKS50b1VwcGVyQ2FzZSgpfSxzdHJUb0J1ZjpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7cis9MillLnB1c2gocGFyc2VJbnQodFtyXSt0W3IrMV0sMTYpKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSl9LGZvcm1hdElWOmZ1bmN0aW9uKHQpe3ZhciBlPSIiO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZSs9QXYuYnVmZmVyVG9TdHJpbmcodCl9KSksZS5sZW5ndGg8PTMyKWZvcih2YXIgcj0zMi1lLmxlbmd0aCxuPTA7bjxyO24rKyllKz0iMCI7cmV0dXJuIGV9LHN0cjJoZXg6ZnVuY3Rpb24odCl7aWYoIiI9PT10KXJldHVybiIiO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDtyKyspZS5wdXNoKHQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9W10scj0iIixuPTA7bjx0Lmxlbmd0aDtuKyspbiUyJiYocj10W24tMV0rdFtuXSxlLnB1c2gocGFyc2VJbnQociwxNikpLHI9IiIpO3JldHVybiBlfXJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTYpfSkpfSxnZW5lcmF0ZVVuaXF1ZUtleTpmdW5jdGlvbih0KXt2YXIgZT10LnZpZDt0LnN0YXJ0LHQuZW5kO3ZhciByPXQubWVkaWFUeXBlLG49dC5kZWZpbml0aW9uO3JldHVybiB0LnByZWxvYWRUaW1lLHI9cnx8InZpZGVvIixuPW58fCIwIixlPyIiLmNvbmNhdChlLCIjIikuY29uY2F0KHIsIiMiKS5jb25jYXQobiwiI21wNCIpOm51bGx9LHZhbGlkYXRlRnJhZ21lbnQ6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dHJ5e2lmKDI9PT1lLmxlbmd0aCl7dmFyIHI9ZVsxXS1lWzBdKzE7aWYoISh0LmJ5dGVMZW5ndGg9PT1yKSlyZXR1cm59fWNhdGNoKG4pe3JldHVybiBjb25zb2xlLmVycm9yKG4pLCExfXJldHVybiEwfXJldHVybiExfSx0eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvKFteXHMuKl0rKSg/PV0kKS9nKVswXX0sZ2V0QnVmZmVyU3BsaXRzOmZ1bmN0aW9uKHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjVlNSxuPWUtdDtpZihuLXI8ci8yfHwhZSlyZXR1cm5bW3QsZV1dO2Zvcih2YXIgaT1bXTt0PGU7KXt2YXIgYT10K3I7KGE+ZXx8ZS1hPHIvMikmJihhPWUpLGkucHVzaChbdCxhXSksdD1hKzF9cmV0dXJuIGl9LG5vd1RpbWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHBhcnNlSW50KHBlcmZvcm1hbmNlLm5vdygpLDEwKX1jYXRjaCh0KXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19LGV4dFVybDpmdW5jdGlvbih0LGUpe3RyeXt2YXIgcj10LmluZGV4T2YoIj8iKTtyZXR1cm4gcjwwP09iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24ocixuKXt0Kz0wPT09bj8iPyIuY29uY2F0KHIsIj0iKS5jb25jYXQoZVtyXSk6IiYiLmNvbmNhdChyLCI9IikuY29uY2F0KGVbcl0pfSkpOk9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24obixpKXtyPT09dC5sZW5ndGgtMT90Kz0iIi5jb25jYXQobiwiPSIpLmNvbmNhdChlW25dKTp0Kz0iJiIuY29uY2F0KG4sIj0iKS5jb25jYXQoZVtuXSl9KSksdH1jYXRjaChuKXtyZXR1cm4gdH19LGdldEZpbGVTaXplOmZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0JiZlP3BhcnNlSW50KGUqdC84LDEwKTowfWNhdGNoKHIpe3JldHVybiAwfX0saGFzaFZhbDpmdW5jdGlvbih0KXt2YXIgZSxyPTA7aWYoMD09PXQubGVuZ3RoKXJldHVybiByO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspcj0ocjw8NSktcit0LmNoYXJDb2RlQXQoZSkscnw9MDtyZXR1cm4gcn19O0F2LmdldEZpbGVTaXplPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0JiZlP3BhcnNlSW50KGUqdC84LDEwKTowfWNhdGNoKHIpe3JldHVybiAwfX0sQXYuY29uY2F0RGF0YT1mdW5jdGlvbih0LGUpe3ZhciByPVtdLG49MDt0JiZyLnB1c2godCksZSYmci5wdXNoKGUpLHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYobis9dC5ieXRlTGVuZ3RoKSwhMH0pKTt2YXIgaT1uZXcgVWludDhBcnJheShuKSxhPTA7cmV0dXJuIHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYoaS5zZXQodCxhKSxhKz10LmJ5dGVMZW5ndGgpLCEwfSkpLGl9LEF2LmdldEZyYWdSYW5nZT1mdW5jdGlvbih0LGUscil7dmFyIG49dDxlLmxlbmd0aD9lW3RdOm51bGwsaT10PHIubGVuZ3RoP3JbdF06bnVsbCxhPTAsbz0wO3JldHVybiB0PT09ZS5sZW5ndGgtMSYmKGE9LTEpLHQ9PT1yLmxlbmd0aC0xJiYobz0tMSksW01hdGgubWluKChudWxsPT1uP3ZvaWQgMDpuLnJhbmdlWzBdKXx8MS8wLChudWxsPT1pP3ZvaWQgMDppLnJhbmdlWzBdKXx8MS8wKSxNYXRoLm1heCgobnVsbD09bj92b2lkIDA6bi5yYW5nZVsxXSkrYXx8MCwobnVsbD09aT92b2lkIDA6aS5yYW5nZVsxXSkrb3x8MCldfSxvbm1lc3NhZ2U9ZnVuY3Rpb24odCl7dmFyIHI9dC5kYXRhO3N3aXRjaChyLm1ldGhvZCl7Y2FzZSJpbml0Ijp0aGlzLmNvZGVjVHlwZT1yLmFyZ3MuY29kZWNUeXBlLHRoaXMub3BlbmxvZz1yLmFyZ3Mub3BlbkxvZyx0aGlzLk1QNERlbXV4ZXI9bnVsbCx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwLHRoaXMuc3VwcG9ydEhldmM9ci5hcmdzLnN1cHBvcnRIZXZjO2JyZWFrO2Nhc2UidHJhbnNtdXgiOnZhciBuPXQuZGF0YS5hcmdzLGk9bmV3IFVpbnQ4QXJyYXkodC5kYXRhLmJ1ZmZlcik7dGhpcy5NUDREZW11eGVyfHwodGhpcy5NUDREZW11eGVyPW5ldyB4dihudWxsLG51bGwsbnVsbCx7b3BlbmxvZzp0aGlzLm9wZW5sb2d9KSk7dmFyIGEsbz10aGlzLk1QNERlbXV4ZXIuZGVtdXhQYXJ0KGksbi5zdGFydCxuLnZpZGVvSWR4LG4uYXVkaW9JZHgsbi5tb292LG4udXNlRU1FLG4ua2lkVmFsdWUpO2lmKHRoaXMuRk1QNFJlbXV4ZXJ8fCJoMjY1Ij09PXRoaXMuY29kZWNUeXBlJiYhdGhpcy5zdXBwb3J0SGV2Y3x8KHRoaXMuRk1QNFJlbXV4ZXI9bmV3IGtwKHRoaXMuTVA0RGVtdXhlci52aWRlb1RyYWNrLHRoaXMuTVA0RGVtdXhlci5hdWRpb1RyYWNrLHtvcGVuTG9nOnRoaXMub3BlbmxvZ30pKSx0aGlzLkZNUDRSZW11eGVyKXt2YXIgcz10aGlzLkZNUDRSZW11eGVyLnJlbXV4KHRoaXMuX25lZWRJbml0U2VnbWVudCx7aW5pdE1lcmdlOiEwfSk7cy5pbml0U2VnbWVudCYmKHRoaXMuX25lZWRJbml0U2VnbWVudD0hMSksYT17YnVmZmVyOkF2LmNvbmNhdERhdGEocy5hdWRpb1NlZ21lbnQscy52aWRlb1NlZ21lbnQpLHJhbmdlOm4uY29udGV4dC5yYW5nZSxzdGF0ZTpuLmNvbnRleHQuc3RhdGUsY29udGV4dDp7cmFuZ2U6bi5jb250ZXh0LnJhbmdlLGZyYWdJbmRleDpuLmNvbnRleHQuZnJhZ0luZGV4LHN0YXJ0UHRzOk1hdGgubWluKG8udmlkZW9UcmFjay5zdGFydFB0cyxvLmF1ZGlvVHJhY2suc3RhcnRQdHMpLGVuZFB0czpNYXRoLm1heChvLnZpZGVvVHJhY2suZW5kUHRzLG8uYXVkaW9UcmFjay5lbmRQdHMpfSxpbml0U2VnOnMuaW5pdFNlZ21lbnR9fXRoaXMucG9zdE1lc3NhZ2Uoe21ldGhvZDoidHJhbnNtdXgiLGlkOnQuZGF0YS5pZCxhcmdzOmUoe30sYSl9KTticmVhaztjYXNlInJlc2V0Ijp0aGlzLkZNUDRSZW11eGVyJiZ0aGlzLkZNUDRSZW11eGVyLnJlc2V0KCksdGhpcy5NUDREZW11eGVyJiZ0aGlzLk1QNERlbXV4ZXIucmVzZXQoKSx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5NUDREZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwfX19KCk7Cg==",blob="undefined"!=typeof window&&window.Blob&&new Blob([atob(encodedJs)],{type:"text/javascript;charset=utf-8"});function WorkerWrapper(){var e=blob&&(window.URL||window.webkitURL).createObjectURL(blob);try{return e?new Worker(e,{}):new Worker("data:application/javascript;base64,"+encodedJs,{type:"module"})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}var TransmuxerWorkerControl=function(e){_inherits$4(r,EventEmitter$1);var t=_createSuper$4(r);function r(e){var n;return _classCallCheck$6(this,r),(n=t.call(this)).openlog=e.openLog,n.codecType=e.codecType,n.supportHevc=e.supportHevc,n.worker=new WorkerWrapper,n.worker.onmessage=function(e){n.emit(e.data.method,e.data)},n.worker.postMessage({method:"init",id:e.id||0,args:{openlog:n.openlog,supportHevc:n.supportHevc,codecType:n.codecType}}),n}return _createClass$6(r,[{key:"transmux",value:function(e,t,r,n,i,o,a,s,c){var u=t.buffer;this.worker&&this.worker.postMessage({method:"transmux",id:e,buffer:u,args:{start:r,videoIdx:n,audioIdx:i,moov:o,useEME:a,kidValue:s,context:c}},[u])}},{key:"reset",value:function(){this.worker&&this.worker.postMessage({method:"reset"})}},{key:"destroy",value:function(){this.worker&&this.worker.terminate()}}]),r}(),MP4_EVENTS={ERROR:"error",META_READY:"metaReady",MOOV_READY:"moovReady",MOOV_REQ_PROGRESS:"moov_request_Progress",TASK_PROGRESS:"progress_event",REMOVE_URL:"remove_url",FRAGMENT:"fragment",UPDATEEME:"updateEME",CHANGE_URL:"chaneg_url"},MP4=function(e){_inherits$4(d,EventEmitter$1);var t,r,n,i,o,a,s,c,u,l=_createSuper$4(d);function d(e,t,r,n){var i,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[],a=arguments.length>7?arguments[7]:void 0,s=arguments.length>8?arguments[8]:void 0;if(_classCallCheck$6(this,d),_defineProperty$4(_assertThisInitialized$4(i=l.call(this)),"onprogressDataArrive",function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var o;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t&&t.byteLength>0&&((o=i.timeRange[n.index].range)&&n.range[1]>=o[1]&&!r&&(r=!0),i.log("[mp4.loadFragment onprogressDataArrive ] receive data, >>> index,",n.index,",range,",JSON.stringify(n.range),", dataLen,",t.byteLength),i._mux(t,n.range[0],n.index,r)),r&&(i.timeRange[n.index].downloaded=!0,i.bufferLoadedPos=-1,i.log("[FragLoadDowned],fragmentIdx,",n.index,",rangeEnd,",n.range[1]));case 2:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}()),i.timeRecord={startMuxTime:-1,startLoadTime:-1,newMP4Time:util.nowTime(),startLoadMetaTime:-1},i.url=e,i.backUrl=o||[],i._bitRate=t,i.options=d.getDefaultConfig(),Object.keys(r).map((function(e){void 0!==r[e]&&null!==r[e]&&(i.options[e]=r[e])})),i.timeRange=[],i.firstFrameTime=a||{},i._logTag=s||"",i.CHUNK_SIZE=getMetaSize(r.duration,i.options.chunkSize,r.fileSize),i.player=n,i.bufferLoaded=new Uint8Array(0),i.bufferLoadedPos=0,i.meta=null,i.preloadCache=null,i.videoTrak=null,i.audioTrak=null,i.canDownload=!0,i._loadSuccessCallBack=null,i._isPending=!1,i._metaLoading=!1,i.MP4Loader=new MP4Loader(_objectSpread2$2(_objectSpread2$2({segmentDuration:r.segmentDuration,url:e,vid:r.vid+"-"+t,retry:r.retryCount||2,retryDelay:r.retryDelay||1e3,timeout:3e3},r.reqOptions),{},{openLog:checkOpenLog()})),i.MP4Demuxer=null,i.FMP4Remuxer=null,i._needInitSegment=!0,i._bitRateInfoMap=new Map,i._switchBitRate=!1,i._segmentToBitRateMap=new Map,i.useEME=!1,i.kidValue=null,i.enableWorker=r.enableWorker&&("h265"!==r.codecType||r.supportHevc),i.enableWorker&&"undefined"!=typeof Worker)try{i.workerSequence=0,i.transmuxerWorkerControl=new TransmuxerWorkerControl({id:i.workerSequence,codecType:r.codecType,supportHevc:i.options.supportHevc,openLog:checkOpenLog()}),i.transmuxerWorkerControl.on("transmux",(function(e){var t=e.args;i.log("[transmuxerworker end] ,range, ",JSON.stringify(t.range),",dataLen,",t.buffer.byteLength,t.context),i.firstFrameTime.firstmux<0&&i.timeRecord.startMuxTime>0&&(i.firstFrameTime.firstmux=util.nowTime()-i.timeRecord.startMuxTime),i._loadSuccessCallBack&&i._loadSuccessCallBack(t)}))}catch(e){i.log("Error in worker:",e),i.enableWorker=!1,i.transmuxerWorkerControl=null}return i.enableWorker||(i.MP4Demuxer=null,i.FMP4Remuxer=null),i.seekTime=-1,i}return _createClass$6(d,[{key:"changeBitRate",value:(u=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.bitrate===this._bitRate){e.next=9;break}return this.url=t.url,this._bitRate=t.bitrate,this.backUrl=t.backupURL,e.next=6,this.MP4Loader.changeUrl(this.url,this.options.vid+"-"+this._bitRate,this.CHUNK_SIZE);case 6:this.emit(MP4_EVENTS.CHANGE_URL,this.url),this._switchBitRate=!0,this.log("[switchBitrate] changeUrl, bitRate,",this._bitRate,this.url);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"_getByPreload",value:function(e,t,r,n){try{if(e&&e.byteLength>=t){var i={endTime:(new Date).getTime(),startTime:(new Date).getTime(),index:n,range:[],vid:this.options.vid,from:"local"};if(r<=e.byteLength){var o=e.slice(t,r);return i.range=[t,r],i.state=!0,{buffer:o,context:i,state:!0}}var a=e.byteLength-1,s=e.slice(t,a);return i.range=[t,a],{context:i,buffer:s,state:!1}}return null}catch(e){return console.error("[MP4] _getByPreload",t,r,e),null}}},{key:"log",value:function(e){for(var t=this.options,r=t&&t.vid?"[MP4]".concat(this._logTag," ").concat(t.vid," ").concat(e):"[MP4]".concat(this._logTag," ").concat(e),n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];log$2.apply(void 0,[r].concat(i))}},{key:"errorHandler",value:(c=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l,d,h=arguments;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=h.length>2&&void 0!==h[2]?h[2]:{},i=t.response,o=t.message,a=this.options?this.options.vid:"",s=null,this._isPending=!0,!i){e.next=33;break}if(c=transformHeaders(i.headers),s=new NetWorkError("network",i.status,{httpText:i.httpText,message:o,url:i.url,headers:c}),console.log("[MP4] [".concat(a,"] errorHandler error state:[").concat(r,"], _isPending:[").concat(this._isPending,"] "),s),!(this.backUrl&&this.backUrl.length>0)){e.next=29;break}if(console.log("[MP4] [".concat(a,"] errorHandler start backUpUrl retry"),this.backUrl.length,this.backUrl),u=this.backUrl.shift(),this.update(u),this._isPending=!1,!this.MP4Loader){e.next=18;break}return e.next=17,this.MP4Loader.changeUrl(this.url,this.url+"-"+this._bitRate,this.CHUNK_SIZE);case 17:this.emit(MP4_EVENTS.CHANGE_URL,this.url);case 18:if(this.emit(MP4_EVENTS.TASK_PROGRESS,{type:"error",error:t}),"getMetaInfo"!==r){e.next=24;break}return this.getMetaInfo(),e.abrupt("return");case 24:if("loadFragment"!==r){e.next=29;break}if(l=n.index,d=n.range,!l||!d){e.next=29;break}return this.loadFragment(l,d),e.abrupt("return");case 29:console.log("[MP4] [".concat(a,"] errorHandler backUpUrl is null emit error")),this.emit(MP4_EVENTS.ERROR,s),e.next=36;break;case 33:console.log("[MP4] [".concat(a,"] errorHandler,"),t),s=t,this.emit(MP4_EVENTS.ERROR,s);case 36:case"end":return e.stop()}}),e,this)}))),function(e,t){return c.apply(this,arguments)})},{key:"init",value:(s=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o,a,s,c,u;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.url){e.next=3;break}return e.next=3,this.MP4Loader.changeUrl(this.url,this.options.vid+"-"+this._bitRate,this.CHUNK_SIZE);case 3:if(this.emit(MP4_EVENTS.CHANGE_URL,this.url),this.meta=null,r=t.meta,n=t.mediaSegList,i=t.buffer,o=t.fileSize,a=t.initSeg,s=t.bitrate,!r||!r.ext){e.next=21;break}this.meta=r,this._bitRate=s,this.videoTrak=r.ext.videoTrak,this.audioTrak=r.ext.audioTrak,this.timeRange=this.getTimeRange(),n?this.preloadCache={segList:n||[],initSeg:a}:i&&(this.size=o,this.bufferLoaded=i),c={meta:r,videoSegments:r.ext.videoTrak,audioSegments:r.ext.audioTrak,bufferLoaded:i||null},this._bitRateInfoMap.set(this._bitRate,c),u=(new Date).getTime(),setTimeout((function(){console.log(">>>>metaReady setTimeout",(new Date).getTime()-u)})),console.log(">>>>metaReady",util.nowTime()),this.emit(MP4_EVENTS.META_READY,this.meta),e.next=23;break;case 21:return e.next=23,this.getMetaInfo();case 23:case"end":return e.stop()}}),e,this)}))),function(e){return s.apply(this,arguments)})},{key:"getTimeRange",value:function(){for(var e=[],t=null,r=0;this.videoTrak&&r<this.videoTrak.length;r++)t={startTime:this.videoTrak[r].startTime,endTime:this.videoTrak[r].endTime,downloaded:!1,isLoading:!1},e.push(t);if(this.audioTrak&&this.audioTrak.length>e.length)for(var n=e.length;n<this.audioTrak.length;n++)t={startTime:Math.max(this.audioTrak[n].startTime,t?t.endTime:0),endTime:Math.max(this.audioTrak[n].endTime,t?t.endTime:0),downloaded:!1,isLoading:!1},e.push(t);return e}},{key:"getMetaInfo",value:(a=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r,n,i,o=this,a=arguments;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!(a.length>0&&void 0!==a[0])||a[0],e.prev=1,r=util.nowTime(),this._metaLoading=!0,this.log("getMetaInfo start, bitRate,",this._bitRate),this.bufferLoaded=new Uint8Array(0),n=0,i=function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(i,a,s,c){var u,l;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o.log("getMetaInfo onProgressHandle, dataLen,",i?i.byteLength:-1,", state,",a,",range,",JSON.stringify(s.range)),!c){e.next=7;break}return e.next=4,o.cancelLoading();case 4:return u=new ParserError(ERROR_TYPES.demux,ERROR_CODES.metaError,{msg:JSON.stringify(c)}),o.errorHandler(u,"getMetaInfo"),e.abrupt("return");case 7:i&&s.range[0]===n&&(o.bufferLoaded=Concat(Uint8Array,o.bufferLoaded,new Uint8Array(i)),n+=i.byteLength),s.meta&&!o.meta&&(o.firstFrameTime.metaload=util.nowTime()-r,l=s.meta,o.videoTrak=l.videoSegments,o.audioTrak=l.audioSegments,o.timeRange=o.getTimeRange(),o.meta=_objectSpread2$2(_objectSpread2$2({},l.meta),{},{ext:{videoTrak:o.videoTrak,audioTrak:o.audioTrak}}),l.bufferLoaded=o.bufferLoaded,o._bitRateInfoMap.set(o._bitRate,l),o.log("meta reach, bitRate,",o._bitRate),t&&o.emit(MP4_EVENTS.META_READY,o.meta)),o.meta&&a&&(o.log("[getMetaInfo req end]"),o._metaLoading=!1),o.meta&&(i||a)&&(o.log("emit moov_req_progress"),o.emit(MP4_EVENTS.MOOV_REQ_PROGRESS));case 11:case"end":return e.stop()}}),e)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),e.next=10,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this.CHUNK_SIZE],i);case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(1),console.error("[MP4] trigger errorHandler getMetaInfo",e.t0),this.errorHandler(e.t0,"getMetaInfo");case 16:case"end":return e.stop()}}),e,this,[[1,12]])}))),function(){return a.apply(this,arguments)})},{key:"getFragmentIdx",value:function(e){var t,r;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),r=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&r)return Math.min(t.index,r.index);if(t||r)return t?t.index:r.index;var n=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(n=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(n=Math.min(this.audioTrak.length-1,n)),n}return(r=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?r.index:0}},{key:"_checkHasMeta",value:(o=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._bitRateInfoMap.get(this._bitRate)){e.next=19;break}return this.log("[ABR], need load InitSegment, bitRate, ",this._bitRate),this._metaLoading=!0,e.next=6,this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));case 6:return r=e.sent,this._metaLoading=!1,this.videoTrak=r.videoSegments,this.audioTrak=r.audioSegments,this.meta=_objectSpread2$2(_objectSpread2$2({},r.meta),{},{ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}}),this.emit(MP4_EVENTS.UPDATEEME,this.meta),this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),r.bufferLoaded=this.bufferLoaded,this._bitRateInfoMap.set(this._bitRate,r),e.abrupt("return",!0);case 19:return this.log("[ABR], not need load InitSegment, bitRate, ",this._bitRate),this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.meta=t.meta,this.emit(MP4_EVENTS.UPDATEEME,this.meta),this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),e.abrupt("return",!0);case 27:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"resetFragmentLoadState",value:function(e){for(var t=0;t<this.timeRange.length;t++)t<e?(this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!0):(this.timeRange[t].downloaded=!1,this.timeRange[t].isLoading=!1)}},{key:"getFragRange",value:function(e){var t,r,n,i,o=null;this.videoTrak&&(o=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1]);var a=null;this.audioTrak&&(a=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1]);var s=0,c=0;this.videoTrak&&e>=this.videoTrak.length-1&&(s=-1),this.audioTrak&&e>=this.audioTrak.length-1&&(c=-1);var u=[Math.min((null===(t=o)||void 0===t?void 0:t.range[0])||1/0,(null===(r=a)||void 0===r?void 0:r.range[0])||1/0),Math.max((null===(n=o)||void 0===n?void 0:n.range[1])+s||0,(null===(i=a)||void 0===i?void 0:i.range[1])+c||0)];return e<this.timeRange.length&&(this.timeRange[e].range=u),u}},{key:"load",value:(i=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._loadSuccessCallBack=r,!this._switchBitRate||this._metaLoading){e.next=11;break}return this.log("[switchBitrate], switch bitRate start load, bitRate,",this._bitRate,", time,",t>=this.videoTrak.length?this.audioTrak[t].startTime:this.videoTrak[t].startTime,", fragIndex,",t),e.next=5,this._checkHasMeta();case 5:n=e.sent,this.resetFragmentLoadState(t),this.log("[switchBitrate], reset timerange state,",t),this._needInitSegment=!0,this.resetTansmuxer(),n&&(this._switchBitRate=!1);case 11:if(!this._switchBitRate||!this._metaLoading){e.next=13;break}return e.abrupt("return");case 13:i=this.getFragRange(t),(o=this.getFragmentFromCache(t,i))?(this.log("[mp4.load], segment ,",t,"Data In Cache",JSON.stringify(i),", needInit,",this._needInitSegment),this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!1,this._needInitSegment=!1,this._loadSuccessCallBack&&this._loadSuccessCallBack(o)):(this.log("loadFragment,",t,",bitRate,",this._bitRate,",range,",JSON.stringify(i)),this.seekTime>0?(a=this.getSubRange(t,this.seekTime,i),this.loadFragment(t,a),this.seekTime=-1):this.loadFragment(t,i));case 16:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"getSubRange",value:function(e,t,r){var n=r[0],i=r[0],o=1,a=!1;if(this.log(">>>>>getSubRange time,",t,JSON.stringify(r)),this.videoTrak){var s=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1],c=s.frames.filter(getKeyFrameList),u=this.meta.videoTimescale,l=c[0].startTime/u;this.log(">>>>>getSubRange video, startTime,",s.startTime,",endTime,",s.endTime);for(var d=0;d<c.length;d++)this.log(">>>>>getSubRange video keyFrameList, startTime,",c[d].startTime/u,",range,",c[d].offset);for(;o<c.length;o++){var h=c[o].startTime/u;if(l<=t&&t<h&&r[0]<c[o-1].offset){n=c[o-1].offset,a=!0,this.log(">>>>>getSubRange video end, startTime,",l,",endTime,",h,",startRange,",n,", keyFrameIndex,",o-1);break}l=h}!a&&l<=t&&t<s.endTime+.8&&(n=c[o-1].offset,this.log(">>>>>getSubRange video last, startTime,",l,",endTime,",s.endTime,",startRange,",n))}if(o=1,this.audioTrak){var f=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1],p=f.frames,y=this.meta.audioTimescale;o=Math.floor((t*y-p[0].startTime)/f.frames[0].duration);for(var m=(o=Math.min(p.length-1,o))>0?p[o-1].startTime/y:p[0].startTime/y;o>=0&&o<p.length;)if(o>0&&m>t)m=p[o-=1].startTime/y;else{var g=(p[o].startTime+p[o].duration)/y;if(m<=t&&t<g&&r[0]<p[o].offset){i=p[o].offset,a=!0,this.log(">>>>>getSubRange audio end, startTime,",m,",endTime,",g,",startRange,",i,", index,",o);break}m=g,o++}}var v=[Math.min(i,n),r[1]];return this.log(">>>>>getSubRange finalRange ",JSON.stringify(v),",oldRange,",JSON.stringify(r)),v}},{key:"getFragmentFromCache",value:function(e,t){var r=this.preloadCache;if(!r||!r.segList)return null;for(var n=-1,i=r.segList,o=r.initSeg,a=0;a<i.length;a++)if(i[a].index===e){n=a;break}if(n<0)return null;var s=i[n];if(console.log(">>>>preloadCache",n,s,s.range,t[1],s.range[1]>=t[1]),s.range[1]>=t[1]){var c=[this.timeRange[e].startTime,this.timeRange[e].endTime];return{buffer:s.buffer,range:t,context:{range:t,fragIndex:e,state:!0,timeRange:[c[0],c[1]]},state:!0,initSeg:this._needInitSegment?o:void 0}}return null}},{key:"_mux",value:function(e,t,r,n){this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime<0&&(this.timeRecord.startMuxTime=util.nowTime(),this.firstFrameTime.startMuxTime=util.nowTime()-this.timeRecord.startLoadTime);var i=this.getSamplesRange(r,"video"),o=this.getSamplesRange(r,"audio"),a=[t,t+e.byteLength];if(this.transmuxerWorkerControl){var s={range:a,state:n,fragIndex:r};this.log("[transmuxerworker start] ,range, ",JSON.stringify(a),",dataLen,",e.byteLength,s),this.transmuxerWorkerControl.transmux(this.workerSequence,e,t,i,o,this.meta.moov,this.useEME,this.kidValue,s)}else try{this.MP4Demuxer||(this.MP4Demuxer=new MP4Demuxer(this.videoTrak,this.audioTrak,null,{openLog:checkOpenLog()}));var c,u=this.MP4Demuxer.demuxPart(e,t,i,o,this.meta.moov,this.useEME,this.kidValue);this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new FMP4Remuxer(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:checkOpenLog()})),this.log("[mux], videoTimeRange,",u.videoTrack?[u.videoTrack.startPts,u.videoTrack.endPts]:null,",audioTimeRange,",u.audioTrack?[u.audioTrack.startPts,u.audioTrack.endPts]:null);var l=[Math.min(u.videoTrack.startPts,u.audioTrack.startPts),Math.max(u.videoTrack.endPts,u.audioTrack.endPts)];if(this.FMP4Remuxer){var d=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:a});d.initSegment&&(this._needInitSegment=!1),c={buffer:util.concatData(d.audioSegment,d.videoSegment),range:a,state:n,context:{range:a,fragIndex:r,timeRange:l},initSeg:d.initSegment}}else c={videoTrack:u.videoTrack,audioTrack:u.audioTrack,buffer:null,range:a,state:n,context:{range:a,fragIndex:r,timeRange:l}};this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime>0&&(this.firstFrameTime.firstmux=util.nowTime()-this.timeRecord.startMuxTime),this._loadSuccessCallBack&&this._loadSuccessCallBack(c)}catch(n){console.error("mux err:",n);var h=new ParserError(ERROR_TYPES.remux,ERROR_CODES.muxError,{msg:JSON.stringify(n)});this.errorHandler(h,"mux",{fragIndex:r,range:[t,t+e.byteLength]})}}},{key:"getSamplesRange",value:function(e,t){var r=[];switch(t){case"video":if(this.videoTrak&&e<this.videoTrak.length){var n=this.videoTrak[e].frames;r.push(n[0].index),r.push(n[n.length-1].index)}break;case"audio":if(this.audioTrak&&e<this.audioTrak.length){var i=this.audioTrak[e].frames;r.push(i[0].index),r.push(i[i.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return r}},{key:"loadFragment",value:(n=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isPending&&r!==[0,0]&&!this.timeRange[t].isLoading){e.next=2;break}return e.abrupt("return");case 2:if(this.log("[MP4.loadFragment] ,fragIndex,",t,",range ",r,",len ,",r[1]-r[0],", bufferLoaded_Len,",this.bufferLoaded.byteLength),this._segmentToBitRateMap.set(t,this._bitRate),this.timeRecord.startLoadTime<0&&(this.timeRecord.startLoadTime=util.nowTime()),!(r.length>=2&&r[1]&&r[1]>0&&r[1]<=this.bufferLoaded.byteLength)){e.next=15;break}this.timeRange[t].isLoading=!0,n=Math.max(r[0],this.bufferLoadedPos),i=new Uint8Array(this.bufferLoaded.slice(n,r[1])),this.log("[mp4.loadFragment] has all data: ",n,r[1]),this.timeRange[t].downloaded=!0,this.bufferLoadedPos=-1,this._mux(i,n,t,!0),e.next=38;break;case 15:if(!(r.length>=2&&r[0]&&r[0]<=this.bufferLoaded.byteLength)){e.next=27;break}if(this.timeRange[t].isLoading){e.next=25;break}if(o=Math.max(r[0],this.bufferLoadedPos),!((a=new Uint8Array(this.bufferLoaded.slice(o,r[1]))).byteLength>0)){e.next=24;break}return this.bufferLoadedPos=o+a.byteLength,this.log("[mp4.loadFragment] has part data: ",o,o+a.byteLength),this._mux(a,o,t,r[1]<=this.bufferLoadedPos),e.abrupt("return");case 24:if(!this._metaLoading&&!this.timeRange[t].isLoading)try{this.log("[mp4.loadFragment] ready to load part data >>> ",this.bufferLoaded.byteLength,r[1]),this.timeRange[t].isLoading=!0,this.MP4Loader.loadData([this.bufferLoaded.byteLength,r[1]],this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen})}catch(e){this.errorHandler(e,"MP4Loader.loadData",{range:[this.bufferLoaded.byteLength,r[1]],fragIndex:t})}case 25:e.next=38;break;case 27:if(this._metaLoading&&!(r[0]>=this.CHUNK_SIZE)||this.timeRange[t].isLoading){e.next=38;break}return this.timeRange[t].isLoading=!0,this.log("[mp4.loadFragment],ready to load all data ,segmentIdx, ",t,",range >>> ",JSON.stringify(r)),e.prev=30,e.next=33,this.MP4Loader.loadData(r,this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen});case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(30),this.errorHandler(e.t0,"MP4Loader.loadData",{range:r,fragIndex:t});case 38:case"end":return e.stop()}}),e,this,[[30,35]])}))),function(e,t){return n.apply(this,arguments)})},{key:"loadAllFragmentData",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:return i=this.getFragRange(t),e.prev=3,e.next=6,this.MP4Loader.loadData(i,this.MP4Loader.cache,{index:t});case 6:if(o=e.sent,this.log("loadAllFragmentData after",JSON.stringify(i),o),o&&o.data){e.next=11;break}return n(new Error("response null")),e.abrupt("return");case 11:a=o.data,this._loadSuccessCallBack=r,this._mux(a,i[0],t,!0),e.next=20;break;case 16:e.prev=16,e.t0=e.catch(3),console.error("[MP4] loadAllFragmentData error",e.t0),n(e.t0);case 20:case"end":return e.stop()}}),e,this,[[3,16]])}))),function(e,t,n){return r.apply(this,arguments)})},{key:"cancelLoading",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.MP4Loader;case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}this.MP4Loader.cancel();case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"update",value:function(e){this.url=e}},{key:"getDataBitRate",value:function(e){return this._segmentToBitRateMap.get(e)}},{key:"checkCodecH265",value:function(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}},{key:"destroy",value:function(){this.hasDestroyed||(this.resetTansmuxer(),this.transmuxerWorkerControl&&this.transmuxerWorkerControl.destroy(),this.size=0,this._isPending=!1,this._metaLoading=!1,this.bufferLoadedPos=0,this.bufferLoaded=new Uint8Array(0),this._bitRateInfoMap.clear(),this._segmentToBitRateMap.clear(),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.hasDestroyed=!0)}},{key:"resetTansmuxer",value:function(){this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null,this.transmuxerWorkerControl&&this.transmuxerWorkerControl.reset()}}],[{key:"getDefaultConfig",value:function(){return{onProcessMinLen:5120,xhrSetup:null,chunkSize:8e5,loadSize:800,isCache:!1,playerId:"",vid:"",ext:{}}}}]),d}();function getKeyFrameList(e){if(e.keyframe)return e}var ProxyPromise=function(){function e(){var t,r;_classCallCheck$6(this,e);var n=new Promise((function(e,n){t=e,r=n}));return n.resolve=function(e){t(e),n.state="fulfilled"},n.reject=function(e){r(e),n.state="rejected",n.isBreak="DESTROYED"===e},n.state="pending",n}return _createClass$6(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),XHR=_createClass$6((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.url,n=t.method,i=void 0===n?"GET":n,o=t.type,a=void 0===o?"arraybuffer":o,s=t.data,c=void 0===s?{}:s;return _classCallCheck$6(this,e),new Promise((function(e,t){var n=new window.XMLHttpRequest,o=i.toUpperCase(),s=[];if(a&&(n.responseType=a),Object.keys(c).map((function(e){s.push("k=".concat(c[e]))})),"GET"===o)n.open(o,"".concat(r,"?").concat(s.join("&"))),n.send();else{if("POST"!==o)throw new Error("xhr ".concat(o," is not supported"));n.open(o,r,!0),n.setRequestHeader("Content-Type","application/json"),n.send(JSON.stringify(c))}n.onload=function(){200===n.status||206===n.status?e(n):t(n)},n.onerror=function(){t(n)}}))}));function getPlayLicenses(e,t,r){var n=new ProxyPromise;return new XHR({type:"json",method:"POST",url:r,data:{drm_type:"22",license_request:[{vid:e,kids:[].concat(t)}]}}).then((function(r){var i=r.response;if(i){var o=i.play_licenses[e][t];n.resolve(o)}else n.reject()})).catch((function(){n.reject()})),n}function getKeyValue(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,i=new ProxyPromise;if(r){log$2("[getKeyValue]>before openBox");var o=n.awManager.openBox(r);if(log$2("[getKeyValue]>after openBox: ",o),t){var a={clearKeys:{}};a.clearKeys[t]=o,i.resolve(a)}else i.resolve(o)}else{var s=getPlayLicenses(e,t,n.config.getLicenseUrl);s.id="requestPromise",n._addPendingPromise(s),s.then((function(e){if(n._removePendingPromise(s),n.awManager){log$2("[getKeyValue]>before openBox");var r=n.awManager.openBox(e);log$2("[getKeyValue]>after openBox: ",r);var o={clearKeys:{}};o.clearKeys[t]=r,i.resolve(o)}else i.reject({errDes:"awManager not exist, player destroyed"}),log$2("[getKeyValue]>awManager not exist, player destroyed")})).catch((function(e){i.reject(e),log$2("[getKeyValue]>requestPromise reject")}))}return i}var userGestureEventMiddleware={playBtnClick:function(e,t,r,n){e.paused||e.waitingMoreBuffer&&(e.waitingMoreBuffer=!1),n.call(e,t,r)}},videoEventMiddleware={waiting:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer=!0,t(n,e)},play:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer||t(n,e)},pause:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer||t(n,e)},seeking:function(e,t){var r=e.player,n=e.eventName;r.isSeekingStart=!0,t(n,e)},progress:function(e,t){log$2(">>>>progress");var r=e.player,n=e.eventName;if(r.waitingMoreBuffer){var i=r.getBufferedRange(r.buffered2);0===i[0]&&0===i[1]||(void 0===r.inWaitingStart||r.isSeekingStart?(log$2("progress 起播或seek结束"),i[1]-r.currentTime>=(r.config.canplayWaterLevel||1)||i[1]>r.duration-1?(log$2("progress 出起播水位"),r.play()):(log$2("progress 未出起播水位"),r.emit("waiting"))):(log$2("progress video卡顿结束"),i[1]-r.currentTime>=(r.config.bufferWaterLevel||5)||i[1]>r.duration-1?(log$2("progress 出卡顿水位"),r.play()):(log$2("progress 未出卡顿水位"),r.emit("waiting"))))}t(n,e)},playing:function(e,t){var r=e.player,n=e.eventName;log$2("playing");var i=r.getBufferedRange(r.buffered2);if(0===i[0]&&0===i[1])return log$2("playing 当前播放时刻没有缓存 未出水位"),r.waitingMoreBuffer=!0,r.pause(),void t.call("waiting",e);void 0===r.inWaitingStart||r.isSeekingStart?(log$2("playing 起播或seek结束"),i[1]-r.currentTime>=(r.config.canplayWaterLevel||1)||i[1]>r.duration-1?(log$2("playing 出起播水位"),r.waitingMoreBuffer=!1,r.isSeekingStart=!1,t(n,e)):(log$2("playing 未出起播水位"),r.waitingMoreBuffer=!0,r.pause(),t.call("waiting",e))):(log$2("playing video卡顿结束"),i[1]-r.currentTime>=(r.config.bufferWaterLevel||5)||i[1]>r.duration-1?(log$2("playing 出卡顿水位"),r.waitingMoreBuffer=!1,t(n,e)):(log$2("playing 未出卡顿水位"),r.waitingMoreBuffer=!0,r.pause(),t.call("waiting",e)))}};function offInDestroy(e,t,r,n){e.once(n,(function i(){e.off(t,r),e.off(n,i)}))}function on(e,t,r,n){if(n)e.on(t,r),offInDestroy(e,t,r,n);else{e.on(t,(function(e){r(e)}))}}var EME=function(e){_inherits$4(r,EventEmitter$1);var t=_createSuper$4(r);function r(e){var n;return _classCallCheck$6(this,r),(n=t.call(this)).drm=e,n.KEYSYSTEM_TYPE="",n.keys={},n.drm.clearKeys&&(n.KEYSYSTEM_TYPE="org.w3.clearkey",n.keys=n.drm.clearKeys),n.options=[],n.ensurePromise=void 0,n}return _createClass$6(r,[{key:"updateDrm",value:function(e){this.drm=e,this.keys=this.drm.clearKeys}},{key:"setOptions",value:function(){var e=[{contentType:'video/mp4; codecs="avc1.42E01E"'},{contentType:'video/webm; codecs="vp8"'}],t={videoCapabilities:e},r={videoCapabilities:e,persistentState:"required",sessionTypes:["persistent-license"]};this.options=[r,t]}},{key:"bail",value:function(e){}},{key:"UpdateSessionFunc",value:function(e){var t=this;return function(r){var n=[],i=[];Object.keys(e).forEach((function(t){var r=e[t],o=util.fromHex(t),a=util.fromHex(r),s={kty:"oct",kid:util.toBase64(o,!1),k:util.toBase64(a,!1)};n.push(s),i.push(s.kid)}));var o={keys:n},a=JSON.stringify(o);r.target.update(util.StringToArrayBuffer(a)).then((function(){}),t.bail(" MediaKeySession update failed"))}}},{key:"KeysChange",value:function(e){}},{key:"EnsureMediaKeysCreated",value:function(e,t,r){return this.ensurePromise||(this.ensurePromise=navigator.requestMediaKeySystemAccess(t,r).then((function(e){return e.createMediaKeys()}),this.bail(" Failed to request key system access.")).then((function(t){return e.setMediaKeys(t)}),this.bail(" failed to create MediaKeys object"))),this.ensurePromise}},{key:"SetupEME",value:function(e,t){var r=this;e.sessions=[],on(this,"encrypted",(function(){var t=JSON.stringify({kids:["0123456789abcdef0123456789abcdef"]}),n=new Uint8Array(util.toUTF8(t));r.EnsureMediaKeysCreated(e,r.KEYSYSTEM_TYPE,r.options).then((function(){var t=e.mediaKeys.createSession();return e.sessions.push(t),t.addEventListener("message",r.UpdateSessionFunc(r.keys)),t.addEventListener("keystatuseschange",r.KeysChange),t.generateRequest("keyids",n.buffer)}),r.bail(" failed to ensure MediaKeys on HTMLMediaElement")).then((function(){}),r.bail(" Failed to generate request."))}))}}]),r}(),WasmManager=function(){function e(){_classCallCheck$6(this,e),this.queue=[]}return _createClass$6(e,[{key:"push",value:function(e){this.queue.push(e)}},{key:"startup",value:function(){return Promise.all(this.queue)}},{key:"destroy",value:function(){this.queue=[]}}]),e}(),$$r=_export$2,lastIndexOf5=arrayLastIndexOf$1;$$r({target:"Array",proto:!0,forced:arrayLastIndexOf$1!==[].lastIndexOf},{lastIndexOf:arrayLastIndexOf$1});var $$q=_export$2,fails$g=fails$1T,toIndexedObject$3=toIndexedObject$x,nativeGetOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor$2.f,DESCRIPTORS$5=descriptors$4,FAILS_ON_PRIMITIVES$2=fails$g((function(){nativeGetOwnPropertyDescriptor$1(1)})),FORCED$8=!DESCRIPTORS$5||FAILS_ON_PRIMITIVES$2;$$q({target:"Object",stat:!0,forced:FORCED$8,sham:!DESCRIPTORS$5},{getOwnPropertyDescriptor:function(e,t){return nativeGetOwnPropertyDescriptor$1(toIndexedObject$3(e),t)}});var $$p=_export$2,DESCRIPTORS$4=descriptors$4,defineProperty$4=objectDefineProperty$2.f;$$p({target:"Object",stat:!0,forced:Object.defineProperty!==defineProperty$4,sham:!DESCRIPTORS$4},{defineProperty:defineProperty$4});var createTypedArrayConstructor$6=typedArrayConstructorExports$1;createTypedArrayConstructor$6("Int8",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$5=typedArrayConstructorExports$1;createTypedArrayConstructor$5("Int16",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$4=typedArrayConstructorExports$1;createTypedArrayConstructor$4("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$3=typedArrayConstructorExports$1;createTypedArrayConstructor$3("Uint16",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$2=typedArrayConstructorExports$1;createTypedArrayConstructor$2("Uint32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$1=typedArrayConstructorExports$1;createTypedArrayConstructor$1("Float64",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var $$o=_export$2,fails$f=fails$1T,$imul=Math.imul,FORCED$7=fails$f((function(){return-5!=$imul(4294967295,5)||2!=$imul.length}));$$o({target:"Math",stat:!0,forced:FORCED$7},{imul:function(e,t){var r=65535,n=+e,i=+t,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}});var mathSign=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1},sign2=mathSign,abs=Math.abs,pow$1=Math.pow,EPSILON=pow$1(2,-52),EPSILON32=pow$1(2,-23),MAX32=pow$1(2,127)*(2-EPSILON32),MIN32=pow$1(2,-126),roundTiesToEven=function(e){return e+1/EPSILON-1/EPSILON},mathFround=Math.fround||function(e){var t,r,n=+e,i=abs(n),o=sign2(n);return i<MIN32?o*roundTiesToEven(i/MIN32/EPSILON32)*MIN32*EPSILON32:(r=(t=(1+EPSILON32/EPSILON)*i)-(t-i))>MAX32||r!=r?o*(1/0):o*r},$$n=_export$2,fround2=mathFround;$$n({target:"Math",stat:!0},{fround:fround2});var $$m=_export$2,floor$1=Math.floor,log$1=Math.log,LOG2E=Math.LOG2E;$$m({target:"Math",stat:!0},{clz32:function(e){var t=e>>>0;return t?31-floor$1(log$1(t+.5)*LOG2E):32}});var $$l=_export$2,trunc4=mathTrunc$2;$$l({target:"Math",stat:!0},{trunc:trunc4});var $$k=_export$2,uncurryThis$a=functionUncurryThisClause$2,getOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor$2.f,toLength=toLength$k,toString$7=toString$E,notARegExp=notARegexp,requireObjectCoercible$1=requireObjectCoercible$m,correctIsRegExpLogic=correctIsRegexpLogic,nativeStartsWith=uncurryThis$a("".startsWith),stringSlice$3=uncurryThis$a("".slice),min=Math.min,CORRECT_IS_REGEXP_LOGIC=correctIsRegExpLogic("startsWith"),MDN_POLYFILL_BUG=!CORRECT_IS_REGEXP_LOGIC&&!!function(){var e=getOwnPropertyDescriptor$1(String.prototype,"startsWith");return e&&!e.writable}();$$k({target:"String",proto:!0,forced:!MDN_POLYFILL_BUG&&!CORRECT_IS_REGEXP_LOGIC},{startsWith:function(e){var t=toString$7(requireObjectCoercible$1(this));notARegExp(e);var r=toLength(min(arguments.length>1?arguments[1]:void 0,t.length)),n=toString$7(e);return nativeStartsWith?nativeStartsWith(t,n,r):stringSlice$3(t,r,r+n.length)===n}});var aw=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(t){var r,n=void 0!==(t=t||{})?t:{},i={};for(r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);var o=!0;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var a,s="";if(document.currentScript&&(s=document.currentScript.src),e&&(s=e),s=0!==s.indexOf("blob:")?s.substr(0,s.lastIndexOf("/")+1):"","object"!==("undefined"==typeof window?"undefined":_typeof$3(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var c,u=n.print||console.log.bind(console),l=n.printErr||console.warn.bind(console);for(r in i)i.hasOwnProperty(r)&&(n[r]=i[r]);function d(e){d.shown||(d.shown={}),d.shown[e]||(d.shown[e]=1,l(e))}i=null,n.arguments&&n.arguments,Object.getOwnPropertyDescriptor(n,"arguments")||Object.defineProperty(n,"arguments",{configurable:!0,get:function(){F("Module.arguments has been replaced with plain arguments_")}}),n.thisProgram&&n.thisProgram,Object.getOwnPropertyDescriptor(n,"thisProgram")||Object.defineProperty(n,"thisProgram",{configurable:!0,get:function(){F("Module.thisProgram has been replaced with plain thisProgram")}}),n.quit&&n.quit,Object.getOwnPropertyDescriptor(n,"quit")||Object.defineProperty(n,"quit",{configurable:!0,get:function(){F("Module.quit has been replaced with plain quit_")}}),m(void 0===n.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.read,"Module.read option was removed (modify read_ in JS)"),m(void 0===n.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),m(void 0===n.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),m(void 0===n.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Object.getOwnPropertyDescriptor(n,"read")||Object.defineProperty(n,"read",{configurable:!0,get:function(){F("Module.read has been replaced with plain read_")}}),Object.getOwnPropertyDescriptor(n,"readAsync")||Object.defineProperty(n,"readAsync",{configurable:!0,get:function(){F("Module.readAsync has been replaced with plain readAsync")}}),Object.getOwnPropertyDescriptor(n,"readBinary")||Object.defineProperty(n,"readBinary",{configurable:!0,get:function(){F("Module.readBinary has been replaced with plain readBinary")}}),de=function(){F("cannot use the stack before compiled code is ready to run, and has provided stack access")},n.wasmBinary&&(c=n.wasmBinary),Object.getOwnPropertyDescriptor(n,"wasmBinary")||Object.defineProperty(n,"wasmBinary",{configurable:!0,get:function(){F("Module.wasmBinary has been replaced with plain wasmBinary")}}),n.noExitRuntime&&n.noExitRuntime,Object.getOwnPropertyDescriptor(n,"noExitRuntime")||Object.defineProperty(n,"noExitRuntime",{configurable:!0,get:function(){F("Module.noExitRuntime has been replaced with plain noExitRuntime")}});var h,f={Memory:function(e){return{buffer:new ArrayBuffer(65536*e.initial),grow:function(e){var t=this.buffer,r=fe(e);return m(this.buffer!==t),r}}},Table:function(e){var t=new Array(e.initial);return t.grow=function(e){t.length>=1&&F("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."),t.push(null)},t.set=function(e,r){t[e]=r},t.get=function(e){return t[e]},t},Module:function(e){return{}},Instance:function(e,t){var r,n=(r=p,function(e,t,n){var i=t.memory,o=r,a=new e.Int8Array(n);new e.Int16Array(n);var s=new e.Int32Array(n),c=new e.Uint8Array(n);new e.Uint16Array(n);var u=new e.Uint32Array(n);new e.Float32Array(n),new e.Float64Array(n);var l=e.Math.imul;e.Math.fround,e.Math.abs,e.Math.clz32,e.Math.min,e.Math.max,e.Math.floor,e.Math.ceil,e.Math.sqrt,t.abort,e.NaN,e.Infinity;var d=t.emscripten_memcpy_big,h=t.emscripten_resize_heap,f=t.__unlock,p=t.__lock,y=9744;function m(e){var t,r=0;return t=A(),(e=(r=s[388])+e|0)>>>0<=t<<16>>>0||h(0|e)?(s[388]=e,r):(s[256]=48,-1)}function g(e){var t,r=0,n=0,i=0,o=0,a=0,l=0,d=0,h=0,f=0,p=0,g=0,v=0;y=t=y-16|0;e:{t:{r:{n:{i:{o:{a:{s:{c:{u:{l:{if((e|=0)>>>0<=244){if(3&(r=(a=s[261])>>>(e=(l=e>>>0<11?16:e+11&-8)>>>3))){e=(r=s[1092+(o=(n=e+(1&(-1^r))|0)<<3)>>2])+8|0,(0|(i=s[r+8>>2]))!=(0|(o=o+1084|0))?(s[i+12>>2]=o,s[o+8>>2]=i):(g=1044,v=$(n)&a,s[g>>2]=v),n<<=3,s[r+4>>2]=3|n,s[4+(r=r+n|0)>>2]=1|s[r+4>>2];break e}if(l>>>0<=(h=s[263])>>>0)break l;if(r){n=r=(e=(0-(e=(0-(n=2<<e)|n)&r<<e)&e)-1|0)>>>12&16,n|=r=(e>>>=r)>>>5&8,n|=r=(e>>>=r)>>>2&4,r=s[1092+(i=(n=((n|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)|0)<<3)>>2],(0|(e=s[r+8>>2]))!=(0|(i=i+1084|0))?(s[e+12>>2]=i,s[i+8>>2]=e):(a=$(n)&a,s[261]=a),e=r+8|0,s[r+4>>2]=3|l,o=(n<<=3)-l|0,s[4+(d=r+l|0)>>2]=1|o,s[r+n>>2]=o,h&&(r=1084+((n=h>>>3)<<3)|0,i=s[266],(n=1<<n)&a?n=s[r+8>>2]:(s[261]=n|a,n=r),s[r+8>>2]=i,s[n+12>>2]=i,s[i+12>>2]=r,s[i+8>>2]=n),s[266]=d,s[263]=o;break e}if(!(p=s[262]))break l;for(n=r=(e=(p&0-p)-1|0)>>>12&16,n|=r=(e>>>=r)>>>5&8,n|=r=(e>>>=r)>>>2&4,r=s[1348+(((n|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)<<2)>>2],i=(-8&s[r+4>>2])-l|0,n=r;(e=s[n+16>>2])||(e=s[n+20>>2]);)i=(n=(o=(-8&s[e+4>>2])-l|0)>>>0<i>>>0)?o:i,r=n?e:r,n=e;if(f=s[r+24>>2],(0|(o=s[r+12>>2]))!=(0|r)){e=s[r+8>>2],s[e+12>>2]=o,s[o+8>>2]=e;break t}if(!(e=s[(n=r+20|0)>>2])){if(!(e=s[r+16>>2]))break u;n=r+16|0}for(;d=n,o=e,(e=s[(n=e+20|0)>>2])||(n=o+16|0,e=s[o+16>>2]););s[d>>2]=0;break t}if(l=-1,!(e>>>0>4294967231)&&(l=-8&(r=e+11|0),h=s[262])){n=0-l|0,a=0,(r>>>=8)&&(a=31,l>>>0>16777215||(a=28+((e=((a=(r<<=i=r+1048320>>>16&8)<<(e=r+520192>>>16&4))<<(r=a+245760>>>16&2)>>>15)-(r|e|i)|0)<<1|l>>>e+21&1)|0));d:{h:{if(i=s[1348+(a<<2)>>2])for(r=l<<(31==(0|a)?0:25-(a>>>1)|0),e=0;;){if(!((d=(-8&s[i+4>>2])-l|0)>>>0>=n>>>0||(o=i,n=d))){n=0,e=i;break h}if(d=s[i+20>>2],i=s[16+((r>>>29&4)+i|0)>>2],e=d?(0|d)==(0|i)?e:d:e,r<<=0!=(0|i),!i)break}else e=0;if(!(e|o)){if(!(e=(0-(e=2<<a)|e)&h))break l;i=r=(e=(e&0-e)-1|0)>>>12&16,i|=r=(e>>>=r)>>>5&8,i|=r=(e>>>=r)>>>2&4,e=s[1348+(((i|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)<<2)>>2]}if(!e)break d}for(;n=(r=(i=(-8&s[e+4>>2])-l|0)>>>0<n>>>0)?i:n,o=r?e:o,e=(r=s[e+16>>2])||s[e+20>>2];);}if(!(!o|n>>>0>=s[263]-l>>>0)){if(d=s[o+24>>2],(0|o)!=(0|(r=s[o+12>>2]))){e=s[o+8>>2],s[e+12>>2]=r,s[r+8>>2]=e;break r}if(!(e=s[(i=o+20|0)>>2])){if(!(e=s[o+16>>2]))break c;i=o+16|0}for(;a=i,r=e,(e=s[(i=e+20|0)>>2])||(i=r+16|0,e=s[r+16>>2]););s[a>>2]=0;break r}}}if((r=s[263])>>>0>=l>>>0){e=s[266],(n=r-l|0)>>>0>=16?(s[263]=n,i=e+l|0,s[266]=i,s[i+4>>2]=1|n,s[e+r>>2]=n,s[e+4>>2]=3|l):(s[266]=0,s[263]=0,s[e+4>>2]=3|r,s[4+(r=e+r|0)>>2]=1|s[r+4>>2]),e=e+8|0;break e}if((i=s[264])>>>0>l>>>0){r=i-l|0,s[264]=r,n=(e=s[267])+l|0,s[267]=n,s[n+4>>2]=1|r,s[e+4>>2]=3|l,e=e+8|0;break e}if(e=0,n=o=l+47|0,s[379]?r=s[381]:(s[382]=-1,s[383]=-1,s[380]=4096,s[381]=4096,s[379]=t+12&-16^1431655768,s[384]=0,s[372]=0,r=4096),(n=(a=n+r|0)&(d=0-r|0))>>>0<=l>>>0)break e;if((r=s[371])&&(f=(h=s[369])+n|0)>>>0<=h>>>0|f>>>0>r>>>0)break e;if(4&c[1488])break o;l:{d:{if(r=s[267])for(e=1492;;){if((h=s[e>>2])+s[e+4>>2]>>>0>r>>>0&&h>>>0<=r>>>0)break d;if(!(e=s[e+8>>2]))break}if(-1==(0|(r=m(0))))break a;if(a=n,(i=(e=s[380])+-1|0)&r&&(a=(n-r|0)+(r+i&0-e)|0),a>>>0<=l>>>0|a>>>0>2147483646)break a;if((e=s[371])&&(d=(i=s[369])+a|0)>>>0<=i>>>0|d>>>0>e>>>0)break a;if((0|r)!=(0|(e=m(a))))break l;break i}if((a=d&a-i)>>>0>2147483646)break a;if((0|(r=m(a)))==(s[e>>2]+s[e+4>>2]|0))break s;e=r}if(r=e,!(l+48>>>0<=a>>>0|a>>>0>2147483646|-1==(0|e))){if((e=(e=s[381])+(o-a|0)&0-e)>>>0>2147483646)break i;if(-1!=(0|m(e))){a=e+a|0;break i}m(0-a|0);break a}if(-1!=(0|r))break i;break a}o=0;break t}r=0;break r}if(-1!=(0|r))break i}s[372]=4|s[372]}if(n>>>0>2147483646)break n;if((r=m(n))>>>0>=(e=m(0))>>>0|-1==(0|r)|-1==(0|e))break n;if((a=e-r|0)>>>0<=l+40>>>0)break n}e=s[369]+a|0,s[369]=e,e>>>0>u[370]&&(s[370]=e);i:{o:{a:{if(n=s[267]){for(e=1492;;){if(((i=s[e>>2])+(o=s[e+4>>2])|0)==(0|r))break a;if(!(e=s[e+8>>2]))break}break o}for(r>>>0>=(e=s[265])>>>0&&e||(s[265]=r),e=0,s[374]=a,s[373]=r,s[269]=-1,s[270]=s[379],s[376]=0;i=1084+(n=e<<3)|0,s[n+1092>>2]=i,s[n+1096>>2]=i,32!=(0|(e=e+1|0)););i=(e=a+-40|0)-(n=r+8&7?-8-r&7:0)|0,s[264]=i,n=r+n|0,s[267]=n,s[n+4>>2]=1|i,s[4+(e+r|0)>>2]=40,s[268]=s[383];break i}if(!(8&c[e+12|0]|r>>>0<=n>>>0|i>>>0>n>>>0)){s[e+4>>2]=o+a,r=(e=n+8&7?-8-n&7:0)+n|0,s[267]=r,e=(i=s[264]+a|0)-e|0,s[264]=e,s[r+4>>2]=1|e,s[4+(n+i|0)>>2]=40,s[268]=s[383];break i}}r>>>0<(o=s[265])>>>0&&(s[265]=r,o=0),i=r+a|0,e=1492;o:{a:{s:{c:{u:{l:{for(;;){if((0|i)!=s[e>>2]){if(e=s[e+8>>2])continue;break l}break}if(!(8&c[e+12|0]))break u}for(e=1492;;){if((i=s[e>>2])>>>0<=n>>>0&&(o=i+s[e+4>>2]|0)>>>0>n>>>0)break c;e=s[e+8>>2]}}if(s[e>>2]=r,s[e+4>>2]=s[e+4>>2]+a,s[4+(f=(r+8&7?-8-r&7:0)+r|0)>>2]=3|l,e=((r=i+(i+8&7?-8-i&7:0)|0)-f|0)-l|0,d=l+f|0,(0|r)==(0|n)){s[267]=d,e=s[264]+e|0,s[264]=e,s[d+4>>2]=1|e;break a}if(s[266]==(0|r)){s[266]=d,e=s[263]+e|0,s[263]=e,s[d+4>>2]=1|e,s[e+d>>2]=e;break a}if(1==(3&(n=s[r+4>>2]))){p=-8&n;u:if(n>>>0<=255){if(o=n>>>3,n=s[r+8>>2],(0|(i=s[r+12>>2]))==(0|n)){g=1044,v=s[261]&$(o),s[g>>2]=v;break u}s[n+12>>2]=i,s[i+8>>2]=n}else{if(h=s[r+24>>2],(0|(a=s[r+12>>2]))==(0|r))if((l=s[(i=r+20|0)>>2])||(l=s[(i=r+16|0)>>2])){for(;n=i,a=l,(l=s[(i=l+20|0)>>2])||(i=a+16|0,l=s[a+16>>2]););s[n>>2]=0}else a=0;else n=s[r+8>>2],s[n+12>>2]=a,s[a+8>>2]=n;if(h){n=s[r+28>>2];l:{if(s[(i=1348+(n<<2)|0)>>2]==(0|r)){if(s[i>>2]=a,a)break l;g=1048,v=s[262]&$(n),s[g>>2]=v;break u}if(s[h+(s[h+16>>2]==(0|r)?16:20)>>2]=a,!a)break u}s[a+24>>2]=h,(n=s[r+16>>2])&&(s[a+16>>2]=n,s[n+24>>2]=a),(n=s[r+20>>2])&&(s[a+20>>2]=n,s[n+24>>2]=a)}}r=r+p|0,e=e+p|0}if(s[r+4>>2]=-2&s[r+4>>2],s[d+4>>2]=1|e,s[e+d>>2]=e,e>>>0<=255){e=1084+((r=e>>>3)<<3)|0,(n=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|n,r=e),s[e+8>>2]=d,s[r+12>>2]=d,s[d+12>>2]=e,s[d+8>>2]=r;break a}if(r=0,(i=e>>>8)&&(r=31,e>>>0>16777215||(r=28+((r=((l=(i<<=o=i+1048320>>>16&8)<<(r=i+520192>>>16&4))<<(i=l+245760>>>16&2)>>>15)-(i|r|o)|0)<<1|e>>>r+21&1)|0)),s[(n=d)+28>>2]=r,s[d+16>>2]=0,s[d+20>>2]=0,n=1348+(r<<2)|0,(i=s[262])&(o=1<<r)){for(i=e<<(31==(0|r)?0:25-(r>>>1)|0),r=s[n>>2];;){if(n=r,(-8&s[r+4>>2])==(0|e))break s;if(r=i>>>29,i<<=1,!(r=s[16+(o=(4&r)+n|0)>>2]))break}s[o+16>>2]=d}else s[262]=i|o,s[n>>2]=d;s[d+24>>2]=n,s[d+12>>2]=d,s[d+8>>2]=d;break a}for(d=(e=a+-40|0)-(i=r+8&7?-8-r&7:0)|0,s[264]=d,i=r+i|0,s[267]=i,s[i+4>>2]=1|d,s[4+(e+r|0)>>2]=40,s[268]=s[383],s[(i=(e=(o+(o+-39&7?39-o&7:0)|0)-47|0)>>>0<n+16>>>0?n:e)+4>>2]=27,e=s[376],s[i+16>>2]=s[375],s[i+20>>2]=e,e=s[374],s[i+8>>2]=s[373],s[i+12>>2]=e,s[375]=i+8,s[374]=a,s[373]=r,s[376]=0,e=i+24|0;s[e+4>>2]=7,r=e+8|0,e=e+4|0,r>>>0<o>>>0;);if((0|n)==(0|i))break i;if(s[i+4>>2]=-2&s[i+4>>2],o=i-n|0,s[n+4>>2]=1|o,s[i>>2]=o,o>>>0<=255){e=1084+((r=o>>>3)<<3)|0,(i=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|i,r=e),s[e+8>>2]=n,s[r+12>>2]=n,s[n+12>>2]=e,s[n+8>>2]=r;break i}if(s[n+16>>2]=0,s[n+20>>2]=0,e=0,(i=o>>>8)&&(e=31,o>>>0>16777215||(e=28+((e=((d=(i<<=a=i+1048320>>>16&8)<<(e=i+520192>>>16&4))<<(i=d+245760>>>16&2)>>>15)-(i|e|a)|0)<<1|o>>>e+21&1)|0)),s[(r=n)+28>>2]=e,r=1348+(e<<2)|0,(i=s[262])&(a=1<<e)){for(e=o<<(31==(0|e)?0:25-(e>>>1)|0),r=s[r>>2];;){if(i=r,(0|o)==(-8&s[r+4>>2]))break o;if(r=e>>>29,e<<=1,!(r=s[16+(a=i+(4&r)|0)>>2]))break}s[a+16>>2]=n,s[n+24>>2]=i}else s[262]=i|a,s[r>>2]=n,s[n+24>>2]=r;s[n+12>>2]=n,s[n+8>>2]=n;break i}e=s[n+8>>2],s[e+12>>2]=d,s[n+8>>2]=d,s[d+24>>2]=0,s[d+12>>2]=n,s[d+8>>2]=e}e=f+8|0;break e}e=s[i+8>>2],s[e+12>>2]=n,s[i+8>>2]=n,s[n+24>>2]=0,s[n+12>>2]=i,s[n+8>>2]=e}if(!((e=s[264])>>>0<=l>>>0)){r=e-l|0,s[264]=r,n=(e=s[267])+l|0,s[267]=n,s[n+4>>2]=1|r,s[e+4>>2]=3|l,e=e+8|0;break e}}s[256]=48,e=0;break e}r:if(d){e=s[o+28>>2];n:{if(s[(i=1348+(e<<2)|0)>>2]==(0|o)){if(s[i>>2]=r,r)break n;h=$(e)&h,s[262]=h;break r}if(s[d+(s[d+16>>2]==(0|o)?16:20)>>2]=r,!r)break r}s[r+24>>2]=d,(e=s[o+16>>2])&&(s[r+16>>2]=e,s[e+24>>2]=r),(e=s[o+20>>2])&&(s[r+20>>2]=e,s[e+24>>2]=r)}r:if(n>>>0<=15)e=n+l|0,s[o+4>>2]=3|e,s[4+(e=e+o|0)>>2]=1|s[e+4>>2];else if(s[o+4>>2]=3|l,s[4+(i=o+l|0)>>2]=1|n,s[n+i>>2]=n,n>>>0<=255)e=1084+((r=n>>>3)<<3)|0,(n=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|n,r=e),s[e+8>>2]=i,s[r+12>>2]=i,s[i+12>>2]=e,s[i+8>>2]=r;else{e=0,(l=n>>>8)&&(e=31,n>>>0>16777215||(e=28+((e=((d=(l<<=a=l+1048320>>>16&8)<<(e=l+520192>>>16&4))<<(l=d+245760>>>16&2)>>>15)-(l|e|a)|0)<<1|n>>>e+21&1)|0)),s[(r=i)+28>>2]=e,s[i+16>>2]=0,s[i+20>>2]=0,r=1348+(e<<2)|0;n:{if((l=1<<e)&h){for(e=n<<(31==(0|e)?0:25-(e>>>1)|0),l=s[r>>2];;){if((-8&s[(r=l)+4>>2])==(0|n))break n;if(l=e>>>29,e<<=1,!(l=s[16+(a=(4&l)+r|0)>>2]))break}s[a+16>>2]=i}else s[262]=l|h,s[r>>2]=i;s[i+24>>2]=r,s[i+12>>2]=i,s[i+8>>2]=i;break r}e=s[r+8>>2],s[e+12>>2]=i,s[r+8>>2]=i,s[i+24>>2]=0,s[i+12>>2]=r,s[i+8>>2]=e}e=o+8|0;break e}t:if(f){e=s[r+28>>2];r:{if(s[(n=1348+(e<<2)|0)>>2]==(0|r)){if(s[n>>2]=o,o)break r;g=1048,v=$(e)&p,s[g>>2]=v;break t}if(s[f+(s[f+16>>2]==(0|r)?16:20)>>2]=o,!o)break t}s[o+24>>2]=f,(e=s[r+16>>2])&&(s[o+16>>2]=e,s[e+24>>2]=o),(e=s[r+20>>2])&&(s[o+20>>2]=e,s[e+24>>2]=o)}i>>>0<=15?(e=i+l|0,s[r+4>>2]=3|e,s[4+(e=e+r|0)>>2]=1|s[e+4>>2]):(s[r+4>>2]=3|l,s[4+(l=r+l|0)>>2]=1|i,s[i+l>>2]=i,h&&(e=1084+((n=h>>>3)<<3)|0,o=s[266],(n=1<<n)&a?n=s[e+8>>2]:(s[261]=n|a,n=e),s[e+8>>2]=o,s[n+12>>2]=o,s[o+12>>2]=e,s[o+8>>2]=n),s[266]=l,s[263]=i),e=r+8|0}return y=t+16|0,0|e}function v(e){var t=0,r=0,n=0,i=0,o=0,a=0,c=0,l=0,d=0;e:if(e|=0){o=(n=e+-8|0)+(e=-8&(r=s[e+-4>>2]))|0;t:if(!(1&r)){if(!(3&r))break e;if((n=n-(r=s[n>>2])|0)>>>0<u[265])break e;if(e=e+r|0,s[266]==(0|n)){if(3==(3&(r=s[o+4>>2])))return s[263]=e,s[o+4>>2]=-2&r,s[n+4>>2]=1|e,void(s[e+n>>2]=e)}else{if(r>>>0<=255){if(i=s[n+8>>2],r>>>=3,(0|(t=s[n+12>>2]))==(0|i)){l=1044,d=s[261]&$(r),s[l>>2]=d;break t}s[i+12>>2]=t,s[t+8>>2]=i;break t}if(c=s[n+24>>2],(0|n)==(0|(r=s[n+12>>2])))if((t=s[(i=n+20|0)>>2])||(t=s[(i=n+16|0)>>2])){for(;a=i,(t=s[(i=(r=t)+20|0)>>2])||(i=r+16|0,t=s[r+16>>2]););s[a>>2]=0}else r=0;else t=s[n+8>>2],s[t+12>>2]=r,s[r+8>>2]=t;if(!c)break t;i=s[n+28>>2];r:{if(s[(t=1348+(i<<2)|0)>>2]==(0|n)){if(s[t>>2]=r,r)break r;l=1048,d=s[262]&$(i),s[l>>2]=d;break t}if(s[c+(s[c+16>>2]==(0|n)?16:20)>>2]=r,!r)break t}if(s[r+24>>2]=c,(t=s[n+16>>2])&&(s[r+16>>2]=t,s[t+24>>2]=r),!(t=s[n+20>>2]))break t;s[r+20>>2]=t,s[t+24>>2]=r}}if(!(o>>>0<=n>>>0)&&1&(r=s[o+4>>2])){t:{if(!(2&r)){if(s[267]==(0|o)){if(s[267]=n,e=s[264]+e|0,s[264]=e,s[n+4>>2]=1|e,s[266]!=(0|n))break e;return s[263]=0,void(s[266]=0)}if(s[266]==(0|o))return s[266]=n,e=s[263]+e|0,s[263]=e,s[n+4>>2]=1|e,void(s[e+n>>2]=e);e=(-8&r)+e|0;r:if(r>>>0<=255){if(r>>>=3,(0|(t=s[o+8>>2]))==(0|(i=s[o+12>>2]))){l=1044,d=s[261]&$(r),s[l>>2]=d;break r}s[t+12>>2]=i,s[i+8>>2]=t}else{if(c=s[o+24>>2],(0|o)==(0|(r=s[o+12>>2])))if((t=s[(i=o+20|0)>>2])||(t=s[(i=o+16|0)>>2])){for(;a=i,(t=s[(i=(r=t)+20|0)>>2])||(i=r+16|0,t=s[r+16>>2]););s[a>>2]=0}else r=0;else t=s[o+8>>2],s[t+12>>2]=r,s[r+8>>2]=t;if(c){i=s[o+28>>2];n:{if(s[(t=1348+(i<<2)|0)>>2]==(0|o)){if(s[t>>2]=r,r)break n;l=1048,d=s[262]&$(i),s[l>>2]=d;break r}if(s[c+(s[c+16>>2]==(0|o)?16:20)>>2]=r,!r)break r}s[r+24>>2]=c,(t=s[o+16>>2])&&(s[r+16>>2]=t,s[t+24>>2]=r),(t=s[o+20>>2])&&(s[r+20>>2]=t,s[t+24>>2]=r)}}if(s[n+4>>2]=1|e,s[e+n>>2]=e,s[266]!=(0|n))break t;return void(s[263]=e)}s[o+4>>2]=-2&r,s[n+4>>2]=1|e,s[e+n>>2]=e}if(e>>>0<=255)return r=1084+((e>>>=3)<<3)|0,(t=s[261])&(e=1<<e)?e=s[r+8>>2]:(s[261]=e|t,e=r),s[r+8>>2]=n,s[e+12>>2]=n,s[n+12>>2]=r,void(s[n+8>>2]=e);s[n+16>>2]=0,s[n+20>>2]=0,t=0,(i=e>>>8)&&(t=31,e>>>0>16777215||(t=i,t<<=i=i+1048320>>>16&8,t=28+((t=((t<<=c=t+520192>>>16&4)<<(a=t+245760>>>16&2)>>>15)-(a|i|c)|0)<<1|e>>>t+21&1)|0)),s[(r=n)+28>>2]=t,a=1348+(t<<2)|0;t:if((i=s[262])&(r=1<<t)){i=e<<(31==(0|t)?0:25-(t>>>1)|0),r=s[a>>2];r:{for(;;){if(t=r,(-8&s[r+4>>2])==(0|e))break r;if(r=i>>>29,i<<=1,!(r=s[16+(a=t+(4&r)|0)>>2]))break}s[a+16>>2]=n,s[n+12>>2]=n,s[n+24>>2]=t,s[n+8>>2]=n;break t}e=s[t+8>>2],s[e+12>>2]=n,s[t+8>>2]=n,s[n+24>>2]=0,s[n+12>>2]=t,s[n+8>>2]=e}else s[262]=r|i,s[a>>2]=n,s[n+12>>2]=n,s[n+24>>2]=a,s[n+8>>2]=n;if(e=s[269]+-1|0,s[269]=e,!e){for(n=1500;n=(e=s[n>>2])+8|0,e;);s[269]=-1}}}}function b(e){var t,r=0;return u[e+20>>2]<=u[e+28>>2]||(o[s[e+36>>2]](e,0,0),s[e+20>>2])?((r=s[e+4>>2])>>>0<(t=s[e+8>>2])>>>0&&(r=r-t|0,o[s[e+40>>2]](e,r,r>>31,1)),s[e+28>>2]=0,s[e+16>>2]=0,s[e+20>>2]=0,s[e+4>>2]=0,s[e+8>>2]=0,0):-1}function _(e){for(var t=0,r=0;r=t,e;)e&=e-1,t=t+1|0;return r}function $(e){var t;return(-1>>>(t=31&e)&-2)<<t|(-1<<(e=0-e&31)&-2)>>>e}function A(){return n.byteLength/65536|0}return{__wasm_call_ctors:function(){},malloc:g,openBox:function(e,t){e|=0,t|=0;var r,n,i,o=0;return y=r=y-16|0,s[r+12>>2]=0,s[r+8>>2]=0,s[r+4>>2]=0,s[r>>2]=0,function(e,t,r,n,i,o){var u=0,l=0,d=0,h=0,f=0,p=0;if(u=(c[e+2|0]^c[e+1|0]^c[0|e])<<24>>24,s[o>>2]=u+-48,u=47+(t-u|0)|0,s[n>>2]=u,f=r,p=g(u),s[f>>2]=p,l=s[o>>2],d=g(l),s[i>>2]=d,(0|l)>0)for(u=l;;){if(d=(l-u|0)+d|0,l=(t-l|0)+e|0,a[0|d]=c[(t-u|0)+e|0]^c[l+-1|0]^c[l+-2|0],(0|(u=u+-1|0))<1){u=s[n>>2];break}d=s[i>>2],l=s[o>>2]}if((0|u)>0)for(;t=s[r>>2]+h|0,h=h+1|0,a[0|t]=c[h+e|0],(0|h)<s[n>>2];);}(e,t,r+12|0,r+4|0,r+8|0,r),function(e,t){var r=0,n=0,i=0,o=0,s=0,u=0,l=0;if((0|t)>=1)for(i=85,o=250;n=_(r),s=c[0|(u=e+r|0)],l=n,n=1&r,a[0|u]=l+(21+((s^(n?i:o))<<24>>24)|0),o=n?o:s,i=n?s:i,(0|(r=r+1|0))!=(0|t););}(e=s[r+12>>2],t=s[r+4>>2]),n=function(e){var t=0;return(255&(t=e+-48|0))>>>0<=9?t<<24>>24:((e+-97&255)>>>0<26?e+-87|0:-1)<<24>>24}(a[0|e]),s[r>>2]=n,i=g(o=t-n|0),a[i+(o=o+-1|0)|0]=0,(0|o)>=1&&function(e,t,r){var n,i=0;if(r>>>0>=8192)d(0|e,0|t,0|r);else{n=e+r|0;e:if(3&(e^t))if(n>>>0<4)r=e;else if((i=n+-4|0)>>>0<e>>>0)r=e;else for(r=e;a[0|r]=c[0|t],a[r+1|0]=c[t+1|0],a[r+2|0]=c[t+2|0],a[r+3|0]=c[t+3|0],t=t+4|0,(r=r+4|0)>>>0<=i>>>0;);else{t:if((0|r)<1)r=e;else if(3&e)for(r=e;;){if(a[0|r]=c[0|t],t=t+1|0,(r=r+1|0)>>>0>=n>>>0)break t;if(!(3&r))break}else r=e;if(!((e=-4&n)>>>0<64||r>>>0>(i=e+-64|0)>>>0))for(;s[r>>2]=s[t>>2],s[r+4>>2]=s[t+4>>2],s[r+8>>2]=s[t+8>>2],s[r+12>>2]=s[t+12>>2],s[r+16>>2]=s[t+16>>2],s[r+20>>2]=s[t+20>>2],s[r+24>>2]=s[t+24>>2],s[r+28>>2]=s[t+28>>2],s[r+32>>2]=s[t+32>>2],s[r+36>>2]=s[t+36>>2],s[r+40>>2]=s[t+40>>2],s[r+44>>2]=s[t+44>>2],s[r+48>>2]=s[t+48>>2],s[r+52>>2]=s[t+52>>2],s[r+56>>2]=s[t+56>>2],s[r+60>>2]=s[t+60>>2],t=t- -64|0,(r=r- -64|0)>>>0<=i>>>0;);if(r>>>0>=e>>>0)break e;for(;s[r>>2]=s[t>>2],t=t+4|0,(r=r+4|0)>>>0<e>>>0;);}if(r>>>0<n>>>0)for(;a[0|r]=c[0|t],t=t+1|0,(0|n)!=(0|(r=r+1|0)););}}(i,e+1|0,t+(-1^n)|0),v(e),v(s[r+8>>2]),y=r+16|0,0|i},free:v,__errno_location:function(){return 1024},fflush:function e(t){var r=0;if(t|=0)return s[t+76>>2],0|b(t);if(s[260]&&(r=e(s[260])),p(1028),t=s[259])for(;u[t+20>>2]>u[t+28>>2]&&(r=b(t)|r),t=s[t+56>>2];);return f(1028),0|r},setThrew:function(e,t){e|=0,t|=0,s[385]||(s[386]=t,s[385]=e)},stackSave:function(){return 0|y},stackAlloc:function(e){return y=e=y-(e|=0)&-16,0|e},stackRestore:function(e){y=e|=0},__growWasmMemory:function(t){return 0|function(t){t|=0;var r=0|A(),o=r+t|0;if(r<o&&o<65536){var d=new ArrayBuffer(l(o,65536)),h=new e.Int8Array(d);h.set(a),a=h,a=new e.Int8Array(d),new e.Int16Array(d),s=new e.Int32Array(d),c=new e.Uint8Array(d),new e.Uint16Array(d),u=new e.Uint32Array(d),new e.Float32Array(d),new e.Float64Array(d),n=d,i.buffer=d}return r}(0|(t|=0))}}}({Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0,Math:Math},z,h.buffer));return{exports:n}},instantiate:function(e,t){return{then:function(r,n){r({instance:new f.Instance(new f.Module(e,t))})}}},RuntimeError:Error};c=[],"object"!==_typeof$3(f)&&F("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");var p=new f.Table({initial:1,maximum:1,element:"anyfunc"}),y=!1;function m(e,t){e||F("Assertion failed: "+t)}var g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function v(e,t,r,n){if(!(n>0))return 0;for(var i=r,o=r+n-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(r>=o)break;t[r++]=s}else if(s<=2047){if(r+1>=o)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=o)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=o)break;s>=2097152&&d("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-i}function b(e){for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var _,$,A,E,T;function S(e,t){return e%t>0&&(e+=t-e%t),e}function I(e){_=e,n.HEAP8=$=new Int8Array(e),n.HEAP16=new Int16Array(e),n.HEAP32=E=new Int32Array(e),n.HEAPU8=A=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAPU32=T=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e)}var w=1712;m(!0,"stack must start aligned"),m(!0,"heap must start aligned");var R=8192;n.TOTAL_STACK&&m(R===n.TOTAL_STACK,"the stack size can no longer be determined at runtime");var P=n.TOTAL_MEMORY||65536;function O(){m(0==(3&w)),T[1+(w>>2)]=34821223,T[2+(w>>2)]=2310721022,E[0]=1668509029}function C(){var e=T[1+(w>>2)],t=T[2+(w>>2)];34821223==e&&2310721022==t||F("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+t.toString(16)+" "+e.toString(16)),1668509029!==E[0]&&F("Runtime error: The application has corrupted its heap memory area (address zero)!")}function k(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?n.dynCall_v(r):n.dynCall_vi(r,t.arg):r(void 0===t.arg?null:t.arg)}else t()}}Object.getOwnPropertyDescriptor(n,"TOTAL_MEMORY")||Object.defineProperty(n,"TOTAL_MEMORY",{configurable:!0,get:function(){F("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),m(P>=R,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK="+R+")"),m("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(h=n.wasmMemory?n.wasmMemory:new f.Memory({initial:P/65536}))&&(_=h.buffer),m((P=_.byteLength)%65536==0),I(_),E[388]=9904,function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian!"}();var x=[],L=[],D=[],M=[],N=!1;m(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var G=0,V=null,U=null,Z={};function F(e){throw n.onAbort&&n.onAbort(e),u(e+=""),l(e),y=!0,e="abort("+e+") at "+function(){var e=function(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}();n.extraStackTrace&&(e+="\n"+n.extraStackTrace());return t=e,r=/\b_Z[\w\d_]+/g,t.replace(r,(function(e){var t,r=(t=e,d("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}));var t,r}(),new f.RuntimeError(e)}n.preloadedImages={},n.preloadedAudios={};var B={error:function(){F("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){B.error()},createDataFile:function(){B.error()},createPreloadedFile:function(){B.error()},createLazyFile:function(){B.error()},open:function(){B.error()},mkdev:function(){B.error()},registerDevice:function(){B.error()},analyzePath:function(){B.error()},loadFilesFromDB:function(){B.error()},ErrnoError:function(){B.error()}};n.FS_createDataFile=B.createDataFile,n.FS_createPreloadedFile=B.createPreloadedFile;var j="data:application/octet-stream;base64,";function X(e){return String.prototype.startsWith?e.startsWith(j):0===e.indexOf(j)}var W,H="aw.wasm";function K(){try{if(c)return new Uint8Array(c);var e=function(e){if(!X(e))return;return function(e){try{for(var t=Y(e),r=new Uint8Array(t.length),n=0;n<t.length;++n)r[n]=t.charCodeAt(n);return r}catch(e){throw new Error("Converting base64 string to bytes failed.")}}(e.slice(j.length))}(H);if(e)return e;if(!a)throw"both async and sync fetching of the wasm failed"}catch(e){F(e)}}X(H)||(W=H,H=n.locateFile?n.locateFile(W,s):s+W),L.push({func:function(){ue()}});var Y="function"==typeof atob?atob:function(e){var t,r,n,i,o,a,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",u=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=s.indexOf(e.charAt(u++))<<2|(i=s.indexOf(e.charAt(u++)))>>4,r=(15&i)<<4|(o=s.indexOf(e.charAt(u++)))>>2,n=(3&o)<<6|(a=s.indexOf(e.charAt(u++))),c+=String.fromCharCode(t),64!==o&&(c+=String.fromCharCode(r)),64!==a&&(c+=String.fromCharCode(n))}while(u<e.length);return c};var z={__lock:function(){},__unlock:function(){},emscripten_memcpy_big:function(e,t,r){A.set(A.subarray(t,t+r),e)},emscripten_resize_heap:function(e){var t=$.length;m(e>t);var r=65536,n=2147418112;if(e>n)return l("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+n+" bytes!"),!1;for(var i=Math.max(t,16777216);i<e;)(i=i<=536870912?S(2*i,r):Math.min(S((3*i+2147483648)/4,r),n))===t&&d("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only "+$.length);return function(e){try{return h.grow(e-_.byteLength+65535>>16),I(h.buffer),1}catch(t){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+_.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}(i)?(l("Warning: Enlarging memory arrays, this is not fast! "+[t,i]),!0):(l("Failed to grow the heap from "+t+" bytes to "+i+" bytes, not enough memory!"),!1)},memory:h,table:p},J=function(){var e,t={env:z,wasi_unstable:z};function r(e,t){var r=e.exports;n.asm=r,function(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),e?(m(Z[e]),delete Z[e]):l("warning: run dependency removed without ID"),0==G&&(null!==V&&(clearInterval(V),V=null),U)){var t=U;U=null,t()}}("wasm-instantiate")}e="wasm-instantiate",G++,n.monitorRunDependencies&&n.monitorRunDependencies(G),e?(m(!Z[e]),Z[e]=1,null===V&&"undefined"!=typeof setInterval&&(V=setInterval((function(){if(y)return clearInterval(V),void(V=null);var e=!1;for(var t in Z)e||(e=!0,l("still waiting on run dependencies:")),l("dependency: "+t);e&&l("(end of list)")}),1e4))):l("warning: run dependency added without ID");var i=n;function a(e){m(n===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,r(e.instance)}function s(e){return(!c&&o&&"function"==typeof fetch?fetch(H,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+H+"'";return e.arrayBuffer()})).catch((function(){return K()})):new Promise((function(e,t){e(K())}))).then((function(e){return f.instantiate(e,t)})).then(e,(function(e){l("failed to asynchronously prepare wasm: "+e),F(e)}))}if(n.instantiateWasm)try{return n.instantiateWasm(t,r)}catch(e){return l("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(c||"function"!=typeof f.instantiateStreaming||X(H)||"function"!=typeof fetch)return s(a);fetch(H,{credentials:"same-origin"}).then((function(e){return f.instantiateStreaming(e,t).then(a,(function(e){l("wasm streaming compile failed: "+e),l("falling back to ArrayBuffer instantiation"),s(a)}))}))}(),{}}(),Q=J.__wasm_call_ctors;J.__wasm_call_ctors=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Q.apply(null,arguments)};var q=J.malloc;J.malloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),q.apply(null,arguments)};var ee=J.openBox;J.openBox=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ee.apply(null,arguments)};var te=J.free;J.free=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),te.apply(null,arguments)};var re=J.__errno_location;J.__errno_location=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),re.apply(null,arguments)};var ne=J.fflush;J.fflush=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ne.apply(null,arguments)};var ie=J.setThrew;J.setThrew=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ie.apply(null,arguments)};var oe=J.stackSave;J.stackSave=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),oe.apply(null,arguments)};var ae=J.stackAlloc;J.stackAlloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ae.apply(null,arguments)};var se=J.stackRestore;J.stackRestore=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),se.apply(null,arguments)};var ce=J.__growWasmMemory;J.__growWasmMemory=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ce.apply(null,arguments)},n.asm=J;var ue=n.___wasm_call_ctors=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__wasm_call_ctors.apply(null,arguments)},le=n._malloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.malloc.apply(null,arguments)};n._openBox=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.openBox.apply(null,arguments)},n._free=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.free.apply(null,arguments)},n.___errno_location=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__errno_location.apply(null,arguments)},n._fflush=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.fflush.apply(null,arguments)},n._setThrew=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.setThrew.apply(null,arguments)};var de=n.stackSave=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackSave.apply(null,arguments)};n.stackAlloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackAlloc.apply(null,arguments)},n.stackRestore=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackRestore.apply(null,arguments)};var he,fe=n.__growWasmMemory=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__growWasmMemory.apply(null,arguments)};function pe(e){function t(){he||(he=!0,y||(C(),m(!N),N=!0,k(L),C(),k(D),n.onRuntimeInitialized&&n.onRuntimeInitialized(),m(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(C(),n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),M.unshift(e);var e;k(M)}()))}G>0||(O(),function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)e=n.preRun.shift(),x.unshift(e);var e;k(x)}(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t(),C()))}if(n.asm=J,n.intArrayFromString=function(e,t,r){var n=r>0?r:b(e)+1,i=new Array(n),o=v(e,i,0,i.length);return t&&(i.length=o),i},Object.getOwnPropertyDescriptor(n,"intArrayToString")||(n.intArrayToString=function(){F("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"ccall")||(n.ccall=function(){F("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"cwrap")||(n.cwrap=function(){F("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"setValue")||(n.setValue=function(){F("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getValue")||(n.getValue=function(){F("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"allocate")||(n.allocate=function(){F("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getMemory")||(n.getMemory=function(){F("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"AsciiToString")||(n.AsciiToString=function(){F("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToAscii")||(n.stringToAscii=function(){F("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF8ArrayToString")||(n.UTF8ArrayToString=function(){F("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.UTF8ToString=function(e,t){return e?function(e,t,r){for(var n=t+r,i=t;e[i]&&!(i>=n);)++i;if(i-t>16&&e.subarray&&g)return g.decode(e.subarray(t,i));for(var o="";t<i;){var a=e[t++];if(128&a){var s=63&e[t++];if(192!=(224&a)){var c=63&e[t++];if(224==(240&a)?a=(15&a)<<12|s<<6|c:(240!=(248&a)&&d("Invalid UTF-8 leading byte 0x"+a.toString(16)+" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"),a=(7&a)<<18|s<<12|c<<6|63&e[t++]),a<65536)o+=String.fromCharCode(a);else{var u=a-65536;o+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else o+=String.fromCharCode((31&a)<<6|s)}else o+=String.fromCharCode(a)}return o}(A,e,t):""},Object.getOwnPropertyDescriptor(n,"stringToUTF8Array")||(n.stringToUTF8Array=function(){F("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF8")||(n.stringToUTF8=function(){F("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF8")||(n.lengthBytesUTF8=function(){F("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF16ToString")||(n.UTF16ToString=function(){F("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF16")||(n.stringToUTF16=function(){F("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF16")||(n.lengthBytesUTF16=function(){F("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF32ToString")||(n.UTF32ToString=function(){F("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF32")||(n.stringToUTF32=function(){F("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF32")||(n.lengthBytesUTF32=function(){F("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.allocateUTF8=function(e){var t=b(e)+1,r=le(t);return r&&v(e,$,r,t),r},Object.getOwnPropertyDescriptor(n,"stackTrace")||(n.stackTrace=function(){F("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPreRun")||(n.addOnPreRun=function(){F("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnInit")||(n.addOnInit=function(){F("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPreMain")||(n.addOnPreMain=function(){F("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnExit")||(n.addOnExit=function(){F("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPostRun")||(n.addOnPostRun=function(){F("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeStringToMemory")||(n.writeStringToMemory=function(){F("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeArrayToMemory")||(n.writeArrayToMemory=function(){F("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeAsciiToMemory")||(n.writeAsciiToMemory=function(){F("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addRunDependency")||(n.addRunDependency=function(){F("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"removeRunDependency")||(n.removeRunDependency=function(){F("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"ENV")||(n.ENV=function(){F("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"FS")||(n.FS=function(){F("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"FS_createFolder")||(n.FS_createFolder=function(){F("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createPath")||(n.FS_createPath=function(){F("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createDataFile")||(n.FS_createDataFile=function(){F("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createPreloadedFile")||(n.FS_createPreloadedFile=function(){F("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createLazyFile")||(n.FS_createLazyFile=function(){F("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createLink")||(n.FS_createLink=function(){F("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createDevice")||(n.FS_createDevice=function(){F("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_unlink")||(n.FS_unlink=function(){F("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"GL")||(n.GL=function(){F("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"dynamicAlloc")||(n.dynamicAlloc=function(){F("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"loadDynamicLibrary")||(n.loadDynamicLibrary=function(){F("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"loadWebAssemblyModule")||(n.loadWebAssemblyModule=function(){F("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getLEB")||(n.getLEB=function(){F("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getFunctionTables")||(n.getFunctionTables=function(){F("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"alignFunctionTables")||(n.alignFunctionTables=function(){F("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"registerFunctions")||(n.registerFunctions=function(){F("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addFunction")||(n.addFunction=function(){F("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"removeFunction")||(n.removeFunction=function(){F("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getFuncWrapper")||(n.getFuncWrapper=function(){F("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"prettyPrint")||(n.prettyPrint=function(){F("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"makeBigInt")||(n.makeBigInt=function(){F("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"dynCall")||(n.dynCall=function(){F("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getCompilerSetting")||(n.getCompilerSetting=function(){F("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackSave")||(n.stackSave=function(){F("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackRestore")||(n.stackRestore=function(){F("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackAlloc")||(n.stackAlloc=function(){F("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"establishStackSpace")||(n.establishStackSpace=function(){F("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"print")||(n.print=function(){F("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"printErr")||(n.printErr=function(){F("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getTempRet0")||(n.getTempRet0=function(){F("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"setTempRet0")||(n.setTempRet0=function(){F("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"callMain")||(n.callMain=function(){F("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"abort")||(n.abort=function(){F("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.Pointer_stringify=function(e,t){F("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!")},Object.getOwnPropertyDescriptor(n,"warnOnce")||(n.warnOnce=function(){F("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.writeStackCookie=O,n.checkStackCookie=C,n.abortStackOverflow=function(e){F("Stack overflow! Attempted to allocate "+e+" bytes on the stack, but stack has only "+(w-de()+e)+" bytes available!")},Object.getOwnPropertyDescriptor(n,"intArrayFromBase64")||(n.intArrayFromBase64=function(){F("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"tryParseAsDataURI")||(n.tryParseAsDataURI=function(){F("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"ALLOC_NORMAL")||Object.defineProperty(n,"ALLOC_NORMAL",{configurable:!0,get:function(){F("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_STACK")||Object.defineProperty(n,"ALLOC_STACK",{configurable:!0,get:function(){F("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_DYNAMIC")||Object.defineProperty(n,"ALLOC_DYNAMIC",{configurable:!0,get:function(){F("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_NONE")||Object.defineProperty(n,"ALLOC_NONE",{configurable:!0,get:function(){F("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"calledRun")||Object.defineProperty(n,"calledRun",{configurable:!0,get:function(){F("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}}),n.then=function(e){if(he)e(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),e(n)}}return n},U=function e(){he||pe(),he||(U=e)},n.run=pe,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return pe(),t}}(),AwManager=function(){function e(t,r){_classCallCheck$6(this,e),this.cdnHost=t,this.cdnBucket=r}return _createClass$6(e,[{key:"init",value:function(){var e=new ProxyPromise;this.module={onRuntimeInitialized:function(){e.resolve()},onAbort:function(t){e.reject(t)}},this.cdnHost&&(this.module.cdnHost=this.cdnHost);var t=this.cdnBucket?"-".concat(this.cdnBucket):"";return this.module.cdnBucket="media-fe".concat(t),aw(this.module),e}},{key:"openBox",value:function(e){try{var t=window.atob(e),r=util.str2hex(t),n=this.module._malloc(Number(r.length));this.module.HEAP8.set(r,n);var i=this.module._openBox(Number(n),r.length),o=this.module.UTF8ToString(i);return this.module._free(n),o}catch(e){}}},{key:"destroy",value:function(){this.module=null}}]),e}(),$$j=_export$2,$some=arrayIteration$2.some,arrayMethodIsStrict$2=arrayMethodIsStrict$h,STRICT_METHOD$2=arrayMethodIsStrict$2("some");$$j({target:"Array",proto:!0,forced:!STRICT_METHOD$2},{some:function(e){return $some(this,e,arguments.length>1?arguments[1]:void 0)}});var wellKnownSymbolWrapped={},wellKnownSymbol$5=wellKnownSymbol$15;wellKnownSymbolWrapped.f=wellKnownSymbol$5;var global$9=global$1y,path$3=global$9,path$2=path$3,hasOwn$7=hasOwnProperty_1$2,wrappedWellKnownSymbolModule$1=wellKnownSymbolWrapped,defineProperty$3=objectDefineProperty$2.f,wellKnownSymbolDefine=function(e){var t=path$2.Symbol||(path$2.Symbol={});hasOwn$7(t,e)||defineProperty$3(t,e,{value:wrappedWellKnownSymbolModule$1.f(e)})},call$2=functionCall$2,getBuiltIn$2=getBuiltIn$y,wellKnownSymbol$4=wellKnownSymbol$15,defineBuiltIn$3=defineBuiltIn$A,symbolDefineToPrimitive=function(){var e=getBuiltIn$2("Symbol"),t=e&&e.prototype,r=t&&t.valueOf,n=wellKnownSymbol$4("toPrimitive");t&&!t[n]&&defineBuiltIn$3(t,n,(function(e){return call$2(r,this)}),{arity:1})},$$i=_export$2,global$8=global$1y,call$1=functionCall$2,uncurryThis$9=functionUncurryThis$2,DESCRIPTORS$3=descriptors$4,NATIVE_SYMBOL$3=symbolConstructorDetection$2,fails$e=fails$1T,hasOwn$6=hasOwnProperty_1$2,isPrototypeOf$3=objectIsPrototypeOf$2,anObject$2=anObject$N,toIndexedObject$2=toIndexedObject$x,toPropertyKey=toPropertyKey$f,$toString$1=toString$E,createPropertyDescriptor=createPropertyDescriptor$j,nativeObjectCreate=objectCreate$2,objectKeys=objectKeys$9,getOwnPropertyNamesModule$1=objectGetOwnPropertyNames$2,getOwnPropertyNamesExternal=objectGetOwnPropertyNamesExternal$2,getOwnPropertySymbolsModule$1=objectGetOwnPropertySymbols$2,getOwnPropertyDescriptorModule=objectGetOwnPropertyDescriptor$2,definePropertyModule=objectDefineProperty$2,definePropertiesModule=objectDefineProperties$2,propertyIsEnumerableModule=objectPropertyIsEnumerable$2,defineBuiltIn$2=defineBuiltIn$A,shared$2=sharedExports$2,sharedKey=sharedKey$d,hiddenKeys$1=hiddenKeys$j,uid$1=uid$f,wellKnownSymbol$3=wellKnownSymbol$15,wrappedWellKnownSymbolModule=wellKnownSymbolWrapped,defineWellKnownSymbol=wellKnownSymbolDefine,defineSymbolToPrimitive=symbolDefineToPrimitive,setToStringTag$1=setToStringTag$l,InternalStateModule$2=internalState$2,$forEach=arrayIteration$2.forEach,HIDDEN=sharedKey("hidden"),SYMBOL="Symbol",PROTOTYPE="prototype",setInternalState$2=InternalStateModule$2.set,getInternalState$1=InternalStateModule$2.getterFor(SYMBOL),ObjectPrototype$1=Object[PROTOTYPE],$Symbol=global$8.Symbol,SymbolPrototype$1=$Symbol&&$Symbol[PROTOTYPE],TypeError$2=global$8.TypeError,QObject=global$8.QObject,nativeGetOwnPropertyDescriptor=getOwnPropertyDescriptorModule.f,nativeDefineProperty=definePropertyModule.f,nativeGetOwnPropertyNames=getOwnPropertyNamesExternal.f,nativePropertyIsEnumerable=propertyIsEnumerableModule.f,push$2=uncurryThis$9([].push),AllSymbols=shared$2("symbols"),ObjectPrototypeSymbols=shared$2("op-symbols"),WellKnownSymbolsStore=shared$2("wks"),USE_SETTER=!QObject||!QObject[PROTOTYPE]||!QObject[PROTOTYPE].findChild,setSymbolDescriptor=DESCRIPTORS$3&&fails$e((function(){return 7!=nativeObjectCreate(nativeDefineProperty({},"a",{get:function(){return nativeDefineProperty(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=nativeGetOwnPropertyDescriptor(ObjectPrototype$1,t);n&&delete ObjectPrototype$1[t],nativeDefineProperty(e,t,r),n&&e!==ObjectPrototype$1&&nativeDefineProperty(ObjectPrototype$1,t,n)}:nativeDefineProperty,wrap=function(e,t){var r=AllSymbols[e]=nativeObjectCreate(SymbolPrototype$1);return setInternalState$2(r,{type:SYMBOL,tag:e,description:t}),DESCRIPTORS$3||(r.description=t),r},$defineProperty=function(e,t,r){e===ObjectPrototype$1&&$defineProperty(ObjectPrototypeSymbols,t,r),anObject$2(e);var n=toPropertyKey(t);return anObject$2(r),hasOwn$6(AllSymbols,n)?(r.enumerable?(hasOwn$6(e,HIDDEN)&&e[HIDDEN][n]&&(e[HIDDEN][n]=!1),r=nativeObjectCreate(r,{enumerable:createPropertyDescriptor(0,!1)})):(hasOwn$6(e,HIDDEN)||nativeDefineProperty(e,HIDDEN,createPropertyDescriptor(1,{})),e[HIDDEN][n]=!0),setSymbolDescriptor(e,n,r)):nativeDefineProperty(e,n,r)},$defineProperties=function(e,t){anObject$2(e);var r=toIndexedObject$2(t),n=objectKeys(r).concat($getOwnPropertySymbols(r));return $forEach(n,(function(t){DESCRIPTORS$3&&!call$1($propertyIsEnumerable,r,t)||$defineProperty(e,t,r[t])})),e},$create=function(e,t){return void 0===t?nativeObjectCreate(e):$defineProperties(nativeObjectCreate(e),t)},$propertyIsEnumerable=function(e){var t=toPropertyKey(e),r=call$1(nativePropertyIsEnumerable,this,t);return!(this===ObjectPrototype$1&&hasOwn$6(AllSymbols,t)&&!hasOwn$6(ObjectPrototypeSymbols,t))&&(!(r||!hasOwn$6(this,t)||!hasOwn$6(AllSymbols,t)||hasOwn$6(this,HIDDEN)&&this[HIDDEN][t])||r)},$getOwnPropertyDescriptor=function(e,t){var r=toIndexedObject$2(e),n=toPropertyKey(t);if(r!==ObjectPrototype$1||!hasOwn$6(AllSymbols,n)||hasOwn$6(ObjectPrototypeSymbols,n)){var i=nativeGetOwnPropertyDescriptor(r,n);return!i||!hasOwn$6(AllSymbols,n)||hasOwn$6(r,HIDDEN)&&r[HIDDEN][n]||(i.enumerable=!0),i}},$getOwnPropertyNames$1=function(e){var t=nativeGetOwnPropertyNames(toIndexedObject$2(e)),r=[];return $forEach(t,(function(e){hasOwn$6(AllSymbols,e)||hasOwn$6(hiddenKeys$1,e)||push$2(r,e)})),r},$getOwnPropertySymbols=function(e){var t=e===ObjectPrototype$1,r=nativeGetOwnPropertyNames(t?ObjectPrototypeSymbols:toIndexedObject$2(e)),n=[];return $forEach(r,(function(e){!hasOwn$6(AllSymbols,e)||t&&!hasOwn$6(ObjectPrototype$1,e)||push$2(n,AllSymbols[e])})),n};NATIVE_SYMBOL$3||(defineBuiltIn$2(SymbolPrototype$1=($Symbol=function(){if(isPrototypeOf$3(SymbolPrototype$1,this))throw TypeError$2("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?$toString$1(arguments[0]):void 0,t=uid$1(e),r=function(e){this===ObjectPrototype$1&&call$1(r,ObjectPrototypeSymbols,e),hasOwn$6(this,HIDDEN)&&hasOwn$6(this[HIDDEN],t)&&(this[HIDDEN][t]=!1),setSymbolDescriptor(this,t,createPropertyDescriptor(1,e))};return DESCRIPTORS$3&&USE_SETTER&&setSymbolDescriptor(ObjectPrototype$1,t,{configurable:!0,set:r}),wrap(t,e)})[PROTOTYPE],"toString",(function(){return getInternalState$1(this).tag})),defineBuiltIn$2($Symbol,"withoutSetter",(function(e){return wrap(uid$1(e),e)})),propertyIsEnumerableModule.f=$propertyIsEnumerable,definePropertyModule.f=$defineProperty,definePropertiesModule.f=$defineProperties,getOwnPropertyDescriptorModule.f=$getOwnPropertyDescriptor,getOwnPropertyNamesModule$1.f=getOwnPropertyNamesExternal.f=$getOwnPropertyNames$1,getOwnPropertySymbolsModule$1.f=$getOwnPropertySymbols,wrappedWellKnownSymbolModule.f=function(e){return wrap(wellKnownSymbol$3(e),e)},DESCRIPTORS$3&&(nativeDefineProperty(SymbolPrototype$1,"description",{configurable:!0,get:function(){return getInternalState$1(this).description}}),defineBuiltIn$2(ObjectPrototype$1,"propertyIsEnumerable",$propertyIsEnumerable,{unsafe:!0}))),$$i({global:!0,constructor:!0,wrap:!0,forced:!NATIVE_SYMBOL$3,sham:!NATIVE_SYMBOL$3},{Symbol:$Symbol}),$forEach(objectKeys(WellKnownSymbolsStore),(function(e){defineWellKnownSymbol(e)})),$$i({target:SYMBOL,stat:!0,forced:!NATIVE_SYMBOL$3},{useSetter:function(){USE_SETTER=!0},useSimple:function(){USE_SETTER=!1}}),$$i({target:"Object",stat:!0,forced:!NATIVE_SYMBOL$3,sham:!DESCRIPTORS$3},{create:$create,defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor}),$$i({target:"Object",stat:!0,forced:!NATIVE_SYMBOL$3},{getOwnPropertyNames:$getOwnPropertyNames$1}),defineSymbolToPrimitive(),setToStringTag$1($Symbol,SYMBOL),hiddenKeys$1[HIDDEN]=!0;var NATIVE_SYMBOL$2=symbolConstructorDetection$2,symbolRegistryDetection=NATIVE_SYMBOL$2&&!!Symbol.for&&!!Symbol.keyFor,$$h=_export$2,getBuiltIn$1=getBuiltIn$y,hasOwn$5=hasOwnProperty_1$2,toString$6=toString$E,shared$1=sharedExports$2,NATIVE_SYMBOL_REGISTRY$1=symbolRegistryDetection,StringToSymbolRegistry=shared$1("string-to-symbol-registry"),SymbolToStringRegistry$1=shared$1("symbol-to-string-registry");$$h({target:"Symbol",stat:!0,forced:!NATIVE_SYMBOL_REGISTRY$1},{for:function(e){var t=toString$6(e);if(hasOwn$5(StringToSymbolRegistry,t))return StringToSymbolRegistry[t];var r=getBuiltIn$1("Symbol")(t);return StringToSymbolRegistry[t]=r,SymbolToStringRegistry$1[r]=t,r}});var $$g=_export$2,hasOwn$4=hasOwnProperty_1$2,isSymbol$1=isSymbol$h,tryToString=tryToString$m,shared=sharedExports$2,NATIVE_SYMBOL_REGISTRY=symbolRegistryDetection,SymbolToStringRegistry=shared("symbol-to-string-registry");$$g({target:"Symbol",stat:!0,forced:!NATIVE_SYMBOL_REGISTRY},{keyFor:function(e){if(!isSymbol$1(e))throw TypeError(tryToString(e)+" is not a symbol");if(hasOwn$4(SymbolToStringRegistry,e))return SymbolToStringRegistry[e]}});var $$f=_export$2,NATIVE_SYMBOL$1=symbolConstructorDetection$2,fails$d=fails$1T,getOwnPropertySymbolsModule=objectGetOwnPropertySymbols$2,toObject$2=toObject$C,FORCED$6=!NATIVE_SYMBOL$1||fails$d((function(){getOwnPropertySymbolsModule.f(1)}));$$f({target:"Object",stat:!0,forced:FORCED$6},{getOwnPropertySymbols:function(e){var t=getOwnPropertySymbolsModule.f;return t?t(toObject$2(e)):[]}});var $$e=_export$2,DESCRIPTORS$2=descriptors$4,global$7=global$1y,uncurryThis$8=functionUncurryThis$2,hasOwn$3=hasOwnProperty_1$2,isCallable$1=isCallable$1d,isPrototypeOf$2=objectIsPrototypeOf$2,toString$5=toString$E,defineProperty$2=objectDefineProperty$2.f,copyConstructorProperties$1=copyConstructorProperties$5,NativeSymbol=global$7.Symbol,SymbolPrototype=NativeSymbol&&NativeSymbol.prototype;if(DESCRIPTORS$2&&isCallable$1(NativeSymbol)&&(!("description"in SymbolPrototype)||void 0!==NativeSymbol().description)){var EmptyStringDescriptionStore={},SymbolWrapper=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:toString$5(arguments[0]),t=isPrototypeOf$2(SymbolPrototype,this)?new NativeSymbol(e):void 0===e?NativeSymbol():NativeSymbol(e);return""===e&&(EmptyStringDescriptionStore[t]=!0),t};copyConstructorProperties$1(SymbolWrapper,NativeSymbol),SymbolWrapper.prototype=SymbolPrototype,SymbolPrototype.constructor=SymbolWrapper;var NATIVE_SYMBOL="Symbol(test)"==String(NativeSymbol("test")),thisSymbolValue=uncurryThis$8(SymbolPrototype.valueOf),symbolDescriptiveString=uncurryThis$8(SymbolPrototype.toString),regexp=/^Symbol\((.*)\)[^)]+$/,replace=uncurryThis$8("".replace),stringSlice$2=uncurryThis$8("".slice);defineProperty$2(SymbolPrototype,"description",{configurable:!0,get:function(){var e=thisSymbolValue(this);if(hasOwn$3(EmptyStringDescriptionStore,e))return"";var t=symbolDescriptiveString(e),r=NATIVE_SYMBOL?stringSlice$2(t,7,-1):replace(t,regexp,"$1");return""===r?void 0:r}}),$$e({global:!0,constructor:!0,forced:!0},{Symbol:SymbolWrapper})}var ArrayBufferViewCore=arrayBufferViewCore$1,TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS=typedArrayConstructorsRequireWrappers$1,aTypedArrayConstructor=ArrayBufferViewCore.aTypedArrayConstructor,exportTypedArrayStaticMethod=ArrayBufferViewCore.exportTypedArrayStaticMethod;function isMSBrowser(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),r=e.indexOf("Trident/");return t>0||r>0}function checkIsQihuBrowser(){var e=navigator.mimeTypes,t=navigator.userAgent,r=!1;return e&&t.indexOf("Chrome")>1&&(r=Object.keys(e).some((function(t){return!!(e[t].type&&e[t].type.indexOf("360")>-1)||(!!(e[t].type&&e[t].type.indexOf("application/vnd.chromium.remoting-viewer")>-1)||!!(e[t].description&&e[t].description.indexOf("360")>-1))}))),r}function isEMESupported(){var e,t,r,n,i;return!(!navigator.requestMediaKeySystemAccess||(e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),t=isMSBrowser(),r=checkIsQihuBrowser(),n=navigator.userAgent.indexOf("Firefox")>0,i=navigator.userAgent.indexOf("Edge")>0,e||t||r||n||i))}function isWebAssemblySupported(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":_typeof$3(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){console.log(e)}return!1}function isMediaSourceSupported(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return e&&"function"==typeof e.isTypeSupported}function isSupported(){return isMediaSourceSupported()&&isWebAssemblySupported()&&!isMSBrowser()}function isSupportedWithXgmse(){return isWebAssemblySupported()&&!isMSBrowser()}exportTypedArrayStaticMethod("of",(function(){for(var e=0,t=arguments.length,r=new(aTypedArrayConstructor(this))(t);t>e;)r[e]=arguments[e++];return r}),TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);var Timer=function(){function e(t){_classCallCheck$6(this,e),this.onTick_=t,this.cancelPending_=null}return _createClass$6(e,[{key:"tickAfter",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.stop();var n=!0,i=null;this.cancelPending_=function(){window.clearTimeout(i),n=!1};return i=window.setTimeout((function(){n&&(t.onTick_(),r&&r())}),1e3*e),this}},{key:"tickEvery",value:function(e){var t=this;this.tickAfter(e,(function(){t.tickEvery(e)}))}},{key:"stop",value:function(){this.cancelPending_&&(this.cancelPending_(),this.cancelPending_=null)}}]),e}(),$$d=_export$2,$parseFloat$2=numberParseFloat$2;$$d({global:!0,forced:parseFloat!=numberParseFloat$2},{parseFloat:numberParseFloat$2});var PRELOAD_NEXT="PRELOAD_NEXT",PRELOAD_SEG_DONE="PRELOAD_SEG_DONE",STATES={PREPARE:"PREPARE",IDLE:"IDLE",PRELOADING:"PRELOADING",FINISH:"FINISH"},ONE_STEP_DONE="ONE_STEP_DONE",PRELOAD_TYPES$1={DURATION:0,SIZE:1},CACHE_TYPES={INDEXDB:0,MEMORY:1},DOWN_STATES={FAIL:-1,SUCCESS:0,DOWNLOADING:1},VTYPES$1={MP4:"MP4",DASH:"DASH",HLS:"HLS"};function _typeof$1(e){return(_typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var isImplemented$1,hasRequiredIsImplemented,eventEmitter={exports:{}},d$1={exports:{}},_undefined$1=void 0,is$4=function(e){return e!==_undefined$1&&null!==e},isValue$4=is$4,possibleTypes={object:!0,function:!0,undefined:!0},is$3=function(e){return!!isValue$4(e)&&hasOwnProperty.call(possibleTypes,typeof e)},isObject$7=is$3,is$2=function(e){if(!isObject$7(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(e){return!1}},isPrototype=is$2,is$1=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!isPrototype(e)},isFunction=is$1,classRe=/^\s*class[\s{/}]/,functionToString=Function.prototype.toString,is=function(e){return!!isFunction(e)&&!classRe.test(functionToString.call(e))},isImplemented$2=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")};function requireIsImplemented(){return hasRequiredIsImplemented?isImplemented$1:(hasRequiredIsImplemented=1,isImplemented$1=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}})}var shim$2,hasRequiredShim$2,keys9,hasRequiredKeys,validValue,hasRequiredValidValue,shim$1,hasRequiredShim$1,noop=function(){},_undefined=noop(),isValue$3=function(e){return e!==_undefined&&null!==e};function requireShim$2(){if(hasRequiredShim$2)return shim$2;hasRequiredShim$2=1;var e=isValue$3,t=Object.keys;return shim$2=function(r){return t(e(r)?Object(r):r)}}function requireKeys(){return hasRequiredKeys?keys9:(hasRequiredKeys=1,keys9=requireIsImplemented()()?Object.keys:requireShim$2())}function requireValidValue(){if(hasRequiredValidValue)return validValue;hasRequiredValidValue=1;var e=isValue$3;return validValue=function(t){if(!e(t))throw new TypeError("Cannot use null or undefined");return t}}function requireShim$1(){if(hasRequiredShim$1)return shim$1;hasRequiredShim$1=1;var e=requireKeys(),t=requireValidValue(),r=Math.max;return shim$1=function(n,i){var o,a,s,c=r(arguments.length,2);for(n=Object(t(n)),s=function(e){try{n[e]=i[e]}catch(e){o||(o=e)}},a=1;a<c;++a)e(i=arguments[a]).forEach(s);if(void 0!==o)throw o;return n},shim$1}var shim,hasRequiredShim,assign$1=isImplemented$2()?Object.assign:requireShim$1(),isValue$2=isValue$3,forEach7=Array.prototype.forEach,create$2=Object.create,process$1=function(e,t){var r;for(r in e)t[r]=e[r]},normalizeOptions=function(e){var t=create$2(null);return forEach7.call(arguments,(function(e){isValue$2(e)&&process$1(Object(e),t)})),t},str="razdwatrzy",isImplemented=function(){return"function"==typeof str.contains&&(!0===str.contains("dwa")&&!1===str.contains("foo"))};function requireShim(){if(hasRequiredShim)return shim;hasRequiredShim=1;var e=String.prototype.indexOf;return shim=function(t){return e.call(this,t,arguments[1])>-1},shim}var contains$1=isImplemented()?String.prototype.contains:requireShim(),isValue$1=is$4,isPlainFunction=is,assign2=assign$1,normalizeOpts=normalizeOptions,contains=contains$1,d=d$1.exports=function(e,t){var r,n,i,o,a;return arguments.length<2||"string"!=typeof e?(o=t,t=e,e=null):o=arguments[2],isValue$1(e)?(r=contains.call(e,"c"),n=contains.call(e,"e"),i=contains.call(e,"w")):(r=i=!0,n=!1),a={value:t,configurable:r,enumerable:n,writable:i},o?assign2(normalizeOpts(o),a):a};d.gs=function(e,t,r){var n,i,o,a;return"string"!=typeof e?(o=r,r=t,t=e,e=null):o=arguments[3],isValue$1(t)?isPlainFunction(t)?isValue$1(r)?isPlainFunction(r)||(o=r,r=void 0):r=void 0:(o=t,t=r=void 0):t=void 0,isValue$1(e)?(n=contains.call(e,"c"),i=contains.call(e,"e")):(n=!0,i=!1),a={get:t,set:r,configurable:n,enumerable:i},o?assign2(normalizeOpts(o),a):a};var dExports=d$1.exports,validCallable=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e};!function(e,t){var r,n,i,o,a,s,c,u=dExports,l=validCallable,d=Function.prototype.apply,h=Function.prototype.call,f=Object.create,p=Object.defineProperty,y=Object.defineProperties,m=Object.prototype.hasOwnProperty,g={configurable:!0,enumerable:!1,writable:!0};n=function(e,t){var n,o;return l(t),o=this,r.call(this,e,n=function(){i.call(o,e,n),d.call(t,this,arguments)}),n.__eeOnceListener__=t,this},i=function(e,t){var r,n,i,o;if(l(t),!m.call(this,"__ee__"))return this;if(!(r=this.__ee__)[e])return this;if("object"==typeof(n=r[e]))for(o=0;i=n[o];++o)i!==t&&i.__eeOnceListener__!==t||(2===n.length?r[e]=n[o?0:1]:n.splice(o,1));else n!==t&&n.__eeOnceListener__!==t||delete r[e];return this},o=function(e){var t,r,n,i,o;if(m.call(this,"__ee__")&&(i=this.__ee__[e]))if("object"==typeof i){for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];for(i=i.slice(),t=0;n=i[t];++t)d.call(n,this,o)}else switch(arguments.length){case 1:h.call(i,this);break;case 2:h.call(i,this,arguments[1]);break;case 3:h.call(i,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];d.call(i,this,o)}},a={on:r=function(e,t){var r;return l(t),m.call(this,"__ee__")?r=this.__ee__:(r=g.value=f(null),p(this,"__ee__",g),g.value=null),r[e]?"object"==typeof r[e]?r[e].push(t):r[e]=[r[e],t]:r[e]=t,this},once:n,off:i,emit:o},s={on:u(r),once:u(n),off:u(i),emit:u(o)},c=y({},s),e.exports=t=function(e){return null==e?f(c):y(Object(e),s)},t.methods=a}(eventEmitter,eventEmitter.exports);var eventEmitterExports=eventEmitter.exports,EventEmitter=getDefaultExportFromCjs(eventEmitterExports),$$c=_export$2,$values=objectToArray.values;$$c({target:"Object",stat:!0},{values:function(e){return $values(e)}});var isValue=isValue$3,map4={function:!0,object:!0},isObject$6=function(e){return isValue(e)&&map4[typeof e]||!1},isObject$5=isObject$6,validObject=function(e){if(!isObject$5(e))throw new TypeError(e+" is not an Object");return e},value=validObject,hasOwnProperty$1=Object.prototype.hasOwnProperty,allOff=function(e){var t,r=arguments[1];if(value(e),void 0===r)hasOwnProperty$1.call(e,"__ee__")&&delete e.__ee__;else{if(!(t=hasOwnProperty$1.call(e,"__ee__")&&e.__ee__))return;t[r]&&delete t[r]}},allOff$1=getDefaultExportFromCjs(allOff),RETRY_MAX=10,PRELOADER=function(){function e(t,r,n,i,o){_classCallCheck(this,e),EventEmitter(this),this.state=STATES.PREPARE,this.options=t||{},this.logger=t.logger||function(){},this._preloadManager=r,this.player=r.player;var a=n.handlers,s=n.predictInst,c=n.readyPromise;this._predictInst=s,this._handlers=a,this._predictInstReadyPromise=c,this._toLoadList=[],this.retryCount=0,this._cachedHandler=i,this._cachedDataHanlder=o,this.cnt=0}return _createClass(e,[{key:"start",value:function(){var e=this,t=new ProxyPromise$1;return this._handlers.start(this.options).then((function(r){r.onObtain().then((function(n){e._predictInstReadyPromise.then((function(){e._predictInst.updateMediaInfos(n);var i=e._predictInst.preloadPredict(e.options),o=e._predictInst.cachedData;e._cachedDataHanlder(Object.assign({vid:e.options.vid},{data:o}));var a=Object.assign(i,e.options);r.onTransform(a).then((function(r){e._toLoadList=r,t.resolve(r)}))}))}))})).catch((function(e){t.reject(new Error("preload unit start error"))})),t}},{key:"preloadSeg",value:function(){var e=this;if(0===this._toLoadList.length)return this.state=STATES.FINISH,void this.emit(PRELOAD_SEG_DONE,!0);this.state="PRELOADING";var t=this._toLoadList.shift();this._handlers.onRequest(t,(function(r){var n=Object.assign({},t.extData,r);e._cachedHandler(n)})).then((function(){e.state=STATES.IDLE,e.emit(PRELOAD_SEG_DONE)})).catch((function(t){e.requestError(),e.emit(PRELOAD_SEG_DONE,!1)}))}},{key:"requestError",value:function(){this.retryCount++,this.state=STATES.IDLE,this.retryCount>=RETRY_MAX&&(this.state=STATES.FINISH),this.emit(ONE_STEP_DONE),this.logger("preload request error")}},{key:"cancelLoading",value:function(){this._toLoadList=[]}},{key:"destroy",value:function(){allOff$1(this)}}]),e}();function getIDB(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){}}var idb=getIDB();function isIndexedDBValid(){try{if(!idb||!idb.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}function executeCallback(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function executeTwoCallbacks(e,t,r){"function"==typeof t&&e.then(t),"function"==typeof r&&e.catch(r)}function normalizeKey(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var dbContexts={},READ_ONLY="readonly",READ_WRITE="readwrite";function _deferReadiness(e){var t=dbContexts[e.name],r={};r.promise=new Promise((function(e,t){r.resolve=e,r.reject=t})),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then((function(){return r.promise})):t.dbReady=r.promise}function _advanceReadiness(e){var t=dbContexts[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function _rejectReadiness(e,t){var r=dbContexts[e.name].deferredOperations.pop();if(r)return r.reject(t),r.promise}function _getConnection(e,t){return new Promise((function(r,n){if(dbContexts[e.name]=dbContexts[e.name]||createDbContext(),e.db){if(!t)return r(e.db);_deferReadiness(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var o=idb.open.apply(idb,i);t&&(o.onupgradeneeded=function(t){var r=o.result;try{r.createObjectStore(e.storeName)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),o.onerror=function(e){e.preventDefault(),n(o.error)},o.onsuccess=function(){r(o.result),_advanceReadiness(e)}}))}function _getOriginalConnection(e){return _getConnection(e,!1)}function _getUpgradedConnection(e){return _getConnection(e,!0)}function _isUpgradeNeeded(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),n=e.version<e.db.version,i=e.version>e.db.version;if(n&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||r){if(r){var o=e.db.version+1;o>e.version&&(e.version=o)}return!0}return!1}function _tryReconnect(e){_deferReadiness(e);for(var t=dbContexts[e.name],r=t.forages,n=0;n<r.length;n++){var i=r[n];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,_getOriginalConnection(e).then((function(t){return e.db=t,_isUpgradeNeeded(e)?_getUpgradedConnection(e):t})).then((function(n){e.db=t.db=n;for(var i=0;i<r.length;i++)r[i]._dbInfo.db=n})).catch((function(t){throw _rejectReadiness(e,t),t}))}function createTransaction(e,t,r,n){void 0===n&&(n=1);try{var i=e.db.transaction(e.storeName,t);r(null,i)}catch(i){if(n>0&&(!e.db||"InvalidStateError"===i.name||"NotFoundError"===i.name))return Promise.resolve().then((function(){if(!e.db||"NotFoundError"===i.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),_getUpgradedConnection(e)})).then((function(){return _tryReconnect(e).then((function(){createTransaction(e,t,r,n-1)}))})).catch(r);r(i)}}function createDbContext(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}var AsyncStorage=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"ready",value:function(){return this._ready}},{key:"_initStorage",value:function(e){var t=this;t._defaultConfig=e;var r={db:null};if(e)for(var n in e)r[n]=e[n];var i=dbContexts[r.name];i||(i=createDbContext(),dbContexts[r.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=t._fullyReady);var o=[];function a(){return Promise.resolve()}for(var s=0;s<i.forages.length;s++){var c=i.forages[s];c!==t&&o.push(c._initReady().catch(a))}var u=i.forages.slice(0);return t._ready=Promise.all(o).then((function(){return r.db=i.db,_getOriginalConnection(r)})).then((function(e){return r.db=e,_isUpgradeNeeded(r,t._defaultConfig.version)?_getUpgradedConnection(r):e})).then((function(e){r.db=i.db=e,t._dbInfo=r;for(var n=0;n<u.length;n++){var o=u[n];o!==t&&(o._dbInfo.db=r.db,o._dbInfo.version=r.version)}})),t._ready}},{key:"probeSupport",get:function(){return isIndexedDBValid()}},{key:"getItem",value:function(e,t){var r=this;e=normalizeKey(e);var n=new Promise((function(t,n){r.ready().then((function(){createTransaction(r._dbInfo,READ_ONLY,(function(i,o){if(i)return n(i);try{var a=o.objectStore(r._dbInfo.storeName).get(e);a.onsuccess=function(){var e=a.result;void 0===e&&(e=null),t(e)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return executeCallback(n,t),n}},{key:"setItem",value:function(e,t,r){var n=this;e=normalizeKey(e);var i=new Promise((function(r,i){n.ready().then((function(){return n._dbInfo,t})).then((function(t){createTransaction(n._dbInfo,READ_WRITE,(function(o,a){if(o)return i(o);try{var s=a.objectStore(n._dbInfo.storeName);null===t&&(t=void 0);var c=s.put(t,e);a.oncomplete=function(){void 0===t&&(t=null),r(t)},a.onabort=a.onerror=function(){var e=c.error?c.error:c.transaction.error;i(e)}}catch(e){i(e)}}))})).catch(i)}));return executeCallback(i,r),i}},{key:"removeItem",value:function(e,t){var r=this;e=normalizeKey(e);var n=new Promise((function(t,n){r.ready().then((function(){createTransaction(r._dbInfo,READ_WRITE,(function(i,o){if(i)return n(i);try{var a=o.objectStore(r._dbInfo.storeName).delete(e);o.oncomplete=function(){t()},o.onerror=function(){n(a.error)},o.onabort=function(){var e=a.error?a.error:a.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return executeCallback(n,t),n}},{key:"clear",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_WRITE,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=o.error?o.error:o.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"length",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_ONLY,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).count();o.onsuccess=function(){e(o.result)},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"all",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_ONLY,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).openCursor(),a=[];o.onsuccess=function(){var t=o.result;t?(a.push({key:t.key,value:t.value}),t.continue()):e(a)},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"_fullyReady",value:function(e){var t=this,r=t._initReady().then((function(){var e=dbContexts[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return executeTwoCallbacks(r,e,e),r}}]),e}(),MemoryCache=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"_initStorage",value:function(e){var t=e.name+"_"+e.storeName;return this.key=t,window[t]&&"object"===_typeof$1(window[t])||(window[t]={}),this.store=window[t],Promise.resolve()}},{key:"getItem",value:function(e,t){var r=this.store[e];return void 0===r&&(r=null),this._internalPromise(t,r)}},{key:"setItem",value:function(e,t,r){return this.store[e]=t,this._internalPromise(r)}},{key:"removeItem",value:function(e,t){return delete this.store[e],this._internalPromise(t)}},{key:"clear",value:function(e){return this.store={},window[this.key]={},this._internalPromise(e)}},{key:"length",value:function(e){var t=Object.keys(this.store).length;return this._internalPromise(e,t)}},{key:"_internalPromise",value:function(e,t){var r=t?Promise.resolve(t):Promise.resolve();return executeCallback(r,e),r}},{key:"all",value:function(e){for(var t=[],r=Object.keys(this.store),n=0;n<r.length;n++){var i=r[n];t.push({key:i,value:this.store[i]})}return this._internalPromise(e,t)}},{key:"probeSupport",value:function(){return!0}}]),e}(),DefaultConfig={description:"",name:"__PRE_CACHE__",storeName:"keyvaluepairs",version:1},SPLIT="|",SESSION_KEY="__PRE_CACHE__KEYS",TIMESPLIT="$",MAX_CACHE=200,PreloadCache=function(){function e(t,r){_classCallCheck(this,e);var n=r===CACHE_TYPES.MEMORY?MemoryCache:AsyncStorage;this._driver=new n,this._driver._initStorage(DefaultConfig).catch((function(){})),this._hasIdbForbidden=!1,this._maxCache=!t||t<=0?MAX_CACHE:t,this.setMaxCache(this._maxCache),this._allCachedKeys={},this._allCachedTimeKeys={},this.getCachedKeysFromLocal(),this._readyPromise=new ProxyPromise$1,this.init()}return _createClass(e,[{key:"getCachedKeysFromLocal",value:function(){var e=proxyLocalStorage$1.getItem(SESSION_KEY);if(e)for(var t=e.split(SPLIT),r=0;r<t.length;r++){var n=t[r],i=this._getCacheKeyInfos(n),o=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=o}}},{key:"_getCacheKeyInfos",value:function(e){var t,r=e.split(TIMESPLIT);return 2===r.length&&(t=r[0],e=r[1]),{time:t,cachedKey:e}}},{key:"writeCachedKeysToLocal",value:function(e){var t=[];this._allCachedKeys={},this._allCachedTimeKeys={};for(var r=0;r<e.length;r++){var n=e[r].key,i=this._getCacheKeyInfos(n),o=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=o,t.push(n)}var s=t.join(SPLIT);proxyLocalStorage$1.setItem(SESSION_KEY,s)}},{key:"init",value:function(){var e=this;this._driver.setItem("test","test").then((function(){})).catch((function(){e._hasIdbForbidden=!0})).finally((function(){e._driver.removeItem("test").catch((function(){})),e._hasIdbForbidden&&(e._driver=new MemoryCache,e._driver._initStorage(DefaultConfig)),e._getAll(),e._readyPromise.resolve()}))}},{key:"_getAll",value:function(){var e=this;this._driver.all().then((function(t){e._cachedLength=t.length;var r=t.length-e._maxCache,n=t;if(r>0){var i=t.slice(0,r);n=t.slice(r);for(var o=0;o<i.length;o++)e.removeItem(i[o].key).then((function(){}))}e.writeCachedKeysToLocal(n)})).catch((function(){}))}},{key:"getItem",value:function(e,t){if(!this.hasItem(e))return Promise.resolve(!1);var r=this._getTimeKey(e).timeKey;return this._driver.getItem(r,t)}},{key:"setItem",value:function(e,t,r){var n=this;this._getTimeKey(e).timeKey&&this.removeItem(e);var i=(new Date).getTime();this._allCachedKeys[e]=1,this._allCachedTimeKeys[e]=i;var o=this._genTimeKey(e,i);return r=r?function(){n._getAll(),r()}:function(){n._getAll()},this._driver.setItem(o,t,r)}},{key:"_getTimeKey",value:function(e){var t=this._allCachedTimeKeys[e],r=e;return t&&(r=this._genTimeKey(e,t)),{timeKey:r,time:t}}},{key:"_genTimeKey",value:function(e,t){return"".concat(t).concat(TIMESPLIT).concat(e)}},{key:"removeItem",value:function(e,t){var r=this._getTimeKey(e).timeKey,n=this._driver.removeItem(r,t);return delete this._allCachedKeys[e],delete this._allCachedTimeKeys[e],n}},{key:"hasItem",value:function(e){return!!this._allCachedKeys[e]}},{key:"clear",value:function(e){return this._driver.clear(e)}},{key:"length",value:function(e){return this._driver.length(e)}},{key:"setMaxCache",value:function(e){"number"==typeof e&&e>0&&(this._maxCache=e)}}]),e}(),PRELOADER_KEY="DEFAULT",PreloaderManager=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;_classCallCheck(this,e),EventEmitter(this),this._preloadDataList=[],this._currentPreloadInst=null,this._dashPreloadList=[],this.autoPreload=t.autoPreload||!1,this._onPreloadNext=this.onPreloadNextReady.bind(this),this.on(PRELOAD_NEXT,this._onPreloadNext),this._preloaderConfigs={},this.update(t,r,n),this._cacheInst=new PreloadCache(t.preloadMaxCacheCount,t.preloadCacheType),this._preloadCacheProgress={},this._ptag_=!0,this._cachedDatas={}}return _createClass(e,[{key:"_getProloaderKey",value:function(e){return e.vtype?e.vtype:PRELOADER_KEY}},{key:"update",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!r)throw new Error("PreloaderManager predictInst is null");var n=this._getProloaderKey(e);this._preloaderConfigs[n]={predictInst:r,readyPromise:r.init(e),handlers:t}}},{key:"cachedDatas",get:function(){return this._cachedDatas}},{key:"onCacheSegment",value:function(e){var t=e.vid,r=e.format,n=e.cacheKey,i=e.total,o=e.loaded,a=e.isInitSegment,s=e.mediaType,c=this.getProgressCacheKey(t,r,s),u=this._preloadCacheProgress[c];u||(u=this._preloadCacheProgress[c]={}),u[n]={total:i,loaded:o,isInitSegment:a}}},{key:"onCachePredict",value:function(e){var t=e.vid,r=e.data;t&&r&&(this._cachedDatas[t]=r)}},{key:"getProgressCacheKey",value:function(e,t,r){return"".concat(e,"-").concat(t,"-").concat(r)}},{key:"onPreloadNextReady",value:function(){this.onPreloadNext()}},{key:"onPreloadSegDone",value:function(){this.autoPreload&&this.emit(PRELOAD_NEXT)}},{key:"onPreloadNext",value:function(){var e=this;if(null==this._currentPreloadInst&&this._preloadDataList.length>0){if(this._preloadDataList.length>0){var t=this._preloadDataList.shift().data;if(t.payload){var r=this._getProloaderKey(t),n=this._preloaderConfigs[r];if(!n)return void console.warn("need to set vtype, no preloader",t);this._currentPreloadInst=new PRELOADER(t,this,n,(function(t){e.onCacheSegment(t)}),(function(t){e.onCachePredict(t)})),this._currentPreloadInst.on(PRELOAD_SEG_DONE,this.onPreloadSegDone.bind(this)),this._currentPreloadInst.start().then((function(){e._currentPreloadInst.preloadSeg()})).catch((function(){e._currentPreloadInst=null}))}}}else null!=this._currentPreloadInst&&(this._currentPreloadInst.state===STATES.IDLE?this._currentPreloadInst.preloadSeg():this._currentPreloadInst.state===STATES.FINISH?(this._currentPreloadInst.destroy(),this._currentPreloadInst=null):this._currentPreloadInst.state===STATES.PREPARE&&(this._currentPreloadInst.cnt++,this._currentPreloadInst.cnt>2&&(this._currentPreloadInst.destroy(),this._currentPreloadInst=null)))}},{key:"addDashPreloader",value:function(e){e&&e.data&&(this._preloadDataList.push(e),this.sort(this._preloadDataList),this.autoPreload&&this.emit(PRELOAD_NEXT))}},{key:"_addDashPreloader",value:function(e){e&&e.data&&this._preloadDataList.push(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.sort(e);for(var t=0;t<e.length;t++)this._addDashPreloader(e[t])}},{key:"sort",value:function(e){e.sort((function(e,t){return void 0===e.order&&void 0===e.order||e.order<t.order?-1:1}))}},{key:"destroy",value:function(){this.off(PRELOAD_NEXT,this._onPreloadNext)}},{key:"cancelLoading",value:function(){this._currentPreloadInst&&(this._currentPreloadInst.cancelLoading(),this._currentPreloadInst=null),this._preloadDataList=[]}},{key:"preloadCacheProgress",value:function(e){var t=e.vid,r=e.format,n=e.mediaType,i=e.prelaodType,o=e.bitrate,a=e.set_duration,s=e.set_size,c=e.media_type,u=e.start_time,l=this.getProgressCacheKey(t,r,n),d=this._preloadCacheProgress[l];if(d){for(var h=Object.values(d),f=0,p=0,y=0,m=0,g=0,v=0;v<h.length;v++){var b=h[v];b.isInitSegment&&(f=b.total,y=b.loaded,m=b.loaded===b.total?DOWN_STATES.SUCCESS:DOWN_STATES.DOWNLOADING),p+=b.total,g+=b.loaded}return{media_type:c,preload_type:i,stream_bitrate:o,header_size:f,content_total_size:p,start_time:u||-1,state_info:{set_duration:a,set_size:s,current_header_download_size:y,current_content_download_size:g,header_download_state:m,content_download_state:g===p?DOWN_STATES.SUCCESS:DOWN_STATES.DOWNLOADING}}}return null}},{key:"getPreloadTaskInfos",value:function(){}},{key:"getItem",value:function(e,t){return this._cacheInst.getItem(e,t)}},{key:"setItem",value:function(e,t,r){return this._cacheInst.setItem(e,t,r)}},{key:"removeItem",value:function(e,t){return this.removeItem(e,t)}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.GLOBAL_KEY+(t.globalKey?t.globalKey:""),o=window[i];if(o&&o._ptag_)return o.update(t,r,n),o;var a=new e(t,r,n);return window[i]=a,a}}]),e}();PreloaderManager.GLOBAL_KEY="__preloadcontext__";var PreloaderBase=function(){function e(t){_classCallCheck(this,e),EventEmitter(this),this.options=t,this.promisePolyfill(),this.before(),this.check(),this._preloadManager=PreloaderManager.getInstance(t,this.handlers,this.predictInst),this.loadingTasks=[]}return _createClass(e,[{key:"promisePolyfill",value:function(){Promise.prototype.finally||(Promise.prototype.finally={finally:function(e){var t=function(t){return Promise.resolve(e()).then(t)};return this.then((function(e){return t((function(){return e}))}),(function(e){return t((function(){return Promise.reject(e)}))}))}}.finally)}},{key:"before",value:function(){throw new Error("need")}},{key:"check",value:function(){if(!this.handlers)throw new Error("handlers null");if(!this.handlers.start||!this.handlers.onRequest)throw new Error("handlers callback null");if(!this.predictInst)throw new Error("predictInst null");if(!this.predictInst.__p__)throw new Error("predictInst need extends predictbase")}},{key:"preloadNext",value:function(){this._preloadManager.emit(PRELOAD_NEXT)}},{key:"preloadManager",get:function(){return this._preloadManager}},{key:"start",value:function(e){throw new Error("start need implment, return Promise")}},{key:"cancelLoading",value:function(){for(var e=0;e<this.loadingTasks.length;e++)try{var t=this.loadingTasks[e];"function"==typeof t.cancel&&t.cancel()}catch(e){}this.loadingTasks=[],this._preloadManager.cancelLoading()}},{key:"addTasker",value:function(e){this.loadingTasks.push(e)}},{key:"removeTasker",value:function(e){var t=this;setTimeout((function(){for(var r=t.loadingTasks.length-1;r>-1;r--)if(t.loadingTasks[r]===e){t.loadingTasks.splice(r,1);break}}))}},{key:"addDashPreloader",value:function(e){this._preloadManager.addDashPreloader(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._preloadManager.addDashPreloaderList(e)}}]),e}(),PredictBase=function(){function e(){_classCallCheck(this,e),this.bandwidth2item={},this._mediaInfos=null,this.__p__=!0}return _createClass(e,[{key:"init",value:function(){throw new Error("init func not implement, return promise")}},{key:"preloadPredict",value:function(e){throw new Error("preloadPredict error",e)}},{key:"updateMediaInfos",value:function(e){if(this._mediaInfos=e,this.bandwidth2item={},this.dynamic_video=e&&e.dynamic_video_list,this.dynamic_video&&this.dynamic_video.length>0)for(var t=0;t<this.dynamic_video.length;t++){var r=this.dynamic_video[t];this.bandwidth2item[r.bitrate||r.bandwidth]=r}}},{key:"getIdx",value:function(e,t){var r=0;return e.forEach((function(e,n){e.definition===t&&(r=n)})),r}},{key:"cachedData",get:function(){return null}}]),e}(),VTYPES=VTYPES$1,CODEC_TYPE$1={H264:"h264",H265:"h265"},MAX_LOADING_COUNT=1,PRELOAD_TYPES=PRELOAD_TYPES$1,DEFAULT_TRUNK=8e5,_BITRATE_SELECTOR=null,Predict=function(e){_inherits$4(r,PredictBase);var t=_createSuper$4(r);function r(){return _classCallCheck$6(this,r),t.apply(this,arguments)}return _createClass$6(r,[{key:"init",value:function(){return Promise.resolve()}},{key:"preloadPredict",value:function(e){return e}}]),r}(),Mp4Preloader=function(e){_inherits$4(a,PreloaderBase);var t,r,n,i,o=_createSuper$4(a);function a(e,t){var r;return _classCallCheck$6(this,a),e.vtype=VTYPES.MP4,(r=o.call(this,e)).player=t,r.loadingCount=0,r._mp4=null,r._loader=null,r._pendingPromise=null,r.playerId=t.playerId,r}return _createClass$6(a,[{key:"log",value:function(e){for(var t="[Preloader] ".concat(e),r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];log$2.apply(void 0,[t].concat(n))}},{key:"before",value:function(){var e=this;this.handlers={start:function(t){var r=t.payload||[];if(0===r.length)return Promise.reject();var n=t.vid,i=t.vtype||VTYPES.MP4,o=t.codecType||CODEC_TYPE$1.H264,s=e.getUserSelectDefinition(),c=e.checkCacheKey(n,r,s,i,o);if(console.log("[Preloader] ".concat(n," codecType:").concat(o," vtype:").concat(i," hasCache:").concat(c)),c||"MP3"===i)return Promise.reject();var u=e.getInitDefinition(r,e.options.definition,s);if(console.log("[Preloader] ".concat(n," getInitDefinition"),u),!u)return Promise.reject();var l=u.definition,d=t.preloadTime||e.options.preloadTime,h=t.preloadSize||e.options.preloadSize||Math.pow(25,4)-1,f=a.generateUniqueKey({vid:n,definition:l,vtype:i,codecType:o});log$2("[Preloader] ".concat(n," start duration:").concat(u.duration," cacheKey:").concat(f));var p=_objectSpread2$2({vid:n,definition:l,preloadTime:d,preloadSize:h,cacheKey:f,codecType:o,vtype:i},u);return e.loadingCount++,e.start(p)},onRequest:function(t,r){var n=t.url,i=t.range,o=t.extData;return e.getData(n,i,o,r)}},this.loggerConfig={logger:function(){},openLog:!1},this.predictInst=new Predict(this.loggerConfig)}},{key:"start",value:function(e){var t=this,r={mediaInfos:{dynamic_video_list:[],dynamic_audio_list:[]},onObtain:function(){var e=new ProxyPromise;return e.resolve(r.mediaInfos),e},onTransform:function(r){var n=new ProxyPromise;t._pendingPromise=n;var i=e.preloadTime,o=e.codecType;return i&&(o!==CODEC_TYPE$1.H265||t.options.supportHevc)?t.loadByPreloadTime(e,n):t.loadByChunkSize(e,n),n}};return Promise.resolve(r)}},{key:"getInitDefinition",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=null;if(a.BitRateAdapter)n=a.BitRateAdapter.getSuitableBitrate(e,r),this.log("Mp4Preloader.BitRateAdapter",n);else{for(var i=0,o=0;o<e.length;o++){if(e[o].definition===t){i=o;break}}n=e[i]}return n||(n=e[0]),n}},{key:"getPreLoadData",value:function(e){var t=this,r=new ProxyPromise;return this.getItemSameVid(e).then((function(e){if(t.log("getPreLoadData",e.value),e.value){var n=e.value,i=n.mediaSegList,o=n.meta,a=n.type,s=n.buffer,c=n.preloadTime,u=n.vid,l=n.cacheKey,d=n.definition,h=n.byteLength,f=n.duration,p=n.fileSize,y=n.from,m=n.vtype,g=n.codecType,v=n.initSeg,b={vid:u,type:a,vtype:m,codecType:g,definition:d,bitrate:n.bitrate,cacheKey:l,duration:f||0,byteLength:h,from:y,meta:o};a===PRELOAD_TYPES.SIZE?(b.buffer=s,b.fileSize=p||0):(b.mediaSegList=i,b.preloadTime=c,b.initSeg=v),r.resolve(b)}else r.resolve(null)})).catch((function(e){r.reject(e)})),r}},{key:"setPreLoadData",value:(i=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l,d,h,f,p,y,m,g,v,b,_,$=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new ProxyPromise,i=r.mediaSegList,o=r.meta,a=r.vid,s=r.definition,c=r.type,u=r.buffer,l=r.duration,d=r.byteLength,h=r.preloadTime,f=r.preloadSize,p=r.fileSize,y=r.from,m=r.vtype,g=r.codecType,v=r.initSeg,b=r.bitrate,_={codecType:g,vtype:m,vid:a,definition:s,cacheKey:t,type:c,from:y,meta:o,fileSize:p,bitrate:b},c===PRELOAD_TYPES.SIZE?(_.buffer=u,_.byteLength=d||0,_.preloadSize=f||0,_.fileSize=p,_.buffer&&_.buffer.byteLength>0&&(this.setItem(t,_),n.resolve(!0))):(_.mediaSegList=i||[],_.duration=l,_.byteLength=d||0,_.preloadTime=h||0,_.initSeg=v,o&&0===i.length?(this.setItem(t,_),n.resolve(!0)):(i.every((function(e){return!!e.buffer&&e.state}))||n.resolve(!1),this.setItem(t,_).then((function(){$.log("setPreLoadData1 success",t,(new Date).getTime())})),n.resolve(!0))),e.abrupt("return",n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"getInitCacheData",value:function(e,t){var r={type:e,meta:null,byteLength:0,fileSize:0,bitrate:0};return e===PRELOAD_TYPES.DURATION?(r.mediaSegList=[],r.initSeg=null,r.duration=0):r.buffer=null,Object.keys(t).map((function(e){r[e]=t[e]})),r}},{key:"updatePreCacheData",value:function(e,t,r,n,i,o,a){var s=e.mediaSegList;if(e.type===PRELOAD_TYPES.SIZE||-1===i)return e.buffer=Concat(Uint8Array,e.buffer.buffer||[],new Uint8Array(t)),e;for(var c=-1,u=0;u<s.length;u++)if(s[u].index===i){c=u;break}var l=o||[0,0];return c>-1?(t&&(s[c].buffer=Concat(Uint8Array,s[c].buffer||[],new Uint8Array(t))),r.length>1&&(s[c].range.length>1?s[c].range[1]=r[1]:s[c].range=r),-1!==a[1]&&(n=s[c].range[1]>=a[1]),s[c].state=n):(e.duration=l[1],s.push({buffer:t,range:r||[],index:i,totalRange:a||[],timeRange:[l[0],l[1]],state:n})),n&&(e.byteLength=r[1]),n}},{key:"checkCacheKey",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:VTYPES.MP4,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:CODEC_TYPE$1.H264;if(r){var o=a.generateUniqueKey({vid:e,definition:r,vtype:n,codecType:i});return this.hasItemSameVid(o)?o:null}for(var s=0;s<t.length;s++){var c=a.generateUniqueKey({vid:e,definition:t[s].definition,vtype:n,codecType:i});if(this.hasItemSameVid(c))return c}return null}},{key:"checkCanPreloadNext",value:function(){var e=!0;return this.loadingCount>=MAX_LOADING_COUNT&&(e=!1),e&&this.preloadNext(),e}},{key:"loadByPreloadTime",value:function(e,t){var r=this,n=e.vid,i=e.cacheKey,o=e.preloadTime,a=e.definition,s=e.duration,c=e.bitrate,u=e.codecType,l=e.vtype,d=null;if(d="Array"===util.typeOf(e.url)?e.url.length>1?e.url[1].src:e.url[0].src:e.url){d=util.extUrl(d,{__vid:n});var h=o>=this.options.segmentMinDuration?this.options.segmentMinDuration:o;this.log("loadByPreloadTime","".concat(e.cacheKey,", definition:").concat(e.definition,",segmentMinDuration:").concat(h),e);var f=util.getFileSize(c,s);this._mp4=new MP4(d,c,_objectSpread2$2({segmentDuration:h,codecType:this.codecType,chunkSize:this.options.preloadSize,duration:s,fileSize:f,playerId:this.playerId,vid:n,useUrlRange:!1,retryCount:1,retryDelay:1e3,supportHevc:this.options.supportHevc},this.options.reqOptions),null,null,{},[],this.firstFrameTime,"");var p=this.getInitCacheData(PRELOAD_TYPES.DURATION,{vid:n,preloadTime:o,definition:a,cacheKey:i,codecType:u,vtype:l,bitrate:c||0});this._mp4.once("metaReady",(function(i){r.log("".concat(n," metaReady this._pendingPromise"),r._pendingPromise.state),p.meta=i,p.from=2,r._mp4.cancelLoading(),r.startLoadByFragments(p,e,t)})),this._mp4.on("error",(function(e){console.error("[Preloader] ".concat(n," loadByPreloadTime error"),e),r._endLoadFragments()})),this._mp4.init({})}else this._endLoadFragments()}},{key:"loadByChunkSize",value:(n=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o,a,s,c,u,l,d,h,f,p,y,m,g,v,b=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.vid,n=t.cacheKey,i=t.definition,o=t.duration,a=t.bitrate,s=t.codecType,c=t.vtype,u=this.options,l="Array"===util.typeOf(t.url)?t.url[0].src:t.url){e.next=6;break}return this._endLoadChunk(),e.abrupt("return");case 6:return l=util.extUrl(l,{__vid:r}),d=util.getFileSize(a,o),h=getMetaSize(o,DEFAULT_TRUNK,d),this.log("".concat(r,"loadByChunkSize"),t.cacheKey,t.definition,h,t),f=this.getInitCacheData(PRELOAD_TYPES.SIZE,{vid:r,definition:i,cacheKey:n,codecType:s,vtype:c,fileSize:d,bitrate:a||0}),this.MP4Loader=new MP4Loader(_objectSpread2$2(_objectSpread2$2({url:l,retry:u.retry||2,retryDelay:u.retryDelay||1e3,timeout:3e3},u.reqOptions),{},{segmentDuration:u.segmentDuration})),e.prev=12,p=new Uint8Array(0),y=0,m=null,g=null,v=function(e,t,r){if(e&&r.range[0]===y&&(p=Concat(Uint8Array,p,new Uint8Array(e)),y+=e.byteLength),r.meta){b.MP4Loader.cancel();var i=r.meta,o=i.videoSegments,a=i.audioSegments;g=_objectSpread2$2(_objectSpread2$2({},i.meta),{},{ext:{videoTrak:o,audioTrak:a}}),f.meta=g,f.buffer=p,f.byteLength=p.byteLength,b.setPreLoadData(n,f),m=util.getFragRange(0,o,a),b.log("".concat(n," onProgressHandle4 meta"),t,m,y,p.byteLength),m[0]<y&&(m[0]=y),b._loadOneChunk(f,m)}},e.next=20,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,h],v);case 20:e.next=26;break;case 22:e.prev=22,e.t0=e.catch(12),console.error("[Preloader] ".concat(n," loadByChunkSize error"),e.t0),this._endLoadChunk();case 26:case"end":return e.stop()}}),e,this,[[12,22]])}))),function(e){return n.apply(this,arguments)})},{key:"_loadOneChunk",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.vid,i=t.cacheKey,o=t.buffer,e.prev=1,e.next=4,this.MP4Loader.loadData(r,this.MP4Loader.cache,{});case 4:a=e.sent,this.log("".concat(n," _loadOneChunk"),r,a),s=a.response,(c=a.data)?(this._endLoadChunk(),s&&s.headers&&(u=util.getFileSize(s.headers))&&(t.fileSize=u),l=Concat(Uint8Array,o,new Uint8Array(c)),t.buffer=l,t.byteLength=l.byteLength,this.log("".concat(n," _loadOneChunk ret"),i,l.byteLength,t),t.from=4,this.setPreLoadData(i,t)):this._endLoadChunk(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),console.error("[Preloader] ".concat(n," loadByChunkSize error"),e.t0),this._endLoadChunk();case 14:case"end":return e.stop()}}),e,this,[[1,10]])}))),function(e,t){return r.apply(this,arguments)})},{key:"_endLoadChunk",value:function(){this.log("_endLoadChunk loadingCount:".concat(this.loadingCount),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy(),this.MP4Loader=null)}},{key:"startLoadByFragments",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var i,o,a,s,c,u,l=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=r.preloadTime,o=r.vid,console.log("[Preloader] ".concat(o," startLoadByFragments")),a=[],s=0;s<this._mp4.timeRange.length;s++)this._mp4.timeRange[s].startTime<=i&&a.push(s);return c=function(e){l.log("[Preloader] _failedCallback",e),l._endLoadFragments()},u=function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(r){var n,i,o,s,d,h,f,p,y;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l._mp4){e.next=2;break}return e.abrupt("return");case 2:if(n=r.buffer,i=r.context,o=r.state,s=r.initSeg,d=i.fragIndex,h=i.range,f=i.timeRange,p=l._mp4.getFragRange(d),!t.initSeg&&s&&(t.initSeg=s),y=l.updatePreCacheData(t,n,h,o,d,f,p),console.log("[Preloader] ".concat(t.cacheKey," _successCallback"),d,o,y,h,f,p,r),t.from=3,!y){e.next=20;break}return e.next=12,l.setPreLoadData(t.cacheKey,t);case 12:if(!(d>=a.length-1)){e.next=17;break}l.log("".concat(t.cacheKey," mp4.load end"),d),l._endLoadFragments(),e.next=20;break;case 17:return l.log("".concat(t.cacheKey," mp4.load start"),d+1),e.next=20,l._mp4.loadAllFragmentData(d+1,u,c);case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=8,this._mp4.loadAllFragmentData(0,u,c);case 8:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"_endLoadFragments",value:function(){this.log("_endLoadFragments loadingCount:".concat(this.loadingCount),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this._mp4&&(this._mp4.destroy(),this._mp4=null)}},{key:"getFragment",value:function(e,t,r,n,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},a=new ProxyPromise;return this.getData(e,t,o,!1).then((function(e){n.createFragment(new Uint8Array(e.res),t[0]-n.mdatStart,r,{range:t,context:e.context}).then((function(e){a.resolve(e)}))})),a}},{key:"getPreloadUrl",value:function(e){var t=e.url,r=e.range,n=e.definition,i=e.vid;return[{url:t,range:r,extData:{cacheKey:a.generateUniqueKey({vid:i,start:r[0],end:r[1],definition:n}),vid:i,format:"mp4"}}]}},{key:"getRangeList",value:function(e){var t=this.allCachedKeys,r={timeRange:[],contentRange:[]};for(var n in t)if(t.hasOwnProperty(n)&&n.indexOf(e)>-1){var i=n.split("#");0===i[2].indexOf("pretime")?r.timeRange.push([0,parseFloat(i[2].slice(7))]):r.contentRange.push([parseInt(i[2]),parseInt(i[3])])}return r}},{key:"hasItemSameVid",value:function(e){if(!e)return!1;var t=this.allCachedKeys;for(var r in t)if(t.hasOwnProperty(r)){if(r===e)return r;var n=r.split("#"),i=e.split("#");if(n.length>=4&&i.length>=4&&n[0]===i[0]){if(0===n[2].indexOf("pretime")&&0===i[2].indexOf("pretime"))return r;var o=[parseInt(n[2]),parseInt(n[3])],a=[parseInt(i[2]),parseInt(i[3])];if(a[0]>=o[0]&&a[1]>a[0]&&a[1]<=o[1])return r}}return!1}},{key:"removeOthers",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=this.allCachedKeys;for(var n in r)r.hasOwnProperty(n)&&n.split("#").length>=1&&function(){var r=n.split("#")[0];t.every((function(e){return e.split("#").length>=1&&e.split("#")[0]!==r}))&&(e.log("remove cache:".concat(n)),e.cacheInst.removeItem(n))}()}},{key:"getItemSameVid",value:function(e,t){var r=this.hasItemSameVid(e);return this.log("getItemSameVid: key:".concat(e," checkResult:").concat(r)),r?this.cacheInst.getItem(r,t).then((function(e){return{value:e,key:r}})):Promise.resolve({})}},{key:"setItem",value:function(e,t){return this.cacheInst.setItem(e,t)}},{key:"allCachedKeys",get:function(){return this.cacheInst._allCachedKeys}},{key:"cacheInst",get:function(){return this._preloadManager._cacheInst}},{key:"cancelPreloadByVid",value:function(e){if(e){for(var t=this._preloadManager._preloadDataList,r=[],n=0;n<t.length;n++){t[n].data.vid!==e?r.push(t[n]):(console.log("[Preloader] cancelPreloadByVid",e),this.log("cancelPreloadByVid",e))}this._preloadManager._preloadDataList=r}}},{key:"cancelLoading",value:function(e){this._endLoadFragments(),this._endLoadChunk();var t=this._preloadManager;if(t._currentPreloadInst){var r=t._currentPreloadInst._toLoadList,n=[];r.map((function(t){return t.playerId!==e&&n.push(t),t})),t._currentPreloadInst._toLoadList=n}var i=[],o=[];t._preloadDataList.map((function(t){return t.playerId!==e?i.push(t):o.push(t.data.vid),t})),this.log("cancelLoading",e,o.join(",")),t._preloadDataList=i}},{key:"checkIfExistInList",value:function(e){for(var t=this._preloadManager._preloadDataList,r=0;r<t.length;r++)if(e===t[r].data.vid)return!0;return!1}},{key:"addPreloader",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(e.data){e.data.vtype||(e.data.vtype=VTYPES.MP4);var n=e.data.vid,i=this.checkIfExistInList(n);console.log("[Preloader] addPreloader checkIfExistInList",n,i),r&&n===r||i||(e.playerId=t,this.addDashPreloader(e))}}},{key:"addPreloaderList",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=[],n=0;n<e.length;n++){var i=e[n].data,o=i.vid,a=i.vtype,s=this.checkIfExistInList(o);console.log("[Preloader] addPreloaderList checkIfExistInList",o,o===t,s),t&&o===t||s||(a||(e[n].data.vtype=VTYPES.MP4),r.push(e[n]))}console.log("[Preloader] addPreloaderList length is ".concat(r.length)),this.addDashPreloaderList(r)}},{key:"setUserSelectDefinition",value:function(e){this._preloadManager&&(this._preloadManager.userDefinition=e)}},{key:"getUserSelectDefinition",value:function(){return this._preloadManager.userDefinition||null}},{key:"destroy",value:function(){this._endLoadFragments(),this._endLoadChunk(),this.cancelLoading(this.playerId)}}],[{key:"PRELOAD_TYPES",get:function(){return PRELOAD_TYPES}},{key:"BitRateAdapter",get:function(){return _BITRATE_SELECTOR},set:function(e){_BITRATE_SELECTOR=e}},{key:"generateUniqueKey",value:function(e){var t=e.vid,r=e.mediaType,n=e.definition,i=e.codecType,o=e.vtype;return r=r||"video",n=n||"-1",i=i||CODEC_TYPE$1.H264,o=o||VTYPES.MP4,t?"".concat(t,"#").concat(r,"#").concat(i,"#").concat(o,"#").concat(n):null}}]),a}(),CUSTOM_EVENTS={MEDIA_EXPIRED:"MEDIA_EXPIRED",INIT_FAIL:"INIT_FAIL",PARSE_ERROR:"PARSE_ERROR",PLAYER_LOG:"PLAYER_LOG",BUFFERED_RESET:"BUFFERED_RESET"},BUFFER_BREAK=1e4,$$b=_export$2,$reduce=arrayReduce$2.left,arrayMethodIsStrict$1=arrayMethodIsStrict$h,CHROME_VERSION=engineV8Version$2,IS_NODE=engineIsNode$2,STRICT_METHOD$1=arrayMethodIsStrict$1("reduce"),CHROME_BUG=!IS_NODE&&CHROME_VERSION>79&&CHROME_VERSION<83;$$b({target:"Array",proto:!0,forced:!STRICT_METHOD$1||CHROME_BUG},{reduce:function(e){var t=arguments.length;return $reduce(this,e,t,t>1?arguments[1]:void 0)}});var GapJump=function(){function e(t,r){_classCallCheck$6(this,e),this.player=t,this.mediaElem=t.video,this.config=r,this.timer=new IntervalTimer$1,this.prevReadyState=this.mediaElem.readyState,this.didFireLargeGap=!1,this.seekingEventReceived=!1,this.onWaitFunc=this._onWaiting.bind(this),this.onPlayFunc=this._onPlay.bind(this),this.isSafari=/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),!1!==this.config.useGapJump&&this._start(),this.hasPlayed=!1}return _createClass$6(e,[{key:"_onWaiting",value:function(){this.onGapJump()}},{key:"_onPlay",value:function(){this.hasPlayed=!0}},{key:"_start",value:function(){this.mediaElem.addEventListener("waiting",this.onWaitFunc),this.mediaElem.addEventListener("play",this.onPlayFunc)}},{key:"onSegmentAppend",value:function(e){if(this.config.enableCheckBufferDiff&&this.mediaElem){var t=e.reduce((function(e,t){return e+t.downloaded?t[1]-t[0]:0}),0);this._getBuffered(this.mediaElem.buffered).reduce((function(e,t){return e+(t.end-t.start)}),0)/t<.8&&(log$2("onSegmentAppend detectGap"),this.player&&this.player.emit("detectGap"))}this.onGapJump()}},{key:"onSeeking",value:function(){this.seekingEventReceived=!0,this.didFireLargeGap=!1}},{key:"onGapJump",value:function(){if(this.mediaElem.readyState!==HTMLMediaElement.HAVE_NOTHING){if(this.mediaElem.seeking){if(!this.seekingEventReceived)return}else this.seekingEventReceived=!1;if(!this.mediaElem.paused||0===this.mediaElem.currentTime||!this.hasPlayed){this.mediaElem.readyState!==this.prevReadyState&&(this.didFireLargeGap=!1,this.prevReadyState=this.mediaElem.readyState);var t=this.mediaElem.buffered,r=this.config.smallGapLimit||.5,n=this.config.gapDetectionThreshold||.1,i=this.mediaElem.currentTime,o=this._getIndex(t,i,n);if(null!==o&&(0!==o||t&&t.length)){var a=t.start(o)+.1;if(!(a>this.mediaElem.duration)){var s=a-i,c=s<=r;s<e.BROWSER_GAP_TOLERANCE||c&&(!0!==this.config.disableGapSetPosition&&(log$2("onGapJump this.mediaElem.currentTime"),this.mediaElem.currentTime=this.isSafari?a+.1:a),this.player&&this.player.emit("detectGap"),log$2("gapJump gapIndex",o,"isGapSamll",c,"jumpLargeGap",!1,"currentTime",this.mediaElem.currentTime),.08!==a&&this.player&&this.player.emit("log",{type:"oneevent",end_type:"gap",vid:this.player.config.vid,ext:{video_postion:Math.floor(1e3*a)}}))}}}}}},{key:"_getIndex",value:function(e,t,r){if(!e||!e.length)return null;if(1===e.length&&e.end(0)-e.start(0)<1e-6)return null;for(var n=this._getBuffered(e),i=null,o=0;o<n.length;o++){if(n[o].start>t&&(0===o||n[o-1].end-t<=r)){i=o;break}}return i}},{key:"_getBuffered",value:function(e){if(!e)return[];for(var t=[],r=0;r<e.length;r++)t.push({start:e.start(r),end:e.end(r)});return t}},{key:"destroy",value:function(){this.mediaElem.removeEventListener("waiting",this.onWaitFunc),this.mediaElem.removeEventListener("play",this.onPlayFunc),this.timer.clear(),this.timer=null}}]),e}();GapJump.BROWSER_GAP_TOLERANCE=.001;var call=functionCall,hasOwn$2=hasOwnProperty_1,isPrototypeOf$1=objectIsPrototypeOf,regExpFlags=regexpFlags,RegExpPrototype$1=RegExp.prototype,regexpGetFlags=function(e){var t=e.flags;return void 0!==t||"flags"in RegExpPrototype$1||hasOwn$2(e,"flags")||!isPrototypeOf$1(RegExpPrototype$1,e)?t:call(regExpFlags,e)},PROPER_FUNCTION_NAME=functionName.PROPER,defineBuiltIn$1=defineBuiltIn$d,anObject$1=anObject$i,$toString=toString$d,fails$c=fails$G,getRegExpFlags=regexpGetFlags,TO_STRING="toString",RegExpPrototype=RegExp.prototype,nativeToString=RegExpPrototype[TO_STRING],NOT_GENERIC=fails$c((function(){return"/a/b"!=nativeToString.call({source:"a",flags:"b"})})),INCORRECT_NAME=PROPER_FUNCTION_NAME&&nativeToString.name!=TO_STRING;(NOT_GENERIC||INCORRECT_NAME)&&defineBuiltIn$1(RegExp.prototype,TO_STRING,(function(){var e=anObject$1(this);return"/"+$toString(e.source)+"/"+$toString(getRegExpFlags(e))}),{unsafe:!0});var global$6=global$C,fails$b=fails$G,uncurryThis$7=functionUncurryThis,toString$4=toString$d,trim$2=stringTrim.trim,whitespaces$1=whitespaces$3,$parseInt$1=global$6.parseInt,Symbol$2=global$6.Symbol,ITERATOR$2=Symbol$2&&Symbol$2.iterator,hex=/^[+-]?0x/i,exec=uncurryThis$7(hex.exec),FORCED$5=8!==$parseInt$1(whitespaces$1+"08")||22!==$parseInt$1(whitespaces$1+"0x16")||ITERATOR$2&&!fails$b((function(){$parseInt$1(Object(ITERATOR$2))})),numberParseInt=FORCED$5?function(e,t){var r=trim$2(toString$4(e));return $parseInt$1(r,t>>>0||(exec(hex,r)?16:10))}:$parseInt$1,$$a=_export,$parseInt=numberParseInt;$$a({global:!0,forced:parseInt!=numberParseInt},{parseInt:numberParseInt});var internalMetadata={exports:{}},objectGetOwnPropertyNamesExternal={},classof$1=classofRaw$2,toIndexedObject$1=toIndexedObject$b,$getOwnPropertyNames=objectGetOwnPropertyNames.f,arraySlice=arraySliceSimple,windowNames="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],getWindowNames=function(e){try{return $getOwnPropertyNames(e)}catch(e){return arraySlice(windowNames)}};objectGetOwnPropertyNamesExternal.f=function(e){return windowNames&&"Window"==classof$1(e)?getWindowNames(e):$getOwnPropertyNames(toIndexedObject$1(e))};var fails$a=fails$G,arrayBufferNonExtensible=fails$a((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),fails$9=fails$G,isObject$4=isObject$n,classof=classofRaw$2,ARRAY_BUFFER_NON_EXTENSIBLE=arrayBufferNonExtensible,$isExtensible=Object.isExtensible,FAILS_ON_PRIMITIVES$1=fails$9((function(){$isExtensible(1)})),objectIsExtensible=FAILS_ON_PRIMITIVES$1||ARRAY_BUFFER_NON_EXTENSIBLE?function(e){return!!isObject$4(e)&&((!ARRAY_BUFFER_NON_EXTENSIBLE||"ArrayBuffer"!=classof(e))&&(!$isExtensible||$isExtensible(e)))}:$isExtensible,fails$8=fails$G,freezing=!fails$8((function(){return Object.isExtensible(Object.preventExtensions({}))})),$$9=_export,uncurryThis$6=functionUncurryThis,hiddenKeys=hiddenKeys$6,isObject$3=isObject$n,hasOwn$1=hasOwnProperty_1,defineProperty$1=objectDefineProperty.f,getOwnPropertyNamesModule=objectGetOwnPropertyNames,getOwnPropertyNamesExternalModule=objectGetOwnPropertyNamesExternal,isExtensible4=objectIsExtensible,uid=uid$5,FREEZING=freezing,REQUIRED=!1,METADATA=uid("meta"),id=0,setMetadata=function(e){defineProperty$1(e,METADATA,{value:{objectID:"O"+id++,weakData:{}}})},fastKey$1=function(e,t){if(!isObject$3(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!hasOwn$1(e,METADATA)){if(!isExtensible4(e))return"F";if(!t)return"E";setMetadata(e)}return e[METADATA].objectID},getWeakData=function(e,t){if(!hasOwn$1(e,METADATA)){if(!isExtensible4(e))return!0;if(!t)return!1;setMetadata(e)}return e[METADATA].weakData},onFreeze=function(e){return FREEZING&&REQUIRED&&isExtensible4(e)&&!hasOwn$1(e,METADATA)&&setMetadata(e),e},enable=function(){meta.enable=function(){},REQUIRED=!0;var e=getOwnPropertyNamesModule.f,t=uncurryThis$6([].splice),r={};r[METADATA]=1,e(r).length&&(getOwnPropertyNamesModule.f=function(r){for(var n=e(r),i=0,o=n.length;i<o;i++)if(n[i]===METADATA){t(n,i,1);break}return n},$$9({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:getOwnPropertyNamesExternalModule.f}))},meta=internalMetadata.exports={enable:enable,fastKey:fastKey$1,getWeakData:getWeakData,onFreeze:onFreeze};hiddenKeys[METADATA]=!0;var internalMetadataExports=internalMetadata.exports,$$8=_export,global$5=global$C,uncurryThis$5=functionUncurryThis,isForced$1=isForced_1,defineBuiltIn=defineBuiltIn$d,InternalMetadataModule=internalMetadataExports,iterate$1=iterate$4,anInstance$1=anInstance$5,isCallable=isCallable$p,isNullOrUndefined$1=isNullOrUndefined$8,isObject$2=isObject$n,fails$7=fails$G,checkCorrectnessOfIteration=checkCorrectnessOfIteration$3,setToStringTag=setToStringTag$6,inheritIfRequired$1=inheritIfRequired$3,collection$1=function(e,t,r){var n=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),o=n?"set":"add",a=global$5[e],s=a&&a.prototype,c=a,u={},l=function(e){var t=uncurryThis$5(s[e]);defineBuiltIn(s,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!isObject$2(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!isObject$2(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!isObject$2(e))&&t(this,0===e?0:e)}:function(e,r){return t(this,0===e?0:e,r),this})};if(isForced$1(e,!isCallable(a)||!(i||s.forEach&&!fails$7((function(){(new a).entries().next()})))))c=r.getConstructor(t,e,n,o),InternalMetadataModule.enable();else if(isForced$1(e,!0)){var d=new c,h=d[o](i?{}:-0,1)!=d,f=fails$7((function(){d.has(1)})),p=checkCorrectnessOfIteration((function(e){new a(e)})),y=!i&&fails$7((function(){for(var e=new a,t=5;t--;)e[o](t,t);return!e.has(-0)}));p||((c=t((function(e,t){anInstance$1(e,s);var r=inheritIfRequired$1(new a,e,c);return isNullOrUndefined$1(t)||iterate$1(t,r[o],{that:r,AS_ENTRIES:n}),r}))).prototype=s,s.constructor=c),(f||y)&&(l("delete"),l("has"),n&&l("get")),(y||h)&&l(o),i&&s.clear&&delete s.clear}return u[e]=c,$$8({global:!0,constructor:!0,forced:c!=a},u),setToStringTag(c,e),i||r.setStrong(c,e,n),c},create$1=objectCreate,defineBuiltInAccessor=defineBuiltInAccessor$5,defineBuiltIns=defineBuiltIns$2,bind$1=functionBindContext,anInstance=anInstance$5,isNullOrUndefined=isNullOrUndefined$8,iterate=iterate$4,defineIterator$1=iteratorDefine,createIterResultObject$1=createIterResultObject$3,setSpecies=setSpecies$3,DESCRIPTORS$1=descriptors,fastKey=internalMetadataExports.fastKey,InternalStateModule$1=internalState,setInternalState$1=InternalStateModule$1.set,internalStateGetterFor=InternalStateModule$1.getterFor,collectionStrong$1={getConstructor:function(e,t,r,n){var i=e((function(e,i){anInstance(e,o),setInternalState$1(e,{type:t,index:create$1(null),first:void 0,last:void 0,size:0}),DESCRIPTORS$1||(e.size=0),isNullOrUndefined(i)||iterate(i,e[n],{that:e,AS_ENTRIES:r})})),o=i.prototype,a=internalStateGetterFor(t),s=function(e,t,r){var n,i,o=a(e),s=c(e,t);return s?s.value=r:(o.last=s={index:i=fastKey(t,!0),key:t,value:r,previous:n=o.last,next:void 0,removed:!1},o.first||(o.first=s),n&&(n.next=s),DESCRIPTORS$1?o.size++:e.size++,"F"!==i&&(o.index[i]=s)),e},c=function(e,t){var r,n=a(e),i=fastKey(t);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key==t)return r};return defineBuiltIns(o,{clear:function(){for(var e=a(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,DESCRIPTORS$1?e.size=0:this.size=0},delete:function(e){var t=this,r=a(t),n=c(t,e);if(n){var i=n.next,o=n.previous;delete r.index[n.index],n.removed=!0,o&&(o.next=i),i&&(i.previous=o),r.first==n&&(r.first=i),r.last==n&&(r.last=o),DESCRIPTORS$1?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=a(this),n=bind$1(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!c(this,e)}}),defineBuiltIns(o,r?{get:function(e){var t=c(this,e);return t&&t.value},set:function(e,t){return s(this,0===e?0:e,t)}}:{add:function(e){return s(this,e=0===e?0:e,e)}}),DESCRIPTORS$1&&defineBuiltInAccessor(o,"size",{configurable:!0,get:function(){return a(this).size}}),i},setStrong:function(e,t,r){var n=t+" Iterator",i=internalStateGetterFor(t),o=internalStateGetterFor(n);defineIterator$1(e,t,(function(e,t){setInternalState$1(this,{type:n,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?createIterResultObject$1("keys"==t?r.key:"values"==t?r.value:[r.key,r.value],!1):(e.target=void 0,createIterResultObject$1(void 0,!0))}),r?"entries":"values",!r,!0),setSpecies(t)}},collection=collection$1,collectionStrong=collectionStrong$1;collection("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),collectionStrong);var charAt$1=stringMultibyte.charAt,toString$3=toString$d,InternalStateModule=internalState,defineIterator=iteratorDefine,createIterResultObject=createIterResultObject$3,STRING_ITERATOR="String Iterator",setInternalState=InternalStateModule.set,getInternalState=InternalStateModule.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(e){setInternalState(this,{type:STRING_ITERATOR,string:toString$3(e),index:0})}),(function(){var e,t=getInternalState(this),r=t.string,n=t.index;return n>=r.length?createIterResultObject(void 0,!0):(e=charAt$1(r,n),t.index+=e.length,createIterResultObject(e,!1))}));var global$4=global$C,DOMIterables=domIterables,DOMTokenListPrototype=domTokenListPrototype,ArrayIteratorMethods=es_array_iterator,createNonEnumerableProperty=createNonEnumerableProperty$8,wellKnownSymbol$2=wellKnownSymbol$m,ITERATOR$1=wellKnownSymbol$2("iterator"),TO_STRING_TAG=wellKnownSymbol$2("toStringTag"),ArrayValues=ArrayIteratorMethods.values,handlePrototype=function(e,t){if(e){if(e[ITERATOR$1]!==ArrayValues)try{createNonEnumerableProperty(e,ITERATOR$1,ArrayValues)}catch(t){e[ITERATOR$1]=ArrayValues}if(e[TO_STRING_TAG]||createNonEnumerableProperty(e,TO_STRING_TAG,t),DOMIterables[t])for(var r in ArrayIteratorMethods)if(e[r]!==ArrayIteratorMethods[r])try{createNonEnumerableProperty(e,r,ArrayIteratorMethods[r])}catch(t){e[r]=ArrayIteratorMethods[r]}}};for(var COLLECTION_NAME in DOMIterables)handlePrototype(global$4[COLLECTION_NAME]&&global$4[COLLECTION_NAME].prototype,COLLECTION_NAME);handlePrototype(DOMTokenListPrototype,"DOMTokenList");var global$3=global$C,path$1=global$3,uncurryThis$4=functionUncurryThis,thisNumberValue$2=uncurryThis$4(1..valueOf),$$7=_export,IS_PURE=isPure,DESCRIPTORS=descriptors,global$2=global$C,path=path$1,uncurryThis$3=functionUncurryThis,isForced=isForced_1,hasOwn4=hasOwnProperty_1,inheritIfRequired=inheritIfRequired$3,isPrototypeOf=objectIsPrototypeOf,isSymbol=isSymbol$5,toPrimitive=toPrimitive$3,fails$6=fails$G,getOwnPropertyNames9=objectGetOwnPropertyNames.f,getOwnPropertyDescriptor11=objectGetOwnPropertyDescriptor.f,defineProperty12=objectDefineProperty.f,thisNumberValue$1=thisNumberValue$2,trim$1=stringTrim.trim,NUMBER="Number",NativeNumber=global$2[NUMBER];path[NUMBER];var NumberPrototype=NativeNumber.prototype,TypeError$1=global$2.TypeError,stringSlice$1=uncurryThis$3("".slice),charCodeAt=uncurryThis$3("".charCodeAt),toNumeric=function(e){var t=toPrimitive(e,"number");return"bigint"==typeof t?t:toNumber(t)},toNumber=function(e){var t,r,n,i,o,a,s,c,u=toPrimitive(e,"number");if(isSymbol(u))throw TypeError$1("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=trim$1(u),43===(t=charCodeAt(u,0))||45===t){if(88===(r=charCodeAt(u,2))||120===r)return NaN}else if(48===t){switch(charCodeAt(u,1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+u}for(a=(o=stringSlice$1(u,2)).length,s=0;s<a;s++)if((c=charCodeAt(o,s))<48||c>i)return NaN;return parseInt(o,n)}return+u},FORCED$4=isForced(NUMBER,!NativeNumber(" 0o1")||!NativeNumber("0b1")||NativeNumber("+0x1")),calledWithNew=function(e){return isPrototypeOf(NumberPrototype,e)&&fails$6((function(){thisNumberValue$1(e)}))},NumberWrapper=function(e){var t=arguments.length<1?0:NativeNumber(toNumeric(e));return calledWithNew(this)?inheritIfRequired(Object(t),this,NumberWrapper):t};NumberWrapper.prototype=NumberPrototype,FORCED$4&&!IS_PURE&&(NumberPrototype.constructor=NumberWrapper),$$7({global:!0,constructor:!0,wrap:!0,forced:FORCED$4},{Number:NumberWrapper});var copyConstructorProperties=function(e,t){for(var r,n=DESCRIPTORS?getOwnPropertyNames9(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),i=0;n.length>i;i++)hasOwn4(t,r=n[i])&&!hasOwn4(e,r)&&defineProperty12(e,r,getOwnPropertyDescriptor11(t,r))};(FORCED$4||IS_PURE)&&copyConstructorProperties(path[NUMBER],NativeNumber);var global$1=global$C,fails$5=fails$G,uncurryThis$2=functionUncurryThis,toString$2=toString$d,trim2=stringTrim.trim,whitespaces=whitespaces$3,charAt=uncurryThis$2("".charAt),$parseFloat$1=global$1.parseFloat,Symbol$1=global$1.Symbol,ITERATOR=Symbol$1&&Symbol$1.iterator,FORCED$3=1/$parseFloat$1(whitespaces+"-0")!=-1/0||ITERATOR&&!fails$5((function(){$parseFloat$1(Object(ITERATOR))})),numberParseFloat=FORCED$3?function(e){var t=trim2(toString$2(e)),r=$parseFloat$1(t);return 0===r&&"-"==charAt(t,0)?-0:r}:$parseFloat$1,$$6=_export,$parseFloat=numberParseFloat;$$6({global:!0,forced:parseFloat!=numberParseFloat},{parseFloat:numberParseFloat});var createTypedArrayConstructor=typedArrayConstructorExports;createTypedArrayConstructor("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var SPPED_CACHE="danger_d_speed";function convert32ToC64(e){var t=e.toString(16);return t.length<=8?{high:0,low:e}:{high:parseInt(t.substr(0,t.length-8),16),low:parseInt(t.substr(t.length-8),16)}}var BaseAbr=function(){function e(t,r,n,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{logger:function(){},openLog:!1};_classCallCheck$4(this,e),this.bitrate=r,this.segment_duration=i||5e3,this.logger=o.logger,this.openLog=o.openLog,this.cdnHost=t.cdnHost,this._loadedPromise=new ProxyPromise$1,this._wasmPromise=new ProxyPromise$1,this.config=t,this.autoBitrateOpts=t.autoBitrateOpts||{},this.stall_penalty=this.autoBitrateOpts.stall_penalty||11,this.switch_penalty=this.autoBitrateOpts.switch_penalty||4,this.interval=this.autoBitrateOpts.interval||1e3;var a=t.progressTimer||1e3,s=this.autoBitrateOpts.startInterval||a;this.initInterval=.8*s,this._prealodMethod=t.preloadmethod||0,this._videoWidth=0,this._videoHeight=0,this._hasDeviceInfoChanged=!0,this.updateMediaInfos(n,!1)}return _createClass$4(e,[{key:"onLoadWasm",value:function(){var e=this,t=this.module={onRuntimeInitialized:function(){e._wasmPromise.resolve()}};return(0,this.autoBitrateOpts.module)(t),this._wasmPromise}},{key:"updateMediaInfos",value:function(e){var t=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._heightToDefitionConfig=new Map,this._bitrateToDefitionConfig=new Map,e?(this.mediaInfos=e,this.mediaInfos.dynamic_video_list.forEach((function(e){t._heightToDefitionConfig.set(e.vheight,e),t._bitrateToDefitionConfig.set(e.bitrate,e)}))):r&&console.error("baseAbr mediaInfos null")}},{key:"parseMPD",value:function(){if(this.setDebugModel(this.openLog),this.mediaInfos){this.logger("mediaInfos",this.mediaInfos);try{for(var e=[],t=this.mediaInfos.dynamic_video_list,r=0;r<t.length;r++){var n=t[r];e.push({stream_id:"s".concat(r),bandwidth:n.bitrate||n.bandwidth,width:n.vwidth||n.width,height:n.vheight||n.height,codec:n.codecs||n.codec_type||"h264",frame_rate:Number(n.fps)||-1,segment_duration:this.segment_duration})}var i={v_adaptation:e},o=JSON.stringify(i);this.module.ccall("parseMPD","null",["string"],[o])}catch(e){}}else console.warn("mediaInfos is null")}},{key:"_getDefautSpeed",value:function(e){var t=0,r=window.navigator.connection;if(r&&r.downlink)t=1024*navigator.connection.downlink/8,this.logger("initSpeed connect",t);else try{t=parseFloat(proxyLocalStorage$1.getItem(SPPED_CACHE))||0,this.logger("initSpeed connect",t)}catch(e){}return 0===t&&(t=e&&e.historyAvspeed||0,this.logger("initSpeed history",t)),t}},{key:"setDebugModel",value:function(e){this.module._setDebugModel(e)}},{key:"updateBitrate",value:function(e){this.bitrate=e}},{key:"_updatePreloadSupplier",value:function(e,t){this.module._updatePreloadSupplier(e,t)}},{key:"updatePreloadSupplier",value:function(e){var t=this._getDefautSpeed();this._updatePreloadSupplier(t,e)}},{key:"getPreloadBitrate",value:function(){var e,t=null,r=[];try{this.logger("preloadMethod",this._prealodMethod),e=this.module._getPreloadBitrate(this._prealodMethod);for(var n=0;n<5;n++)r.push(this.module.HEAP32[e/Int32Array.BYTES_PER_ELEMENT+n]);var i={bitrate:r[0],pduration:r[1],preloadType:r[2],size:r[3],mediaType:r[4]};return this.logger("getPreloadBitrate",i),i}catch(e){t=null,console.log("getPreloadBitrate",e)}finally{this.module._free(e)}return t}},{key:"_updateDeviceInfo",value:function(e){try{if(this._hasDeviceInfoChanged){var t=window.devicePixelRatio||1;this.module._updateDeviceInfo(this._videoWidth||Number(this.config.width),this._videoHeight||Number(this.config.height),t,e||-1)}this._hasDeviceInfoChanged=!1}catch(e){console.log("_updateDeviceInfo")}}},{key:"preload",value:function(e){this.parseMPD(),this.updatePreloadSupplier(e),this._updateDeviceInfo(-1);var t=window.devicePixelRatio||1;return this.logger("baseAbr updateDeviceInfo width",this._videoWidth||Number(this.config.width),"height",this._videoHeight||Number(this.config.height),"dpr",t),this.getPreloadBitrate()}}]),e}();BaseAbr.SPPED_CACHE=SPPED_CACHE;var $$5=_export,getBuiltIn=getBuiltIn$a,apply=functionApply,bind4=functionBind,aConstructor=aConstructor$3,anObject=anObject$i,isObject$1=isObject$n,create7=objectCreate,fails$4=fails$G,nativeConstruct=getBuiltIn("Reflect","construct"),ObjectPrototype=Object.prototype,push$1=[].push,NEW_TARGET_BUG=fails$4((function(){function e(){}return!(nativeConstruct((function(){}),[],e)instanceof e)})),ARGS_BUG=!fails$4((function(){nativeConstruct((function(){}))})),FORCED$2=NEW_TARGET_BUG||ARGS_BUG;function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf(e,t)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}$$5({target:"Reflect",stat:!0,forced:FORCED$2,sham:FORCED$2},{construct:function(e,t){aConstructor(e),anObject(t);var r=arguments.length<3?e:aConstructor(arguments[2]);if(ARGS_BUG&&!NEW_TARGET_BUG)return nativeConstruct(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return apply(push$1,n,t),new(apply(bind4,e,n))}var i=r.prototype,o=create7(isObject$1(i)?i:ObjectPrototype),a=apply(e,o,t);return isObject$1(a)?a:o}});var $$4=_export,toObject$1=toObject$a,nativeKeys=objectKeys$2,fails$3=fails$G,FAILS_ON_PRIMITIVES=fails$3((function(){nativeKeys(1)}));$$4({target:"Object",stat:!0,forced:FAILS_ON_PRIMITIVES},{keys:function(e){return nativeKeys(toObject$1(e))}});var $$3=_export,uncurryThis$1=functionUncurryThis,aCallable=aCallable$c,toObject=toObject$a,lengthOfArrayLike$1=lengthOfArrayLike$d,deletePropertyOrThrow=deletePropertyOrThrow$2,toString$1=toString$d,fails$2=fails$G,internalSort=arraySort,arrayMethodIsStrict=arrayMethodIsStrict$6,FF=engineFfVersion,IE_OR_EDGE=engineIsIeOrEdge,V8=engineV8Version,WEBKIT=engineWebkitVersion,test=[],nativeSort=uncurryThis$1(test.sort),push=uncurryThis$1(test.push),FAILS_ON_UNDEFINED=fails$2((function(){test.sort(void 0)})),FAILS_ON_NULL=fails$2((function(){test.sort(null)})),STRICT_METHOD=arrayMethodIsStrict("sort"),STABLE_SORT=!fails$2((function(){if(V8)return V8<70;if(!(FF&&FF>3)){if(IE_OR_EDGE)return!0;if(WEBKIT)return WEBKIT<603;var e,t,r,n,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)test.push({k:t+n,v:r})}for(test.sort((function(e,t){return t.v-e.v})),n=0;n<test.length;n++)t=test[n].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}})),FORCED$1=FAILS_ON_UNDEFINED||!FAILS_ON_NULL||!STRICT_METHOD||!STABLE_SORT,getSortCompare=function(e){return function(t,r){return void 0===r?-1:void 0===t?1:void 0!==e?+e(t,r)||0:toString$1(t)>toString$1(r)?1:-1}};$$3({target:"Array",proto:!0,forced:FORCED$1},{sort:function(e){void 0!==e&&aCallable(e);var t=toObject(this);if(STABLE_SORT)return void 0===e?nativeSort(t):nativeSort(t,e);var r,n,i=[],o=lengthOfArrayLike$1(t);for(n=0;n<o;n++)n in t&&push(i,t[n]);for(internalSort(i,getSortCompare(e)),r=lengthOfArrayLike$1(i),n=0;n<r;)t[n]=i[n++];for(;n<o;)deletePropertyOrThrow(t,n++);return t}});var fails$1=fails$G,wellKnownSymbol$1=wellKnownSymbol$m,V8_VERSION=engineV8Version,SPECIES$1=wellKnownSymbol$1("species"),arrayMethodHasSpeciesSupport$2=function(e){return V8_VERSION>=51||!fails$1((function(){var t=[];return(t.constructor={})[SPECIES$1]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$$2=_export,$map=arrayIteration.map,arrayMethodHasSpeciesSupport$1=arrayMethodHasSpeciesSupport$2,HAS_SPECIES_SUPPORT$1=arrayMethodHasSpeciesSupport$1("map");$$2({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$1},{map:function(e){return $map(this,e,arguments.length>1?arguments[1]:void 0)}});var $$1=_export,isArray4=isArray$3,isConstructor7=isConstructor$3,isObject=isObject$n,toAbsoluteIndex=toAbsoluteIndex$8,lengthOfArrayLike=lengthOfArrayLike$d,toIndexedObject=toIndexedObject$b,createProperty=createProperty$2,wellKnownSymbol=wellKnownSymbol$m,arrayMethodHasSpeciesSupport=arrayMethodHasSpeciesSupport$2,nativeSlice=arraySlice$9,HAS_SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("slice"),SPECIES=wellKnownSymbol("species"),$Array=Array,max=Math.max;$$1({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT},{slice:function(e,t){var r,n,i,o=toIndexedObject(this),a=lengthOfArrayLike(o),s=toAbsoluteIndex(e,a),c=toAbsoluteIndex(void 0===t?a:t,a);if(isArray4(o)&&(r=o.constructor,(isConstructor7(r)&&(r===$Array||isArray4(r.prototype))||isObject(r)&&null===(r=r[SPECIES]))&&(r=void 0),r===$Array||void 0===r))return nativeSlice(o,s,c);for(n=new(void 0===r?$Array:r)(max(c-s,0)),i=0;s<c;s++,i++)s in o&&createProperty(n,i,o[s]);return n.length=i,n}});var toIntegerOrInfinity$1=toIntegerOrInfinity$9,toString8=toString$d,requireObjectCoercible=requireObjectCoercible$8,$RangeError$1=RangeError,stringRepeat=function(e){var t=toString8(requireObjectCoercible(this)),r="",n=toIntegerOrInfinity$1(e);if(n<0||n==1/0)throw $RangeError$1("Wrong number of repetitions");for(;n>0;(n>>>=1)&&(t+=t))1&n&&(r+=t);return r},$=_export,uncurryThis=functionUncurryThis,toIntegerOrInfinity=toIntegerOrInfinity$9,thisNumberValue=thisNumberValue$2,$repeat=stringRepeat,fails=fails$G,$RangeError=RangeError,$String=String,floor=Math.floor,repeat3=uncurryThis($repeat),stringSlice=uncurryThis("".slice),nativeToFixed=uncurryThis(1..toFixed),pow=function(e,t,r){return 0===t?r:t%2==1?pow(e,t-1,r*e):pow(e*e,t/2,r)},log=function(e){for(var t=0,r=e;r>=4096;)t+=12,r/=4096;for(;r>=2;)t+=1,r/=2;return t},multiply=function(e,t,r){for(var n=-1,i=r;++n<6;)i+=t*e[n],e[n]=i%1e7,i=floor(i/1e7)},divide=function(e,t){for(var r=6,n=0;--r>=0;)n+=e[r],e[r]=floor(n/t),n=n%t*1e7},dataToString=function(e){for(var t=6,r="";--t>=0;)if(""!==r||0===t||0!==e[t]){var n=$String(e[t]);r=""===r?n:r+repeat3("0",7-n.length)+n}return r},FORCED=fails((function(){return"0.000"!==nativeToFixed(8e-5,3)||"1"!==nativeToFixed(.9,0)||"1.25"!==nativeToFixed(1.255,2)||"1000000000000000128"!==nativeToFixed(0xde0b6b3a7640080,0)}))||!fails((function(){nativeToFixed({})}));function _createSuper(e){var t=_isNativeReflectConstruct();return function(){var r,n=_getPrototypeOf(e);if(t){var i=_getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn(this,r)}}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}$({target:"Number",proto:!0,forced:FORCED},{toFixed:function(e){var t,r,n,i,o=thisNumberValue(this),a=toIntegerOrInfinity(e),s=[0,0,0,0,0,0],c="",u="0";if(a<0||a>20)throw $RangeError("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return $String(o);if(o<0&&(c="-",o=-o),o>1e-21)if(r=(t=log(o*pow(2,69,1))-69)<0?o*pow(2,-t,1):o/pow(2,t,1),r*=4503599627370496,(t=52-t)>0){for(multiply(s,0,r),n=a;n>=7;)multiply(s,1e7,0),n-=7;for(multiply(s,pow(10,n,1),0),n=t-1;n>=23;)divide(s,1<<23),n-=23;divide(s,1<<n),multiply(s,1,1),divide(s,2),u=dataToString(s)}else multiply(s,0,r),multiply(s,1<<-t,0),u=dataToString(s)+repeat3("0",a);return u=a>0?c+((i=u.length)<=a?"0."+repeat3("0",a-i)+u:stringSlice(u,0,i-a)+"."+stringSlice(u,i-a)):c+u}});var ABR_EVENTS={ABR_CHANGE:"ABR_CHANGE_A",ABR_UPDATE_SPEC:"ABR_UPDATE_SPEC",START_ABR:"START_ABR",UPDATE_AUTO_DESC:"UPDATE_AUTO_DESC",ABR_START_PROGRESS:"ABR_START_PROGRESS",MAX_BUFFER_CHANGE:"MAX_BUFFER_CHANGE"},INIT_BIRTATE=0,MIN_WAITIONG=200,SEEKING_STATE={SEEK_NO:0,SEEK_FORWARD:1,SEEK_BACKWORD:-1},STALL_STATE={STALL_NO:0,STALL:1},AVG_ARGS={PLAYBACK_BITRATE:"avg_play_bitrate",DOWNLOAD_BITRATE:"avg_download_bitrate",DOWNLOAD_NETWORK_SPEED:"avg_download_speed",PREDICT_NETWORK_SPEED:"avg_predict_speed",BUFFER_LENGTH:"avg_buffer_length",QOE:"avg_qoe"},ABR=function(e){_inherits(r,BaseAbr);var t=_createSuper(r);function r(e,n,i,o,a){var s,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{logger:function(){},openLog:!1};_classCallCheck$4(this,r),(s=t.call(this,n,i,o,a,c)).player=e,s.timerId=0,s.isOpenAutoDefi=!!s.autoBitrateOpts.isOpenAutoDefi,s.onPlayrateChange=s._onPlayrateChange.bind(_assertThisInitialized(s)),s.onPlay=s._onPlay.bind(_assertThisInitialized(s)),s._stop=s.stop.bind(_assertThisInitialized(s)),s._bufferRange=new Map,s._sortedBufferRange=[],s._lastCheckResolutionStamp=0,s._currentDefinition=null,s._isSeeking=!1,s._waitingStartTime=0,s._stallCount=0,s._seekState=SEEKING_STATE.SEEK_NO,s._stallState=STALL_STATE.STALL_NO,s._videoCurrentTime=0,s.listeners=[{evt:"playbackrateChange",handler:s.onPlayrateChange},{evt:"ended",handler:s._stop},{evt:"error",handler:s._stop},{evt:"timeupdate",handler:s._onTimeUpdate.bind(_assertThisInitialized(s))},{evt:"addVideoBufferEnd",handler:s._bufferRangeUpdate.bind(_assertThisInitialized(s))},{evt:"canplay",handler:s._updateAutoDesc.bind(_assertThisInitialized(s))},{evt:"play",handler:s._onplayStart.bind(_assertThisInitialized(s))},{evt:ABR_EVENTS.MAX_BUFFER_CHANGE,handler:s._onMaxBufferChange.bind(_assertThisInitialized(s))},{evt:"seeking",handler:s._onSeeking.bind(_assertThisInitialized(s))},{evt:"seeked",handler:s._onSeekEnd.bind(_assertThisInitialized(s))},{evt:"waiting",handler:s._onWaiting.bind(_assertThisInitialized(s))},{evt:"playing",handler:s._onPlaying.bind(_assertThisInitialized(s))}],s._hasStart=!1,s.listeners.forEach((function(e){var t=e.evt,r=e.handler;s.player.on(t,r)})),s._isPaused=!1,s._hasAddFrament=!1,s._eventInfo={local_time_ms:0,internet_speed:0,buffer_length:0,last_bitrate:0,now_bitrate:0,play_speed:1},s._bitrateSet=[],s._generalInfo={},s._currentInAbr=!1,s._hasCalcTimelineLog=!1,s._abr_play_info={start_play_time_ms:0,is_hint:0,playback_info:{internet_speed_record:[],play_bitrate_record:[],buffer_length_record:[],play_speed_record:[],qoe_record:[],qoe_a_record:[],qoe_b_record:[],qoe_c_record:[]}},s._abrMethod=s.autoBitrateOpts.method||0,s.logger("abr: constructor"),s._loopInterval=s.initInterval,s._tickCount=0,s._fps=30,FpsDetection.install(),s.startTime=performance.now(),s.logger("time abr",(new Date).getTime()),s._maxCacheTimeVideo=s.config.maxBufferLength||s.config.preloadTime||50,s._maxCacheTimeAudio=s._maxCacheTimeVideo,s._prevDefinitionItem=null,s._currentItem=null,s._switchCount=0,s._switchBitrate=0,s._avgStatItems={};for(var u=Object.keys(AVG_ARGS),l=0;l<u.length;l++){var d=u[l],h=AVG_ARGS[d];s._avgStatItems[h]=new AvgStat}return s._qoeArgs=[0,0,0,0],s._abrUsed=-1,s._abrAlwaysOn=1,s._prelaodInfo=null,s._hasLogStartInfo=!1,s._hasExecuteAbrAlgo=!1,s._lastExecuteTimeInMs=0,s}return _createClass$4(r,[{key:"init",value:function(e){return this._mediaList=e,this.isOpenAutoDefi?this.onLoadWasm():this._wasmPromise.resolve(),this._wasmPromise}},{key:"execute",value:function(){return this.listenSize(),this.initFps(),this.onWinElemSizeChange(),this.onPlay()}},{key:"_onSeeking",value:function(){this._isSeeking=!0,this.player.currentTime<this._videoCurrentTime?this._seekState=SEEKING_STATE.SEEK_BACKWORD:this._seekState=SEEKING_STATE.SEEK_FORWARD,this.logger("seekState",this._seekState)}},{key:"_onSeekEnd",value:function(){this._isSeeking=!1}},{key:"_onWaiting",value:function(){var e=this;this._isSeeking||this._waitingStartTime>0||(this._waitingStartTime=(new Date).getTime(),this._stallId=setTimeout((function(){clearTimeout(e._stallId),e._stallCount++,e._stallState=STALL_STATE.STALL}),MIN_WAITIONG))}},{key:"_onPlaying",value:function(){this._waitingStartTime=0,this._stallState=STALL_STATE.STALL_NO,clearTimeout(this._stallId)}},{key:"initFps",value:function(){this.fpsDetection=new FpsDetection,this.fpsDetection.start(),this._fps=this.fpsDetection.fps,this._hasDeviceInfoChanged=!0}},{key:"listenSize",value:function(){this.mediaElem=this.player.video,this._onWinSizeChange=debounce(this.onWinElemSizeChange.bind(this),1e3,!1),window.addEventListener("resize",this._onWinSizeChange)}},{key:"onWinElemSizeChange",value:function(){if(this.mediaElem){var e=this.mediaElem.getBoundingClientRect();this._videoWidth=Math.floor(e.width),this._videoHeight=Math.floor(e.height),this._hasDeviceInfoChanged=!0}}},{key:"_onMaxBufferChange",value:function(e){var t=e.videoCacheTime,r=e.audioCacheTime;this._maxCacheTimeAudio=r,this._maxCacheTimeVideo=t}},{key:"_onTimeUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._sortedBufferRange&&0!==this._sortedBufferRange.length&&this._currentInAbr){this._videoCurrentTime=this.player.currentTime;var r=Date.now();if(!(r-this._lastCheckResolutionStamp<1e3&&0!==this._lastCheckResolutionStamp)||t){this._lastCheckResolutionStamp=r;for(var n=this.player.currentTime,i=0,o=this._sortedBufferRange.length-1,a=null;i<=o;){var s=Math.floor(i+(o-i)/2),c=this._sortedBufferRange[s];if(n<c.start)o=s-1;else{if(!(n>=c.end)){a=c;break}i=s+1}}if(a){var u=this._bitrateToDefitionConfig.get(a.bandwidth),l=u&&u.definition;if(this._currentDefinition===l&&!t||!l)return void(l||this.logger("error defintion, mpd配置与接口配置不一致"));this._currentDefinition=l,this._prevDefinitionItem=this._currentItem,this._currentFps=u.fps,this._currentItem=u,this._emitAutoDescChange(l,!1,this._currentFps,u)}}}}},{key:"_emitAutoDescChange",value:function(e,t,r,n){console.log("[ABR],emitAutoDescChange, definition, ",e,",item,",n,",pre_item,",this._prevDefinitionItem),this.player.emit(ABR_EVENTS.UPDATE_AUTO_DESC,{definition:e,reset:t,fps:r,item:n,pre_item:this._prevDefinitionItem})}},{key:"_onplayStart",value:function(){this._hasStart=!0,this.logger("onplaystart")}},{key:"_updateAutoDesc",value:function(){var e=this;this._currentInAbr&&this._currentDefinition&&(this._updateId=setTimeout((function(){clearTimeout(e._updateId),e._emitAutoDescChange(e._currentDefinition,!1,e._currentFps,e._currentItem)}),0))}},{key:"_bufferRangeUpdate",value:function(e){if(void 0!==e.start){null===this._currentItem&&this._onTimeUpdate(null,!0);var t=e.start;this._hasAddFrament=!0,this._bufferRange.set(t,e);var r=_toConsumableArray(this._bufferRange.values());this._sortedBufferRange=r.sort((function(e,t){return e.start-t.start})),this.avgStat(AVG_ARGS.DOWNLOAD_BITRATE,e.bandwidth)}}},{key:"_onPlayrateChange",value:function(){this.module&&this.updateBufferInfo()}},{key:"_onPlay",value:function(){var e=this;if(!this.isOpenAutoDefi)return this.logger("onPlay"),INIT_BIRTATE;var t=INIT_BIRTATE;try{this.logger("abr: loadeddata"),this.updateSwitchInfo(),this.parseMPD(),this.updateDeviceInfo();var n=r.getIsPlayAutoDefi(this.autoBitrateOpts);if(this.isOpenAutoDefi&&n){this._abrUsed=1;var i=this._getDefautSpeed(this.player);t=this._loopAbr(i),this.start(),this.logger("time abr start prgress",(new Date).getTime()),this.logger("time abr costTime",performance.now()-this.startTime),this.logger("abr onplay"),this.startTimer=setTimeout((function(){e._loopInterval=e.interval,clearTimeout(e.startTimer),e.logger("interval change")}),5e3)}}catch(e){this.logger("abr: loadeddata error",e),this.logger("time abr costTime err",performance.now()-this.startTime)}return t}},{key:"start",value:function(){if(this.logger("abr: start"),this._isPaused=!1,!this._hasCalcTimelineLog){var e=1===Math.floor(100*Math.random());this._abr_play_info.is_hint=e?1:0}this._hasCalcTimelineLog=!0,this._loop()}},{key:"_loop",value:function(){var e=this;this._isPaused||(clearTimeout(this.timerId),this.timerId=setTimeout((function(){if(!e.player.paused||!e.player.config.autoplay&&!e._hasStart){var t=e._hasAddFrament?void 0:e._getDefautSpeed(e.player);e._loopAbr(t)}e._loop()}),this._loopInterval))}},{key:"updateDeviceInfo",value:function(){try{if(this.fpsDetection){var e=this.fpsDetection.fps;e!==this._fps&&(this._fps=e,this._hasDeviceInfoChanged=!0)}this._updateDeviceInfo(this._fps)}catch(e){}}},{key:"updateBufferInfo",value:function(e){var t=this.player.playbackRate,r=this.bufferLength,n=e||Math.floor(this.player.downloadSpeed);return this._tickCount<5&&0===n&&(n=this._getDefautSpeed(this.player),this.logger("initSpeed fix")),this.logger("maxCacheTimeAudio:",this._maxCacheTimeAudio,"maxCacheVideoTime",this._maxCacheTimeVideo,"seekState",this._seekState,"stallState",this._stallState),this.module._updateBufferInfo(t,this._maxCacheTimeAudio,this._maxCacheTimeVideo,r,r,n,this._seekState,this.player.currentTime,this._stallState),this._seekState=SEEKING_STATE.SEEK_NO,this._eventInfo={internet_speed:n,buffer_length:r,last_bitrate:this.bitrate,play_speed:t},this.logger("playRate:",t,"buff:",r,"downloadSpeed:",n),{buffer:r,downloadSpeed:n}}},{key:"updateSwitchInfo",value:function(){var e=(new Date).getTime();this._openTimeMs=e,this._abr_play_info.start_play_time_ms=e;var t=this.player.config.preloadTime||50,r=convert32ToC64(e),n=this.autoBitrateOpts.noStallCheckTime||5,i=this.openLog;this.logger("openTime:",e,"this.logger",i),this.module._updateSwitchInfo(r.low,r.high,n,i,this.stall_penalty,this.switch_penalty);var o=this._mediaList.video,a=o.map((function(e){var t=e.bandwidth,r=e.bitrate;return t||r}));this._bitrateSet=a.map((function(e,t){return{bitrate:e,codecs:o[t].codecs||o[t].codec_type}})),this._generalInfo={max_cache_time:t,bitrate_set:this._bitrateSet,segment_duration:this.segment_duration,preload_info:{},startup_info:{}}}},{key:"updatePreloadCacheInfo",value:function(e){try{this._prelaodInfo=e,this.logger("update preloadInfo",e),e&&e.item_num!==e.items.length&&(this.logger("preloadInfo invalid"),this._prelaodInfo=null)}catch(e){this.logger("updatePreloadCacheInfo",e),this._prelaodInfo=null}}},{key:"updatePreloadLogInfo",value:function(e){this._generalInfo.preload_info=e||{}}},{key:"_updatePreloadInfo",value:function(){try{var e=this.player.getPreloadInfos();if(e){var t=e.preloadInfo,r=e.abr;this.updatePreloadLogInfo(t),r&&this.updatePreloadCacheInfo(t)}if(this.logger("_updatePreloadInfo preloadinfos",e),null!=this._prelaodInfo){var n=JSON.stringify(this._prelaodInfo);this.module.ccall("updatePreloadInfo","null",["string"],[n])}else this.logger("_updatePreloadInfo preloadinfo null, no preload")}catch(e){this.logger("_updatePreloadInfo err",e)}}},{key:"_loopAbr",value:function(e){var t;this._tickCount++;var r=[];try{this.updateDeviceInfo();var n=this.updateBufferInfo(e),i=n.downloadSpeed,o=n.buffer;t=this.module._getPredictedBitrate(this.bitrate,this._abrMethod);for(var a=0;a<7;a++)r.push(this.module.HEAP32[t/Int32Array.BYTES_PER_ELEMENT+a]);var s=r[0],c=1===r[1];this._eventInfo.now_bitrate=s,this._eventInfo.local_time_ms=(new Date).getTime();var u=0;if(s!==this.bitrate&&0!==s){var l=this.bitrate;u=Math.abs(l-s);for(var d=[],h=this.player.video.buffered,f=0;f<h.length;f++)d.push({start:h.start(f),end:h.end(f)});var p=this._videoWidth||Number(this.config.width),y=this._videoHeight||Number(this.config.height),m=(new Date).getTime(),g={speed:"".concat(i," KB/s"),buffer_length:"".concat(o," s"),video_pos:this.player.currentTime,all_buffers:d,seek_state:this._seekState,stall_state:this._stallState,screen_width:p,screen_height:y,dpr:window&&window.devicePixelRatio,playbackRate:this.player.playbackRate,bitrateSet:this._bitrateSet,abrMethod:this._abrMethod,delta:this._hasExecuteAbrAlgo?m-this._lastExecuteTimeInMs:0};this._lastExecuteTimeInMs=m,this._hasExecuteAbrAlgo=!0,this.player.emit(ABR_EVENTS.ABR_CHANGE,this.bitrate,s,c,JSON.stringify(g)),this.logger("abr loop predicte:",s,"willStall:",c,"switchBitrate",u,"cur",l),this.bitrate=s}this._hasLogStartInfo||(this._hasLogStartInfo=!0,this._generalInfo.startup_info={predict_bitrate:s,download_speed:i,screen_width:this._videoWidth||Number(this.config.width),screen_height:this._videoHeight||Number(this.config.height),device_pixel_ratio:window&&window.devicePixelRatio,screen_fps:this._fps,startup_method:this._abrMethod}),this.player.emit("ABR_LOOP"),this.onAbrLoop(i,r[2],u,r.slice(3))}catch(e){this.logger("abr error",e),console.log("error",e)}finally{this.module._free(t)}return this.bitrate}},{key:"stop",value:function(){!0===(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&(this._abrAlwaysOn=-1),clearTimeout(this.timerId),this._isPaused=!0,this.logger("abr: stop")}},{key:"destroy",value:function(){var e=this;this._stop(),this.listeners.forEach((function(t){var r=t.evt,n=t.handler;e.player.off(r,n)})),this.player=null,this._heightToDefitionConfig=null,this._bitrateToDefitionConfig=null,this._bufferRange=null,this._sortedBufferRange=null,this.module=null,clearTimeout(this._stallId),clearTimeout(this._updateId),clearTimeout(this.startTimer),window.removeEventListener("resize",this._onWinSizeChange),this.fpsDetection&&this.fpsDetection.stop(),this.player=null}},{key:"eventInfo",get:function(){return this._eventInfo}},{key:"generalInfo",get:function(){return this._generalInfo}},{key:"bufferLength",get:function(){var e=this.player.getBufferedRange(),t=this.player.video.currentTime,r=e[1]-Math.max(e[0],t);return r=Math.max(0,r).toFixed(2),parseFloat(r)}},{key:"downloadSpeed",get:function(){return Math.floor(this.player.downloadSpeed)}},{key:"nowBitrate",get:function(){return this.bitrate}},{key:"openTimeMs",get:function(){return this._openTimeMs}},{key:"isCurrentInAbr",get:function(){return this._currentInAbr},set:function(e){this._currentInAbr=e}},{key:"onAbrLoop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(this._qoeArgs=n,this._currentItem&&this.avgStat(AVG_ARGS.PLAYBACK_BITRATE,this._currentItem.bitrate),this.avgStat(AVG_ARGS.DOWNLOAD_NETWORK_SPEED,1e3*e*8),this.avgStat(AVG_ARGS.PREDICT_NETWORK_SPEED,t),this.avgStat(AVG_ARGS.BUFFER_LENGTH,this.bufferLength),this.avgStat(AVG_ARGS.QOE,this.getQoeRelValue(0)),r>0&&(this._switchCount++,this._switchBitrate+=r),this._abr_play_info.is_hint){var i=this,o=((new Date).getTime()-this.openTimeMs)/1e3;o=parseFloat(o.toFixed(2)),this._abr_play_info.playback_info.internet_speed_record.push([o,i.downloadSpeed]),this._abr_play_info.playback_info.play_bitrate_record.push([o,i.nowBitrate]),this._abr_play_info.playback_info.buffer_length_record.push([o,i.bufferLength]),this._abr_play_info.playback_info.play_speed_record.push([o,this.player.playbackRate]),this._abr_play_info.playback_info.qoe_record.push([o,this.getQoeRelValue(0)]),this._abr_play_info.playback_info.qoe_a_record.push([o,this.getQoeRelValue(1)]),this._abr_play_info.playback_info.qoe_b_record.push([o,this.getQoeRelValue(2)]),this._abr_play_info.playback_info.qoe_c_record.push([o,this.getQoeRelValue(3)])}}},{key:"getQoeRelValue",value:function(e){return this._qoeArgs[e]/100}},{key:"avgStat",value:function(e,t){var r=this._avgStatItems[e];r&&r.add(t)}},{key:"getAbrPlayInfo",value:function(){return this._abr_play_info}},{key:"updateAbrMethod",value:function(e){this._abrMethod=e}},{key:"getAbrMethod",value:function(){return this._abrMethod}},{key:"getAbrVVStats",value:function(){for(var e={},t=Object.keys(AVG_ARGS),r=0;r<t.length;r++){var n=t[r],i=AVG_ARGS[n],o=this._avgStatItems[i];e[i]=o.avg()}return e.switch_counts=this._switchCount,e.avg_switch_bitrate=0===this._switchCount?0:this._switchBitrate/this._switchCount,e.abr_qoe=this.getQoeRelValue(0),e.abr_qoe_a=this.getQoeRelValue(1),e.abr_qoe_b=this.getQoeRelValue(2),e.abr_qoe_c=this.getQoeRelValue(3),e.abr_method=this._abrMethod,e.abr_used=this._abrUsed,e.abr_always_on=this._abrAlwaysOn,this.logger("abrVVStats",e),e}}],[{key:"getIsPlayAutoDefi",value:function(e){return!!e.isPlayAutoDefi}}]),r}(),AvgStat=function(){function e(){_classCallCheck$4(this,e),this.total=0,this.count=0}return _createClass$4(e,[{key:"add",value:function(e){this.total+=e,this.count++}},{key:"avg",value:function(){if(0===this.count)return 0;var e=this.total/this.count;return Math.floor(e)}}]),e}(),START_TYPES={FIXED:"FIXED",AUTO:"AUTO"},AbrService=function(){function e(t,r){var n=this;_classCallCheck$6(this,e),_defineProperty$4(this,"_onAbrChange",(function(e,t,r,i){var o=n._pluginInst.player,a=n.bitrateMap[e],s=n.bitrateMap[t],c=a.definition,u=s&&s.definition?s.definition:c;console.log("[ABR] _onAbrChange ",c,u),c!==u&&(n._abrSwitchHandler(s),o.emit("ABR_CHANGE",{prev:c,cur:u,prevName:a.definitionName,curName:s.definitionName,abrInfo:i}))})),_defineProperty$4(this,"_onAutoDescChange",(function(e){var t=e.definition,r=e.reset,i=e.fps,o=e.item;n.updateAutoDefiDesc(t,r,i,o)})),this._pluginInst=t;var i=this._pluginInst.config.autoBitrateOpts||{};this.isPlayAutoDefi=ABR.getIsPlayAutoDefi(i),this.isOpenAutoDefi=!!i.isOpenAutoDefi,this.isCurrentAutoDefi=this.isOpenAutoDefi&&this.isPlayAutoDefi,this.bitrateMap={},this.defiIdMap={},this._abrSwitchHandler=r}var t;return _createClass$6(e,[{key:"_destroyAbr",value:function(){var e=this._pluginInst.player;this.abrInstance&&(e&&e.off(ABR_EVENTS.UPDATE_AUTO_DESC,this._onAutoDescChange),this.abrInstance.destroy(),this.abrInstance=null)}},{key:"init",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isOpenAutoDefi){e.next=2;break}return e.abrupt("return",{type:START_TYPES.FIXED});case 2:return r=this._pluginInst,n=r.player,i=r.playerConfig,o=r.config,n.on(ABR_EVENTS.UPDATE_AUTO_DESC,this._onAutoDescChange),this.bitrateMap={},this.defiIdMap={},this.abrInstance=new ABR(n,o,0,{dynamic_video_list:i.definition.list.concat()},5e3,{logger:log$2,openLog:openLog}),e.next=9,this.abrInstance.init(t);case 9:n.on(ABR_EVENTS.ABR_CHANGE,this._onAbrChange),this.abrInstance.isCurrentInAbr=this.isCurrentAutoDefi;case 11:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"execute",value:function(){var e=this.abrInstance.execute();return{bitrate:e,type:-1===e?START_TYPES.FIXED:START_TYPES.AUTO}}},{key:"updateBitrate",value:function(e){this.abrInstance&&this.abrInstance.updateBitrate(e)}},{key:"enable",value:function(){this.abrInstance.start(),this.isCurrentAutoDefi=!0,this.abrInstance.isCurrentInAbr=!0,this.abrInstance._onTimeUpdate(null,!0)}},{key:"disable",value:function(){this.abrInstance&&(this.updateAutoDefiDesc("",!0),this.isCurrentAutoDefi=!1,this.abrInstance.isCurrentInAbr=!1,this.abrInstance.stop(!0))}},{key:"isCurrentInAbr",value:function(){return!!this.abrInstance&&this.abrInstance.isCurrentInAbr}},{key:"updateAutoDefiDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=this._pluginInst,o=i.player,a=(i.config.autoBitrateOpts||{}).autoDefiText||"auto";o.emit("ABR_AUTO_DESC_CHANGE",a,t?void 0:e,r,n)}},{key:"updateAbrCacheData",value:function(){var e=this,t=this._pluginInst,r=t.player,n=t.config,i=t.playerConfig,o=n.autoBitrateOpts||{},a=i.definition.list,s=!1;if(a.forEach((function(t){e.bitrateMap[t.bitrate]={url:t.url,definition:t.definition,definitionName:t.text},e.defiIdMap[t.definition]={bitrate:t.bitrate,definition:t.definition},"auto"!==t.definition&&"自动"!==t.definition||(s=!0)})),this.isOpenAutoDefi,this.isOpenAutoDefi&&!s){var c=o.autoDefiText||"auto",u={definition:"自动",bitrate:r.curDefinition.bitrate,text:c,url:"__auto__",selected:this.isPlayAutoDefi,name:"自动",vwidth:r.curDefinition.vwidth,vheight:r.curDefinition.vheight};i.definition.list.push(u)}}},{key:"destroy",value:function(){this._pluginInst.player.off(ABR_EVENTS.ABR_CHANGE,this._onAbrChange),this._destroyAbr()}}]),e}(),DESTROYED="DESTROYED",REAL_TIME_SPEED_EVENT="real_time_speed",_playerPlayNext=null,_playerStartInit=null,_playerChangeDefinition=null,_playerSwitchUrl=null,CODEC_TYPE={H264:"h264",H265:"h265"},_realTimeSpeed=0,Mp4EncryptPlayer=function(e){_inherits$4(i,BasePlugin);var t,r,n=_createSuper$4(i);function i(e){var t;return _classCallCheck$6(this,i),_defineProperty$4(_assertThisInitialized$4(t=n.call(this,e)),"_replayHook",(function(e){"xgmse-video"===t.player.config.mediaType?t._onReplay():t.useVideoLoad||(t._defInited=!1,t.log("replayHook ",t.playerConfig.url),t.player.video.load(),t.playerStartInit(t.playerConfig.url))})),_defineProperty$4(_assertThisInitialized$4(t),"_retryHook",(function(){var e=_assertThisInitialized$4(t),r=e.player,n=e.playerConfig,i=e.config,o=r.currentTime;if(t.codecType!==CODEC_TYPE.H265||i.supportHevc){t._defInited=!1;var a=t.config,s=a.drm,c=a.kid,u=a.secretKey,l=a.keyValue;if(s||c||u||l)t.initAwManager(),t.playerStartInit(n.url);else{if(t.useVideoLoad=!0,"Array"===util$5.typeOf(n.url)){var d=n.url.length;r.video.src=n.url[d-1].src}else r.video.src=n.url;r.currentTime=o,r.play()}}else t.log("h265 retryHook ",n.vid),t._onDegrade("retry");return!1})),_defineProperty$4(_assertThisInitialized$4(t),"_playHook",(function(e){t._usePaused=!1})),_defineProperty$4(_assertThisInitialized$4(t),"_pauseHook",(function(e){t._usePaused=!0})),_defineProperty$4(_assertThisInitialized$4(t),"abrSwitchURL",function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(r){var n,i,o,a,s,c;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=_assertThisInitialized$4(t),i=n.playerConfig,o=i.definition.list,a=0,s=0;case 4:if(!(s<o.length)){e.next=11;break}if(r.definition!==o[s].definition){e.next=8;break}return a=s,e.abrupt("break",11);case 8:s++,e.next=4;break;case 11:c=t.player.curDefinition,t.changeDefinition(o[a],c,!0);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),_defineProperty$4(_assertThisInitialized$4(t),"changeDefineCanPlay",(function(e,r,n,i){var o=_assertThisInitialized$4(t).player;o.ended?o.currentTime=0:(t.log("[oldChangeDefinition],this._changeDefState,",t._changeDefState),o.currentTime=t._changeDefState?t._changeDefState.currentTime:e,(t._changeDefState?t._changeDefState.paused:r)?o.pause():o.play(),t._changeDefState=null,o.emit(AFTER_DEFINITION_CHANGE,{from:n,to:i}))})),_defineProperty$4(_assertThisInitialized$4(t),"changeDefinition",(function(e,r,n){var i=_assertThisInitialized$4(t),o=i.player,a=i.playerConfig,s=i.mp4;if(r||(r=o.curDefinition),t.useVideoLoad)return"__auto__"===e.url&&(e.url=o.config.definition.list[0].url),void _playerChangeDefinition.call(t.player,e,r);if(t._switchBitRateWay&&!n)return t.log("changeDefinition old"),void t.oldChangeDefinition(e,r);var c="自动"===e.definition||"auto"===e.definition;if(n)t.log("[switchBitrate:ABR], ready to switch bitRate, ",e.bitrate);else{var u=!1;if(c)t._abrService&&t._abrService.enable(),u=!0;else if(t._abrService&&t._abrService.disable(),!e.bitrate||e.bitrate<=0)for(var l=0;l<a.definition.list.length;l++)e.definition===a.definition.list[l].definition&&(e.bitrate=a.definition.list[l].bitrate);o.emit(DEFINITION_CHANGE,{from:r,to:e}),setTimeout((function(){t._abrService&&t._abrService.updateAutoDefiDesc(o.curDefinition.definition,!c)})),u&&(e=o.curDefinition),t.log("[switchBitrate:CBS],switch bitRate, ",e.bitrate)}o.curDefinition=e;var d=o.definitionList.filter((function(e){return e.definition===o.curDefinition.definition}));d.length>0&&(e=d[0]),s&&(t.config.keyValue=e.keyValue,t.config.kid=e.kid,t.config.secretKey=e.secretKey,t.config.drm=e.drm,t.config.getLicenseUrl=e.getLicenseUrl,t._getLicense().then(_asyncToGenerator$2(_regeneratorRuntime$2().mark((function r(){var i,c,u,l,d,h;return _regeneratorRuntime$2().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(a.url=e.url,a.backupURL=e.backupURL,i=0,c=!1,t._abrService&&t._abrService.isCurrentInAbr()?(u=o.getBufferedRange(o.buffered2),(i=u[1])<o.currentTime&&(i=o.currentTime,t.log("bufferRange is invaild,adjust",u,",timeStart,",i)),t.log("[switchBitrate:ABR],switch bufferedList, ",t.player.buffered2?t.player.buffered2.bufferedList:null,",curtime,",o.currentTime,",bufferRange,",u)):(i=o.currentTime,c=!0),(l=s.getFragmentIdx(i))<0&&(l=t._curLoadSegmentIdx),t.log("switchBitrate:point,",l,",startTime,",s.timeRange[l].startTime,",currentTime,",o.currentTime),c&&o.emit("definitionSwitchTime",s.timeRange[l].startTime+1),t.changeState("changeDefinition",{abr:n,fragIndex:l,startTime:s.timeRange[l].startTime,currentTime:o.currentTime}),!s){r.next=14;break}return r.next=13,s.cancelLoading();case 13:s._metaLoading&&(s._metaLoading=!1);case 14:return!((d=o.getBufferedRange(o.buffered))[1]>0&&d[1]-o.currentTime>5)||t._abrService&&t._abrService.isCurrentInAbr()||(t.mse.clearOpqueues(CONTENT_TYPES.VIDEO),t.mse.reuse(o.currentTime+5,d[1])),s.resetFragmentLoadState(l),t._curLoadSegmentIdx=l,r.next=20,t.mp4.changeBitRate(e);case 20:h={width:e.width||e.vwidth,height:e.height||e.vheight},o.emit("RESOLUTION_UPDATE",h);case 22:case"end":return r.stop()}}),r)})))).catch((function(r){console.error(r),r.errorType="GET_LICENSE_ERROR",t.emit("error",r),t.changeState("LICENSE_ERROR",{d:e.definition})})))})),_defineProperty$4(_assertThisInitialized$4(t),"_onVideoError",(function(e){t.log("video err,",e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onPlaying",(function(){t._waitAdjustTimeCnt>0&&t._waitInBufferTimer&&(t._waitAdjustTimeCnt-=1,t.log("[waitInBuffer resume play], waitAdjustTimeCnt,",t._waitAdjustTimeCnt)),clearTimeout(t._waitInBufferTimer),t._waitInBufferTimer=null,t.log("[Index] onPlaying, timeNow,",util.nowTime());var e=_assertThisInitialized$4(t),r=e.mp4,n=e.player,i=t.config.resumePlayWaterLevel;if(r){if(!t.playFlag||n.currentTime<1)t.playFlag=!0;else if(!(r&&r.meta&&r.meta.duration-n.currentTime<=i)&&i>0&&t.playFlag){var o=n.getBufferedRange(n.buffered2);o[1]-n.currentTime<i?(n.paused||(n.pause(),t.log("[!!!!!buffer not rich, pause],time,",util.nowTime(),", currentTime, ",n.currentTime,", bufferEnd,",o[1])),clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=setTimeout(t._onPlaying,i/2*1e3)):n.paused&&(t.log("[!!!!!buffer rich, play],time,",util.nowTime(),", currentTime, ",n.currentTime,", bufferEnd,",o[1]),clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=null,n.play())}}else t.checkResumePlayTimer>0&&(clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=null,n.paused&&n.play())})),_defineProperty$4(_assertThisInitialized$4(t),"_lowDecoder",(function(){var e="function"==typeof t.player.video.getStats?t.player.video.getStats():null;t.log("H265 lowdecode: ".concat(t.playerConfig.vid," "),e,", h265Degrade, ",t.config.h265Degrade),t.config.h265Degrade&&t._onDegrade()})),_defineProperty$4(_assertThisInitialized$4(t),"_onError",(function(e){console.log("H265 onError: ".concat(t.playerConfig.vid," "),e,", h265Degrade, ",t.config.h265Degrade),t._onDegrade(e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onDegrade",(function(e){var r,n,i=_assertThisInitialized$4(t),o=i.player,a=i.playerConfig,s=i.config;o.video.removeEventListener("lowdecode",t._onDegrade),o.video.removeEventListener("error",t._onError),null===(r=t.mp4)||void 0===r||r.destroy();var c=o.currentTime;if(console.log("[h265 degrade], vid,",a.vid,",currtime,",c),t.emit("H265_DEGRADE",{reason:e?"error":"lowdecode",currentTime:c}),null!=s&&s.H264Config){var u=s.H264Config;s.drm=(null==u?void 0:u.drm)||null,s.getLicenseUrl=(null==u?void 0:u.getLicenseUrl)||null,s.kid=(null==u?void 0:u.kid)||null,s.keyValue=(null==u?void 0:u.keyValue)||null,s.secretKey=(null==u?void 0:u.secretKey)||null,s.isEncrypt=(null==u?void 0:u.isEncrypt)||null,s.useEME=(null==u?void 0:u.useEME)||null}var l={mp4encryptplayer:s,mediaType:"video",codecType:CODEC_TYPE.H264};(null==a||null===(n=a.H264DefinitionList)||void 0===n?void 0:n.length)>0?(o.config.definition.list=a.H264DefinitionList,o.config.url=a.H264DefinitionList[0].url,o.config.defaultBitrate=a.H264DefinitionList[0].bitrate,o.config.defaultDefinition=a.H264DefinitionList[0].definition,o.playNext(l),o.once("canplay",(function(){o.currentTime=c}))):(console.error("H265 error,degrade h264 but no h264 url"),t.emit("error",e))})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4MetaReady",(function(e){console.log(">>>>_onMp4MetaReady",util.nowTime()),t.firstFrameTime.metaload=t.mp4.firstFrameTime.metaload,t.firstFrameTime.bitrate=t.player.curDefinition.bitrate;var r=t.playerConfig.vid,n=t._checkMetaInfo(e),i=t.mp4.checkCodecH265();if(t.changeState("MP4_META_READY",{is265:i?1:0}),n)return t.removeAndRejectInitPromise(n),void t._errorHandler(n);try{if(t._initEME(t.mp4,e),t.codecType!==CODEC_TYPE.H265||t.config.supportHevc){if(!(t.player.video instanceof HTMLVideoElement))return void console.error("".concat(t.player.config.mediaType," is not match"));t._initMse(e)}else{if(!i||t.player.video instanceof HTMLVideoElement)return void console.error("[Index] ".concat(r," config_codec ").concat(t.codecType," and meta_codec ").concat(e.videoCodec," is not match or supportHevc is ").concat(t.config.supportHevc));t._initH265MseProxy()}t._initPromise.resolve()}catch(e){t.removeAndRejectInitPromise(e),console.error("[Index] ".concat(r," _initEME error"),e);var o=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.other1,errorMessage:null==e?void 0:e.message,vid:r,mediaError:{code:ERROR_CODES.other1,message:null==e?void 0:e.message}});t._errorHandler(o)}if(t.mp4&&t.mp4.timeRange){var a=[];t.mp4.timeRange.every((function(e){return a.push({startTime:e.startTime,endTime:e.endTime}),!0})),t.emit("KEYFRAMETIME",a)}t._loadData()})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4Error",(function(e){var r=t.playerConfig.vid;console.error("[Index] _onMp4Error",r,e),t.changeState("MP4_ERROR",e),t._initPromise&&"pending"===t._initPromise.state&&t.removeAndRejectInitPromise(e),t._errorHandler(e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4Progress",(function(e){t.emit("progress_event",e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4DataCallBack",(function(){t.mse&&!t.mse.ready&&t.openMSE(),t._isMseInit&&t._onTimeUpdate()})),_defineProperty$4(_assertThisInitialized$4(t),"_updateDrmConfig",(function(e){var r=_assertThisInitialized$4(t),n=r.config,i=r.mp4;e.kid&&n.keyValue?n.drm={clearKeys:_defineProperty$4({},e.kid,n.keyValue)}:!e.kid&&n.keyValue&&(n.useEME=!1),i.useEME=n.useEME;var o=n.drm;n.useEME||(i.kidValue=n.keyValue||(o&&o.clearKeys?o.clearKeys[Object.keys(o.clearKeys)[0]]:null)),t.eme&&o&&o.clearKeys&&n.useEME&&t.eme.updateDrm(o)})),_defineProperty$4(_assertThisInitialized$4(t),"_onVideoTimeUpdate",(function(){t.useVideoLoad||null!==t._requestTimer||!t._offineLine&&t._startProgress(),t.useVideoLoad&&t.checkIfCanPreload()})),_defineProperty$4(_assertThisInitialized$4(t),"_onBufferedReset",(function(e){t.mp4&&t.mp4.videoTrak&&t.mp4.resetFragmentLoadState(0)})),_defineProperty$4(_assertThisInitialized$4(t),"_onOnlineHandler",(function(){t._offineLine=!1;var e=_assertThisInitialized$4(t).config;t.log("online useVideoLoad:",t.useVideoLoad,t._hasStartProgressBack),t.useVideoLoad?t.player.src=e._mainURL:(t._hasStartProgressBack&&t._startProgress(),t._hasStartProgressBack=!1)})),_defineProperty$4(_assertThisInitialized$4(t),"_onOfflineHandler",(function(){t._offineLine=!0,t.log("offline, ",t._hasStartProgress),t._hasStartProgress&&(t._stopProgress(),t._hasStartProgressBack=!0)})),_defineProperty$4(_assertThisInitialized$4(t),"_loadDataSuccess",(function(e){if(!t.isDestroy&&(t.mse||t.mseProxy)){e.state&&t._firstSegState<0&&(t._firstSegState=1),t.log("[loadFragment] _loadDataSuccess ",JSON.stringify(e.context.range),",dataLen,",e.buffer?e.buffer.byteLength:0,e.state),t.firstFrameTime.startload_stmux<0&&(t.firstFrameTime.startload_stmux=t.mp4.firstFrameTime.startMuxTime,t.firstFrameTime.firstmux=t.mp4.firstFrameTime.firstmux),t.firstFrameTime.loadst_loadeddata<0&&(t.firstFrameTime.loaddata=util.nowTime()-t.loadstart);try{e.initSeg&&(t._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&(t.log("no data, must load data"),t._onTimeUpdate()));var r=e.buffer,n=e.state,i=e.context,o=e.videoTrack,a=e.audioTrack;if(t.debugInfo.loadIndx=i?i.fragIndex:-1,t.mse&&n&&(!r||r.byteLength<=0)&&i.fragIndex===t.mp4.timeRange.length-1){var s=t.player.buffered;t.bufferEndTime=s.end(s.length-1),t._isEnded(),t.log("loaded ended !!!==>>>",JSON.stringify(i.range),", fragIndex,",i.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}if(t.mse&&n&&i.fragIndex===t.mp4.timeRange.length-1&&(!r||r.byteLength<=0)){var c=t.player.buffered;t.bufferEndTime=c.end(c.length-1),t._isEnded(),t.log("load ended !!!==>>>",t.playerConfig.vid,JSON.stringify(i.range),", fragIndex,",i.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}if(r&&t.mse){if(r&&r.byteLength>0){t._appendBuffer(CONTENT_TYPES.VIDEO,r,i,n);var u=t.getDataBitRate(i.fragIndex);t.player.emit("addVideoBufferEnd",{start:Math.floor(i.startPts),end:i.endPts,bandwidth:u.bitrate})}}else if(t.mseProxy&&(o&&o.samples.length>0||a&&a.samples.length>0)){var l=o.samples.length>0?o.samples[0].sampleOffset:-1,d=o.samples.length>0?o.samples[o.samples.length-1].sampleOffset:-1,h=a.samples.length>0?a.samples[0].sampleOffset:-1,f=a.samples.length>0?a.samples[a.samples.length-1].sampleOffset:-1;t.log("[livevideo] appendBuffer,index,",i.fragIndex,",range,",JSON.stringify(e.context.range),",videoIdxRange,",l,"-",d,",audioIdxRange,",h,"-",f,", timeRange,",i.timeRange),t.mseProxy.appendBuffer(o,a)}}catch(e){t.changeState("APPEND_DATA_ERROR"),t.log("appendBuffer error",e);var p=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.mse,vid:t.player.config.vid,errorMessage:e.message,mediaError:{code:ERROR_CODES.mse,message:e.message}});t._errorHandler(p)}}})),_defineProperty$4(_assertThisInitialized$4(t),"_onWaiting",(function(){var e=_assertThisInitialized$4(t),r=e.player,n=e.config,i=e.playerConfig;clearTimeout(t._waitInBufferTimer),t._waitInBufferTimer=null;var o=r.currentTime;console.log("[>>>>onWaiting],currentTime, ",o,util.nowTime());var a=r.bufferedPoint;a.end>0&&a.end-r.currentTime>=2&&(t._waitAdjustTimeCnt<n.waitJampBufferMaxCnt?t._waitInBufferTimer=setTimeout((function(){t._waitAdjustTimeCnt++,r.currentTime=r.currentTime+.5,t.log("[waitInBufferTimeout], waitAdjustTimeCnt,",t._waitAdjustTimeCnt,",curtime,",o,util.nowTime())}),n.waitingInBufferTimeOut):t._errorHandler(new Errors(t.player,{errorType:"waitInBuffer",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.onWaitInBufferRange,errorMessage:"onWait_in_buffer",vid:i.vid})))})),_defineProperty$4(_assertThisInitialized$4(t),"_onEnded",(function(){t.log("[player.onEnded], stopProgress"),t.player&&t.off("waiting",t._onWaiting),t._stopProgress()})),_defineProperty$4(_assertThisInitialized$4(t),"_onReplay",(function(){var e=_assertThisInitialized$4(t),r=e.playerConfig,n=e.player;t._reset(),t._init(r.url).then((function(e){var r=e[0],i=e[1];n.video.src=i.url,t._startProgress(),t.mp4=r,t.mse=i,t.log("_replay play"),t.once("canplay",(function(){n.play(),t.on("waiting",t._onWaiting)}))}),(function(e){t.log("_errorHandler6",e),t._errorHandler(e)}))})),_defineProperty$4(_assertThisInitialized$4(t),"_onSeeking",_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var r,n,i,o,a,s,c,u,l,d,h;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.useVideoLoad){e.next=2;break}return e.abrupt("return");case 2:if(r=_assertThisInitialized$4(t),n=r.player,i=r.mp4,o=n.currentTime,t.changeState("seeking",{curTime:o}),t.log("[seekTime], curTime,",o,",buffer,",n.buffered2.bufferedList),i&&i.meta){e.next=8;break}return e.abrupt("return");case 8:if(t.endofstream=!1,i.bufferLoadedPos=-1,i._metaLoading=!1,a=n.bufferedPoint,s=!1,c=0,!(a.end>0)){e.next=23;break}if(s=!0,c=i.getFragmentIdx(a.end),t._curLoadSegmentIdx!==c){e.next=20;break}return t.log("[seeking in buffered range], seek fragIndex is current load segmentIdx",c),e.abrupt("return");case 20:i.seekTime=a.end,c<0&&(c=t._curLoadSegmentIdx),t.log("[seeking in buffered range], seekTime ",o,",bufferRange,",a.start,"-",a.end,", fragIndex,",c);case 23:return s||(i.seekTime=o,(c=i.getFragmentIdx(o))<0&&(c=t._curLoadSegmentIdx),t.log("[seekTime out buffer range], curTime,",o,", Idx,",c),u=_assertThisInitialized$4(t),(l=u.mse)&&l.isFull()&&(d=n.buffered2.bufferedList,h=d[d.length-1],l.clearOpqueues(CONTENT_TYPES.VIDEO),t._checkRemoveSourceBuffer([h.start,h.end],n.currentTime,!0,!0))),e.next=26,i.cancelLoading();case 26:i.resetFragmentLoadState(c),t._curLoadSegmentIdx=c,t._onTimeUpdate(),t._isEnded();case 30:case"end":return e.stop()}}),e)})))),t._pendingPromises=[],t._allInitPromise=new ProxyPromise,t._isInit=!1,t._isEventInit=!1,t.playerId=t.player._pluginInfoId,t.preloader=null,t.gapJumpInst=null,t.log("playerId",t.playerId),t._tickInSeconds=t.config.tickInSeconds,t.awManager=null,t._useVideoLoad=!1,t.mse=null,t.mp4=null,t.eme=null,t._isMseInit=!1,t._awPromise=null,t._corePromise=null,t._initPromise=null,t._hasStartProgress=!1,t._hasStartProgressBack=!1,t._maxBufferLength=t.config.maxBufferLength,t._minBufferLength=t.config.minBufferLength,t._switchBitRateWay=t.config.switchBitRateWay,t._curLoadSegmentIdx=0,t._abrService=null,t._checkRemoveBufferLastTime=util.nowTime(),t.playFlag=!1,t.config.resumePlayWaterLevel=Math.min(t.config.minBufferLength,t.config.resumePlayWaterLevel),t.checkResumePlayTimer=null,t.loadstart=-1,t._loadStartEventTime=-1,t._waitAdjustTimeCnt=0,t._waitInBufferTimer=null,t._firstSegState=-1,t.codecType=t.playerConfig.codecType?t.playerConfig.codecType.toLowerCase():CODEC_TYPE.H264,t.playerConfig.vtype&&(t._vtype=t.playerConfig.vtype.toUpperCase()),t.firstFrameTime={newplayer:util.nowTime(),newplayer_initkernel:-1,initkernel_initmp4:-1,initmse_sbopen:-1,mseopen:-1,initmse_sbopendone:-1,metaload:-1,metaready_mseisopen:-1,metaready_initsegend:-1,startload_stmux:-1,firstmux:-1,apcnt:0,aplen:0,data_ap:-1,loadst_loadeddata:-1,loaddata:-1,new_loadeddata:-1,bitrate:-1},t.debugInfo={},t.states=[],t.removeVideo=null,t._lastCheckTime=util.nowTime(),t._changeDefState=null,t._defInited=!1,t.states=[],t.preLoadData=null,t.forPreloadTimeCache=null,t._usePaused=!1,t.endofstream=!1,t.bufferEndTime=-1,t.hitpreload=!1,window&&window.location.href.indexOf("playerInstance=true")>-1&&(void 0===window.mp4PlayerInstanceList&&(window.mp4PlayerInstanceList=[]),window.mp4PlayerInstanceList.push(t.player)),t}return _createClass$6(i,[{key:"afterCreate",value:function(){var e=this,t=this.playerConfig,r=this.config,n=this.player;r.width=t.width||0,r.height=t.height||0,t.vid=t.vid||r.vid,MSE.isSupported('video/mp4; codecs="avc1.64001E, mp4a.40.5"')&&(void 0===r.supportHevc&&null!=sniffer&&sniffer.isHevcSupported&&null!=sniffer&&sniffer.isHevcSupported()&&this.player.video instanceof HTMLVideoElement&&(r.supportHevc=!0),isEMESupported()||(r.useEME=!1),this.checkConfig(),r.onlyInit&&(t.autoplay=!1,t.videoInit=!1,this._hasStartProgress=!1,this._hasStartProgressBack=!1),t.useWaterLevel&&(!t.userGestureEventMiddleware&&(t.userGestureEventMiddleware=userGestureEventMiddleware),!t.videoEventMiddleware&&n.setEventsMiddleware(videoEventMiddleware)),this.gapJumpInst=new GapJump(this.player,this.playerConfig),this.preloader=r.isOpenPreload?new Mp4Preloader(this.config,this,this.bitRateAdapter):null,n.preloader=this.preloader,this._proxyPlayer(),this.initAwManager(),n.useHooks("replay",this._replayHook),n.useHooks("play",this._playHook),n.useHooks("pause",this._pauseHook),n.useHooks("retry",this._retryHook),n.video.addEventListener(CUSTOM_EVENTS.BUFFERED_RESET,this._onBufferedReset),this._bindNetworkStateChange(),this.on(TIME_UPDATE,this._onVideoTimeUpdate),this.on(LOADED_DATA,(function(){e.changeState("LOADED_DATA"),e.deleteVideo(),e._firstSegState=2,e._onTimeUpdate(),e._firstFrameTime()})),this.on(LOAD_START,(function(){e.changeState("LOAD_START"),e._loadStartEventTime=util.nowTime(),e.codecType!==CODEC_TYPE.H265||e.config.supportHevc||(e._isMseInit=!0,e._onTimeUpdate())})),this.on("xglog",(function(t){if("firstFrame"===t.eventType){var r=e.preLoadData&&e.preLoadData.definition?e.preLoadData.definition:-1;e.codecType===CODEC_TYPE.H264?console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ",e.playerConfig.vid,t.fvt,", codectype: ",e.codecType,", hitpreload: ",e.hitpreload,", video: ",e._useVideoLoad,",curPlayBitrate: ",e.player.curDefinition.definition,", preloadBitrate: ",r,",metaLoad, ",e.firstFrameTime.metaload,", mseOpen: ",e.firstFrameTime.mseopen,",appendInit: ",e.firstFrameTime.metaready_initsegend):console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ",e.playerConfig.vid,t.fvt,", codectype: ",e.codecType,", hitpreload: ",e.hitpreload,",curPlayBitrate: ",e.player.curDefinition.definition,", preloadBitrate: ",r,",metaLoad, ",e.firstFrameTime.metaload)}})),n.mp4MseFlag=!0)}},{key:"_startBufferCheck",value:function(){var e=this.player;if(e.video){var t=[];if(e.video.buffered){for(var r=0,n=e.video.buffered.length;r<n;r++)t.push([e.video.buffered.start(r),e.video.buffered.end(r)]);t.toString()!==this.lastBuffer&&(this.lastBuffer=t.toString(),this._onBufferReachThreshold())}}}},{key:"_onBufferReachThreshold",value:function(){var e=this.player,t=this.config;if(e.video){for(var r=e.video.buffered,n=0,i=0,o=0;o<r.length&&(n=r.start(o),i=r.end(o),!(n<=e.video.currentTime&&e.video.currentTime<=i));o++);i-e.video.currentTime>=t.bufferThreshold&&!this._hasTriggerBufferThreshold&&(this._hasTriggerBufferThreshold=!0,e.emit("BUFFER_THRESHOLD",i-e.video.currentTime))}}},{key:"_startUrlExpiredCheck",value:function(){var e=this.player.config;e.definition&&e.definition.list&&e.definition.list.length>0&&(this.urlExpireTimestamp=e.definition.list[0].url_expire||0,this._handleUrlExpire())}},{key:"checkConfig",value:function(){var e=this.playerConfig,t=this.config,r=e.defaultDefinition,n=e.defaultBitrate;if(!r){var i=this.playerConfig.definition;r=i&&i.defaultDefinition?i.defaultDefinition:t.definition}!n&&t.bitrate&&(n=t.bitrate),e.defaultDefinition=r,e.defaultBitrate=n}},{key:"beforePlayerInit",value:function(){var e=this.player,t=this;this._isInit||(BasePlugin.defineGetterOrSetter(e,{__url:{get:function(){return t.mse?t.mse.url:e.config.url},configurable:!0},downloadSpeed:{get:function(){return _realTimeSpeed/8},configurable:!0},playerVersion:{get:function(){return version},configurable:!0},menuCodeType:{get:function(){return t.mp4&&t.mp4.meta?t.mp4.meta.videoCodec:"avc"},configurable:!0},playerType:{get:function(){return"MP4"},configurable:!0},supportMenus:{get:function(){return{speed:e.mp4MseFlag,cdn:e.mp4MseFlag,resolution:e.mp4MseFlag}},configurable:!0},CDNUrl:{get:function(){return t.CDNUrl},configurable:!0},abrInstance:{get:function(){return t.abrInstance},configurable:!0},ext:{get:function(){var e,r,n,i,o,a,s=[];if(null!==(e=t.player)&&void 0!==e&&null!==(r=e.video)&&void 0!==r&&r.buffered)for(var c=t.player.video.buffered,u=0,l=c.length;u<l;u++)s.push([c.start(u),c.end(u)]);var d=[];if(t.mse)for(var h=Math.min(t.opQueueLen,5),f=0;f<h;f++)d.push(t.mse.opQueues.video[f].context);return{type:"MP4",usevideo:t.useVideoLoad,duration:null===(n=t.mp4)||void 0===n||null===(i=n.meta)||void 0===i?void 0:i.duration,loadseg:{loadIdx:t._curLoadSegmentIdx,loadTimeRange:null!==(o=t.mp4)&&void 0!==o&&o.timeRange?t.mp4.timeRange[t._curLoadSegmentIdx]:{},waitIdx:t.debugInfo.loadIndx,waitTimeRange:null!==(a=t.mp4)&&void 0!==a&&a.timeRange&&void 0!==t.debugInfo.loadIndx?t.mp4.timeRange[t.debugInfo.loadIndx]:{}},bufffer:s,speed:t.debugInfo.speed,states:t.states,mseque:d,url:t.playerConfig.url}},configurable:!0}}),this._isInit=!0)}},{key:"destroy",value:function(){var e=this.player;console.log("[Index] destroy",this.playerId),this.preloader&&this.preloader.destroy(this.playerId),e.preloader=null,e.removeHooks("replay",this._replayHook),e.removeHooks("play",this._playHook),e.removeHooks("pause",this._pauseHook),e.removeHooks("retry",this._retryHook),this._reset(),this._onDestroyWasm(),this.player.playNext=_playerPlayNext,this.player._startInit=_playerStartInit,this.player.changeDefinition=_playerChangeDefinition,this.player.switchURL=_playerSwitchUrl,this._unbindNetworkStateChange(),e.video&&e.video.removeEventListener(CUSTOM_EVENTS.BUFFERED_RESET,this._onBufferedReset),this._bufferCheckTimer&&clearInterval(this._bufferCheckTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null)}},{key:"initAwManager",value:function(){var e=this,t=this.config;this.awManager||(this.awManager=new AwManager(t.cdnHost,t.cdnBucket));var r=new ProxyPromise;if(r.id="aw",this._awPromise=r,t.isEncrypt){var n=new WasmManager;n.push(this.awManager.init()),n.startup().then((function(){n.destroy(),r.resolve()})).catch((function(t){n.destroy(),e._emitInitFail(t),r.reject()}))}else r.resolve()}},{key:"_proxyPlayer",value:function(){var e=this;"function"==typeof this.player.playNext&&(_playerPlayNext=this.player.playNext),this.player.playNext=function(){e.playNext.apply(e,arguments)},_playerStartInit=this.player._startInit,_playerSwitchUrl=this.player.switchURL,_playerChangeDefinition=this.player.changeDefinition,this.player._startInit=this.playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this)}},{key:"getInitBitrate",value:function(){var e=this,t=this.player,r=this.config,n=this.playerConfig,i=null,o=t.definitionList;return o&&o.length>0&&(o.map((function(t){var r=Mp4Preloader.generateUniqueKey({vid:n.vid,definition:t.definition||"",vtype:n.vtype,codecType:n.codecType});t.cacheKey=r,r&&!i&&e.preloader&&e.preloader.hasItemSameVid(r)&&((i=t).type="preload")})),i&&n.userSelectDefinition&&r.focusUserDefinition&&(console.log("[Index] getInitBitrate","preloadDefinition: ".concat(i.definition," userSelectDefinition:").concat(n.userSelectDefinition)),n.userSelectDefinition!==i.definition&&(i=null)),!i&&this.bitRateAdapter&&(this.bitRateAdapter.speed=MP4.speed,(i=this.getDefinitonFromAdapter(o,n.userSelectDefinition))&&(i.type="bitRateAdapter"))),i&&i.url||(i="Array"===util$5.typeOf(n.url)&&n.url.length>0||"String"===util$5.typeOf(n.url)&&n.url?{url:n.url,definition:n.defaultDefinition,duration:n.duration||this.config.duration||0,bitrate:n.defaultBitrate||this._getBitrateByDefition(n.defaultDefinition),type:"default"}:o[o.length-1]),this.playerConfig.url=i.url,i.networkSpeed=MP4.speed,i.fileSize=util.getFileSize(i.bitrate,n.duration),t.curDefinition=i,i}},{key:"_setPlayerSrc",value:function(e){var t=this.player;this._removeVideoSource(),"Array"===util$5.typeOf(e)?(t.video.removeAttribute("src"),!t._detachSourceEvents&&e.forEach((function(e){t.video.appendChild(util$5.createDom("source","",{src:"".concat(e.src),type:"".concat(e.type||"")}))})),t._attachSourceEvents(t.video,e),t.play()):(t.video.src=e,t.play()),t.mp4MseFlag=!1,t.emit("playertypechange")}},{key:"_removeVideoSource",value:function(e){var t=this.player,r=(e=e||t.video).children;if(r.length>0)for(t._detachSourceEvents(e);r.length>0;)e.removeChild(r[0])}},{key:"_getBitrateByDefition",value:function(e){var t=this.playerConfig,r=0;if(!t.definition||!t.definition.list)return r;for(var n=0;n<t.definition.list.length;n++){var i=t.definition.list[n];i.definition===e&&(r=i.bitrate)}return r}},{key:"_getDefinitionItem",value:function(e){for(var t=this.playerConfig,r=0;r<t.definition.list.length;r++){var n=t.definition.list[r];if(n.definition===e)return n}return null}},{key:"_initAbrDefinition",value:function(){var e=this.player,t=this.playerConfig;if(t.definition.list.length>0&&(e.curDefinition||(e.curDefinition=t.definition.list[0]),e.curDefinition.vwidth||Object.assign(e.curDefinition,this._getDefinitionItem(e.curDefinition.definition)),this._abrService.updateAbrCacheData()),this._abrService&&this._abrService.isCurrentAutoDefi){var r=t.definition.list.length;e.curDefinition=t.definition.list[r-1]}for(var n=0;n<t.definition.list.length;n++){var i=t.definition.list[n];e.curDefinition.definition===i.definition?i.selected=!0:i.selected=!1}console.log("resourceReady",t.definition.list.concat()),this.player.emit("resourceReady",t.definition.list);var o=e.curDefinition.bitrate;if(!o)for(var a=0;a<t.definition.list.length;a++){var s=t.definition.list[a];s.definition===e.curDefinition.definition&&(o=s.bitrate)}this._abrService.updateBitrate(o)}},{key:"_initAbrService",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.playerConfig,(r=this.config).autoBitrateOpts&&r.autoBitrateOpts.isOpenAutoDefi){e.next=3;break}return e.abrupt("return");case 3:return this._abrService=new AbrService(this,this.abrSwitchURL),e.next=6,this._abrService.init({video:t.definition.list.concat()});case 6:this._initAbrDefinition();case 7:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"_initMp4Kernel",value:function(){var e=this;this.firstFrameTime.newplayer_initkernel=util.nowTime()-this.firstFrameTime.newplayer,this.log("[===========], initMp4Kernel,",util.nowTime());var t=this.playerConfig,r=this.config,n=new ProxyPromise;try{var i=this._defInited?null:this.getInitBitrate();if(this._defInited=!0,this.log("curDefinition",i),this.log("[_initMp4Kernel] ".concat(t.vid," curDefinition"),i),!this._handlerUrl(t.url))return n.reject(new Error("emptyUrl")),n;if(r.forceVideoPlay&&(this.codecType===CODEC_TYPE.H264||r.supportHevc))return this.useVideoLoad=!0,n.reject("forceVideoPlay"),n;var o=[];o.push(this._getLicense()),o.push(this._checkPreloader()),Promise.all(o).then((function(t){e.isDestroy&&n.reject(new Error("destroy"));var o=null;if(t&&t.length>0&&t[1]&&(o=t[1].data),o||!r.needPreloadCheck||e.codecType===CODEC_TYPE.H265&&!r.supportHevc)if(e._vtype&&"MP3"===e._vtype)e.useVideoLoad=!0,n.reject(new Error("vtype_not_MP4"));else{var a=r._mainURL;e._initMp4(a,o,{fileSize:i?i.fileSize:0}),e._initAbrService()}else e.useVideoLoad=!0,n.reject(new Error("no_preload"))})).catch((function(t){console.error(t),t.errorType="GET_LICENSE_ERROR",e.emit("error",t),e.changeState("LICENSE_ERROR",{d:i?i.definition:0}),n.reject(t)}))}catch(e){n.reject(e)}return n}},{key:"playerStartInit",value:function(e){var t=this;if(this.log("playerStartInit",this.player.hasStart),!this.isDestroy){if(!e||"__auto__"===e||"anytext"===e){var r=this.playerConfig,n=r.definition;if(n&&n.list&&n.list.length>0&&n.defaultDefinition&&(n.list.map((function(e){e.definition===n.defaultDefinition&&(r.url=e.url,t.player.curDefinition=e)})),!r.url||"__auto__"===e||"anytext"===e)){var i=n.list[0];e=i.url,r.url=i.url,this.player.curDefinition=i}}if(this.useVideoLoad)_playerStartInit.call(this.player,e);else{this.player.mp4MseFlag=!0,this.bufferEndTime=-1,this._tm=(new Date).getTime(),this._reset();var o=this.playerConfig.vid;this.preloader&&this.preloader.cancelPreloadByVid(o),this.changeState("PLAYER_START_INIT"),this._awPromise.then((function(){if(!t.isDestroy){t.changeState("AW_OK INIT_MP4_KERNEL");var r=t._initMp4Kernel();t._initPromise=r,t._addPendingPromise(t._initPromise),r.then((function(r){t.isDestroy||(t.log("[Index] _initMp4Kernel.then vid:".concat(o," isDestroy").concat(t.isDestroy),r,t.mse?t.mse.url:""),t.mse&&(e=t.mse.url),t.changeState("PLAY_INIT_OK"),t._bindEvents(),t._startProgress())})).catch((function(r){var n=!!t._initPromise&&t._initPromise.isBreak;if(!t.isDestroy&&!n)if(console.error("_initMp4Kernel.catch: ".concat(o," isDestroy:").concat(t.isDestroy," _initPromise.isBreak:").concat(n),r),-499897!==r.errorCode){var i=r;i.errorCode||((i=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.other,vid:t.playerConfig.vid,errorMessage:null==r?void 0:r.message,mediaError:{code:ERROR_CODES.other,message:null==r?void 0:r.message}})).url=e),t.changeState("PLAY_INIT_CATCH",{c:i.errorCode,m:i.message}),t.player.vtype="MP4_1",t.player.emit("playCatch",t.player.vtype,i)}else t._emitExpireEvent(r)})).finally((function(){if(t._initPromise){var r=t._initPromise.isBreak;t._initPromise&&t._removePendingPromise(t._initPromise),t._initPromise=null,t._usePaused&&(t.playerConfig.autoplay=!1),t.codecType===CODEC_TYPE.H265&&"Array"===util$5.typeOf(e)&&(e=e[0].src),t.log("_initMp4Kernel.finally:isDestroy".concat(t.isDestroy," _initPromise.isBreak:").concat(r)),t.log("[===========], playerStartInit,",util.nowTime()),t.changeState("PLAY_INIT_FINALLY"),!t.isDestroy&&!r&&_playerStartInit.call(t.player,e)}}))}})).catch((function(r){t.log("_awPromise.error",r),t.changeState("PLAY_INIT_CATCH"),!t.isDestroy&&_playerStartInit.call(t.player,e)})),this._abrService&&this._abrService.isCurrentInAbr()&&(this._abrService.enable(),this._abrService.execute())}}}},{key:"playNext",value:function(e){var t=this.player;this._defInited=!1,t.resetState(),t._currentTime=0,t._duration=0,t.isPlaying=!1,this._useVideoLoad=!1,t.pause(),this._reset(),e.vtype&&(this._vtype=e.vtype.toUpperCase()),t.setConfig(e);var r=this.codecType;this.codecType=e.codecType?e.codecType.toLowerCase():CODEC_TYPE.H264;var n=e[this.pluginName];n&&(this.config=Object.assign(this.config,n)),r!==this.codecType&&this.h265_h264_switch(this.playerConfig.mediaType||"video"),this.checkConfig(),this.initAwManager(),this.log("[Index] playNext",e),t.play(),this.emit("playnext")}},{key:"h265_h264_switch",value:function(e){this.log("h265_switch_h264");var t=this.player,r=util$5.createDom(e,"",this.getVideoConfig(this.playerConfig),"xgplayer-".concat(e,"-img"));this.removeVideo=t.video,r.muted=t.video.muted,r.volume=t.video.volume,t.video=r,t.attachVideoEvents(t.video)}},{key:"getVideoConfig",value:function(e){var t=Object.assign({},{controls:!1,autoplay:e.autoplay,playsinline:e.playsinline,"x5-playsinline":e.playsinline,"webkit-playsinline":e.playsinline,"x5-video-player-fullscreen":e["x5-video-player-fullscreen"]||e.x5VideoPlayerFullscreen,"x5-video-orientation":e["x5-video-orientation"]||e.x5VideoOrientation,airplay:e.airplay,"webkit-airplay":e.airplay,tabindex:2,mediaType:e.mediaType||"video"},e.videoConfig,e.videoAttributes);return e.loop&&(t.loop="loop"),t}},{key:"next",value:function(e){this.playNext(e)}},{key:"oldChangeDefinition",value:function(e,t){var r=this,n=this.config,i=this.player,o=this.playerConfig;i.emit(DEFINITION_CHANGE,{from:t,to:e}),i.emit(WAITING);var a=i.definitionList.filter((function(t){return t.definition===e.definition||t.definition===Number(e.definition)})),s=i.definitionList.filter((function(e){return e.definition===t.definition||e.definition===Number(t.definition)}));if(s.length>0&&(s[0].selected=!1),a.length>0){(e=a[0]).selected=!0,i.curDefinition=e,this.log("[oldChangeDefinition],currentTime,",i.currentTime,",from,",t,",to,",e);var c=i.currentTime,u=i.paused;this._changeDefState||(this._changeDefState={currentTime:c,paused:u},this.log("[oldChangeDefinition],currentTime,",i.currentTime,",pause,",u)),n.definition=e.definition,this.config.keyValue=e.keyValue,this.config.kid=e.kid,this.config.secretKey=e.secretKey,this.config.drm=e.drm,this.config.getLicenseUrl=e.getLicenseUrl,o.url=e.url,o.backupURL=e.backupURL,o.userSelectDefinition=e.definition,o.defaultDefinition=e.definition,n.focusUserDefinition=!0,i.currentTime=0,i.pause(),this._reset(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),this._changeDefineCanPlay&&i.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=function(){r.changeDefineCanPlay(c,u,t,e),r._changeDefineCanPlay=null},i.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.playerStartInit(o.url)}}},{key:"switchURL",value:function(e){if(this.useVideoLoad)_playerSwitchUrl.call(this.player,e);else{var t=this.player,r=this.playerConfig;this.config.keyValue=e.keyValue,r.url=e.url,r.backupURL=e.backupURL,t.currentTime=0,t.pause(),this.reset(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),t.video.removeAttribute("src"),this._removeVideoSource(),t.resetState()}}},{key:"_handlerUrl",value:function(e){var t,r=this.config,n=this.playerConfig;if(!e)return!1;var i=[];if("String"===util$5.typeOf(e))t=e,n.backupURL&&i.push(n.backupURL);else if("Array"===util$5.typeOf(e)&&e.length>0&&(t=e[0].src,e.length>1))for(var o=1;o<e.length;o++)i.push(util.extUrl(e[o].src,{__vid:n.vid}));return!(!t&&0===i.length)&&(r._mainURL=util.extUrl(t,{__vid:n.vid}),r._backupURL=i,!0)}},{key:"_firstFrameTime",value:function(){if(this.codecType===CODEC_TYPE.H264||this.config.supportHevc){if(this.firstFrameTime.new_loadeddata<0){this.firstFrameTime.loadst_loadeddata=util.nowTime()-this.loadstart,this.firstFrameTime.new_loadeddata=util.nowTime()-this.firstFrameTime.newplayer;var e={};for(var t in this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,t)&&(this.log("======this.firstFrameTime======",t,", ",this.firstFrameTime[t]),e[t]=this.firstFrameTime[t])}}else if(this.codecType===CODEC_TYPE.H265){var r=this.player.video.getStats(),n=this.firstFrameTime.metaload,i=this.firstFrameTime.startMuxTime;this.firstFrameTime=r,this.firstFrameTime.metaload=n,this.firstFrameTime.startload_stmux=i,this.firstFrameTime.firstmux=this.mp4?this.mp4.firstFrameTime.firstmux:-1;for(var o=0;o<r.bootStats.length;o++)this.firstFrameTime[r.bootStats[o].action]=r.bootStats[o].dot;delete this.firstFrameTime.bootStats,this.log("======this.firstFrameTime===>>",JSON.stringify(this.firstFrameTime))}}},{key:"_bindEvents",value:function(){var e=this,t=this.config,r=this.player;this._isEventInit||(this.on("seeking",this._onSeeking),this.on("waiting",this._onWaiting),this.on("ended",this._onEnded),this.on("error",this._onVideoError),this.on("playing",this._onPlaying),this.on("detectGap",(function(){t.gapDegrade&&t.useEME&&(t.useEME=!1,e._replay())})),this.on("error",(function(t){e.changeState("video_error",{code:t.code,message:t.message,videoType:e.useVideoLoad})})),r.setEventsMiddleware({error:function(t,r){var n=t.originalEvent;e.changeState("video_error",{code:n.code,message:n.message,videoType:e.useVideoLoad}),e.log("error middleware",t,",useVideoLoad,",e.useVideoLoad),e.useVideoLoad&&r(t.eventName,n)}})),this._isEventInit=!0}},{key:"deleteVideo",value:function(){if(this.removeVideo){var e=this.removeVideo.parentNode;e&&e.removeChild(this.removeVideo),this.removeVideo=null,this.log("[_removeVideoSource]")}}},{key:"_unbindEvents",value:function(){this.off("seeking",this._onSeeking),this.off("waiting",this._onWaiting),this.off("ended",this._onEnded),this.off("playing",this._onPlaying),this._isEventInit=!1}},{key:"changeState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._pTime||(this._pTime=util.nowTime());var r=util.nowTime()-this._pTime,n=util.nowTime()-this._sTime;this.log(">>>changeState[".concat(e,"]"),r,n,t),this.states.push({state:e,t1:r,t2:n,data:t}),this._pTime=util.nowTime();var i=util.nowTime()-this._pTime;t.state=e,i&&(t.t=i)}},{key:"checkIfCanPreload",value:function(){var e=this.player,t=this.useVideoLoad,r=this.config;if(r.isOpenPreload){var n=t?5:r.minBufferLength,i=e.currentTime+n;i=i>e.duration?e.duration:i;var o=(t?e.getBufferedRange(e.buffered):e.getBufferedRange(e.buffered2))[1]-i;e.currentTime>=n&&(o>0||Math.abs(o)<1)&&this.preloader&&this.preloader.checkCanPreloadNext()&&this.emit("PRELOAD_NEXT")}}},{key:"_getLicense",value:function(){var e=this,t=this.config,r=t.vid,n=t.kid,i=t.secretKey,o=new ProxyPromise,a={method:"getLicense",success:0};if(n||i){var s=getKeyValue(r,n,i,this);s.id="licensePromise",this._addPendingPromise(s),s.then((function(t){e._removePendingPromise(s),t.clearKeys?e.config.drm=t:e.config.keyValue=t,a.success=1,o.resolve(a)})).catch((function(t){e.log("licensePromise reject"),a.success=0,a.error=t,o.reject(a)}))}else a.success=0,o.resolve(a);return o}},{key:"softDecode",get:function(){var e,t;return"xg-video"===(null===(e=this.player)||void 0===e||null===(t=e.config)||void 0===t?void 0:t.mediaType)}},{key:"_initH265MseProxy",value:function(){this.player.video instanceof HTMLVideoElement&&this.h265_h264_switch(this.playerConfig.mediaType);var e=this.player.video;this.softDecode&&e.setPlayMode&&e.setPlayMode("VOD"),this.mseProxy=e,this.softDecode&&(this.player.forceDegradeToVideo=function(){},this.player.video.addEventListener("lowdecode",this._lowDecoder),this.player.video.addEventListener("error",this._onError))}},{key:"removeAndRejectInitPromise",value:function(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}},{key:"_initMp4",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.firstFrameTime.initkernel_initmp4=util.nowTime()-this.firstFrameTime.newplayer-this.firstFrameTime.newplayer_initkernel;var i=this.config,o=this.player,a=this.playerConfig;this.mp4&&(this.mp4.off(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.off(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.off(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.off(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.off(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.changeState("MP4_NEW",{}),this.mp4=new MP4(e,o.curDefinition.bitrate,{segmentDuration:i.segmentMinDuration,enableWorker:i.enableWorker,codecType:this.codecType,chunkSize:i.preloadSize,loadSize:800,duration:a.duration||0,fileSize:n.fileSize||0,playerId:this.playerId,vid:a.vid,useUrlRange:i.useUrlRange,retryCount:i.retryCount,retryDelay:i.retryDelay,onProcessMinLen:i.onProcessMinLen,supportHevc:i.supportHevc,reqOptions:i.reqOptions},this,null,r,this.config._backupURL,this.firstFrameTime,""),this.mp4.once(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.on(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.on(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.on(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.on(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.on(MP4_EVENTS.CHANGE_URL,(function(e){t.player&&t.player.emit("initialUrl",{url:e})})),this.mp4.MP4Loader.on(REAL_TIME_SPEED_EVENT,(function(e){_realTimeSpeed=e.speed,t.debugInfo.speed||(t.debugInfo.speed=[]),t.debugInfo.speed.push(_realTimeSpeed),t.debugInfo.speed.length>10&&t.debugInfo.speed.shift(),t.emit(REAL_TIME_SPEED_EVENT,e)})),this.changeState("MP4_INIT",{}),this.mp4.init(r)}},{key:"_checkPreloader",value:function(){var e=this,t=this.playerConfig,r=new ProxyPromise,n={method:"checkPreloader",success:0,type:"error",cacheKey:""};this.changeState("CHECK_PRELOAD");var i=this.player.curDefinition,o=i.cacheKey?i.cacheKey:Mp4Preloader.generateUniqueKey({vid:t.vid,definition:i.definition||"",vtype:t.vtype,codecType:t.codecType});return n.cacheKey=o,this.preloader&&o?this.preloader.getPreLoadData(o).then((function(t){console.log(">>>>check Preloader result",o,t),t?(e.preLoadData=t,e.emit("PRELOAD_INFO",e.preLoadData),n.success=1,n.data=t,e.changeState("PRELOAD_OK",{l:e.preLoadData.byteLength,ck:o}),t.mediaSegList&&t.mediaSegList.length>0||t.buffer&&t.buffer.byteLength>0?e.hitpreload=!0:e.hitpreload=!1,r.resolve(n)):(e.preLoadData=null,e.changeState("PRELOAD_ERROR",{t:0}),n.success=0,n.error=new Error("none_preload"),r.resolve(n))})):(this.changeState("PRELOAD_ERROR",{t:2}),n.success=0,n.error=new Error("no_preloader"),r.resolve(n)),r}},{key:"_initEME",value:function(e,t){var r=this.player,n=this.config,i=e.checkCodecH265();n.useEME=!(!1===n.useEME||i),this._updateDrmConfig(t),this.log("config.useEME: ",n.useEME);var o=n.drm;!this.eme&&o&&o.clearKeys&&n.useEME&&(this.eme=new EME(o)),n.useEME&&this.eme&&(this.eme.setOptions('video/mp4; codecs="avc1.64001E"','audio/mp4; codecs="mp4a.40.2"'),this.eme.SetupEME(r.video))}},{key:"_initMse",value:function(e){var t=this,r=this.playerConfig;this.mse&&(this.mse.destroy(),this.mse=null);var n,i=this.mp4&&this.mp4.checkCodecH265(),o=!!e.videoCodec,a=!!e.audioCodec;n=o&&a?i?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':o?i?'video/mp4; codecs="hev1.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"';var s=_defineProperty$4({},CONTENT_TYPES.VIDEO,{mimeType:"video/mp4",codec:n});this.mse=new MSE(r.mediaType,this.log.bind(this)),this.mse.on(MSE_EVENTS.MSE_OPEN,(function(e){t.firstFrameTime.initmse_sbopen=e.costtime,t._loadStartEventTime>0&&(t.firstFrameTime.mseopen=util.nowTime()-t._loadStartEventTime),t.changeState("MSE_OPEN")})),this.mse.on(MSE_EVENTS.MSE_OPEN_DONE,(function(e){t.firstFrameTime.initmse_sbopendone=e.costtime,t.changeState("MSE_OPEN_DONE"),t._isMseInit=!0,t._onTimeUpdate()})),this.mse.on(MSE_EVENTS.MSE_ERROR,(function(e){if(console.log("[MSE error]",e),e&&t.mse&&t.mse.isFull()){var n=t.player.getBufferedRange(t.player.buffered2);t._checkRemoveSourceBuffer(n,t.player.currentTime,!0)}else{var i=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.mseAppend,errorMessage:e.message,vid:r.vid,mediaError:{code:ERROR_CODES.mseAppend,message:e.message}});t._errorHandler(i)}})),this.mse.on(MSE_EVENTS.UPDATE_END,(function(e){var r=e.context,n=e.costtime;if(r&&r.isinit)t.firstFrameTime.metaready_initsegend=n,t.log("player appendBuffer end ==>>>",r||null,", costTime,",n),t.changeState("MSE_INITSEG_OK");else if(t.log("player appendBuffer end ==>>>",r||null,", costTime,",n,", opt,",e.name,",bufferRange,",t.player.getBufferedRange()),t.firstFrameTime.loadst_loadeddata<0&&(t._firstSegState<0&&t._onTimeUpdate(),t.firstFrameTime.apcnt++,t.firstFrameTime.aplen+=r?r.dataLen:0,t.firstFrameTime.data_ap+=n,t.changeState("APPEND_DATA_OK",{costime:n,dataLen:r?r.dataLen:0})),t.mse&&r.state&&r.fragIndex===t.mp4.timeRange.length-1){var i=t.player.buffered;t.bufferEndTime=i.end(i.length-1),t._isEnded(),t.log("loaded ended !!!==>>>",r.range,", fragIndex,",r.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}})),this.changeState("MSE_INIT"),this.mse.init(s)}},{key:"_appendInitSeg",value:function(e){this.mp4&&this.mse&&(this.changeState("MSE_INITSEG"),this.log("[=======ready_append_init]",util.nowTime(),",mseDone,",!!this.mse&&this.mse.ready,",isopen,",!!this.mse&&this.mse.isMediaSourceOpen()),!this.mse.ready&&this.openMSE(),this.firstFrameTime.metaready_mseisopen=this.mse&&this.mse.ready?1:0,this.mse.appendBuffer(CONTENT_TYPES.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}),this.mp4.useEME&&this.eme&&this.eme.emit("encrypted"))}},{key:"_checkMetaInfo",value:function(e){var t=null;return e?null:(t={errorCode:ERROR_CODES.metaError,errorMessage:"meta is null",errorType:"demux",errorTypeCode:ERROR_TYPES.demux},new Errors(this.player,_objectSpread2$2(_objectSpread2$2({},t),{},{vid:this.playerConfig.vid,mediaError:{code:t.errorCode,message:t.errorMessage}})))}},{key:"_stopProgress",value:function(){this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0)}},{key:"_bindNetworkStateChange",value:function(){window.addEventListener("online",this._onOnlineHandler),window.addEventListener("offline",this._onOfflineHandler)}},{key:"_unbindNetworkStateChange",value:function(){window.removeEventListener("online",this._onOnlineHandler),window.removeEventListener("offline",this._onOfflineHandler)}},{key:"_onSuperStart",value:function(e){var t=this,r=this.player;log$2("_onSuperStart:".concat(e),this.mse),r.video.src=e,this.once("canplay",(function(){r.play(),t.on("waiting",t._onWaiting)}))}},{key:"openMSE",value:function(){var e=this.mse;!e.ready&&e.isMediaSourceOpen()&&(this.log("[=======主动调用_onSourceOpen start]",util.nowTime()),e._onSourceOpen(),this.log("[=======主动调用_onSourceOpen, end ]",util.nowTime(),"mseDone,",e.ready))}},{key:"_appendBuffer",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0,i=this.mse,o=this.playerConfig.vid;this.log("player appendBuffer start ==>>>",o,r.range,t.byteLength,", queueLen,",i&&i.opQueues[e]?i.opQueues[e].length:null),i.ready||(this.openMSE(),this.firstFrameTime.metaready_mseisopen=this.mse&&this.mse.ready?2:-1),i.appendBuffer(e,t,{vid:o,fragIndex:r.fragIndex,range:r.range,dataLen:t.byteLength,state:n})}},{key:"_loadData",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.onLine){e.next=2;break}return e.abrupt("return");case 2:if(this.mp4&&this._isMseInit){e.next=5;break}return this.log("loadData, player.mp4 null",this._isMseInit),e.abrupt("return");case 5:return this.loadstart<0&&(this.loadstart=util.nowTime()),e.prev=6,e.next=9,this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess);case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(6),console.error("[Index] _loadData error",this.playerConfig.vid,e.t0);case 14:case"end":return e.stop()}}),e,this,[[6,11]])}))),function(){return t.apply(this,arguments)})},{key:"getDataBitRate",value:function(e){var t=this.mp4,r=this.playerConfig;if(!t)return 0;for(var n=t.getDataBitRate(e),i=r.definition.list,o=0,a=0;a<i.length;a++)if(i[a].bitrate===n){o=i[a];break}return o}},{key:"_loadStuckCheck",value:function(){var e=this,t=this.config,r=this.playerConfig,n=this.player;t.disableBufferBreakCheck||(n.currentTime-(this._lastCurrentTime||0)>.1||n.paused?1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log("视频没有卡死,重置卡死标记"),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null):this._bufferBreakFlag||(this._bufferBreakFlag=1,this.log("卡死计时开始! 持续".concat(BUFFER_BREAK,"毫秒则确认卡死")),this._bufferBreakTimer=setTimeout((function(){e.isDestroy||(1===e._bufferBreakFlag&&(e._bufferBreakFlag=2,e.log("确认卡死!!!"),e._errorHandler(new Errors(e.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.waitTimeout,errorMessage:"wait_timeout",vid:r.vid}))),e._bufferBreakTimer=null)}),BUFFER_BREAK)),this._lastCurrentTime=n.currentTime)}},{key:"_doubleCheckBuffer",value:function(e){var t=this.player;if(!(e.startTime>t.currentTime))return!0;if(!t.video||!t.video.buffered)return!0;var r=t.video.buffered;if(1===r.length)return!0;for(var n=!1,i=0;i<r.length;i++){var o=r.start(i)-.5,a=r.end(i)+.5;if(o<=e.startTime&&e.endTime<=a){n=!0;break}}return n}},{key:"_onTimeUpdate",value:function(){var e=this,t=this.mse,r=this.mp4,n=this.player;if(this.useVideoLoad)this.checkIfCanPreload();else if(r){var i=r.timeRange;if(i&&!(i.length<1)&&1!==this._firstSegState){var o=n.getBufferedRange(n.buffered2);if((t||this.mseProxy)&&r&&r.canDownload){util.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=util.nowTime(),this._loadStuckCheck(),this._startUrlExpiredCheck(),this._checkRemoveSourceBuffer(o,n.currentTime));var a=n.paused?n.currentTime+this._minBufferLength:n.currentTime+this._maxBufferLength;o[1]-a<0&&i.every((function(t,r){if(t.downloaded){if(e._doubleCheckBuffer(t))return!0;t.downloaded=!1,t.isLoading=!1,e.log("".concat(r," download state error, no buffer, download again"))}t.startTime-n.currentTime<e._maxBufferLength?(e._curLoadSegmentIdx=r,e.log("[onTimeUpdate],load index==>>>, ",r,",IdxTimeRange, ",t.startTime,"-",t.endTime,",buffEnd, ",o[1],",playCurTime,",n.currentTime,", bufferLen,",o[1]-n.currentTime,",bufferRangeList,",e.player.buffered2?e.player.buffered2.bufferedList:null),e._loadData()):e.log("[onTimeUpdate] not load index==>>>",r,",IdxTimeRange, ",t.startTime,"-",t.endTime,",playCurTime,",n.currentTime,",bufferRangeList,",e.player.buffered2?e.player.buffered2.bufferedList:null)})),this.checkIfCanPreload(),this.playFlag&&!this._hasTriggerBufferThreshold&&this._startBufferCheck(),this._isEnded()}}}}},{key:"_reset",value:function(){for(var e in this.states=[],this.hitpreload=!1,this._sTime=util.nowTime(),this._usePaused=!1,this._firstSegState=-1,this.useVideoLoad=!1,this._isMseInit=!1,this.endofstream=!1,this._curLoadSegmentIdx=0,this.preLoadData=null,this.forPreloadTimeCache=null,this.playFlag=!1,this._waitAdjustTimeCnt=0,this._initPromise&&"pending"===this._initPromise.state&&this._initPromise.reject("DESTROYED"),clearTimeout(this.checkResumePlayTimer),this.checkResumePlayTimer=null,this._stopProgress(),this.mp4&&(this.mp4.off(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.off(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.off(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.off(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.off(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.mse&&(this.mse.destroy(),this.mse=null),this.mseProxy&&(this.player.video.removeEventListener("lowdecode",this._onDegrade),this.player.video.removeEventListener("error",this._onError)),this._clearMediaKeys(),this._unloadVideo(),this._cancelPendingPromises(),this._abrService&&(this._abrService.destroy(),this._abrService=null),this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,e)&&(this.firstFrameTime[e]="apcnt"===e||"aplen"===e?0:"newplayer"===e?util.nowTime():-1);clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null,this.loadstart=-1,this._loadStartEventTime=-1,this.startLoadData=-1}},{key:"removeErrorUrls",value:function(e,t,r){return-499897!==e.errorCode&&-499892!==e.errorCode||this._emitExpireEvent(e),r}},{key:"_errorHandler",value:function(e){var t=this.player,r=this.playerConfig,n=this.preLoadData;if(t){if(this.useVideoLoad)return console.log("useVideoLoad final error!!!!, ",r.vid,e),void this.emit("error",e);if("object"!==_typeof$3(e)){var i={};i.err=e,e=i}var o=t.paused;e.vid=r.vid,e.preloadHit=n&&n.byteLength>0?1:0,e.preloadCached=n?n.duration:0,e=new Errors(t,e),this.log("_errorHandle","preState is ".concat(o),e),!e.url&&(e.url=t.src),this.player.vtype="MP4_2",this.player.emit("playCatch",this.player.vtype,e),e.errd&&"object"===_typeof$3(e.errd)&&this.mp4&&(e.errd.url=this.mp4.url,e.url=this.mp4.url),e.codectype=this.codecType,this.emit("DATA_REPORT",e),this.mp4&&this.mp4.url&&this.removeErrorUrls(e,this.mp4.url,r.url),this.log("error task cancel"),this.mp4&&this.mp4.cancelLoading(),this._abrService&&this._abrService.disable(),this.mp4&&(this.mp4.canDownload=!1),this.mp4&&this.mp4.bufferCache&&this.mp4.bufferCache.clear(),this._startDegradedPlayback(e)}}},{key:"_startDegradedPlayback",value:function(e){var t=this;this.mp4&&(this.mp4.canDownload=!1);var r=this.player,n=this.playerConfig;this.endofstream=!1,this._currentTime=r.currentTime||0,this.player.pause(),this._reset(),this._replay=null,this.codecType===CODEC_TYPE.H265?(console.log("h265 err,degrade use 264 play",n.vid),this._onDegrade(e)):this.codecType===CODEC_TYPE.H264&&(this.config.drm?(this.config.drm&&Object.keys(this.config.drm).map((function(r){t.config.drm&&(e[r]=t.config.drm[r])})),console.log("final error !!!!, ",n.vid,e),this.emit("error",e)):(this.useVideoLoad=!0,this._setPlayerSrc(n.url),this.once("canplay",(function(){t._currentTime&&(r.currentTime=t._currentTime),!r.paused&&r.play()}))))}},{key:"_startProgress",value:function(){var e=this;this._hasStartProgress||(this._stopProgress(),this._requestTimer=new Timer((function(){e._requestTimer&&e._onTimeUpdate()})),this._requestTimer.tickEvery(this._tickInSeconds),this._hasStartProgress=!0)}},{key:"_unloadVideo",value:function(){var e=this.player;try{this.log("unloadVideo src ".concat(e.video.src)),e.video&&e.video.src&&(e.video.removeAttribute("src"),e.video.load())}catch(e){this.log("unloadVideo error",e)}}},{key:"_addPendingPromise",value:function(e){this._pendingPromises.push(e)}},{key:"_removePendingPromise",value:function(e){this.log("removePendingPromise",e.id);var t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}},{key:"_cancelPendingPromises",value:function(){this._pendingPromises.length>0&&this._pendingPromises.forEach((function(e){e.reject(DESTROYED)})),this._pendingPromises=[]}},{key:"_onMediaExpired",value:function(){this._stopProgress(),this.emit(CUSTOM_EVENTS.MEDIA_EXPIRED)}},{key:"_onDestroyWasm",value:function(){this.awManager&&(this.awManager.destroy(),this.awManager=null)}},{key:"_isEnded",value:function(){var e=this.player,t=this.mp4,r=e.bufferedPoint,n=r?r.end:0;return!this.endofstream&&this.bufferEndTime>0&&this.mse&&this.bufferEndTime-e.currentTime<.5&&(this.log("[check player isEnded],deal mse.endOfStream, currentTime,",e.currentTime,", bufferend,",n,", duration,",t.meta.duration),this.endofstream=!0,this.mse.endOfStream()),!!(t&&t.meta&&t.meta.duration-e.currentTime<.5)&&(this._stopProgress(),this.log("[check player isEnded],stopProgress and endOfStream,currentTime, ",e.currentTime,", bufferend,",n,", duration,",t.meta.duration),this.mse&&this.mse.endOfStream(),!0)}},{key:"_clearMediaKeys",value:function(){var e=this.player;e.video&&"function"==typeof e.video.setMediaKeys&&e.video.setMediaKeys(null).catch((function(){}))}},{key:"_checkRemoveSourceBuffer",value:function(e,t,r,n){var i=this,o=this.mse,a=this.mp4,s=this.player;if(o&&a&&s&&(r&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=s.getBufferedRange(s.buffered2)),t||(t=s.currentTime),!(!r&&util.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen||this.endofstream)&&(this._checkRemoveBufferLastTime=util.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||o.isFull())))){var c=n?e[1]:t-(o.isFull()?0:15),u=a.getFragmentIdx(c);if(u>=0&&(n||a.timeRange[u].startTime<t)){var l=Math.floor(Math.min(a.timeRange[u].startTime,e[1]));e[0]<l?(this.log("[checkremoveSourceBuffer], remove range==>>>",e[0],l),o.reuse(e[0],l)):o.isFull()&&!this._removeBufferTimer&&(this.log("[after 10s, go on checkremoveSourceBuffer], currentTime==>>>",t,", buffer start,",e[0]),this._removeBufferTimer=setTimeout((function(){i._checkRemoveSourceBuffer(null,null,!0)}),1e4))}}}},{key:"onMediaUpdate",value:function(e){var t=e.vid,r=e.kid,n=e.url,i=this.player,o=this.config;if(t===this.playerConfig.vid&&r===o.kid&&n){this.playerConfig.url=n,this._handlerUrl(n);var a=o._mainURL;return this.useVideoLoad?i.src=n:this.mp4&&this.mp4.update(a),!0}return!1}},{key:"enableAutoBuffer",value:function(e){var t=this;if(e){if(!this._allInitPromise)return void this.log("player destroyed!!");this._allInitPromise.then((function(){t.log("enableAutoBuffer true"),t._startProgress()}))}else this._stopProgress(),this.log("enableAutoBuffer false")}},{key:"bitRateAdapter",get:function(){return this.player&&this.player.plugins&&this.config.needAutoBitrate?this.player.plugins.bitrateselector:null}},{key:"getDefinitonFromAdapter",value:function(e,t){if(!this.bitRateAdapter)return null;var r=this.bitRateAdapter;return r.getSuitableBitrate?r.getSuitableBitrate(e,t):r.bitRateAdapter?r.bitRateAdapter.select(e):null}},{key:"addPreloader",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.playerId=this.playerId,this.preloader?this.preloader.addPreloader(e,this.playerId,this.playerConfig.vid):this.log("preloader has destroyed")}},{key:"addPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.preloader?this.preloader.addPreloaderList(e,this.playerId,this.playerConfig.vid):this.log("preloader has destroyed")}},{key:"changeUserSelectDefinition",value:function(e){this.preloader&&e&&this.preloader.changeUserSelectDefinition(e)}},{key:"log",value:function(e){for(var t=this.playerConfig,r=t&&t.vid?"[Index]".concat(t.vid," ").concat(e):"[Index] ".concat(e),n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];log$2.apply(void 0,[r].concat(i))}},{key:"_emitInitFail",value:function(e){this.log("initFail, reason:",e),this.emit(CUSTOM_EVENTS.INIT_FAIL,e)}},{key:"emitParseError",value:function(){this.log("parseError"),this.emit(CUSTOM_EVENTS.PARSE_ERROR)}},{key:"useVideoLoad",get:function(){return this._useVideoLoad},set:function(e){this._useVideoLoad=e}},{key:"ready",get:function(){return this._allInitPromise}},{key:"speed",get:function(){return parseInt(MP4.speed,10)}},{key:"version",get:function(){return version}},{key:"realTimeSpeed",get:function(){return _realTimeSpeed}},{key:"opQueueLen",get:function(){var e=this.mse&&this.mse.opQueues?this.mse.opQueues.video:[];return e?e.length:0}},{key:"loadSegmentTimeRange",get:function(){if(!this.mp4)return[0,0,0,0];var e=this.mp4.timeRange;if(e&&e.length>0&&this._curLoadSegmentIdx&&this._curLoadSegmentIdx<e.length){var t=e[this._curLoadSegmentIdx];if(t.isLoading){var r=this.mp4.getFragRange(this._curLoadSegmentIdx);return[Number(t.startTime),Number(t.endTime)].concat(_toConsumableArray$3(r))}}return[0,0,0,0]}},{key:"preloadState",get:function(){return this.preloader&&this.preloader.loadingCount}},{key:"moovSize",get:function(){return 0}},{key:"isDestroy",get:function(){return!this.player}},{key:"cancelPreloadTask",value:function(){this.preloader&&this.preloader.cancelLoading(this.player.playerId)}},{key:"CDNUrl",get:function(){var e=this.playerConfig.url,t=document.createElement("a");return t.href=e,t.host}},{key:"abrInstance",get:function(){return this._abrService?this._abrService.abrInstance:null}},{key:"_handleUrlExpire",value:function(){var e=this,t=this.config,r=this.player,n=r.paused;(new Date).getTime()/1e3>=this.urlExpireTimestamp&&this.urlExpireTimestamp>0&&!n&&t.getServerTime&&(r.serverTimeDiffPromise=r.serverTimeDiffPromise||t.getServerTime().catch((function(){return 0})),r.serverTimeDiffPromise.then((function(t){if(t&&(r.serverTimeDiff=(new Date).getTime()/1e3-t),(new Date).getTime()/1e3>=e.urlExpireTimestamp+r.serverTimeDiff){e.urlExpireTimestamp=(new Date).getTime()/1e3+86400;var n=new NetWorkError("network",ERROR_CODES[403]);e._emitExpireEvent(n)}})))}},{key:"_emitExpireEvent",value:function(e){var t=this.player,r=(new Date).getTime()/1e3;this.emitExpireTimestamp?r-this.emitExpireTimestamp>300&&(this.emitExpireTimestamp=r,t.emit("MEDIA_EXPIRED",e)):(this.emitExpireTimestamp=r,t.emit("MEDIA_EXPIRED",e))}}],[{key:"registerPreloader",value:function(e,t){e.vtype=VTYPES.MP4,Mp4Preloader.BitRateAdapter=t,new Mp4Preloader(e,this)}},{key:"pluginName",get:function(){return"Mp4EncryptPlayer"}},{key:"defaultConfig",get:function(){return{onlyInit:!1,useWaterLevel:!1,maxBufferLength:10,minBufferLength:5,tickInSeconds:.2,getLicenseUrl:"",xhrSetup:{},retryCount:1,retryDelay:1e3,preloadCacheType:1,needPreloadRangeList:!1,cdnHost:"",cdnBucket:"",isEncrypt:!1,isOpenPreload:!0,needPreloadCheck:!1,preloadTime:0,preloadMaxCacheCount:0,needAutoBitrate:!0,keyValue:null,drm:null,switchBitRateWay:!1,enableWorker:!1,bufferThreshold:10,removeBufferLen:40,focusUserDefinition:!1,resumePlayWaterLevel:2,waitJampBufferMaxCnt:3,waitingInBufferTimeOut:5e3,h265Degrade:!1,forceVideoPlay:!1,segmentMinDuration:2,supportHevc:void 0,H264Config:null}}},{key:"speed",get:function(){return _realTimeSpeed}},{key:"realTimeSpeed",get:function(){return _realTimeSpeed}},{key:"version",get:function(){return version}}]),i}();Mp4EncryptPlayer.isSupported=isSupported,Mp4EncryptPlayer.isEMESupported=isEMESupported,Mp4EncryptPlayer.isSupportedWithXgmse=isSupportedWithXgmse,Mp4EncryptPlayer.isMediaSourceSupported=isMediaSourceSupported,Mp4EncryptPlayer.isWebAssemblySupported=isWebAssemblySupported,Mp4EncryptPlayer.getPlayLicenses=getPlayLicenses,Mp4EncryptPlayer.CUSTOM_EVENTS=CUSTOM_EVENTS,Mp4EncryptPlayer.Mp4Preloader=Mp4Preloader;var shakaPlayer_compiled={};
10
+ (function(e){const t=base64Js,r=ieee754$1,n="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=a,e.SlowBuffer=function(e){+e!=e&&(e=0);return a.alloc(+e)},e.INSPECT_MAX_BYTES=50;const i=2147483647;function o(e){if(e>i)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,a.prototype),t}function a(e,t,r){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return u(e)}return s(e,t,r)}function s(e,t,r){if("string"==typeof e)return function(e,t){"string"==typeof t&&""!==t||(t="utf8");if(!a.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const r=0|f(e,t);let n=o(r);const i=n.write(e,t);i!==r&&(n=n.slice(0,i));return n}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return l(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return d(e,t,r);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return d(e,t,r);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const n=e.valueOf&&e.valueOf();if(null!=n&&n!==e)return a.from(n,t,r);const i=function(e){if(a.isBuffer(e)){const t=0|h(e.length),r=o(t);return 0===r.length||e.copy(r,0,0,t),r}if(void 0!==e.length)return"number"!=typeof e.length||K(e.length)?o(0):l(e);if("Buffer"===e.type&&Array.isArray(e.data))return l(e.data)}(e);if(i)return i;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return a.from(e[Symbol.toPrimitive]("string"),t,r);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function u(e){return c(e),o(e<0?0:0|h(e))}function l(e){const t=e.length<0?0:0|h(e.length),r=o(t);for(let n=0;n<t;n+=1)r[n]=255&e[n];return r}function d(e,t,r){if(t<0||e.byteLength<t)throw new RangeError('"offset" is outside of buffer bounds');if(e.byteLength<t+(r||0))throw new RangeError('"length" is outside of buffer bounds');let n;return n=void 0===t&&void 0===r?new Uint8Array(e):void 0===r?new Uint8Array(e,t):new Uint8Array(e,t,r),Object.setPrototypeOf(n,a.prototype),n}function h(e){if(e>=i)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+i.toString(16)+" bytes");return 0|e}function f(e,t){if(a.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const r=e.length,n=arguments.length>2&&!0===arguments[2];if(!n&&0===r)return 0;let i=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":return j(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return X(e).length;default:if(i)return n?-1:j(e).length;t=(""+t).toLowerCase(),i=!0}}function p(e,t,r){let n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return R(this,t,r);case"utf8":case"utf-8":return T(this,t,r);case"ascii":return I(this,t,r);case"latin1":case"binary":return w(this,t,r);case"base64":return E(this,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return P(this,t,r);default:if(n)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),n=!0}}function y(e,t,r){const n=e[t];e[t]=e[r],e[r]=n}function m(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),K(r=+r)&&(r=i?0:e.length-1),r<0&&(r=e.length+r),r>=e.length){if(i)return-1;r=e.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof t&&(t=a.from(t,n)),a.isBuffer(t))return 0===t.length?-1:g(e,t,r,n,i);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(e,t,r):Uint8Array.prototype.lastIndexOf.call(e,t,r):g(e,[t],r,n,i);throw new TypeError("val must be string, number or Buffer")}function g(e,t,r,n,i){let o,a=1,s=e.length,c=t.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(e.length<2||t.length<2)return-1;a=2,s/=2,c/=2,r/=2}function u(e,t){return 1===a?e[t]:e.readUInt16BE(t*a)}if(i){let n=-1;for(o=r;o<s;o++)if(u(e,o)===u(t,-1===n?0:o-n)){if(-1===n&&(n=o),o-n+1===c)return n*a}else-1!==n&&(o-=o-n),n=-1}else for(r+c>s&&(r=s-c),o=r;o>=0;o--){let r=!0;for(let n=0;n<c;n++)if(u(e,o+n)!==u(t,n)){r=!1;break}if(r)return o}return-1}function v(e,t,r,n){r=Number(r)||0;const i=e.length-r;n?(n=Number(n))>i&&(n=i):n=i;const o=t.length;let a;for(n>o/2&&(n=o/2),a=0;a<n;++a){const n=parseInt(t.substr(2*a,2),16);if(K(n))return a;e[r+a]=n}return a}function b(e,t,r,n){return W(j(t,e.length-r),e,r,n)}function _(e,t,r,n){return W(function(e){const t=[];for(let r=0;r<e.length;++r)t.push(255&e.charCodeAt(r));return t}(t),e,r,n)}function $(e,t,r,n){return W(X(t),e,r,n)}function A(e,t,r,n){return W(function(e,t){let r,n,i;const o=[];for(let a=0;a<e.length&&!((t-=2)<0);++a)r=e.charCodeAt(a),n=r>>8,i=r%256,o.push(i),o.push(n);return o}(t,e.length-r),e,r,n)}function E(e,r,n){return 0===r&&n===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(r,n))}function T(e,t,r){r=Math.min(e.length,r);const n=[];let i=t;for(;i<r;){const t=e[i];let o=null,a=t>239?4:t>223?3:t>191?2:1;if(i+a<=r){let r,n,s,c;switch(a){case 1:t<128&&(o=t);break;case 2:r=e[i+1],128==(192&r)&&(c=(31&t)<<6|63&r,c>127&&(o=c));break;case 3:r=e[i+1],n=e[i+2],128==(192&r)&&128==(192&n)&&(c=(15&t)<<12|(63&r)<<6|63&n,c>2047&&(c<55296||c>57343)&&(o=c));break;case 4:r=e[i+1],n=e[i+2],s=e[i+3],128==(192&r)&&128==(192&n)&&128==(192&s)&&(c=(15&t)<<18|(63&r)<<12|(63&n)<<6|63&s,c>65535&&c<1114112&&(o=c))}}null===o?(o=65533,a=1):o>65535&&(o-=65536,n.push(o>>>10&1023|55296),o=56320|1023&o),n.push(o),i+=a}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let r="",n=0;for(;n<t;)r+=String.fromCharCode.apply(String,e.slice(n,n+=S));return r}(n)}e.kMaxLength=i,a.TYPED_ARRAY_SUPPORT=function(){try{const e=new Uint8Array(1),t={foo:function(){return 42}};return Object.setPrototypeOf(t,Uint8Array.prototype),Object.setPrototypeOf(e,t),42===e.foo()}catch(e){return!1}}(),a.TYPED_ARRAY_SUPPORT||"undefined"==typeof console||"function"!=typeof console.error||console.error("This browser lacks typed array (Uint8Array) support which is required by `buffer` v5.x. Use `buffer` v4.x if you require old browser support."),Object.defineProperty(a.prototype,"parent",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.buffer}}),Object.defineProperty(a.prototype,"offset",{enumerable:!0,get:function(){if(a.isBuffer(this))return this.byteOffset}}),a.poolSize=8192,a.from=function(e,t,r){return s(e,t,r)},Object.setPrototypeOf(a.prototype,Uint8Array.prototype),Object.setPrototypeOf(a,Uint8Array),a.alloc=function(e,t,r){return function(e,t,r){return c(e),e<=0?o(e):void 0!==t?"string"==typeof r?o(e).fill(t,r):o(e).fill(t):o(e)}(e,t,r)},a.allocUnsafe=function(e){return u(e)},a.allocUnsafeSlow=function(e){return u(e)},a.isBuffer=function(e){return null!=e&&!0===e._isBuffer&&e!==a.prototype},a.compare=function(e,t){if(H(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),H(t,Uint8Array)&&(t=a.from(t,t.offset,t.byteLength)),!a.isBuffer(e)||!a.isBuffer(t))throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');if(e===t)return 0;let r=e.length,n=t.length;for(let i=0,o=Math.min(r,n);i<o;++i)if(e[i]!==t[i]){r=e[i],n=t[i];break}return r<n?-1:n<r?1:0},a.isEncoding=function(e){switch(String(e).toLowerCase()){case"hex":case"utf8":case"utf-8":case"ascii":case"latin1":case"binary":case"base64":case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return!0;default:return!1}},a.concat=function(e,t){if(!Array.isArray(e))throw new TypeError('"list" argument must be an Array of Buffers');if(0===e.length)return a.alloc(0);let r;if(void 0===t)for(t=0,r=0;r<e.length;++r)t+=e[r].length;const n=a.allocUnsafe(t);let i=0;for(r=0;r<e.length;++r){let t=e[r];if(H(t,Uint8Array))i+t.length>n.length?(a.isBuffer(t)||(t=a.from(t)),t.copy(n,i)):Uint8Array.prototype.set.call(n,t,i);else{if(!a.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(n,i)}i+=t.length}return n},a.byteLength=f,a.prototype._isBuffer=!0,a.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;t<e;t+=2)y(this,t,t+1);return this},a.prototype.swap32=function(){const e=this.length;if(e%4!=0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let t=0;t<e;t+=4)y(this,t,t+3),y(this,t+1,t+2);return this},a.prototype.swap64=function(){const e=this.length;if(e%8!=0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let t=0;t<e;t+=8)y(this,t,t+7),y(this,t+1,t+6),y(this,t+2,t+5),y(this,t+3,t+4);return this},a.prototype.toString=function(){const e=this.length;return 0===e?"":0===arguments.length?T(this,0,e):p.apply(this,arguments)},a.prototype.toLocaleString=a.prototype.toString,a.prototype.equals=function(e){if(!a.isBuffer(e))throw new TypeError("Argument must be a Buffer");return this===e||0===a.compare(this,e)},a.prototype.inspect=function(){let t="";const r=e.INSPECT_MAX_BYTES;return t=this.toString("hex",0,r).replace(/(.{2})/g,"$1 ").trim(),this.length>r&&(t+=" ... "),"<Buffer "+t+">"},n&&(a.prototype[n]=a.prototype.inspect),a.prototype.compare=function(e,t,r,n,i){if(H(e,Uint8Array)&&(e=a.from(e,e.offset,e.byteLength)),!a.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===r&&(r=e?e.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),t<0||r>e.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&t>=r)return 0;if(n>=i)return-1;if(t>=r)return 1;if(this===e)return 0;let o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(t>>>=0);const c=Math.min(o,s),u=this.slice(n,i),l=e.slice(t,r);for(let e=0;e<c;++e)if(u[e]!==l[e]){o=u[e],s=l[e];break}return o<s?-1:s<o?1:0},a.prototype.includes=function(e,t,r){return-1!==this.indexOf(e,t,r)},a.prototype.indexOf=function(e,t,r){return m(this,e,t,r,!0)},a.prototype.lastIndexOf=function(e,t,r){return m(this,e,t,r,!1)},a.prototype.write=function(e,t,r,n){if(void 0===t)n="utf8",r=this.length,t=0;else if(void 0===r&&"string"==typeof t)n=t,r=this.length,t=0;else{if(!isFinite(t))throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");t>>>=0,isFinite(r)?(r>>>=0,void 0===n&&(n="utf8")):(n=r,r=void 0)}const i=this.length-t;if((void 0===r||r>i)&&(r=i),e.length>0&&(r<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");let o=!1;for(;;)switch(n){case"hex":return v(this,e,t,r);case"utf8":case"utf-8":return b(this,e,t,r);case"ascii":case"latin1":case"binary":return _(this,e,t,r);case"base64":return $(this,e,t,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return A(this,e,t,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},a.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function I(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;i<r;++i)n+=String.fromCharCode(127&e[i]);return n}function w(e,t,r){let n="";r=Math.min(e.length,r);for(let i=t;i<r;++i)n+=String.fromCharCode(e[i]);return n}function R(e,t,r){const n=e.length;(!t||t<0)&&(t=0),(!r||r<0||r>n)&&(r=n);let i="";for(let n=t;n<r;++n)i+=Y[e[n]];return i}function P(e,t,r){const n=e.slice(t,r);let i="";for(let e=0;e<n.length-1;e+=2)i+=String.fromCharCode(n[e]+256*n[e+1]);return i}function O(e,t,r){if(e%1!=0||e<0)throw new RangeError("offset is not uint");if(e+t>r)throw new RangeError("Trying to access beyond buffer length")}function C(e,t,r,n,i,o){if(!a.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>i||t<o)throw new RangeError('"value" argument is out of bounds');if(r+n>e.length)throw new RangeError("Index out of range")}function k(e,t,r,n,i){U(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o,o>>=8,e[r++]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,a>>=8,e[r++]=a,r}function x(e,t,r,n,i){U(t,n,i,e,r,7);let o=Number(t&BigInt(4294967295));e[r+7]=o,o>>=8,e[r+6]=o,o>>=8,e[r+5]=o,o>>=8,e[r+4]=o;let a=Number(t>>BigInt(32)&BigInt(4294967295));return e[r+3]=a,a>>=8,e[r+2]=a,a>>=8,e[r+1]=a,a>>=8,e[r]=a,r+8}function L(e,t,r,n,i,o){if(r+n>e.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function D(e,t,n,i,o){return t=+t,n>>>=0,o||L(e,0,n,4),r.write(e,t,n,i,23,4),n+4}function M(e,t,n,i,o){return t=+t,n>>>=0,o||L(e,0,n,8),r.write(e,t,n,i,52,8),n+8}a.prototype.slice=function(e,t){const r=this.length;(e=~~e)<0?(e+=r)<0&&(e=0):e>r&&(e=r),(t=void 0===t?r:~~t)<0?(t+=r)<0&&(t=0):t>r&&(t=r),t<e&&(t=e);const n=this.subarray(e,t);return Object.setPrototypeOf(n,a.prototype),n},a.prototype.readUintLE=a.prototype.readUIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o<t&&(i*=256);)n+=this[e+o]*i;return n},a.prototype.readUintBE=a.prototype.readUIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e+--t],i=1;for(;t>0&&(i*=256);)n+=this[e+--t]*i;return n},a.prototype.readUint8=a.prototype.readUInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),this[e]},a.prototype.readUint16LE=a.prototype.readUInt16LE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]|this[e+1]<<8},a.prototype.readUint16BE=a.prototype.readUInt16BE=function(e,t){return e>>>=0,t||O(e,2,this.length),this[e]<<8|this[e+1]},a.prototype.readUint32LE=a.prototype.readUInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},a.prototype.readUint32BE=a.prototype.readUInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},a.prototype.readBigUInt64LE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,i=this[++e]+256*this[++e]+65536*this[++e]+r*2**24;return BigInt(n)+(BigInt(i)<<BigInt(32))})),a.prototype.readBigUInt64BE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=t*2**24+65536*this[++e]+256*this[++e]+this[++e],i=this[++e]*2**24+65536*this[++e]+256*this[++e]+r;return(BigInt(n)<<BigInt(32))+BigInt(i)})),a.prototype.readIntLE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=this[e],i=1,o=0;for(;++o<t&&(i*=256);)n+=this[e+o]*i;return i*=128,n>=i&&(n-=Math.pow(2,8*t)),n},a.prototype.readIntBE=function(e,t,r){e>>>=0,t>>>=0,r||O(e,t,this.length);let n=t,i=1,o=this[e+--n];for(;n>0&&(i*=256);)o+=this[e+--n]*i;return i*=128,o>=i&&(o-=Math.pow(2,8*t)),o},a.prototype.readInt8=function(e,t){return e>>>=0,t||O(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},a.prototype.readInt16LE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e]|this[e+1]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt16BE=function(e,t){e>>>=0,t||O(e,2,this.length);const r=this[e+1]|this[e]<<8;return 32768&r?4294901760|r:r},a.prototype.readInt32LE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},a.prototype.readInt32BE=function(e,t){return e>>>=0,t||O(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},a.prototype.readBigInt64LE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=this[e+4]+256*this[e+5]+65536*this[e+6]+(r<<24);return(BigInt(n)<<BigInt(32))+BigInt(t+256*this[++e]+65536*this[++e]+this[++e]*2**24)})),a.prototype.readBigInt64BE=z((function(e){Z(e>>>=0,"offset");const t=this[e],r=this[e+7];void 0!==t&&void 0!==r||F(e,this.length-8);const n=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(n)<<BigInt(32))+BigInt(this[++e]*2**24+65536*this[++e]+256*this[++e]+r)})),a.prototype.readFloatLE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!0,23,4)},a.prototype.readFloatBE=function(e,t){return e>>>=0,t||O(e,4,this.length),r.read(this,e,!1,23,4)},a.prototype.readDoubleLE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!0,52,8)},a.prototype.readDoubleBE=function(e,t){return e>>>=0,t||O(e,8,this.length),r.read(this,e,!1,52,8)},a.prototype.writeUintLE=a.prototype.writeUIntLE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){C(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=1,o=0;for(this[t]=255&e;++o<r&&(i*=256);)this[t+o]=e/i&255;return t+r},a.prototype.writeUintBE=a.prototype.writeUIntBE=function(e,t,r,n){if(e=+e,t>>>=0,r>>>=0,!n){C(this,e,t,r,Math.pow(2,8*r)-1,0)}let i=r-1,o=1;for(this[t+i]=255&e;--i>=0&&(o*=256);)this[t+i]=e/o&255;return t+r},a.prototype.writeUint8=a.prototype.writeUInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,255,0),this[t]=255&e,t+1},a.prototype.writeUint16LE=a.prototype.writeUInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeUint16BE=a.prototype.writeUInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeUint32LE=a.prototype.writeUInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},a.prototype.writeUint32BE=a.prototype.writeUInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigUInt64LE=z((function(e,t=0){return k(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeBigUInt64BE=z((function(e,t=0){return x(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),a.prototype.writeIntLE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);C(this,e,t,r,n-1,-n)}let i=0,o=1,a=0;for(this[t]=255&e;++i<r&&(o*=256);)e<0&&0===a&&0!==this[t+i-1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeIntBE=function(e,t,r,n){if(e=+e,t>>>=0,!n){const n=Math.pow(2,8*r-1);C(this,e,t,r,n-1,-n)}let i=r-1,o=1,a=0;for(this[t+i]=255&e;--i>=0&&(o*=256);)e<0&&0===a&&0!==this[t+i+1]&&(a=1),this[t+i]=(e/o>>0)-a&255;return t+r},a.prototype.writeInt8=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},a.prototype.writeInt16LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},a.prototype.writeInt16BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},a.prototype.writeInt32LE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},a.prototype.writeInt32BE=function(e,t,r){return e=+e,t>>>=0,r||C(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},a.prototype.writeBigInt64LE=z((function(e,t=0){return k(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeBigInt64BE=z((function(e,t=0){return x(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),a.prototype.writeFloatLE=function(e,t,r){return D(this,e,t,!0,r)},a.prototype.writeFloatBE=function(e,t,r){return D(this,e,t,!1,r)},a.prototype.writeDoubleLE=function(e,t,r){return M(this,e,t,!0,r)},a.prototype.writeDoubleBE=function(e,t,r){return M(this,e,t,!1,r)},a.prototype.copy=function(e,t,r,n){if(!a.isBuffer(e))throw new TypeError("argument should be a Buffer");if(r||(r=0),n||0===n||(n=this.length),t>=e.length&&(t=e.length),t||(t=0),n>0&&n<r&&(n=r),n===r)return 0;if(0===e.length||0===this.length)return 0;if(t<0)throw new RangeError("targetStart out of bounds");if(r<0||r>=this.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),e.length-t<n-r&&(n=e.length-t+r);const i=n-r;return this===e&&"function"==typeof Uint8Array.prototype.copyWithin?this.copyWithin(t,r,n):Uint8Array.prototype.set.call(e,this.subarray(r,n),t),i},a.prototype.fill=function(e,t,r,n){if("string"==typeof e){if("string"==typeof t?(n=t,t=0,r=this.length):"string"==typeof r&&(n=r,r=this.length),void 0!==n&&"string"!=typeof n)throw new TypeError("encoding must be a string");if("string"==typeof n&&!a.isEncoding(n))throw new TypeError("Unknown encoding: "+n);if(1===e.length){const t=e.charCodeAt(0);("utf8"===n&&t<128||"latin1"===n)&&(e=t)}}else"number"==typeof e?e&=255:"boolean"==typeof e&&(e=Number(e));if(t<0||this.length<t||this.length<r)throw new RangeError("Out of range index");if(r<=t)return this;let i;if(t>>>=0,r=void 0===r?this.length:r>>>0,e||(e=0),"number"==typeof e)for(i=t;i<r;++i)this[i]=e;else{const o=a.isBuffer(e)?e:a.from(e,n),s=o.length;if(0===s)throw new TypeError('The value "'+e+'" is invalid for argument "value"');for(i=0;i<r-t;++i)this[i+t]=o[i%s]}return this};const N={};function G(e,t,r){N[e]=class extends r{constructor(){super(),Object.defineProperty(this,"message",{value:t.apply(this,arguments),writable:!0,configurable:!0}),this.name=`${this.name} [${e}]`,this.stack,delete this.name}get code(){return e}set code(e){Object.defineProperty(this,"code",{configurable:!0,enumerable:!0,value:e,writable:!0})}toString(){return`${this.name} [${e}]: ${this.message}`}}}function V(e){let t="",r=e.length;const n="-"===e[0]?1:0;for(;r>=n+4;r-=3)t=`_${e.slice(r-3,r)}${t}`;return`${e.slice(0,r)}${t}`}function U(e,t,r,n,i,o){if(e>r||e<t){const n="bigint"==typeof t?"n":"";let i;throw i=o>3?0===t||t===BigInt(0)?`>= 0${n} and < 2${n} ** ${8*(o+1)}${n}`:`>= -(2${n} ** ${8*(o+1)-1}${n}) and < 2 ** ${8*(o+1)-1}${n}`:`>= ${t}${n} and <= ${r}${n}`,new N.ERR_OUT_OF_RANGE("value",i,e)}!function(e,t,r){Z(t,"offset"),void 0!==e[t]&&void 0!==e[t+r]||F(t,e.length-(r+1))}(n,i,o)}function Z(e,t){if("number"!=typeof e)throw new N.ERR_INVALID_ARG_TYPE(t,"number",e)}function F(e,t,r){if(Math.floor(e)!==e)throw Z(e,r),new N.ERR_OUT_OF_RANGE(r||"offset","an integer",e);if(t<0)throw new N.ERR_BUFFER_OUT_OF_BOUNDS;throw new N.ERR_OUT_OF_RANGE(r||"offset",`>= ${r?1:0} and <= ${t}`,e)}G("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),G("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),G("ERR_OUT_OF_RANGE",(function(e,t,r){let n=`The value of "${e}" is out of range.`,i=r;return Number.isInteger(r)&&Math.abs(r)>2**32?i=V(String(r)):"bigint"==typeof r&&(i=String(r),(r>BigInt(2)**BigInt(32)||r<-(BigInt(2)**BigInt(32)))&&(i=V(i)),i+="n"),n+=` It must be ${t}. Received ${i}`,n}),RangeError);const B=/[^+/0-9A-Za-z-_]/g;function j(e,t){let r;t=t||1/0;const n=e.length;let i=null;const o=[];for(let a=0;a<n;++a){if(r=e.charCodeAt(a),r>55295&&r<57344){if(!i){if(r>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(a+1===n){(t-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(t-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(t-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((t-=1)<0)break;o.push(r)}else if(r<2048){if((t-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((t-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function X(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(B,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function W(e,t,r,n){let i;for(i=0;i<n&&!(i+r>=t.length||i>=e.length);++i)t[i+r]=e[i];return i}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function K(e){return e!=e}const Y=function(){const e="0123456789abcdef",t=new Array(256);for(let r=0;r<16;++r){const n=16*r;for(let i=0;i<16;++i)t[n+i]=e[r]+e[i]}return t}();function z(e){return"undefined"==typeof BigInt?J:e}function J(){throw new Error("BigInt not supported")}})(buffer),Object.defineProperty(scte35,"__esModule",{value:!0});var SCTE35_1=scte35.SCTE35=void 0;const descriptors$1=descriptors$2,util$1=util$3,buffer_1=buffer;class SCTE35{constructor(){this.buffer=buffer_1.Buffer}parseFromB64(e){const t=Uint8Array.from(this.parseBase64(e).split("").map((e=>e.charCodeAt(0))));return this.parseSCTE35Data(t)}parseFromHex(e){const t=e.match(/[a-f\d]{2}/gi)||[],r=Uint8Array.from(t.map((e=>parseInt(e,16))));return this.parseSCTE35Data(r)}parseBase64(e){return this.buffer.from(e,"base64").toString("binary")}spliceEvent(e,t,r){let n=0;if(e.spliceEventId=t.getUint32(n),n+=4,e.spliceEventCancelIndicator=!!(128&t.getUint8(n++)),e.spliceEventCancelIndicator)return n;let i=t.getUint8(n++);if(e.outOfNetworkIndicator=!!(128&i),e.programSpliceFlag=!!(64&i),e.durationFlag=!!(32&i),5===r&&(e.spliceImmediateFlag=!!(16&i)),e.programSpliceFlag)if(5!==r||e.spliceImmediateFlag)4===r&&(e.utcSpliceTime=t.getUint32(n),n+=4);else{const r=this.timeSignal(new DataView(t.buffer,t.byteOffset+n,5));e.spliceTime=r,n++,r.specified&&(n+=4)}else if(e.componentCount=t.getUint8(n++),4===r){const r=[];for(;r.length!==e.componentCount;)r.push({componentTag:t.getUint8(n++),utcSpliceTime:t.getUint32(n)}),n+=4;e.utcSpliceComponents=r}else console.warn("scte35-js TODO: support splice_insert");return e.durationFlag&&(i=t.getUint8(n++),e.breakDuration={autoReturn:!!(128&i),duration:(1&i?util$1.THIRTY_TWO_BIT_MULTIPLIER:0)+t.getUint32(n)},n+=4),e.uniqueProgramId=t.getUint16(n),n+=2,e.available=t.getUint8(n++),e.expected=t.getUint8(n++),n}spliceSchedule(e){const t={};t.spliceCount=e.getUint8(0),t.spliceEvents=[];let r=1;for(;t.spliceEvents.length!==t.spliceCount;){const n={};r+=this.spliceEvent(n,new DataView(e.buffer,e.byteOffset+r),4),t.spliceEvents.push(n)}return r!==e.byteLength&&console.error(`scte35-js Bad read splice_schedule actual: ${r} expected: ${e.byteLength}`),t}spliceInsert(e){const t={},r=this.spliceEvent(t,e,5);return r!==e.byteLength&&console.error(`scte35-js Bad read splice_insert actual: ${r} expected: ${e.byteLength}`),t}timeSignal(e){const t={},r=e.getUint8(0);return t.specified=!!(128&r),t.specified&&(t.pts=1&r?util$1.THIRTY_TWO_BIT_MULTIPLIER:0,t.pts+=e.getUint32(1)),t}privateCommand(e){const t={},r=e.getUint32(0),n=new Uint8Array(e.buffer,e.byteOffset+4,e.byteLength-4);return t.identifier=r,t.identifier&&(t.rawData=n),t}parseSCTE35Data(e){const t={},r=new DataView(e.buffer);let n=0;t.tableId=r.getUint8(n++);let i=r.getUint8(n++);if(t.selectionSyntaxIndicator=!!(128&i),t.privateIndicator=!!(64&i),t.sectionLength=((15&i)<<8)+r.getUint8(n++),t.sectionLength+3!==e.byteLength)throw new Error(`Binary read error sectionLength: ${t.sectionLength} + 3 !== data.length: ${e.byteLength}`);if(t.protocolVersion=r.getUint8(n++),i=r.getUint8(n++),t.encryptedPacket=!!(128&i),t.encryptedAlgorithm=(126&i)>>1,t.encryptedPacket&&console.error(`scte35-js splice_info_section encrypted_packet ${t.encryptedAlgorithm} not supported`),t.ptsAdjustment=1&i?util$1.THIRTY_TWO_BIT_MULTIPLIER:0,t.ptsAdjustment+=r.getUint32(n),n+=4,t.cwIndex=r.getUint8(n++),t.tier=r.getUint8(n++)<<4,i=r.getUint8(n++),t.tier+=(240&i)>>4,t.spliceCommandLength=((15&i)<<8)+r.getUint8(n++),t.spliceCommandType=r.getUint8(n++),4095===t.spliceCommandLength)if(6===t.spliceCommandType){const e=128&r.getUint8(n);t.spliceCommandLength=e?5:1}else if(0===t.spliceCommandType)t.spliceCommandLength=0;else if(5===t.spliceCommandType){let e=n;e+=4;if(!(128&r.getUint8(e++))){const i=r.getUint8(e++),o=16&i,a=32&i,s=64&i;if(s&&!o&&(e+=5),!s){const t=r.getUint8(e++);e+=t,e+=o?0:5*t}a&&(e+=5),e+=4,t.spliceCommandLength=e-n}}else console.error("scte35-js Unspecified length not supported in this context");if(0!==t.spliceCommandType){const r=new DataView(e.buffer,n,t.spliceCommandLength);4===t.spliceCommandType?t.spliceCommand=this.spliceSchedule(r):5===t.spliceCommandType?t.spliceCommand=this.spliceInsert(r):6===t.spliceCommandType?t.spliceCommand=this.timeSignal(r):255===t.spliceCommandType&&(t.spliceCommand=this.privateCommand(r))}if(n+=t.spliceCommandLength,t.descriptorLoopLength=r.getUint16(n),n+=2,t.descriptorLoopLength){let r=t.descriptorLoopLength;t.descriptors=[];try{for(;r;){const i=new DataView(e.buffer,n,r),o=descriptors$1.parseDescriptor(i);r-=o.descriptorLength+2,n+=o.descriptorLength+2,t.descriptors.push(o)}}catch(e){console.error(`scte35-js Error reading descriptor @ ${n}, ignoring remaining bytes: ${r} in loop.`),console.error(e),n+=r,r=0}}return t.crc=r.getUint32(n),n+=4,n!==r.byteLength&&console.error(`scte35-js Bad SCTE35 read - remaining data: ${e.slice(n).join(", ")}`),t}}SCTE35_1=scte35.SCTE35=SCTE35;var SCTE35_OUT_TAG="SCTE35-OUT",START_DATE_TAG="START-DATE",PLANNED_DURATION_TAG="PLANNED-DURATION",SPLICE_INSERT=5;function isValidScte35DateRange(e){return!(!e[PLANNED_DURATION_TAG]||!e.message&&!e[SCTE35_OUT_TAG]||void 0===e.startTime&&!e[START_DATE_TAG])}var Scte35Manager=function(){function e(t){var r=this;_classCallCheck$9(this,e),_defineProperty$7(this,"_options",void 0),_defineProperty$7(this,"_track",void 0),_defineProperty$7(this,"_startTime",void 0),_defineProperty$7(this,"_adBreakCues",void 0),_defineProperty$7(this,"_activeAdBreak",null),_defineProperty$7(this,"_activeAdBreakStatus","WAITING_PREROLL"),_defineProperty$7(this,"_scte35",new SCTE35_1),_defineProperty$7(this,"_scte35ResultMap",new _Map),_defineProperty$7(this,"_handleTimeUpdate",(function(){var e,t,n,i,o;if(null!==(e=r._adBreakCues)&&void 0!==e&&e.length)for(var a=0;a<r._adBreakCues.length;a++){var s=r._adBreakCues[a];if(s.startTime>=r._player.currentTime){n=s;break}}if(n&&(null===(t=r._activeAdBreak)||void 0===t?void 0:t.id)===n.id)if((null===(i=r._activeAdBreak)||void 0===i?void 0:i.startDate)!==n.startDate)switch(r._activeAdBreakStatus){case"REQUESTED":r._changeActiveAdBreakStatus("REQUESTED",n);break;case"ERROR":case"COMPLETE":r._changeActiveAdBreakStatus("READY",null)}else(null===(o=r._activeAdBreak)||void 0===o?void 0:o.startTime)!==n.startTime&&r._changeActiveAdBreakStatus(r._activeAdBreakStatus,n);r._tryToPlayAd(),r._tryToRequestAd(n)})),_defineProperty$7(this,"_onReady",(function(){r._changeActiveAdBreakStatus("READY",null),r._player.off(AD_ERROR,r._onReady),r._player.off(AD_ALL_COMPLETED,r._onReady),r._player.on(TIME_UPDATE,r._handleTimeUpdate),r._player.on(AD_ALL_COMPLETED,r._onAdComplete),r._player.on(AD_ERROR,r._onAdError),r._handleTimeUpdate()})),_defineProperty$7(this,"_onAdComplete",(function(){r._changeActiveAdBreakStatus("COMPLETE",r._activeAdBreak)})),_defineProperty$7(this,"_onAdError",(function(){r._changeActiveAdBreakStatus("ERROR",r._activeAdBreak)})),_defineProperty$7(this,"_handleHlsCoreEvent",(function(e){var t=e.eventName,n=e.playlist;if("core.hlslevelloaded"===t){var i;if(null!=n&&null!==(i=n.segments)&&void 0!==i&&i.length&&0===r._player.currentTime){var o,a=_createForOfIteratorHelper$1(n.segments);try{for(a.s();!(o=a.n()).done;){var s=o.value;if(0===s.start){r._startTime=new Date(s.dataTime).getTime();break}}}catch(e){a.e(e)}finally{a.f()}}null!=n&&n.dateRanges&&r._startTime&&r._updateAdBreakCues(n.dateRanges)}})),_defineProperty$7(this,"_onAddTrack",(function(e){var t=e.track;"metadata"===(null==t?void 0:t.kind)&&(t.mode="hidden",r._track=t,r._track.addEventListener("cuechange",r._onCuechange))})),_defineProperty$7(this,"_onCuechange",(function(){for(var e,t={},n=(null===(e=r._track)||void 0===e?void 0:e.cues)||[],i=0;i<n.length;){var o,a=n[i];if((null===(o=a.value)||void 0===o?void 0:o.key)===PLANNED_DURATION_TAG){var s,c=i+1<n.length?n[i+1]:null;if((null==c||null===(s=c.value)||void 0===s?void 0:s.key)===SCTE35_OUT_TAG&&(null==c?void 0:c.startTime)===a.startTime){var u,l,d=r._getScte35Result(null===(u=c.value)||void 0===u?void 0:u.data),h=String((null==d?void 0:d.spliceCommand).spliceEventId);t[h]=_defineProperty$7({ID:h,startTime:c.startTime,message:d},PLANNED_DURATION_TAG,null===(l=a.value)||void 0===l?void 0:l.data),i+=2}else i++}else i++}r._updateAdBreakCues(t)})),this._options=t,this._init()}return _createClass$9(e,[{key:"_player",get:function(){return this._options.player}},{key:"_adManager",get:function(){return this._options.adManager}},{key:"_adTagUrl",get:function(){return this._options.adTagUrl}},{key:"_mediaElement",get:function(){return this._player.media}},{key:"destroy",value:function(){var e,t;null===(e=this._track)||void 0===e||e.removeEventListener("cuechange",this._onCuechange),this._track=void 0,null===(t=this._mediaElement)||void 0===t||null===(t=t.textTracks)||void 0===t||t.removeEventListener("addtrack",this._onAddTrack),this._player.off("core_event",this._handleHlsCoreEvent),this._player.off(TIME_UPDATE,this._handleTimeUpdate),this._player.off(IMA_AD_COMPLETE,this._onAdComplete),this._player.off(IMA_AD_ERROR,this._onAdError)}},{key:"_init",value:function(){var e;null===(e=this._mediaElement)||void 0===e||null===(e=e.textTracks)||void 0===e||e.addEventListener("addtrack",this._onAddTrack),this._player.on("core_event",this._handleHlsCoreEvent);var t=this._adManager.config,r=t.adsRequest,n=t.adsResponse,i=t.adTagUrl;r||n||i?(this._player.once(AD_ERROR,this._onReady),this._player.once(AD_ALL_COMPLETED,this._onReady)):this._onReady()}},{key:"_changeActiveAdBreakStatus",value:function(e,t){var r,n;this._activeAdBreakStatus=e,this._activeAdBreak=t,console.log(_concatInstanceProperty(r=_concatInstanceProperty(n="Update adbreak status, status: ".concat(this._activeAdBreakStatus,", player start time: ")).call(n,this._startTime,", player current time: ")).call(r,this._player.currentTime),this._activeAdBreak)}},{key:"_tryToRequestAd",value:function(e){var t;e&&"WAITING_PREROLL"!==this._activeAdBreakStatus&&"STARTED"!==this._activeAdBreakStatus&&e.id!==(null===(t=this._activeAdBreak)||void 0===t?void 0:t.id)&&(this._changeActiveAdBreakStatus("REQUESTED",e),this._adManager.reset(),this._adManager.updateConfig({adTagUrl:this._adTagUrl}),this._adManager.requestAds())}},{key:"_tryToPlayAd",value:function(){!this._activeAdBreak||this._activeAdBreak.startTime>this._player.currentTime||("ERROR"!==this._activeAdBreakStatus?"REQUESTED"===this._activeAdBreakStatus&&(this._changeActiveAdBreakStatus("STARTED",this._activeAdBreak),this._adManager.playAds()):this._changeActiveAdBreakStatus("READY",null))}},{key:"_getScte35Result",value:function(e){if(!this._scte35ResultMap.has(e))try{this._scte35ResultMap.set(e,this._scte35.parseFromHex(e))}catch(e){}if(!this._scte35ResultMap.has(e))try{this._scte35ResultMap.set(e,this._scte35.parseFromB64(e))}catch(e){}return this._scte35ResultMap.get(e)}},{key:"_updateAdBreakCues",value:function(e){var t,r,n=this;this._adBreakCues=_sortInstanceProperty(t=_reduceInstanceProperty(r=_Object$keys(e)).call(r,(function(t,r){var i=e[r];if(isValidScte35DateRange(i)){var o=i.message||n._getScte35Result(i[SCTE35_OUT_TAG]);(null==o?void 0:o.spliceCommandType)===SPLICE_INSERT&&t.push({data:o,id:i.ID,startTime:i.startTime||(new Date(i[START_DATE_TAG]).getTime()-n._startTime)/1e3,duration:_parseFloat$1(i[PLANNED_DURATION_TAG]||"0"),startDate:i[START_DATE_TAG]})}return t}),[])).call(t,(function(e,t){return e.startTime-t.startTime}))}}]),e}(),$forEach$3=arrayIteration$1.forEach,arrayMethodIsStrict$9=arrayMethodIsStrict$c,STRICT_METHOD$7=arrayMethodIsStrict$9("forEach"),arrayForEach$1=STRICT_METHOD$7?[].forEach:function(e){return $forEach$3(this,e,arguments.length>1?arguments[1]:void 0)},$$R=_export$1,forEach$c=arrayForEach$1;$$R({target:"Array",proto:!0,forced:[].forEach!=arrayForEach$1},{forEach:arrayForEach$1});var entryVirtual$1=entryVirtual$7,forEach$b=entryVirtual$1("Array").forEach,parent$5=forEach$b,forEach$a=parent$5,classof$e=classof$o,hasOwn$m=hasOwnProperty_1$1,isPrototypeOf$a=objectIsPrototypeOf$1,method$2=forEach$a,ArrayPrototype$3=Array.prototype,DOMIterables$2={DOMTokenList:!0,NodeList:!0},forEach$9=function(e){var t=e.forEach;return e===ArrayPrototype$3||isPrototypeOf$a(ArrayPrototype$3,e)&&t===ArrayPrototype$3.forEach||hasOwn$m(DOMIterables$2,classof$e(e))?method$2:t},parent$4=forEach$9,forEach$8=parent$4,parent$3=forEach$8,forEach$7=parent$3,forEach$6=forEach$7,forEach$5=forEach$6,_forEachInstanceProperty=getDefaultExportFromCjs(forEach$5),$$Q=_export$1,$filter$1=arrayIteration$1.filter,arrayMethodHasSpeciesSupport$3=arrayMethodHasSpeciesSupport$6,HAS_SPECIES_SUPPORT$2=arrayMethodHasSpeciesSupport$3("filter");$$Q({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$2},{filter:function(e){return $filter$1(this,e,arguments.length>1?arguments[1]:void 0)}});var entryVirtual=entryVirtual$7,filter$6=entryVirtual("Array").filter,isPrototypeOf$9=objectIsPrototypeOf$1,method$1=filter$6,ArrayPrototype$2=Array.prototype,filter$5=function(e){var t=e.filter;return e===ArrayPrototype$2||isPrototypeOf$9(ArrayPrototype$2,e)&&t===ArrayPrototype$2.filter?method$1:t},parent$2=filter$5,filter$4=parent$2,parent$1=filter$4,filter$3=parent$1,parent=filter$3,filter$2=parent,filter$1=filter$2,filter5=filter$1,_filterInstanceProperty=getDefaultExportFromCjs(filter5);function scheduleToVmap(e){var t,r;if(e&&e.length){var n=document.implementation.createDocument("http://www.iab.net/videosuite/vmap","vmap:VMAP"),i=n.getElementsByTagName("vmap:VMAP");i[0].setAttribute("version","1.0");var o,a=0,s=0;return _forEachInstanceProperty(t=_sortInstanceProperty(r=_filterInstanceProperty(e).call(e,(function(e){var t=e.offset;return"pre"===t||"post"===t||/^(\d\d):([0-5]\d):([0-5]\d)(.\d\d\d)?$/.test(t)}))).call(r,(function(e,t){return"pre"===e.offset||"post"===t.offset?-1:"post"===e.offset||"pre"===t.offset?1:Date.parse("2024-01-01T".concat(e.offset))<Date.parse("2024-01-01T".concat(t.offset))?-1:1}))).call(t,(function(e){var t,r,c,u=e.offset,l=e.type,d=e.tag;switch(u){case"pre":r="start",c="preroll";break;case"post":r="end",c="postroll";break;default:r=u,o!==u?(o=u,s=1,c="midroll-".concat(++a)):(s++,c="midroll-".concat(a))}var h=n.createElement("vmap:AdBreak");h.setAttribute("timeOffset",r),h.setAttribute("breakId",c),h.setAttribute("breakType",l||"linear"),i[0].appendChild(h);var f=n.createElement("vmap:AdSource");f.setAttribute("id",_concatInstanceProperty(t="".concat(c,"-ad-")).call(t,s)),f.setAttribute("allowMultipleAds","true"),f.setAttribute("followRedirects","true"),h.appendChild(f);var p=n.createElement("vmap:AdTagURI");p.setAttribute("templateType","vast3"),f.appendChild(p),p.innerHTML="<![CDATA[ ".concat(d," ]]>")})),(new XMLSerializer).serializeToString(n)}}function isPrerollAd(e){var t;return 0===(null==e||null===(t=e.getAdPodInfo())||void 0===t?void 0:t.getTimeOffset())}var index_min="",AdsPlugin=function(e){_inherits$6(r,AdsPlugin$1);var t=_createSuper$6(r);function r(){var e,n;_classCallCheck$9(this,r);for(var i=arguments.length,o=new Array(i),a=0;a<i;a++)o[a]=arguments[a];return _defineProperty$7(_assertThisInitialized$6(n=t.call.apply(t,_concatInstanceProperty(e=[this]).call(e,o))),"_scte35Manager",void 0),_defineProperty$7(_assertThisInitialized$6(n),"_handlePrerollMuted",(function(e){var t,r;isPrerollAd(e.ad)&&(null===(t=n.player.plugins.autoplayplugin)||void 0===t||null===(r=t.handleAutoplayStart)||void 0===r||r.call(t),n.player.once(VOLUME_CHANGE,(function(){var e,t;null===(e=n.player.plugins.autoplayplugin)||void 0===e||null===(t=e.initState)||void 0===t||t.call(e)})))})),n}return _createClass$9(r,[{key:"afterCreate",value:function(){_get$2(_getPrototypeOf$6(r.prototype),"afterCreate",this).call(this),this._init()}},{key:"beforePlayerInit",value:function(){var e,t,n=_get$2(_getPrototypeOf$6(r.prototype),"beforePlayerInit",this).call(this);return null===(e=this.csManager)||void 0===e||e.once(IMA_SDK_LOAD_SUCCESS,(function(){google.ima.settings.setDisableCustomPlaybackForIOS10Plus(!0)})),this.config.enableSCTE35&&null!==(t=this.config.ima)&&void 0!==t&&t.adTagUrlForSCTE35&&(this._scte35Manager=new Scte35Manager({player:this.player,adTagUrl:this.config.ima.adTagUrlForSCTE35,adManager:this.csManager})),n}},{key:"destroy",value:function(){var e;_get$2(_getPrototypeOf$6(r.prototype),"destroy",this).call(this),null===(e=this._scte35Manager)||void 0===e||e.destroy(),this._scte35Manager=void 0}},{key:"_init",value:function(){var e,t;null!==(e=this.config.ima)&&void 0!==e&&e.adTagUrl||null===(t=this.config.ima)||void 0===t||null===(t=t.schedule)||void 0===t||!t.length||(this.config.ima.adsResponse=scheduleToVmap(this.config.ima.schedule)),this.player.once(AD_PLAY,this._handlePrerollMuted)}}],[{key:"pluginName",get:function(){return"ad"}}]),r}(),plugin="";function ownKeys$4(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2$2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$4(Object(r),!0).forEach((function(t){_defineProperty$4(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$4(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime$2(){_regeneratorRuntime$2=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function _typeof$3(e){return(_typeof$3="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function asyncGeneratorStep$2(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$2(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep$2(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep$2(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$6(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$6(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$6(e,t,r){return t&&_defineProperties$6(e.prototype,t),r&&_defineProperties$6(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$4(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$4(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$4(e,t)}function _getPrototypeOf$4(e){return(_getPrototypeOf$4=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$4(e,t){return(_setPrototypeOf$4=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$4(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _assertThisInitialized$4(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$4(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$4(e)}function _createSuper$4(e){var t=_isNativeReflectConstruct$4();return function(){var r,n=_getPrototypeOf$4(e);if(t){var i=_getPrototypeOf$4(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$4(this,r)}}function _toConsumableArray$3(e){return _arrayWithoutHoles$3(e)||_iterableToArray$3(e)||_unsupportedIterableToArray$4(e)||_nonIterableSpread$3()}function _arrayWithoutHoles$3(e){if(Array.isArray(e))return _arrayLikeToArray$4(e)}function _iterableToArray$3(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _unsupportedIterableToArray$4(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$4(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$4(e,t):void 0}}function _arrayLikeToArray$4(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$3(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var global$G=global$1y,apply$8=functionApply$2,isCallable$q=isCallable$1d,userAgent$6=engineUserAgent$2,arraySlice$b=arraySlice$q,validateArgumentsLength$3=validateArgumentsLength$7,MSIE=/MSIE .\./.test(userAgent$6),Function$3=global$G.Function,wrap$1=function(e){return MSIE?function(t,r){var n=validateArgumentsLength$3(arguments.length,1)>2,i=isCallable$q(t)?t:Function$3(t),o=n?arraySlice$b(arguments,2):void 0;return e(n?function(){apply$8(i,this,o)}:i,r)}:e},schedulersFix$3={setTimeout:wrap$1(global$G.setTimeout),setInterval:wrap$1(global$G.setInterval)},$$P=_export$2,global$F=global$1y,setInterval$2=schedulersFix$3.setInterval;$$P({global:!0,bind:!0,forced:global$F.setInterval!==setInterval$2},{setInterval:setInterval$2});var $$O=_export$2,global$E=global$1y,setTimeout$2=schedulersFix$3.setTimeout;$$O({global:!0,bind:!0,forced:global$E.setTimeout!==setTimeout$2},{setTimeout:setTimeout$2});var $$N=_export$2,$every$1=arrayIteration$2.every,arrayMethodIsStrict$8=arrayMethodIsStrict$h,STRICT_METHOD$6=arrayMethodIsStrict$8("every");$$N({target:"Array",proto:!0,forced:!STRICT_METHOD$6},{every:function(e){return $every$1(this,e,arguments.length>1?arguments[1]:void 0)}});var $$M=_export$2,uncurryThis$J=functionUncurryThisClause$2,$indexOf$2=arrayIncludes$2.indexOf,arrayMethodIsStrict$7=arrayMethodIsStrict$h,nativeIndexOf$1=uncurryThis$J([].indexOf),NEGATIVE_ZERO$2=!!nativeIndexOf$1&&1/nativeIndexOf$1([1],1,-0)<0,STRICT_METHOD$5=arrayMethodIsStrict$7("indexOf");$$M({target:"Array",proto:!0,forced:NEGATIVE_ZERO$2||!STRICT_METHOD$5},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return NEGATIVE_ZERO$2?nativeIndexOf$1(this,e,t)||0:$indexOf$2(this,e,t)}});var uncurryThis$I=functionUncurryThis$2,aCallable$d=aCallable$C,isObject$o=isObject$_,hasOwn$l=hasOwnProperty_1$2,arraySlice$a=arraySlice$q,NATIVE_BIND$5=functionBindNative$2,$Function$1=Function,concat$3=uncurryThis$I([].concat),join$3=uncurryThis$I([].join),factories$1={},construct$2=function(e,t,r){if(!hasOwn$l(factories$1,t)){for(var n=[],i=0;i<t;i++)n[i]="a["+i+"]";factories$1[t]=$Function$1("C,a","return new C("+join$3(n,",")+")")}return factories$1[t](e,r)},functionBind$1=NATIVE_BIND$5?$Function$1.bind:function(e){var t=aCallable$d(this),r=t.prototype,n=arraySlice$a(arguments,1),i=function(){var r=concat$3(n,arraySlice$a(arguments));return this instanceof i?construct$2(t,r.length,r):t.apply(e,r)};return isObject$o(r)&&(i.prototype=r),i},$$L=_export$2,bind$a=functionBind$1;$$L({target:"Function",proto:!0,forced:Function.bind!==bind$a},{bind:bind$a});var $$K=_export$2,forEach$4=arrayForEach$2;$$K({target:"Array",proto:!0,forced:[].forEach!=arrayForEach$2},{forEach:arrayForEach$2});var uncurryThis$H=functionUncurryThis$2,defineBuiltIn$e=defineBuiltIn$A,DatePrototype$1=Date.prototype,INVALID_DATE$1="Invalid Date",TO_STRING$2="toString",nativeDateToString$1=uncurryThis$H(DatePrototype$1[TO_STRING$2]),thisTimeValue$2=uncurryThis$H(DatePrototype$1.getTime);String(new Date(NaN))!=INVALID_DATE$1&&defineBuiltIn$e(DatePrototype$1,TO_STRING$2,(function(){var e=thisTimeValue$2(this);return e==e?nativeDateToString$1(this):INVALID_DATE$1}));var global$D=global$1y,fails$H=fails$1T,uncurryThis$G=functionUncurryThis$2,toString$h=toString$E,trim$3=stringTrim$2.trim,whitespaces$4=whitespaces$b,$parseInt$3=global$D.parseInt,Symbol$4=global$D.Symbol,ITERATOR$9=Symbol$4&&Symbol$4.iterator,hex$1=/^[+-]?0x/i,exec$3=uncurryThis$G(hex$1.exec),FORCED$d=8!==$parseInt$3(whitespaces$4+"08")||22!==$parseInt$3(whitespaces$4+"0x16")||ITERATOR$9&&!fails$H((function(){$parseInt$3(Object(ITERATOR$9))})),numberParseInt$1=FORCED$d?function(e,t){var r=trim$3(toString$h(e));return $parseInt$3(r,t>>>0||(exec$3(hex$1,r)?16:10))}:$parseInt$3,$$J=_export$2,$parseInt$2=numberParseInt$1;function _classCallCheck$5(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$5(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$5(e,t,r){return t&&_defineProperties$5(e.prototype,t),r&&_defineProperties$5(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$3(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$3(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$3(e,t)}function _getPrototypeOf$3(e){return(_getPrototypeOf$3=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$3(e,t){return(_setPrototypeOf$3=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$3(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _assertThisInitialized$3(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$3(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$3(e)}function _createSuper$3(e){var t=_isNativeReflectConstruct$3();return function(){var r,n=_getPrototypeOf$3(e);if(t){var i=_getPrototypeOf$3(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$3(this,r)}}$$J({global:!0,forced:parseInt!=numberParseInt$1},{parseInt:numberParseInt$1});var check=function(e){return e&&e.Math==Math&&e},global$C=check("object"==typeof globalThis&&globalThis)||check("object"==typeof window&&window)||check("object"==typeof self&&self)||check("object"==typeof commonjsGlobal&&commonjsGlobal)||function(){return this}()||commonjsGlobal||Function("return this")(),objectGetOwnPropertyDescriptor={},fails$G=function(e){try{return!!e()}catch(e){return!0}},fails$F=fails$G,descriptors=!fails$F((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),fails$E=fails$G,functionBindNative=!fails$E((function(){var e=function(){}.bind();return"function"!=typeof e||e.hasOwnProperty("prototype")})),NATIVE_BIND$4=functionBindNative,call$m=Function.prototype.call,functionCall=NATIVE_BIND$4?call$m.bind(call$m):function(){return call$m.apply(call$m,arguments)},objectPropertyIsEnumerable={},$propertyIsEnumerable$1={}.propertyIsEnumerable,getOwnPropertyDescriptor$4=Object.getOwnPropertyDescriptor,NASHORN_BUG=getOwnPropertyDescriptor$4&&!$propertyIsEnumerable$1.call({1:2},1);objectPropertyIsEnumerable.f=NASHORN_BUG?function(e){var t=getOwnPropertyDescriptor$4(this,e);return!!t&&t.enumerable}:$propertyIsEnumerable$1;var match,version$1,createPropertyDescriptor$6=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}},NATIVE_BIND$3=functionBindNative,FunctionPrototype$2=Function.prototype,call$l=FunctionPrototype$2.call,uncurryThisWithBind=NATIVE_BIND$3&&FunctionPrototype$2.bind.bind(call$l,call$l),functionUncurryThis=NATIVE_BIND$3?uncurryThisWithBind:function(e){return function(){return call$l.apply(e,arguments)}},uncurryThis$F=functionUncurryThis,toString$g=uncurryThis$F({}.toString),stringSlice$7=uncurryThis$F("".slice),classofRaw$2=function(e){return stringSlice$7(toString$g(e),8,-1)},uncurryThis$E=functionUncurryThis,fails$D=fails$G,classof$d=classofRaw$2,$Object$4=Object,split=uncurryThis$E("".split),indexedObject=fails$D((function(){return!$Object$4("z").propertyIsEnumerable(0)}))?function(e){return"String"==classof$d(e)?split(e,""):$Object$4(e)}:$Object$4,isNullOrUndefined$8=function(e){return null==e},isNullOrUndefined$7=isNullOrUndefined$8,$TypeError$f=TypeError,requireObjectCoercible$8=function(e){if(isNullOrUndefined$7(e))throw $TypeError$f("Can't call method on "+e);return e},IndexedObject$2=indexedObject,requireObjectCoercible$7=requireObjectCoercible$8,toIndexedObject$b=function(e){return IndexedObject$2(requireObjectCoercible$7(e))},documentAll$2="object"==typeof document&&document.all,IS_HTMLDDA=void 0===documentAll$2&&void 0!==documentAll$2,documentAll_1={all:documentAll$2,IS_HTMLDDA:IS_HTMLDDA},$documentAll$1=documentAll_1,documentAll$1=$documentAll$1.all,isCallable$p=$documentAll$1.IS_HTMLDDA?function(e){return"function"==typeof e||e===documentAll$1}:function(e){return"function"==typeof e},isCallable$o=isCallable$p,$documentAll=documentAll_1,documentAll=$documentAll.all,isObject$n=$documentAll.IS_HTMLDDA?function(e){return"object"==typeof e?null!==e:isCallable$o(e)||e===documentAll}:function(e){return"object"==typeof e?null!==e:isCallable$o(e)},global$B=global$C,isCallable$n=isCallable$p,aFunction=function(e){return isCallable$n(e)?e:void 0},getBuiltIn$a=function(e,t){return arguments.length<2?aFunction(global$B[e]):global$B[e]&&global$B[e][t]},uncurryThis$D=functionUncurryThis,objectIsPrototypeOf=uncurryThis$D({}.isPrototypeOf),engineUserAgent="undefined"!=typeof navigator&&String(navigator.userAgent)||"",global$A=global$C,userAgent$5=engineUserAgent,process$5=global$A.process,Deno$1=global$A.Deno,versions=process$5&&process$5.versions||Deno$1&&Deno$1.version,v8=versions&&versions.v8;v8&&(version$1=(match=v8.split("."))[0]>0&&match[0]<4?1:+(match[0]+match[1])),!version$1&&userAgent$5&&(!(match=userAgent$5.match(/Edge\/(\d+)/))||match[1]>=74)&&(match=userAgent$5.match(/Chrome\/(\d+)/))&&(version$1=+match[1]);var engineV8Version=version$1,V8_VERSION$2=engineV8Version,fails$C=fails$G,global$z=global$C,$String$6=global$z.String,symbolConstructorDetection=!!Object.getOwnPropertySymbols&&!fails$C((function(){var e=Symbol();return!$String$6(e)||!(Object(e)instanceof Symbol)||!Symbol.sham&&V8_VERSION$2&&V8_VERSION$2<41})),NATIVE_SYMBOL$5=symbolConstructorDetection,useSymbolAsUid=NATIVE_SYMBOL$5&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,getBuiltIn$9=getBuiltIn$a,isCallable$m=isCallable$p,isPrototypeOf$8=objectIsPrototypeOf,USE_SYMBOL_AS_UID$1=useSymbolAsUid,$Object$3=Object,isSymbol$5=USE_SYMBOL_AS_UID$1?function(e){return"symbol"==typeof e}:function(e){var t=getBuiltIn$9("Symbol");return isCallable$m(t)&&isPrototypeOf$8(t.prototype,$Object$3(e))},$String$5=String,tryToString$7=function(e){try{return $String$5(e)}catch(e){return"Object"}},isCallable$l=isCallable$p,tryToString$6=tryToString$7,$TypeError$e=TypeError,aCallable$c=function(e){if(isCallable$l(e))return e;throw $TypeError$e(tryToString$6(e)+" is not a function")},aCallable$b=aCallable$c,isNullOrUndefined$6=isNullOrUndefined$8,getMethod$5=function(e,t){var r=e[t];return isNullOrUndefined$6(r)?void 0:aCallable$b(r)},call$k=functionCall,isCallable$k=isCallable$p,isObject$m=isObject$n,$TypeError$d=TypeError,ordinaryToPrimitive$1=function(e,t){var r,n;if("string"===t&&isCallable$k(r=e.toString)&&!isObject$m(n=call$k(r,e)))return n;if(isCallable$k(r=e.valueOf)&&!isObject$m(n=call$k(r,e)))return n;if("string"!==t&&isCallable$k(r=e.toString)&&!isObject$m(n=call$k(r,e)))return n;throw $TypeError$d("Can't convert object to primitive value")},shared$6={exports:{}},isPure=!1,global$y=global$C,defineProperty$a=Object.defineProperty,defineGlobalProperty$3=function(e,t){try{defineProperty$a(global$y,e,{value:t,configurable:!0,writable:!0})}catch(r){global$y[e]=t}return t},global$x=global$C,defineGlobalProperty$2=defineGlobalProperty$3,SHARED="__core-js_shared__",store$3=global$x[SHARED]||defineGlobalProperty$2(SHARED,{}),sharedStore=store$3,store$2=sharedStore;(shared$6.exports=function(e,t){return store$2[e]||(store$2[e]=void 0!==t?t:{})})("versions",[]).push({version:"3.31.1",mode:"global",copyright:"© 2014-2023 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.31.1/LICENSE",source:"https://github.com/zloirock/core-js"});var sharedExports=shared$6.exports,requireObjectCoercible$6=requireObjectCoercible$8,$Object$2=Object,toObject$a=function(e){return $Object$2(requireObjectCoercible$6(e))},uncurryThis$C=functionUncurryThis,toObject$9=toObject$a,hasOwnProperty$2=uncurryThis$C({}.hasOwnProperty),hasOwnProperty_1=Object.hasOwn||function(e,t){return hasOwnProperty$2(toObject$9(e),t)},uncurryThis$B=functionUncurryThis,id$1=0,postfix=Math.random(),toString$f=uncurryThis$B(1..toString),uid$5=function(e){return"Symbol("+(void 0===e?"":e)+")_"+toString$f(++id$1+postfix,36)},global$w=global$C,shared$5=sharedExports,hasOwn$k=hasOwnProperty_1,uid$4=uid$5,NATIVE_SYMBOL$4=symbolConstructorDetection,USE_SYMBOL_AS_UID=useSymbolAsUid,Symbol$3=global$w.Symbol,WellKnownSymbolsStore$1=shared$5("wks"),createWellKnownSymbol=USE_SYMBOL_AS_UID?Symbol$3.for||Symbol$3:Symbol$3&&Symbol$3.withoutSetter||uid$4,wellKnownSymbol$m=function(e){return hasOwn$k(WellKnownSymbolsStore$1,e)||(WellKnownSymbolsStore$1[e]=NATIVE_SYMBOL$4&&hasOwn$k(Symbol$3,e)?Symbol$3[e]:createWellKnownSymbol("Symbol."+e)),WellKnownSymbolsStore$1[e]},call$j=functionCall,isObject$l=isObject$n,isSymbol$4=isSymbol$5,getMethod$4=getMethod$5,ordinaryToPrimitive=ordinaryToPrimitive$1,wellKnownSymbol$l=wellKnownSymbol$m,$TypeError$c=TypeError,TO_PRIMITIVE=wellKnownSymbol$l("toPrimitive"),toPrimitive$3=function(e,t){if(!isObject$l(e)||isSymbol$4(e))return e;var r,n=getMethod$4(e,TO_PRIMITIVE);if(n){if(void 0===t&&(t="default"),r=call$j(n,e,t),!isObject$l(r)||isSymbol$4(r))return r;throw $TypeError$c("Can't convert object to primitive value")}return void 0===t&&(t="number"),ordinaryToPrimitive(e,t)},toPrimitive$2=toPrimitive$3,isSymbol$3=isSymbol$5,toPropertyKey$5=function(e){var t=toPrimitive$2(e,"string");return isSymbol$3(t)?t:t+""},global$v=global$C,isObject$k=isObject$n,document$3=global$v.document,EXISTS$1=isObject$k(document$3)&&isObject$k(document$3.createElement),documentCreateElement$2=function(e){return EXISTS$1?document$3.createElement(e):{}},DESCRIPTORS$i=descriptors,fails$B=fails$G,createElement$1=documentCreateElement$2,ie8DomDefine=!DESCRIPTORS$i&&!fails$B((function(){return 7!=Object.defineProperty(createElement$1("div"),"a",{get:function(){return 7}}).a})),DESCRIPTORS$h=descriptors,call$i=functionCall,propertyIsEnumerableModule$1=objectPropertyIsEnumerable,createPropertyDescriptor$5=createPropertyDescriptor$6,toIndexedObject$a=toIndexedObject$b,toPropertyKey$4=toPropertyKey$5,hasOwn$j=hasOwnProperty_1,IE8_DOM_DEFINE$1=ie8DomDefine,$getOwnPropertyDescriptor$2=Object.getOwnPropertyDescriptor;objectGetOwnPropertyDescriptor.f=DESCRIPTORS$h?$getOwnPropertyDescriptor$2:function(e,t){if(e=toIndexedObject$a(e),t=toPropertyKey$4(t),IE8_DOM_DEFINE$1)try{return $getOwnPropertyDescriptor$2(e,t)}catch(e){}if(hasOwn$j(e,t))return createPropertyDescriptor$5(!call$i(propertyIsEnumerableModule$1.f,e,t),e[t])};var objectDefineProperty={},DESCRIPTORS$g=descriptors,fails$A=fails$G,v8PrototypeDefineBug=DESCRIPTORS$g&&fails$A((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),isObject$j=isObject$n,$String$4=String,$TypeError$b=TypeError,anObject$i=function(e){if(isObject$j(e))return e;throw $TypeError$b($String$4(e)+" is not an object")},DESCRIPTORS$f=descriptors,IE8_DOM_DEFINE=ie8DomDefine,V8_PROTOTYPE_DEFINE_BUG$1=v8PrototypeDefineBug,anObject$h=anObject$i,toPropertyKey$3=toPropertyKey$5,$TypeError$a=TypeError,$defineProperty$1=Object.defineProperty,$getOwnPropertyDescriptor$1=Object.getOwnPropertyDescriptor,ENUMERABLE="enumerable",CONFIGURABLE$1="configurable",WRITABLE="writable";objectDefineProperty.f=DESCRIPTORS$f?V8_PROTOTYPE_DEFINE_BUG$1?function(e,t,r){if(anObject$h(e),t=toPropertyKey$3(t),anObject$h(r),"function"==typeof e&&"prototype"===t&&"value"in r&&WRITABLE in r&&!r[WRITABLE]){var n=$getOwnPropertyDescriptor$1(e,t);n&&n[WRITABLE]&&(e[t]=r.value,r={configurable:CONFIGURABLE$1 in r?r[CONFIGURABLE$1]:n[CONFIGURABLE$1],enumerable:ENUMERABLE in r?r[ENUMERABLE]:n[ENUMERABLE],writable:!1})}return $defineProperty$1(e,t,r)}:$defineProperty$1:function(e,t,r){if(anObject$h(e),t=toPropertyKey$3(t),anObject$h(r),IE8_DOM_DEFINE)try{return $defineProperty$1(e,t,r)}catch(e){}if("get"in r||"set"in r)throw $TypeError$a("Accessors not supported");return"value"in r&&(e[t]=r.value),e};var DESCRIPTORS$e=descriptors,definePropertyModule$6=objectDefineProperty,createPropertyDescriptor$4=createPropertyDescriptor$6,createNonEnumerableProperty$8=DESCRIPTORS$e?function(e,t,r){return definePropertyModule$6.f(e,t,createPropertyDescriptor$4(1,r))}:function(e,t,r){return e[t]=r,e},makeBuiltIn$3={exports:{}},DESCRIPTORS$d=descriptors,hasOwn$i=hasOwnProperty_1,FunctionPrototype$1=Function.prototype,getDescriptor=DESCRIPTORS$d&&Object.getOwnPropertyDescriptor,EXISTS=hasOwn$i(FunctionPrototype$1,"name"),PROPER=EXISTS&&"something"===function(){}.name,CONFIGURABLE=EXISTS&&(!DESCRIPTORS$d||DESCRIPTORS$d&&getDescriptor(FunctionPrototype$1,"name").configurable),functionName={EXISTS:EXISTS,PROPER:PROPER,CONFIGURABLE:CONFIGURABLE},uncurryThis$A=functionUncurryThis,isCallable$j=isCallable$p,store$1=sharedStore,functionToString$1=uncurryThis$A(Function.toString);isCallable$j(store$1.inspectSource)||(store$1.inspectSource=function(e){return functionToString$1(e)});var set$2,get$1,has2,inspectSource$3=store$1.inspectSource,global$u=global$C,isCallable$i=isCallable$p,WeakMap$2=global$u.WeakMap,weakMapBasicDetection=isCallable$i(WeakMap$2)&&/native code/.test(String(WeakMap$2)),shared$4=sharedExports,uid$3=uid$5,keys$2=shared$4("keys"),sharedKey$4=function(e){return keys$2[e]||(keys$2[e]=uid$3(e))},hiddenKeys$6={},NATIVE_WEAK_MAP=weakMapBasicDetection,global$t=global$C,isObject$i=isObject$n,createNonEnumerableProperty$7=createNonEnumerableProperty$8,hasOwn$h=hasOwnProperty_1,shared$3=sharedStore,sharedKey$3=sharedKey$4,hiddenKeys$5=hiddenKeys$6,OBJECT_ALREADY_INITIALIZED="Object already initialized",TypeError$5=global$t.TypeError,WeakMap$1=global$t.WeakMap,enforce=function(e){return has2(e)?get$1(e):set$2(e,{})},getterFor=function(e){return function(t){var r;if(!isObject$i(t)||(r=get$1(t)).type!==e)throw TypeError$5("Incompatible receiver, "+e+" required");return r}};if(NATIVE_WEAK_MAP||shared$3.state){var store=shared$3.state||(shared$3.state=new WeakMap$1);store.get=store.get,store.has=store.has,store.set=store.set,set$2=function(e,t){if(store.has(e))throw TypeError$5(OBJECT_ALREADY_INITIALIZED);return t.facade=e,store.set(e,t),t},get$1=function(e){return store.get(e)||{}},has2=function(e){return store.has(e)}}else{var STATE=sharedKey$3("state");hiddenKeys$5[STATE]=!0,set$2=function(e,t){if(hasOwn$h(e,STATE))throw TypeError$5(OBJECT_ALREADY_INITIALIZED);return t.facade=e,createNonEnumerableProperty$7(e,STATE,t),t},get$1=function(e){return hasOwn$h(e,STATE)?e[STATE]:{}},has2=function(e){return hasOwn$h(e,STATE)}}var internalState={set:set$2,get:get$1,has:has2,enforce:enforce,getterFor:getterFor},uncurryThis$z=functionUncurryThis,fails$z=fails$G,isCallable$h=isCallable$p,hasOwn$g=hasOwnProperty_1,DESCRIPTORS$c=descriptors,CONFIGURABLE_FUNCTION_NAME$2=functionName.CONFIGURABLE,inspectSource$2=inspectSource$3,InternalStateModule$8=internalState,enforceInternalState$2=InternalStateModule$8.enforce,getInternalState$5=InternalStateModule$8.get,$String$3=String,defineProperty$9=Object.defineProperty,stringSlice$6=uncurryThis$z("".slice),replace$2=uncurryThis$z("".replace),join$2=uncurryThis$z([].join),CONFIGURABLE_LENGTH=DESCRIPTORS$c&&!fails$z((function(){return 8!==defineProperty$9((function(){}),"length",{value:8}).length})),TEMPLATE=String(String).split("String"),makeBuiltIn$2=makeBuiltIn$3.exports=function(e,t,r){"Symbol("===stringSlice$6($String$3(t),0,7)&&(t="["+replace$2($String$3(t),/^Symbol\(([^)]*)\)/,"$1")+"]"),r&&r.getter&&(t="get "+t),r&&r.setter&&(t="set "+t),(!hasOwn$g(e,"name")||CONFIGURABLE_FUNCTION_NAME$2&&e.name!==t)&&(DESCRIPTORS$c?defineProperty$9(e,"name",{value:t,configurable:!0}):e.name=t),CONFIGURABLE_LENGTH&&r&&hasOwn$g(r,"arity")&&e.length!==r.arity&&defineProperty$9(e,"length",{value:r.arity});try{r&&hasOwn$g(r,"constructor")&&r.constructor?DESCRIPTORS$c&&defineProperty$9(e,"prototype",{writable:!1}):e.prototype&&(e.prototype=void 0)}catch(e){}var n=enforceInternalState$2(e);return hasOwn$g(n,"source")||(n.source=join$2(TEMPLATE,"string"==typeof t?t:"")),e};Function.prototype.toString=makeBuiltIn$2((function(){return isCallable$h(this)&&getInternalState$5(this).source||inspectSource$2(this)}),"toString");var makeBuiltInExports=makeBuiltIn$3.exports,isCallable$g=isCallable$p,definePropertyModule$5=objectDefineProperty,makeBuiltIn$1=makeBuiltInExports,defineGlobalProperty$1=defineGlobalProperty$3,defineBuiltIn$d=function(e,t,r,n){n||(n={});var i=n.enumerable,o=void 0!==n.name?n.name:t;if(isCallable$g(r)&&makeBuiltIn$1(r,o,n),n.global)i?e[t]=r:defineGlobalProperty$1(t,r);else{try{n.unsafe?e[t]&&(i=!0):delete e[t]}catch(e){}i?e[t]=r:definePropertyModule$5.f(e,t,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return e},objectGetOwnPropertyNames={},ceil=Math.ceil,floor$6=Math.floor,mathTrunc=Math.trunc||function(e){var t=+e;return(t>0?floor$6:ceil)(t)},trunc$1=mathTrunc,toIntegerOrInfinity$9=function(e){var t=+e;return t!=t||0===t?0:trunc$1(t)},toIntegerOrInfinity$8=toIntegerOrInfinity$9,max$2=Math.max,min$5=Math.min,toAbsoluteIndex$8=function(e,t){var r=toIntegerOrInfinity$8(e);return r<0?max$2(r+t,0):min$5(r,t)},toIntegerOrInfinity$7=toIntegerOrInfinity$9,min$4=Math.min,toLength$a=function(e){return e>0?min$4(toIntegerOrInfinity$7(e),9007199254740991):0},toLength$9=toLength$a,lengthOfArrayLike$d=function(e){return toLength$9(e.length)},toIndexedObject$9=toIndexedObject$b,toAbsoluteIndex$7=toAbsoluteIndex$8,lengthOfArrayLike$c=lengthOfArrayLike$d,createMethod$4=function(e){return function(t,r,n){var i,o=toIndexedObject$9(t),a=lengthOfArrayLike$c(o),s=toAbsoluteIndex$7(n,a);if(e&&r!=r){for(;a>s;)if((i=o[s++])!=i)return!0}else for(;a>s;s++)if((e||s in o)&&o[s]===r)return e||s||0;return!e&&-1}},arrayIncludes={includes:createMethod$4(!0),indexOf:createMethod$4(!1)},uncurryThis$y=functionUncurryThis,hasOwn$f=hasOwnProperty_1,toIndexedObject$8=toIndexedObject$b,indexOf3=arrayIncludes.indexOf,hiddenKeys$4=hiddenKeys$6,push$5=uncurryThis$y([].push),objectKeysInternal=function(e,t){var r,n=toIndexedObject$8(e),i=0,o=[];for(r in n)!hasOwn$f(hiddenKeys$4,r)&&hasOwn$f(n,r)&&push$5(o,r);for(;t.length>i;)hasOwn$f(n,r=t[i++])&&(~indexOf3(o,r)||push$5(o,r));return o},enumBugKeys$3=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],internalObjectKeys$1=objectKeysInternal,enumBugKeys$2=enumBugKeys$3,hiddenKeys$3=enumBugKeys$2.concat("length","prototype");objectGetOwnPropertyNames.f=Object.getOwnPropertyNames||function(e){return internalObjectKeys$1(e,hiddenKeys$3)};var objectGetOwnPropertySymbols={};objectGetOwnPropertySymbols.f=Object.getOwnPropertySymbols;var getBuiltIn$8=getBuiltIn$a,uncurryThis$x=functionUncurryThis,getOwnPropertyNamesModule$2=objectGetOwnPropertyNames,getOwnPropertySymbolsModule$2=objectGetOwnPropertySymbols,anObject$g=anObject$i,concat$2=uncurryThis$x([].concat),ownKeys$3=getBuiltIn$8("Reflect","ownKeys")||function(e){var t=getOwnPropertyNamesModule$2.f(anObject$g(e)),r=getOwnPropertySymbolsModule$2.f;return r?concat$2(t,r(e)):t},hasOwn$e=hasOwnProperty_1,ownKeys$2=ownKeys$3,getOwnPropertyDescriptorModule$2=objectGetOwnPropertyDescriptor,definePropertyModule$4=objectDefineProperty,copyConstructorProperties$3=function(e,t,r){for(var n=ownKeys$2(t),i=definePropertyModule$4.f,o=getOwnPropertyDescriptorModule$2.f,a=0;a<n.length;a++){var s=n[a];hasOwn$e(e,s)||r&&hasOwn$e(r,s)||i(e,s,o(t,s))}},fails$y=fails$G,isCallable$f=isCallable$p,replacement=/#|\.prototype\./,isForced$4=function(e,t){var r=data[normalize(e)];return r==POLYFILL||r!=NATIVE&&(isCallable$f(t)?fails$y(t):!!t)},normalize=isForced$4.normalize=function(e){return String(e).replace(replacement,".").toLowerCase()},data=isForced$4.data={},NATIVE=isForced$4.NATIVE="N",POLYFILL=isForced$4.POLYFILL="P",isForced_1=isForced$4,global$s=global$C,getOwnPropertyDescriptor$3=objectGetOwnPropertyDescriptor.f,createNonEnumerableProperty$6=createNonEnumerableProperty$8,defineBuiltIn$c=defineBuiltIn$d,defineGlobalProperty=defineGlobalProperty$3,copyConstructorProperties$2=copyConstructorProperties$3,isForced$3=isForced_1,_export=function(e,t){var r,n,i,o,a,s=e.target,c=e.global,u=e.stat;if(r=c?global$s:u?global$s[s]||defineGlobalProperty(s,{}):(global$s[s]||{}).prototype)for(n in t){if(o=t[n],i=e.dontCallGetSet?(a=getOwnPropertyDescriptor$3(r,n))&&a.value:r[n],!isForced$3(c?n:s+(u?".":"#")+n,e.forced)&&void 0!==i){if(typeof o==typeof i)continue;copyConstructorProperties$2(o,i)}(e.sham||i&&i.sham)&&createNonEnumerableProperty$6(o,"sham",!0),defineBuiltIn$c(r,n,o,e)}},NATIVE_BIND$2=functionBindNative,FunctionPrototype=Function.prototype,apply$7=FunctionPrototype.apply,call$h=FunctionPrototype.call,functionApply="object"==typeof Reflect&&Reflect.apply||(NATIVE_BIND$2?call$h.bind(apply$7):function(){return call$h.apply(apply$7,arguments)}),engineIsBun="function"==typeof Bun&&Bun&&"string"==typeof Bun.version,uncurryThis$w=functionUncurryThis,arraySlice$9=uncurryThis$w([].slice),$TypeError$9=TypeError,validateArgumentsLength$2=function(e,t){if(e<t)throw $TypeError$9("Not enough arguments");return e},global$r=global$C,apply$6=functionApply,isCallable$e=isCallable$p,ENGINE_IS_BUN=engineIsBun,USER_AGENT=engineUserAgent,arraySlice$8=arraySlice$9,validateArgumentsLength$1=validateArgumentsLength$2,Function$2=global$r.Function,WRAP=/MSIE .\./.test(USER_AGENT)||ENGINE_IS_BUN&&function(){var e=global$r.Bun.version.split(".");return e.length<3||0==e[0]&&(e[1]<3||3==e[1]&&0==e[2])}(),schedulersFix$2=function(e,t){var r=t?2:1;return WRAP?function(n,i){var o=validateArgumentsLength$1(arguments.length,1)>r,a=isCallable$e(n)?n:Function$2(n),s=o?arraySlice$8(arguments,r):[],c=o?function(){apply$6(a,this,s)}:a;return t?e(c,i):e(c)}:e},$$I=_export,global$q=global$C,schedulersFix$1=schedulersFix$2,setInterval$1=schedulersFix$1(global$q.setInterval,!0);$$I({global:!0,bind:!0,forced:global$q.setInterval!==setInterval$1},{setInterval:setInterval$1});var $$H=_export,global$p=global$C,schedulersFix=schedulersFix$2,setTimeout$1=schedulersFix(global$p.setTimeout,!0);function debounce(e,t,r){var n;return function(){var i=this,o=arguments,a=r&&!n;clearTimeout(n),n=setTimeout((function(){n=null,r||e.apply(i,o)}),t),a&&e.apply(i,o)}}function _classCallCheck$4(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$4(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$4(e,t,r){return t&&_defineProperties$4(e.prototype,t),r&&_defineProperties$4(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}$$H({global:!0,bind:!0,forced:global$p.setTimeout!==setTimeout$1},{setTimeout:setTimeout$1});var wellKnownSymbol$k=wellKnownSymbol$m,TO_STRING_TAG$4=wellKnownSymbol$k("toStringTag"),test$1={};test$1[TO_STRING_TAG$4]="z";var toStringTagSupport="[object z]"===String(test$1),TO_STRING_TAG_SUPPORT$2=toStringTagSupport,isCallable$d=isCallable$p,classofRaw$1=classofRaw$2,wellKnownSymbol$j=wellKnownSymbol$m,TO_STRING_TAG$3=wellKnownSymbol$j("toStringTag"),$Object$1=Object,CORRECT_ARGUMENTS="Arguments"==classofRaw$1(function(){return arguments}()),tryGet=function(e,t){try{return e[t]}catch(e){}},classof$c=TO_STRING_TAG_SUPPORT$2?classofRaw$1:function(e){var t,r,n;return void 0===e?"Undefined":null===e?"Null":"string"==typeof(r=tryGet(t=$Object$1(e),TO_STRING_TAG$3))?r:CORRECT_ARGUMENTS?classofRaw$1(t):"Object"==(n=classofRaw$1(t))&&isCallable$d(t.callee)?"Arguments":n},TO_STRING_TAG_SUPPORT$1=toStringTagSupport,classof$b=classof$c,objectToString=TO_STRING_TAG_SUPPORT$1?{}.toString:function(){return"[object "+classof$b(this)+"]"},TO_STRING_TAG_SUPPORT=toStringTagSupport,defineBuiltIn$b=defineBuiltIn$d,toString$e=objectToString;TO_STRING_TAG_SUPPORT||defineBuiltIn$b(Object.prototype,"toString",toString$e,{unsafe:!0});var classof$a=classofRaw$2,engineIsNode="undefined"!=typeof process&&"process"==classof$a(process),uncurryThis$v=functionUncurryThis,aCallable$a=aCallable$c,functionUncurryThisAccessor=function(e,t,r){try{return uncurryThis$v(aCallable$a(Object.getOwnPropertyDescriptor(e,t)[r]))}catch(e){}},isCallable$c=isCallable$p,$String$2=String,$TypeError$8=TypeError,aPossiblePrototype$1=function(e){if("object"==typeof e||isCallable$c(e))return e;throw $TypeError$8("Can't set "+$String$2(e)+" as a prototype")},uncurryThisAccessor=functionUncurryThisAccessor,anObject$f=anObject$i,aPossiblePrototype=aPossiblePrototype$1,objectSetPrototypeOf=Object.setPrototypeOf||("__proto__"in{}?function(){var e,t=!1,r={};try{(e=uncurryThisAccessor(Object.prototype,"__proto__","set"))(r,[]),t=r instanceof Array}catch(e){}return function(r,n){return anObject$f(r),aPossiblePrototype(n),t?e(r,n):r.__proto__=n,r}}():void 0),defineProperty$8=objectDefineProperty.f,hasOwn$d=hasOwnProperty_1,wellKnownSymbol$i=wellKnownSymbol$m,TO_STRING_TAG$2=wellKnownSymbol$i("toStringTag"),setToStringTag$6=function(e,t,r){e&&!r&&(e=e.prototype),e&&!hasOwn$d(e,TO_STRING_TAG$2)&&defineProperty$8(e,TO_STRING_TAG$2,{configurable:!0,value:t})},makeBuiltIn=makeBuiltInExports,defineProperty$7=objectDefineProperty,defineBuiltInAccessor$5=function(e,t,r){return r.get&&makeBuiltIn(r.get,t,{getter:!0}),r.set&&makeBuiltIn(r.set,t,{setter:!0}),defineProperty$7.f(e,t,r)},getBuiltIn$7=getBuiltIn$a,defineBuiltInAccessor$4=defineBuiltInAccessor$5,wellKnownSymbol$h=wellKnownSymbol$m,DESCRIPTORS$b=descriptors,SPECIES$5=wellKnownSymbol$h("species"),setSpecies$3=function(e){var t=getBuiltIn$7(e);DESCRIPTORS$b&&t&&!t[SPECIES$5]&&defineBuiltInAccessor$4(t,SPECIES$5,{configurable:!0,get:function(){return this}})},isPrototypeOf$7=objectIsPrototypeOf,$TypeError$7=TypeError,anInstance$5=function(e,t){if(isPrototypeOf$7(t,e))return e;throw $TypeError$7("Incorrect invocation")},uncurryThis$u=functionUncurryThis,fails$x=fails$G,isCallable$b=isCallable$p,classof$9=classof$c,getBuiltIn$6=getBuiltIn$a,inspectSource$1=inspectSource$3,noop$1=function(){},empty=[],construct$1=getBuiltIn$6("Reflect","construct"),constructorRegExp=/^\s*(?:class|function)\b/,exec$2=uncurryThis$u(constructorRegExp.exec),INCORRECT_TO_STRING=!constructorRegExp.exec(noop$1),isConstructorModern=function(e){if(!isCallable$b(e))return!1;try{return construct$1(noop$1,empty,e),!0}catch(e){return!1}},isConstructorLegacy=function(e){if(!isCallable$b(e))return!1;switch(classof$9(e)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return INCORRECT_TO_STRING||!!exec$2(constructorRegExp,inspectSource$1(e))}catch(e){return!0}};isConstructorLegacy.sham=!0;var $location,defer,channel,port,isConstructor$3=!construct$1||fails$x((function(){var e;return isConstructorModern(isConstructorModern.call)||!isConstructorModern(Object)||!isConstructorModern((function(){e=!0}))||e}))?isConstructorLegacy:isConstructorModern,isConstructor$2=isConstructor$3,tryToString$5=tryToString$7,$TypeError$6=TypeError,aConstructor$3=function(e){if(isConstructor$2(e))return e;throw $TypeError$6(tryToString$5(e)+" is not a constructor")},anObject$e=anObject$i,aConstructor$2=aConstructor$3,isNullOrUndefined$5=isNullOrUndefined$8,wellKnownSymbol$g=wellKnownSymbol$m,SPECIES$4=wellKnownSymbol$g("species"),speciesConstructor$5=function(e,t){var r,n=anObject$e(e).constructor;return void 0===n||isNullOrUndefined$5(r=anObject$e(n)[SPECIES$4])?t:aConstructor$2(r)},classofRaw=classofRaw$2,uncurryThis$t=functionUncurryThis,functionUncurryThisClause=function(e){if("Function"===classofRaw(e))return uncurryThis$t(e)},uncurryThis$s=functionUncurryThisClause,aCallable$9=aCallable$c,NATIVE_BIND$1=functionBindNative,bind$9=functionUncurryThisClause(functionUncurryThisClause.bind),functionBindContext=function(e,t){return aCallable$9(e),void 0===t?e:NATIVE_BIND$1?bind$9(e,t):function(){return e.apply(t,arguments)}},getBuiltIn$5=getBuiltIn$a,html$2=getBuiltIn$5("document","documentElement"),userAgent$4=engineUserAgent,engineIsIos=/(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent$4),global$o=global$C,apply$5=functionApply,bind$8=functionBindContext,isCallable$a=isCallable$p,hasOwn$c=hasOwnProperty_1,fails$w=fails$G,html$1=html$2,arraySlice$7=arraySlice$9,createElement=documentCreateElement$2,validateArgumentsLength=validateArgumentsLength$2,IS_IOS$1=engineIsIos,IS_NODE$4=engineIsNode,set$1=global$o.setImmediate,clear=global$o.clearImmediate,process$4=global$o.process,Dispatch=global$o.Dispatch,Function$1=global$o.Function,MessageChannel=global$o.MessageChannel,String$1=global$o.String,counter=0,queue$2={},ONREADYSTATECHANGE="onreadystatechange";fails$w((function(){$location=global$o.location}));var run=function(e){if(hasOwn$c(queue$2,e)){var t=queue$2[e];delete queue$2[e],t()}},runner=function(e){return function(){run(e)}},eventListener=function(e){run(e.data)},globalPostMessageDefer=function(e){global$o.postMessage(String$1(e),$location.protocol+"//"+$location.host)};set$1&&clear||(set$1=function(e){validateArgumentsLength(arguments.length,1);var t=isCallable$a(e)?e:Function$1(e),r=arraySlice$7(arguments,1);return queue$2[++counter]=function(){apply$5(t,void 0,r)},defer(counter),counter},clear=function(e){delete queue$2[e]},IS_NODE$4?defer=function(e){process$4.nextTick(runner(e))}:Dispatch&&Dispatch.now?defer=function(e){Dispatch.now(runner(e))}:MessageChannel&&!IS_IOS$1?(port=(channel=new MessageChannel).port2,channel.port1.onmessage=eventListener,defer=bind$8(port.postMessage,port)):global$o.addEventListener&&isCallable$a(global$o.postMessage)&&!global$o.importScripts&&$location&&"file:"!==$location.protocol&&!fails$w(globalPostMessageDefer)?(defer=globalPostMessageDefer,global$o.addEventListener("message",eventListener,!1)):defer=ONREADYSTATECHANGE in createElement("script")?function(e){html$1.appendChild(createElement("script"))[ONREADYSTATECHANGE]=function(){html$1.removeChild(this),run(e)}}:function(e){setTimeout(runner(e),0)});var task$1={set:set$1,clear:clear},Queue$2=function(){this.head=null,this.tail=null};Queue$2.prototype={add:function(e){var t={item:e,next:null},r=this.tail;r?r.next=t:this.head=t,this.tail=t},get:function(){var e=this.head;if(e)return null===(this.head=e.next)&&(this.tail=null),e.item}};var notify$1,toggle,node,promise,then,queue$1=Queue$2,userAgent$3=engineUserAgent,engineIsIosPebble=/ipad|iphone|ipod/i.test(userAgent$3)&&"undefined"!=typeof Pebble,userAgent$2=engineUserAgent,engineIsWebosWebkit=/web0s(?!.*chrome)/i.test(userAgent$2),global$n=global$C,bind$7=functionBindContext,getOwnPropertyDescriptor$2=objectGetOwnPropertyDescriptor.f,macrotask=task$1.set,Queue$1=queue$1,IS_IOS=engineIsIos,IS_IOS_PEBBLE=engineIsIosPebble,IS_WEBOS_WEBKIT=engineIsWebosWebkit,IS_NODE$3=engineIsNode,MutationObserver=global$n.MutationObserver||global$n.WebKitMutationObserver,document$2=global$n.document,process$3=global$n.process,Promise$1=global$n.Promise,queueMicrotaskDescriptor=getOwnPropertyDescriptor$2(global$n,"queueMicrotask"),microtask$1=queueMicrotaskDescriptor&&queueMicrotaskDescriptor.value;if(!microtask$1){var queue=new Queue$1,flush=function(){var e,t;for(IS_NODE$3&&(e=process$3.domain)&&e.exit();t=queue.get();)try{t()}catch(e){throw queue.head&&notify$1(),e}e&&e.enter()};IS_IOS||IS_NODE$3||IS_WEBOS_WEBKIT||!MutationObserver||!document$2?!IS_IOS_PEBBLE&&Promise$1&&Promise$1.resolve?((promise=Promise$1.resolve(void 0)).constructor=Promise$1,then=bind$7(promise.then,promise),notify$1=function(){then(flush)}):IS_NODE$3?notify$1=function(){process$3.nextTick(flush)}:(macrotask=bind$7(macrotask,global$n),notify$1=function(){macrotask(flush)}):(toggle=!0,node=document$2.createTextNode(""),new MutationObserver(flush).observe(node,{characterData:!0}),notify$1=function(){node.data=toggle=!toggle}),microtask$1=function(e){queue.head||notify$1(),queue.add(e)}}var microtask_1=microtask$1,hostReportErrors$1=function(e,t){try{1==arguments.length?console.error(e):console.error(e,t)}catch(e){}},perform$3=function(e){try{return{error:!1,value:e()}}catch(e){return{error:!0,value:e}}},global$m=global$C,promiseNativeConstructor=global$m.Promise,engineIsDeno="object"==typeof Deno&&Deno&&"object"==typeof Deno.version,IS_DENO$1=engineIsDeno,IS_NODE$2=engineIsNode,engineIsBrowser=!IS_DENO$1&&!IS_NODE$2&&"object"==typeof window&&"object"==typeof document,global$l=global$C,NativePromiseConstructor$3=promiseNativeConstructor,isCallable$9=isCallable$p,isForced$2=isForced_1,inspectSource=inspectSource$3,wellKnownSymbol$f=wellKnownSymbol$m,IS_BROWSER=engineIsBrowser,IS_DENO=engineIsDeno,V8_VERSION$1=engineV8Version;NativePromiseConstructor$3&&NativePromiseConstructor$3.prototype;var SPECIES$3=wellKnownSymbol$f("species"),SUBCLASSING=!1,NATIVE_PROMISE_REJECTION_EVENT$1=isCallable$9(global$l.PromiseRejectionEvent),FORCED_PROMISE_CONSTRUCTOR$5=isForced$2("Promise",(function(){var e=inspectSource(NativePromiseConstructor$3),t=e!==String(NativePromiseConstructor$3);if(!t&&66===V8_VERSION$1)return!0;if(!V8_VERSION$1||V8_VERSION$1<51||!/native code/.test(e)){var r=new NativePromiseConstructor$3((function(e){e(1)})),n=function(e){e((function(){}),(function(){}))};if((r.constructor={})[SPECIES$3]=n,!(SUBCLASSING=r.then((function(){}))instanceof n))return!0}return!t&&(IS_BROWSER||IS_DENO)&&!NATIVE_PROMISE_REJECTION_EVENT$1})),promiseConstructorDetection={CONSTRUCTOR:FORCED_PROMISE_CONSTRUCTOR$5,REJECTION_EVENT:NATIVE_PROMISE_REJECTION_EVENT$1,SUBCLASSING:SUBCLASSING},newPromiseCapability$2={},aCallable$8=aCallable$c,$TypeError$5=TypeError,PromiseCapability=function(e){var t,r;this.promise=new e((function(e,n){if(void 0!==t||void 0!==r)throw $TypeError$5("Bad Promise constructor");t=e,r=n})),this.resolve=aCallable$8(t),this.reject=aCallable$8(r)};newPromiseCapability$2.f=function(e){return new PromiseCapability(e)};var Internal,OwnPromiseCapability,PromiseWrapper,nativeThen,$$G=_export,IS_NODE$1=engineIsNode,global$k=global$C,call$g=functionCall,defineBuiltIn$a=defineBuiltIn$d,setPrototypeOf$5=objectSetPrototypeOf,setToStringTag$5=setToStringTag$6,setSpecies$2=setSpecies$3,aCallable$7=aCallable$c,isCallable$8=isCallable$p,isObject$h=isObject$n,anInstance$4=anInstance$5,speciesConstructor$4=speciesConstructor$5,task=task$1.set,microtask=microtask_1,hostReportErrors=hostReportErrors$1,perform$2=perform$3,Queue=queue$1,InternalStateModule$7=internalState,NativePromiseConstructor$2=promiseNativeConstructor,PromiseConstructorDetection=promiseConstructorDetection,newPromiseCapabilityModule$3=newPromiseCapability$2,PROMISE="Promise",FORCED_PROMISE_CONSTRUCTOR$4=PromiseConstructorDetection.CONSTRUCTOR,NATIVE_PROMISE_REJECTION_EVENT=PromiseConstructorDetection.REJECTION_EVENT,NATIVE_PROMISE_SUBCLASSING=PromiseConstructorDetection.SUBCLASSING,getInternalPromiseState=InternalStateModule$7.getterFor(PROMISE),setInternalState$6=InternalStateModule$7.set,NativePromisePrototype$1=NativePromiseConstructor$2&&NativePromiseConstructor$2.prototype,PromiseConstructor=NativePromiseConstructor$2,PromisePrototype=NativePromisePrototype$1,TypeError$4=global$k.TypeError,document$1=global$k.document,process$2=global$k.process,newPromiseCapability$1=newPromiseCapabilityModule$3.f,newGenericPromiseCapability=newPromiseCapability$1,DISPATCH_EVENT=!!(document$1&&document$1.createEvent&&global$k.dispatchEvent),UNHANDLED_REJECTION="unhandledrejection",REJECTION_HANDLED="rejectionhandled",PENDING=0,FULFILLED=1,REJECTED=2,HANDLED=1,UNHANDLED=2,isThenable=function(e){var t;return!(!isObject$h(e)||!isCallable$8(t=e.then))&&t},callReaction=function(e,t){var r,n,i,o=t.value,a=t.state==FULFILLED,s=a?e.ok:e.fail,c=e.resolve,u=e.reject,l=e.domain;try{s?(a||(t.rejection===UNHANDLED&&onHandleUnhandled(t),t.rejection=HANDLED),!0===s?r=o:(l&&l.enter(),r=s(o),l&&(l.exit(),i=!0)),r===e.promise?u(TypeError$4("Promise-chain cycle")):(n=isThenable(r))?call$g(n,r,c,u):c(r)):u(o)}catch(e){l&&!i&&l.exit(),u(e)}},notify=function(e,t){e.notified||(e.notified=!0,microtask((function(){for(var r,n=e.reactions;r=n.get();)callReaction(r,e);e.notified=!1,t&&!e.rejection&&onUnhandled(e)})))},dispatchEvent=function(e,t,r){var n,i;DISPATCH_EVENT?((n=document$1.createEvent("Event")).promise=t,n.reason=r,n.initEvent(e,!1,!0),global$k.dispatchEvent(n)):n={promise:t,reason:r},!NATIVE_PROMISE_REJECTION_EVENT&&(i=global$k["on"+e])?i(n):e===UNHANDLED_REJECTION&&hostReportErrors("Unhandled promise rejection",r)},onUnhandled=function(e){call$g(task,global$k,(function(){var t,r=e.facade,n=e.value;if(isUnhandled(e)&&(t=perform$2((function(){IS_NODE$1?process$2.emit("unhandledRejection",n,r):dispatchEvent(UNHANDLED_REJECTION,r,n)})),e.rejection=IS_NODE$1||isUnhandled(e)?UNHANDLED:HANDLED,t.error))throw t.value}))},isUnhandled=function(e){return e.rejection!==HANDLED&&!e.parent},onHandleUnhandled=function(e){call$g(task,global$k,(function(){var t=e.facade;IS_NODE$1?process$2.emit("rejectionHandled",t):dispatchEvent(REJECTION_HANDLED,t,e.value)}))},bind$6=function(e,t,r){return function(n){e(t,n,r)}},internalReject=function(e,t,r){e.done||(e.done=!0,r&&(e=r),e.value=t,e.state=REJECTED,notify(e,!0))},internalResolve=function(e,t,r){if(!e.done){e.done=!0,r&&(e=r);try{if(e.facade===t)throw TypeError$4("Promise can't be resolved itself");var n=isThenable(t);n?microtask((function(){var r={done:!1};try{call$g(n,t,bind$6(internalResolve,r,e),bind$6(internalReject,r,e))}catch(t){internalReject(r,t,e)}})):(e.value=t,e.state=FULFILLED,notify(e,!1))}catch(t){internalReject({done:!1},t,e)}}};if(FORCED_PROMISE_CONSTRUCTOR$4&&(PromisePrototype=(PromiseConstructor=function(e){anInstance$4(this,PromisePrototype),aCallable$7(e),call$g(Internal,this);var t=getInternalPromiseState(this);try{e(bind$6(internalResolve,t),bind$6(internalReject,t))}catch(e){internalReject(t,e)}}).prototype,(Internal=function(e){setInternalState$6(this,{type:PROMISE,done:!1,notified:!1,parent:!1,reactions:new Queue,rejection:!1,state:PENDING,value:void 0})}).prototype=defineBuiltIn$a(PromisePrototype,"then",(function(e,t){var r=getInternalPromiseState(this),n=newPromiseCapability$1(speciesConstructor$4(this,PromiseConstructor));return r.parent=!0,n.ok=!isCallable$8(e)||e,n.fail=isCallable$8(t)&&t,n.domain=IS_NODE$1?process$2.domain:void 0,r.state==PENDING?r.reactions.add(n):microtask((function(){callReaction(n,r)})),n.promise})),OwnPromiseCapability=function(){var e=new Internal,t=getInternalPromiseState(e);this.promise=e,this.resolve=bind$6(internalResolve,t),this.reject=bind$6(internalReject,t)},newPromiseCapabilityModule$3.f=newPromiseCapability$1=function(e){return e===PromiseConstructor||e===PromiseWrapper?new OwnPromiseCapability(e):newGenericPromiseCapability(e)},isCallable$8(NativePromiseConstructor$2)&&NativePromisePrototype$1!==Object.prototype)){nativeThen=NativePromisePrototype$1.then,NATIVE_PROMISE_SUBCLASSING||defineBuiltIn$a(NativePromisePrototype$1,"then",(function(e,t){var r=this;return new PromiseConstructor((function(e,t){call$g(nativeThen,r,e,t)})).then(e,t)}),{unsafe:!0});try{delete NativePromisePrototype$1.constructor}catch(e){}setPrototypeOf$5&&setPrototypeOf$5(NativePromisePrototype$1,PromisePrototype)}$$G({global:!0,constructor:!0,wrap:!0,forced:FORCED_PROMISE_CONSTRUCTOR$4},{Promise:PromiseConstructor}),setToStringTag$5(PromiseConstructor,PROMISE,!1),setSpecies$2(PROMISE);var iterators={},wellKnownSymbol$e=wellKnownSymbol$m,Iterators$4=iterators,ITERATOR$8=wellKnownSymbol$e("iterator"),ArrayPrototype$1=Array.prototype,isArrayIteratorMethod$2=function(e){return void 0!==e&&(Iterators$4.Array===e||ArrayPrototype$1[ITERATOR$8]===e)},classof$8=classof$c,getMethod$3=getMethod$5,isNullOrUndefined$4=isNullOrUndefined$8,Iterators$3=iterators,wellKnownSymbol$d=wellKnownSymbol$m,ITERATOR$7=wellKnownSymbol$d("iterator"),getIteratorMethod$3=function(e){if(!isNullOrUndefined$4(e))return getMethod$3(e,ITERATOR$7)||getMethod$3(e,"@@iterator")||Iterators$3[classof$8(e)]},call$f=functionCall,aCallable$6=aCallable$c,anObject$d=anObject$i,tryToString$4=tryToString$7,getIteratorMethod$2=getIteratorMethod$3,$TypeError$4=TypeError,getIterator$2=function(e,t){var r=arguments.length<2?getIteratorMethod$2(e):t;if(aCallable$6(r))return anObject$d(call$f(r,e));throw $TypeError$4(tryToString$4(e)+" is not iterable")},call$e=functionCall,anObject$c=anObject$i,getMethod$2=getMethod$5,iteratorClose$1=function(e,t,r){var n,i;anObject$c(e);try{if(!(n=getMethod$2(e,"return"))){if("throw"===t)throw r;return r}n=call$e(n,e)}catch(e){i=!0,n=e}if("throw"===t)throw r;if(i)throw n;return anObject$c(n),r},bind$5=functionBindContext,call$d=functionCall,anObject$b=anObject$i,tryToString$3=tryToString$7,isArrayIteratorMethod$1=isArrayIteratorMethod$2,lengthOfArrayLike$b=lengthOfArrayLike$d,isPrototypeOf$6=objectIsPrototypeOf,getIterator$1=getIterator$2,getIteratorMethod$1=getIteratorMethod$3,iteratorClose=iteratorClose$1,$TypeError$3=TypeError,Result=function(e,t){this.stopped=e,this.result=t},ResultPrototype=Result.prototype,iterate$4=function(e,t,r){var n,i,o,a,s,c,u,l=r&&r.that,d=!(!r||!r.AS_ENTRIES),h=!(!r||!r.IS_RECORD),f=!(!r||!r.IS_ITERATOR),p=!(!r||!r.INTERRUPTED),y=bind$5(t,l),m=function(e){return n&&iteratorClose(n,"normal",e),new Result(!0,e)},g=function(e){return d?(anObject$b(e),p?y(e[0],e[1],m):y(e[0],e[1])):p?y(e,m):y(e)};if(h)n=e.iterator;else if(f)n=e;else{if(!(i=getIteratorMethod$1(e)))throw $TypeError$3(tryToString$3(e)+" is not iterable");if(isArrayIteratorMethod$1(i)){for(o=0,a=lengthOfArrayLike$b(e);a>o;o++)if((s=g(e[o]))&&isPrototypeOf$6(ResultPrototype,s))return s;return new Result(!1)}n=getIterator$1(e,i)}for(c=h?e.next:n.next;!(u=call$d(c,n)).done;){try{s=g(u.value)}catch(e){iteratorClose(n,"throw",e)}if("object"==typeof s&&s&&isPrototypeOf$6(ResultPrototype,s))return s}return new Result(!1)},wellKnownSymbol$c=wellKnownSymbol$m,ITERATOR$6=wellKnownSymbol$c("iterator"),SAFE_CLOSING=!1;try{var called=0,iteratorWithReturn={next:function(){return{done:!!called++}},return:function(){SAFE_CLOSING=!0}};iteratorWithReturn[ITERATOR$6]=function(){return this},Array.from(iteratorWithReturn,(function(){throw 2}))}catch(e){}var checkCorrectnessOfIteration$3=function(e,t){if(!t&&!SAFE_CLOSING)return!1;var r=!1;try{var n={};n[ITERATOR$6]=function(){return{next:function(){return{done:r=!0}}}},e(n)}catch(e){}return r},NativePromiseConstructor$1=promiseNativeConstructor,checkCorrectnessOfIteration$2=checkCorrectnessOfIteration$3,FORCED_PROMISE_CONSTRUCTOR$3=promiseConstructorDetection.CONSTRUCTOR,promiseStaticsIncorrectIteration=FORCED_PROMISE_CONSTRUCTOR$3||!checkCorrectnessOfIteration$2((function(e){NativePromiseConstructor$1.all(e).then(void 0,(function(){}))})),$$F=_export,call$c=functionCall,aCallable$5=aCallable$c,newPromiseCapabilityModule$2=newPromiseCapability$2,perform$1=perform$3,iterate$3=iterate$4,PROMISE_STATICS_INCORRECT_ITERATION$1=promiseStaticsIncorrectIteration;$$F({target:"Promise",stat:!0,forced:PROMISE_STATICS_INCORRECT_ITERATION$1},{all:function(e){var t=this,r=newPromiseCapabilityModule$2.f(t),n=r.resolve,i=r.reject,o=perform$1((function(){var r=aCallable$5(t.resolve),o=[],a=0,s=1;iterate$3(e,(function(e){var c=a++,u=!1;s++,call$c(r,t,e).then((function(e){u||(u=!0,o[c]=e,--s||n(o))}),i)})),--s||n(o)}));return o.error&&i(o.value),r.promise}});var $$E=_export,FORCED_PROMISE_CONSTRUCTOR$2=promiseConstructorDetection.CONSTRUCTOR,NativePromiseConstructor=promiseNativeConstructor,getBuiltIn$4=getBuiltIn$a,isCallable$7=isCallable$p,defineBuiltIn$9=defineBuiltIn$d,NativePromisePrototype=NativePromiseConstructor&&NativePromiseConstructor.prototype;if($$E({target:"Promise",proto:!0,forced:FORCED_PROMISE_CONSTRUCTOR$2,real:!0},{catch:function(e){return this.then(void 0,e)}}),isCallable$7(NativePromiseConstructor)){var method=getBuiltIn$4("Promise").prototype.catch;NativePromisePrototype.catch!==method&&defineBuiltIn$9(NativePromisePrototype,"catch",method,{unsafe:!0})}var $$D=_export,call$b=functionCall,aCallable$4=aCallable$c,newPromiseCapabilityModule$1=newPromiseCapability$2,perform=perform$3,iterate$2=iterate$4,PROMISE_STATICS_INCORRECT_ITERATION=promiseStaticsIncorrectIteration;$$D({target:"Promise",stat:!0,forced:PROMISE_STATICS_INCORRECT_ITERATION},{race:function(e){var t=this,r=newPromiseCapabilityModule$1.f(t),n=r.reject,i=perform((function(){var i=aCallable$4(t.resolve);iterate$2(e,(function(e){call$b(i,t,e).then(r.resolve,n)}))}));return i.error&&n(i.value),r.promise}});var $$C=_export,call$a=functionCall,newPromiseCapabilityModule=newPromiseCapability$2,FORCED_PROMISE_CONSTRUCTOR$1=promiseConstructorDetection.CONSTRUCTOR;$$C({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR$1},{reject:function(e){var t=newPromiseCapabilityModule.f(this);return call$a(t.reject,void 0,e),t.promise}});var anObject$a=anObject$i,isObject$g=isObject$n,newPromiseCapability=newPromiseCapability$2,promiseResolve$1=function(e,t){if(anObject$a(e),isObject$g(t)&&t.constructor===e)return t;var r=newPromiseCapability.f(e);return(0,r.resolve)(t),r.promise},$$B=_export,getBuiltIn$3=getBuiltIn$a,FORCED_PROMISE_CONSTRUCTOR=promiseConstructorDetection.CONSTRUCTOR,promiseResolve=promiseResolve$1;getBuiltIn$3("Promise"),$$B({target:"Promise",stat:!0,forced:FORCED_PROMISE_CONSTRUCTOR},{resolve:function(e){return promiseResolve(this,e)}});var ProxyPromise$1=function(){function e(){var t,r;_classCallCheck$4(this,e);var n=new Promise((function(e,n){t=e,r=n}));return n.resolve=t,n.reject=r,n}return _createClass$4(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),$$A=_export,uncurryThis$r=functionUncurryThis,$Date=Date,thisTimeValue$1=uncurryThis$r($Date.prototype.getTime);$$A({target:"Date",stat:!0},{now:function(){return thisTimeValue$1(new $Date)}});var uncurryThis$q=functionUncurryThis,defineBuiltIn$8=defineBuiltIn$d,DatePrototype=Date.prototype,INVALID_DATE="Invalid Date",TO_STRING$1="toString",nativeDateToString=uncurryThis$q(DatePrototype[TO_STRING$1]),thisTimeValue=uncurryThis$q(DatePrototype.getTime);String(new Date(NaN))!=INVALID_DATE&&defineBuiltIn$8(DatePrototype,TO_STRING$1,(function(){var e=thisTimeValue(this);return e==e?nativeDateToString(this):INVALID_DATE}));var Raf=function(){function e(){_classCallCheck$4(this,e)}return _createClass$4(e,null,[{key:"install",value:function(){if(window.requestAnimationFrame=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame,window.cancelAnimationFrame=window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||window.cancelRequestAnimationFrame||window.webkitCancelRequestAnimationFrame||window.mozCancelRequestAnimationFrame,!window.requestAnimationFrame){var e=Date.now();window.requestAnimationFrame=function(t){var r=Date.now(),n=Math.max(16.7-(r-e),0),i=setTimeout(t,n);return e=r+n,i}}window.cancelAnimationFrame||(window.cancelAnimationFrame=function(e){clearTimeout(e)})}}]),e}(),uncurryThis$p=functionUncurryThis,aCallable$3=aCallable$c,isObject$f=isObject$n,hasOwn$b=hasOwnProperty_1,arraySlice$6=arraySlice$9,NATIVE_BIND=functionBindNative,$Function=Function,concat$1=uncurryThis$p([].concat),join$1=uncurryThis$p([].join),factories={},construct2=function(e,t,r){if(!hasOwn$b(factories,t)){for(var n=[],i=0;i<t;i++)n[i]="a["+i+"]";factories[t]=$Function("C,a","return new C("+join$1(n,",")+")")}return factories[t](e,r)},functionBind=NATIVE_BIND?$Function.bind:function(e){var t=aCallable$3(this),r=t.prototype,n=arraySlice$6(arguments,1),i=function(){var r=concat$1(n,arraySlice$6(arguments));return this instanceof i?construct2(t,r.length,r):t.apply(e,r)};return isObject$f(r)&&(i.prototype=r),i},$$z=_export,bind$4=functionBind;$$z({target:"Function",proto:!0,forced:Function.bind!==bind$4},{bind:bind$4});var FpsDetection=function(){function e(){_classCallCheck$4(this,e),this.fps=0,this.isStoped=!0,this.ticks=[],this.isSupport=!0,this.maxFps=0,this.step=this._step.bind(this),this.rafId=null}return _createClass$4(e,[{key:"_step",value:function(e){var t=this.ticks;if(t.unshift(e),t.length>10){var r=t.pop();r&&(this.fps=Math.floor(1e4/(e-r)),this.updateFpsInfo())}this.isStoped||(this.rafId=window.requestAnimationFrame(this.step))}},{key:"updateFpsInfo",value:function(){this.fps>this.maxFps&&(this.maxFps=this.fps)}},{key:"start",value:function(){void 0!==window.requestAnimationFrame&&(this.isStoped=!1,this.rafId=window.requestAnimationFrame(this.step))}},{key:"stop",value:function(){window.cancelAnimationFrame(this.rafId),this.isStoped=!0}}],[{key:"install",value:function(){Raf.install()}}]),e}(),classof$7=classof$c,$String$1=String,toString$d=function(e){if("Symbol"===classof$7(e))throw TypeError("Cannot convert a Symbol value to a string");return $String$1(e)},anObject$9=anObject$i,regexpFlags=function(){var e=anObject$9(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t},objectDefineProperties={},internalObjectKeys=objectKeysInternal,enumBugKeys$1=enumBugKeys$3,objectKeys$2=Object.keys||function(e){return internalObjectKeys(e,enumBugKeys$1)},DESCRIPTORS$a=descriptors,V8_PROTOTYPE_DEFINE_BUG=v8PrototypeDefineBug,definePropertyModule$3=objectDefineProperty,anObject$8=anObject$i,toIndexedObject$7=toIndexedObject$b,objectKeys$1=objectKeys$2;objectDefineProperties.f=DESCRIPTORS$a&&!V8_PROTOTYPE_DEFINE_BUG?Object.defineProperties:function(e,t){anObject$8(e);for(var r,n=toIndexedObject$7(t),i=objectKeys$1(t),o=i.length,a=0;o>a;)definePropertyModule$3.f(e,r=i[a++],n[r]);return e};var activeXDocument,anObject$7=anObject$i,definePropertiesModule$1=objectDefineProperties,enumBugKeys=enumBugKeys$3,hiddenKeys$2=hiddenKeys$6,html=html$2,documentCreateElement$1=documentCreateElement$2,sharedKey$2=sharedKey$4,GT=">",LT="<",PROTOTYPE$2="prototype",SCRIPT="script",IE_PROTO$1=sharedKey$2("IE_PROTO"),EmptyConstructor=function(){},scriptTag=function(e){return LT+SCRIPT+GT+e+LT+"/"+SCRIPT+GT},NullProtoObjectViaActiveX=function(e){e.write(scriptTag("")),e.close();var t=e.parentWindow.Object;return e=null,t},NullProtoObjectViaIFrame=function(){var e,t=documentCreateElement$1("iframe"),r="java"+SCRIPT+":";return t.style.display="none",html.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(scriptTag("document.F=Object")),e.close(),e.F},NullProtoObject=function(){try{activeXDocument=new ActiveXObject("htmlfile")}catch(e){}NullProtoObject="undefined"!=typeof document?document.domain&&activeXDocument?NullProtoObjectViaActiveX(activeXDocument):NullProtoObjectViaIFrame():NullProtoObjectViaActiveX(activeXDocument);for(var e=enumBugKeys.length;e--;)delete NullProtoObject[PROTOTYPE$2][enumBugKeys[e]];return NullProtoObject()};hiddenKeys$2[IE_PROTO$1]=!0;var objectCreate=Object.create||function(e,t){var r;return null!==e?(EmptyConstructor[PROTOTYPE$2]=anObject$7(e),r=new EmptyConstructor,EmptyConstructor[PROTOTYPE$2]=null,r[IE_PROTO$1]=e):r=NullProtoObject(),void 0===t?r:definePropertiesModule$1.f(r,t)},fails$v=fails$G,arrayMethodIsStrict$6=function(e,t){var r=[][e];return!!r&&fails$v((function(){r.call(null,t||function(){return 1},1)}))},wellKnownSymbol$b=wellKnownSymbol$m,create$5=objectCreate,defineProperty$6=objectDefineProperty.f,UNSCOPABLES=wellKnownSymbol$b("unscopables"),ArrayPrototype=Array.prototype;null==ArrayPrototype[UNSCOPABLES]&&defineProperty$6(ArrayPrototype,UNSCOPABLES,{configurable:!0,value:create$5(null)});var IteratorPrototype$2,PrototypeOfArrayIteratorPrototype,arrayIterator,addToUnscopables$1=function(e){ArrayPrototype[UNSCOPABLES][e]=!0},fails$u=fails$G,correctPrototypeGetter=!fails$u((function(){function e(){}return e.prototype.constructor=null,Object.getPrototypeOf(new e)!==e.prototype})),hasOwn$a=hasOwnProperty_1,isCallable$6=isCallable$p,toObject$8=toObject$a,sharedKey$1=sharedKey$4,CORRECT_PROTOTYPE_GETTER=correctPrototypeGetter,IE_PROTO=sharedKey$1("IE_PROTO"),$Object=Object,ObjectPrototype$4=$Object.prototype,objectGetPrototypeOf=CORRECT_PROTOTYPE_GETTER?$Object.getPrototypeOf:function(e){var t=toObject$8(e);if(hasOwn$a(t,IE_PROTO))return t[IE_PROTO];var r=t.constructor;return isCallable$6(r)&&t instanceof r?r.prototype:t instanceof $Object?ObjectPrototype$4:null},fails$t=fails$G,isCallable$5=isCallable$p,isObject$e=isObject$n,getPrototypeOf$3=objectGetPrototypeOf,defineBuiltIn$7=defineBuiltIn$d,wellKnownSymbol$a=wellKnownSymbol$m,ITERATOR$5=wellKnownSymbol$a("iterator"),BUGGY_SAFARI_ITERATORS$1=!1;[].keys&&("next"in(arrayIterator=[].keys())?(PrototypeOfArrayIteratorPrototype=getPrototypeOf$3(getPrototypeOf$3(arrayIterator)))!==Object.prototype&&(IteratorPrototype$2=PrototypeOfArrayIteratorPrototype):BUGGY_SAFARI_ITERATORS$1=!0);var NEW_ITERATOR_PROTOTYPE=!isObject$e(IteratorPrototype$2)||fails$t((function(){var e={};return IteratorPrototype$2[ITERATOR$5].call(e)!==e}));NEW_ITERATOR_PROTOTYPE&&(IteratorPrototype$2={}),isCallable$5(IteratorPrototype$2[ITERATOR$5])||defineBuiltIn$7(IteratorPrototype$2,ITERATOR$5,(function(){return this}));var iteratorsCore={IteratorPrototype:IteratorPrototype$2,BUGGY_SAFARI_ITERATORS:BUGGY_SAFARI_ITERATORS$1},IteratorPrototype$1=iteratorsCore.IteratorPrototype,create$4=objectCreate,createPropertyDescriptor$3=createPropertyDescriptor$6,setToStringTag$4=setToStringTag$6,Iterators$2=iterators,returnThis$1=function(){return this},iteratorCreateConstructor=function(e,t,r,n){var i=t+" Iterator";return e.prototype=create$4(IteratorPrototype$1,{next:createPropertyDescriptor$3(+!n,r)}),setToStringTag$4(e,i,!1),Iterators$2[i]=returnThis$1,e},$$y=_export,call$9=functionCall,FunctionName$1=functionName,isCallable$4=isCallable$p,createIteratorConstructor=iteratorCreateConstructor,getPrototypeOf$2=objectGetPrototypeOf,setPrototypeOf$4=objectSetPrototypeOf,setToStringTag$3=setToStringTag$6,createNonEnumerableProperty$5=createNonEnumerableProperty$8,defineBuiltIn$6=defineBuiltIn$d,wellKnownSymbol$9=wellKnownSymbol$m,Iterators$1=iterators,IteratorsCore=iteratorsCore,PROPER_FUNCTION_NAME$2=FunctionName$1.PROPER,CONFIGURABLE_FUNCTION_NAME$1=FunctionName$1.CONFIGURABLE,IteratorPrototype=IteratorsCore.IteratorPrototype,BUGGY_SAFARI_ITERATORS=IteratorsCore.BUGGY_SAFARI_ITERATORS,ITERATOR$4=wellKnownSymbol$9("iterator"),KEYS="keys",VALUES="values",ENTRIES="entries",returnThis=function(){return this},iteratorDefine=function(e,t,r,n,i,o,a){createIteratorConstructor(r,t,n);var s,c,u,l=function(e){if(e===i&&y)return y;if(!BUGGY_SAFARI_ITERATORS&&e in f)return f[e];switch(e){case KEYS:case VALUES:case ENTRIES:return function(){return new r(this,e)}}return function(){return new r(this)}},d=t+" Iterator",h=!1,f=e.prototype,p=f[ITERATOR$4]||f["@@iterator"]||i&&f[i],y=!BUGGY_SAFARI_ITERATORS&&p||l(i),m="Array"==t&&f.entries||p;if(m&&(s=getPrototypeOf$2(m.call(new e)))!==Object.prototype&&s.next&&(getPrototypeOf$2(s)!==IteratorPrototype&&(setPrototypeOf$4?setPrototypeOf$4(s,IteratorPrototype):isCallable$4(s[ITERATOR$4])||defineBuiltIn$6(s,ITERATOR$4,returnThis)),setToStringTag$3(s,d,!0)),PROPER_FUNCTION_NAME$2&&i==VALUES&&p&&p.name!==VALUES&&(CONFIGURABLE_FUNCTION_NAME$1?createNonEnumerableProperty$5(f,"name",VALUES):(h=!0,y=function(){return call$9(p,this)})),i)if(c={values:l(VALUES),keys:o?y:l(KEYS),entries:l(ENTRIES)},a)for(u in c)(BUGGY_SAFARI_ITERATORS||h||!(u in f))&&defineBuiltIn$6(f,u,c[u]);else $$y({target:t,proto:!0,forced:BUGGY_SAFARI_ITERATORS||h},c);return f[ITERATOR$4]!==y&&defineBuiltIn$6(f,ITERATOR$4,y,{name:i}),Iterators$1[t]=y,c},createIterResultObject$3=function(e,t){return{value:e,done:t}},toIndexedObject$6=toIndexedObject$b,addToUnscopables=addToUnscopables$1,Iterators=iterators,InternalStateModule$6=internalState,defineProperty$5=objectDefineProperty.f,defineIterator$2=iteratorDefine,createIterResultObject$2=createIterResultObject$3,DESCRIPTORS$9=descriptors,ARRAY_ITERATOR="Array Iterator",setInternalState$5=InternalStateModule$6.set,getInternalState$4=InternalStateModule$6.getterFor(ARRAY_ITERATOR),es_array_iterator=defineIterator$2(Array,"Array",(function(e,t){setInternalState$5(this,{type:ARRAY_ITERATOR,target:toIndexedObject$6(e),index:0,kind:t})}),(function(){var e=getInternalState$4(this),t=e.target,r=e.kind,n=e.index++;return!t||n>=t.length?(e.target=void 0,createIterResultObject$2(void 0,!0)):createIterResultObject$2("keys"==r?n:"values"==r?t[n]:[n,t[n]],!1)}),"values"),values3=Iterators.Arguments=Iterators.Array;if(addToUnscopables("keys"),addToUnscopables("values"),addToUnscopables("entries"),DESCRIPTORS$9&&"values"!==values3.name)try{defineProperty$5(values3,"name",{value:"values"})}catch(e){}var arrayBufferBasicDetection="undefined"!=typeof ArrayBuffer&&"undefined"!=typeof DataView,defineBuiltIn$5=defineBuiltIn$d,defineBuiltIns$2=function(e,t,r){for(var n in t)defineBuiltIn$5(e,n,t[n],r);return e},toIntegerOrInfinity$6=toIntegerOrInfinity$9,toLength$8=toLength$a,$RangeError$4=RangeError,toIndex$2=function(e){if(void 0===e)return 0;var t=toIntegerOrInfinity$6(e),r=toLength$8(t);if(t!==r)throw $RangeError$4("Wrong length or index");return r},$Array$3=Array,abs$1=Math.abs,pow$2=Math.pow,floor$5=Math.floor,log$3=Math.log,LN2=Math.LN2,pack=function(e,t,r){var n,i,o,a=$Array$3(r),s=8*r-t-1,c=(1<<s)-1,u=c>>1,l=23===t?pow$2(2,-24)-pow$2(2,-77):0,d=e<0||0===e&&1/e<0?1:0,h=0;for((e=abs$1(e))!=e||e===1/0?(i=e!=e?1:0,n=c):(n=floor$5(log$3(e)/LN2),e*(o=pow$2(2,-n))<1&&(n--,o*=2),(e+=n+u>=1?l/o:l*pow$2(2,1-u))*o>=2&&(n++,o/=2),n+u>=c?(i=0,n=c):n+u>=1?(i=(e*o-1)*pow$2(2,t),n+=u):(i=e*pow$2(2,u-1)*pow$2(2,t),n=0));t>=8;)a[h++]=255&i,i/=256,t-=8;for(n=n<<t|i,s+=t;s>0;)a[h++]=255&n,n/=256,s-=8;return a[--h]|=128*d,a},unpack=function(e,t){var r,n=e.length,i=8*n-t-1,o=(1<<i)-1,a=o>>1,s=i-7,c=n-1,u=e[c--],l=127&u;for(u>>=7;s>0;)l=256*l+e[c--],s-=8;for(r=l&(1<<-s)-1,l>>=-s,s+=t;s>0;)r=256*r+e[c--],s-=8;if(0===l)l=1-a;else{if(l===o)return r?NaN:u?-1/0:1/0;r+=pow$2(2,t),l-=a}return(u?-1:1)*r*pow$2(2,l-t)},ieee754={pack:pack,unpack:unpack},toObject$7=toObject$a,toAbsoluteIndex$6=toAbsoluteIndex$8,lengthOfArrayLike$a=lengthOfArrayLike$d,arrayFill$1=function(e){for(var t=toObject$7(this),r=lengthOfArrayLike$a(t),n=arguments.length,i=toAbsoluteIndex$6(n>1?arguments[1]:void 0,r),o=n>2?arguments[2]:void 0,a=void 0===o?r:toAbsoluteIndex$6(o,r);a>i;)t[i++]=e;return t},toPropertyKey$2=toPropertyKey$5,definePropertyModule$2=objectDefineProperty,createPropertyDescriptor$2=createPropertyDescriptor$6,createProperty$2=function(e,t,r){var n=toPropertyKey$2(t);n in e?definePropertyModule$2.f(e,n,createPropertyDescriptor$2(0,r)):e[n]=r},toAbsoluteIndex$5=toAbsoluteIndex$8,lengthOfArrayLike$9=lengthOfArrayLike$d,createProperty$1=createProperty$2,$Array$2=Array,max$1=Math.max,arraySliceSimple=function(e,t,r){for(var n=lengthOfArrayLike$9(e),i=toAbsoluteIndex$5(t,n),o=toAbsoluteIndex$5(void 0===r?n:r,n),a=$Array$2(max$1(o-i,0)),s=0;i<o;i++,s++)createProperty$1(a,s,e[i]);return a.length=s,a},global$j=global$C,uncurryThis$o=functionUncurryThis,DESCRIPTORS$8=descriptors,NATIVE_ARRAY_BUFFER$1=arrayBufferBasicDetection,FunctionName=functionName,createNonEnumerableProperty$4=createNonEnumerableProperty$8,defineBuiltInAccessor$3=defineBuiltInAccessor$5,defineBuiltIns$1=defineBuiltIns$2,fails$s=fails$G,anInstance$3=anInstance$5,toIntegerOrInfinity$5=toIntegerOrInfinity$9,toLength$7=toLength$a,toIndex$1=toIndex$2,IEEE754=ieee754,getPrototypeOf$1=objectGetPrototypeOf,setPrototypeOf$3=objectSetPrototypeOf,getOwnPropertyNames$2=objectGetOwnPropertyNames.f,arrayFill=arrayFill$1,arraySlice$5=arraySliceSimple,setToStringTag$2=setToStringTag$6,InternalStateModule$5=internalState,PROPER_FUNCTION_NAME$1=FunctionName.PROPER,CONFIGURABLE_FUNCTION_NAME=FunctionName.CONFIGURABLE,ARRAY_BUFFER="ArrayBuffer",DATA_VIEW="DataView",PROTOTYPE$1="prototype",WRONG_LENGTH$1="Wrong length",WRONG_INDEX="Wrong index",getInternalArrayBufferState=InternalStateModule$5.getterFor(ARRAY_BUFFER),getInternalDataViewState=InternalStateModule$5.getterFor(DATA_VIEW),setInternalState$4=InternalStateModule$5.set,NativeArrayBuffer=global$j[ARRAY_BUFFER],$ArrayBuffer=NativeArrayBuffer,ArrayBufferPrototype$1=$ArrayBuffer&&$ArrayBuffer[PROTOTYPE$1],$DataView=global$j[DATA_VIEW],DataViewPrototype$2=$DataView&&$DataView[PROTOTYPE$1],ObjectPrototype$3=Object.prototype,Array$1=global$j.Array,RangeError$3=global$j.RangeError,fill4=uncurryThis$o(arrayFill),reverse2=uncurryThis$o([].reverse),packIEEE754=IEEE754.pack,unpackIEEE754=IEEE754.unpack,packInt8=function(e){return[255&e]},packInt16=function(e){return[255&e,e>>8&255]},packInt32=function(e){return[255&e,e>>8&255,e>>16&255,e>>24&255]},unpackInt32=function(e){return e[3]<<24|e[2]<<16|e[1]<<8|e[0]},packFloat32=function(e){return packIEEE754(e,23,4)},packFloat64=function(e){return packIEEE754(e,52,8)},addGetter$1=function(e,t,r){defineBuiltInAccessor$3(e[PROTOTYPE$1],t,{configurable:!0,get:function(){return r(this)[t]}})},get2=function(e,t,r,n){var i=getInternalDataViewState(e),o=toIndex$1(r),a=!!n;if(o+t>i.byteLength)throw RangeError$3(WRONG_INDEX);var s=i.bytes,c=o+i.byteOffset,u=arraySlice$5(s,c,c+t);return a?u:reverse2(u)},set3=function(e,t,r,n,i,o){var a=getInternalDataViewState(e),s=toIndex$1(r),c=n(+i),u=!!o;if(s+t>a.byteLength)throw RangeError$3(WRONG_INDEX);for(var l=a.bytes,d=s+a.byteOffset,h=0;h<t;h++)l[d+h]=c[u?h:t-h-1]};if(NATIVE_ARRAY_BUFFER$1){var INCORRECT_ARRAY_BUFFER_NAME=PROPER_FUNCTION_NAME$1&&NativeArrayBuffer.name!==ARRAY_BUFFER;if(fails$s((function(){NativeArrayBuffer(1)}))&&fails$s((function(){new NativeArrayBuffer(-1)}))&&!fails$s((function(){return new NativeArrayBuffer,new NativeArrayBuffer(1.5),new NativeArrayBuffer(NaN),1!=NativeArrayBuffer.length||INCORRECT_ARRAY_BUFFER_NAME&&!CONFIGURABLE_FUNCTION_NAME})))INCORRECT_ARRAY_BUFFER_NAME&&CONFIGURABLE_FUNCTION_NAME&&createNonEnumerableProperty$4(NativeArrayBuffer,"name",ARRAY_BUFFER);else{($ArrayBuffer=function(e){return anInstance$3(this,ArrayBufferPrototype$1),new NativeArrayBuffer(toIndex$1(e))})[PROTOTYPE$1]=ArrayBufferPrototype$1;for(var key2,keys$1=getOwnPropertyNames$2(NativeArrayBuffer),j=0;keys$1.length>j;)(key2=keys$1[j++])in $ArrayBuffer||createNonEnumerableProperty$4($ArrayBuffer,key2,NativeArrayBuffer[key2]);ArrayBufferPrototype$1.constructor=$ArrayBuffer}setPrototypeOf$3&&getPrototypeOf$1(DataViewPrototype$2)!==ObjectPrototype$3&&setPrototypeOf$3(DataViewPrototype$2,ObjectPrototype$3);var testView=new $DataView(new $ArrayBuffer(2)),$setInt8=uncurryThis$o(DataViewPrototype$2.setInt8);testView.setInt8(0,2147483648),testView.setInt8(1,2147483649),!testView.getInt8(0)&&testView.getInt8(1)||defineBuiltIns$1(DataViewPrototype$2,{setInt8:function(e,t){$setInt8(this,e,t<<24>>24)},setUint8:function(e,t){$setInt8(this,e,t<<24>>24)}},{unsafe:!0})}else ArrayBufferPrototype$1=($ArrayBuffer=function(e){anInstance$3(this,ArrayBufferPrototype$1);var t=toIndex$1(e);setInternalState$4(this,{type:ARRAY_BUFFER,bytes:fill4(Array$1(t),0),byteLength:t}),DESCRIPTORS$8||(this.byteLength=t,this.detached=!1)})[PROTOTYPE$1],DataViewPrototype$2=($DataView=function(e,t,r){anInstance$3(this,DataViewPrototype$2),anInstance$3(e,ArrayBufferPrototype$1);var n=getInternalArrayBufferState(e),i=n.byteLength,o=toIntegerOrInfinity$5(t);if(o<0||o>i)throw RangeError$3("Wrong offset");if(o+(r=void 0===r?i-o:toLength$7(r))>i)throw RangeError$3(WRONG_LENGTH$1);setInternalState$4(this,{type:DATA_VIEW,buffer:e,byteLength:r,byteOffset:o,bytes:n.bytes}),DESCRIPTORS$8||(this.buffer=e,this.byteLength=r,this.byteOffset=o)})[PROTOTYPE$1],DESCRIPTORS$8&&(addGetter$1($ArrayBuffer,"byteLength",getInternalArrayBufferState),addGetter$1($DataView,"buffer",getInternalDataViewState),addGetter$1($DataView,"byteLength",getInternalDataViewState),addGetter$1($DataView,"byteOffset",getInternalDataViewState)),defineBuiltIns$1(DataViewPrototype$2,{getInt8:function(e){return get2(this,1,e)[0]<<24>>24},getUint8:function(e){return get2(this,1,e)[0]},getInt16:function(e){var t=get2(this,2,e,arguments.length>1&&arguments[1]);return(t[1]<<8|t[0])<<16>>16},getUint16:function(e){var t=get2(this,2,e,arguments.length>1&&arguments[1]);return t[1]<<8|t[0]},getInt32:function(e){return unpackInt32(get2(this,4,e,arguments.length>1&&arguments[1]))},getUint32:function(e){return unpackInt32(get2(this,4,e,arguments.length>1&&arguments[1]))>>>0},getFloat32:function(e){return unpackIEEE754(get2(this,4,e,arguments.length>1&&arguments[1]),23)},getFloat64:function(e){return unpackIEEE754(get2(this,8,e,arguments.length>1&&arguments[1]),52)},setInt8:function(e,t){set3(this,1,e,packInt8,t)},setUint8:function(e,t){set3(this,1,e,packInt8,t)},setInt16:function(e,t){set3(this,2,e,packInt16,t,arguments.length>2&&arguments[2])},setUint16:function(e,t){set3(this,2,e,packInt16,t,arguments.length>2&&arguments[2])},setInt32:function(e,t){set3(this,4,e,packInt32,t,arguments.length>2&&arguments[2])},setUint32:function(e,t){set3(this,4,e,packInt32,t,arguments.length>2&&arguments[2])},setFloat32:function(e,t){set3(this,4,e,packFloat32,t,arguments.length>2&&arguments[2])},setFloat64:function(e,t){set3(this,8,e,packFloat64,t,arguments.length>2&&arguments[2])}});setToStringTag$2($ArrayBuffer,ARRAY_BUFFER),setToStringTag$2($DataView,DATA_VIEW);var arrayBuffer={ArrayBuffer:$ArrayBuffer,DataView:$DataView},$$x=_export,uncurryThis$n=functionUncurryThisClause,fails$r=fails$G,ArrayBufferModule$2=arrayBuffer,anObject$6=anObject$i,toAbsoluteIndex$4=toAbsoluteIndex$8,toLength$6=toLength$a,speciesConstructor$3=speciesConstructor$5,ArrayBuffer$4=ArrayBufferModule$2.ArrayBuffer,DataView$3=ArrayBufferModule$2.DataView,DataViewPrototype$1=DataView$3.prototype,nativeArrayBufferSlice$1=uncurryThis$n(ArrayBuffer$4.prototype.slice),getUint8$1=uncurryThis$n(DataViewPrototype$1.getUint8),setUint8$1=uncurryThis$n(DataViewPrototype$1.setUint8),INCORRECT_SLICE$1=fails$r((function(){return!new ArrayBuffer$4(2).slice(1,void 0).byteLength}));$$x({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:INCORRECT_SLICE$1},{slice:function(e,t){if(nativeArrayBufferSlice$1&&void 0===t)return nativeArrayBufferSlice$1(anObject$6(this),e);for(var r=anObject$6(this).byteLength,n=toAbsoluteIndex$4(e,r),i=toAbsoluteIndex$4(void 0===t?r:t,r),o=new(speciesConstructor$3(this,ArrayBuffer$4))(toLength$6(i-n)),a=new DataView$3(this),s=new DataView$3(o),c=0;n<i;)setUint8$1(s,c++,getUint8$1(a,n++));return o}});var NAME,Constructor,Prototype,typedArrayConstructor={exports:{}},NATIVE_ARRAY_BUFFER=arrayBufferBasicDetection,DESCRIPTORS$7=descriptors,global$i=global$C,isCallable$3=isCallable$p,isObject$d=isObject$n,hasOwn$9=hasOwnProperty_1,classof$6=classof$c,tryToString$2=tryToString$7,createNonEnumerableProperty$3=createNonEnumerableProperty$8,defineBuiltIn$4=defineBuiltIn$d,defineBuiltInAccessor$2=defineBuiltInAccessor$5,isPrototypeOf$5=objectIsPrototypeOf,getPrototypeOf3=objectGetPrototypeOf,setPrototypeOf$2=objectSetPrototypeOf,wellKnownSymbol$8=wellKnownSymbol$m,uid$2=uid$5,InternalStateModule$4=internalState,enforceInternalState$1=InternalStateModule$4.enforce,getInternalState$3=InternalStateModule$4.get,Int8Array$4=global$i.Int8Array,Int8ArrayPrototype$1=Int8Array$4&&Int8Array$4.prototype,Uint8ClampedArray$1=global$i.Uint8ClampedArray,Uint8ClampedArrayPrototype=Uint8ClampedArray$1&&Uint8ClampedArray$1.prototype,TypedArray$1=Int8Array$4&&getPrototypeOf3(Int8Array$4),TypedArrayPrototype$2=Int8ArrayPrototype$1&&getPrototypeOf3(Int8ArrayPrototype$1),ObjectPrototype$2=Object.prototype,TypeError$3=global$i.TypeError,TO_STRING_TAG$1=wellKnownSymbol$8("toStringTag"),TYPED_ARRAY_TAG$1=uid$2("TYPED_ARRAY_TAG"),TYPED_ARRAY_CONSTRUCTOR="TypedArrayConstructor",NATIVE_ARRAY_BUFFER_VIEWS$2=NATIVE_ARRAY_BUFFER&&!!setPrototypeOf$2&&"Opera"!==classof$6(global$i.opera),TYPED_ARRAY_TAG_REQUIRED=!1,TypedArrayConstructorsList={Int8Array:1,Uint8Array:1,Uint8ClampedArray:1,Int16Array:2,Uint16Array:2,Int32Array:4,Uint32Array:4,Float32Array:4,Float64Array:8},BigIntArrayConstructorsList={BigInt64Array:8,BigUint64Array:8},isView2=function(e){if(!isObject$d(e))return!1;var t=classof$6(e);return"DataView"===t||hasOwn$9(TypedArrayConstructorsList,t)||hasOwn$9(BigIntArrayConstructorsList,t)},getTypedArrayConstructor$1=function(e){var t=getPrototypeOf3(e);if(isObject$d(t)){var r=getInternalState$3(t);return r&&hasOwn$9(r,TYPED_ARRAY_CONSTRUCTOR)?r[TYPED_ARRAY_CONSTRUCTOR]:getTypedArrayConstructor$1(t)}},isTypedArray$1=function(e){if(!isObject$d(e))return!1;var t=classof$6(e);return hasOwn$9(TypedArrayConstructorsList,t)||hasOwn$9(BigIntArrayConstructorsList,t)},aTypedArray$m=function(e){if(isTypedArray$1(e))return e;throw TypeError$3("Target is not a typed array")},aTypedArrayConstructor$4=function(e){if(isCallable$3(e)&&(!setPrototypeOf$2||isPrototypeOf$5(TypedArray$1,e)))return e;throw TypeError$3(tryToString$2(e)+" is not a typed array constructor")},exportTypedArrayMethod$n=function(e,t,r,n){if(DESCRIPTORS$7){if(r)for(var i in TypedArrayConstructorsList){var o=global$i[i];if(o&&hasOwn$9(o.prototype,e))try{delete o.prototype[e]}catch(r){try{o.prototype[e]=t}catch(e){}}}TypedArrayPrototype$2[e]&&!r||defineBuiltIn$4(TypedArrayPrototype$2,e,r?t:NATIVE_ARRAY_BUFFER_VIEWS$2&&Int8ArrayPrototype$1[e]||t,n)}},exportTypedArrayStaticMethod$1=function(e,t,r){var n,i;if(DESCRIPTORS$7){if(setPrototypeOf$2){if(r)for(n in TypedArrayConstructorsList)if((i=global$i[n])&&hasOwn$9(i,e))try{delete i[e]}catch(e){}if(TypedArray$1[e]&&!r)return;try{return defineBuiltIn$4(TypedArray$1,e,r?t:NATIVE_ARRAY_BUFFER_VIEWS$2&&TypedArray$1[e]||t)}catch(e){}}for(n in TypedArrayConstructorsList)!(i=global$i[n])||i[e]&&!r||defineBuiltIn$4(i,e,t)}};for(NAME in TypedArrayConstructorsList)(Prototype=(Constructor=global$i[NAME])&&Constructor.prototype)?enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR]=Constructor:NATIVE_ARRAY_BUFFER_VIEWS$2=!1;for(NAME in BigIntArrayConstructorsList)(Prototype=(Constructor=global$i[NAME])&&Constructor.prototype)&&(enforceInternalState$1(Prototype)[TYPED_ARRAY_CONSTRUCTOR]=Constructor);if((!NATIVE_ARRAY_BUFFER_VIEWS$2||!isCallable$3(TypedArray$1)||TypedArray$1===Function.prototype)&&(TypedArray$1=function(){throw TypeError$3("Incorrect invocation")},NATIVE_ARRAY_BUFFER_VIEWS$2))for(NAME in TypedArrayConstructorsList)global$i[NAME]&&setPrototypeOf$2(global$i[NAME],TypedArray$1);if((!NATIVE_ARRAY_BUFFER_VIEWS$2||!TypedArrayPrototype$2||TypedArrayPrototype$2===ObjectPrototype$2)&&(TypedArrayPrototype$2=TypedArray$1.prototype,NATIVE_ARRAY_BUFFER_VIEWS$2))for(NAME in TypedArrayConstructorsList)global$i[NAME]&&setPrototypeOf$2(global$i[NAME].prototype,TypedArrayPrototype$2);if(NATIVE_ARRAY_BUFFER_VIEWS$2&&getPrototypeOf3(Uint8ClampedArrayPrototype)!==TypedArrayPrototype$2&&setPrototypeOf$2(Uint8ClampedArrayPrototype,TypedArrayPrototype$2),DESCRIPTORS$7&&!hasOwn$9(TypedArrayPrototype$2,TO_STRING_TAG$1))for(NAME in TYPED_ARRAY_TAG_REQUIRED=!0,defineBuiltInAccessor$2(TypedArrayPrototype$2,TO_STRING_TAG$1,{configurable:!0,get:function(){return isObject$d(this)?this[TYPED_ARRAY_TAG$1]:void 0}}),TypedArrayConstructorsList)global$i[NAME]&&createNonEnumerableProperty$3(global$i[NAME],TYPED_ARRAY_TAG$1,NAME);var arrayBufferViewCore={NATIVE_ARRAY_BUFFER_VIEWS:NATIVE_ARRAY_BUFFER_VIEWS$2,TYPED_ARRAY_TAG:TYPED_ARRAY_TAG_REQUIRED&&TYPED_ARRAY_TAG$1,aTypedArray:aTypedArray$m,aTypedArrayConstructor:aTypedArrayConstructor$4,exportTypedArrayMethod:exportTypedArrayMethod$n,exportTypedArrayStaticMethod:exportTypedArrayStaticMethod$1,getTypedArrayConstructor:getTypedArrayConstructor$1,isView:isView2,isTypedArray:isTypedArray$1,TypedArray:TypedArray$1,TypedArrayPrototype:TypedArrayPrototype$2},global$h=global$C,fails$q=fails$G,checkCorrectnessOfIteration$1=checkCorrectnessOfIteration$3,NATIVE_ARRAY_BUFFER_VIEWS$1=arrayBufferViewCore.NATIVE_ARRAY_BUFFER_VIEWS,ArrayBuffer$3=global$h.ArrayBuffer,Int8Array$3=global$h.Int8Array,typedArrayConstructorsRequireWrappers=!NATIVE_ARRAY_BUFFER_VIEWS$1||!fails$q((function(){Int8Array$3(1)}))||!fails$q((function(){new Int8Array$3(-1)}))||!checkCorrectnessOfIteration$1((function(e){new Int8Array$3,new Int8Array$3(null),new Int8Array$3(1.5),new Int8Array$3(e)}),!0)||fails$q((function(){return 1!==new Int8Array$3(new ArrayBuffer$3(2),1,void 0).length})),isObject$c=isObject$n,floor$4=Math.floor,isIntegralNumber$1=Number.isInteger||function(e){return!isObject$c(e)&&isFinite(e)&&floor$4(e)===e},toIntegerOrInfinity$4=toIntegerOrInfinity$9,$RangeError$3=RangeError,toPositiveInteger$1=function(e){var t=toIntegerOrInfinity$4(e);if(t<0)throw $RangeError$3("The argument can't be less than 0");return t},toPositiveInteger=toPositiveInteger$1,$RangeError$2=RangeError,toOffset$2=function(e,t){var r=toPositiveInteger(e);if(r%t)throw $RangeError$2("Wrong offset");return r},classof$5=classof$c,isBigIntArray$1=function(e){var t=classof$5(e);return"BigInt64Array"==t||"BigUint64Array"==t},toPrimitive$1=toPrimitive$3,$TypeError$2=TypeError,toBigInt$2=function(e){var t=toPrimitive$1(e,"number");if("number"==typeof t)throw $TypeError$2("Can't convert number to bigint");return BigInt(t)},bind$3=functionBindContext,call$8=functionCall,aConstructor$1=aConstructor$3,toObject$6=toObject$a,lengthOfArrayLike$8=lengthOfArrayLike$d,getIterator=getIterator$2,getIteratorMethod=getIteratorMethod$3,isArrayIteratorMethod=isArrayIteratorMethod$2,isBigIntArray=isBigIntArray$1,aTypedArrayConstructor$3=arrayBufferViewCore.aTypedArrayConstructor,toBigInt$1=toBigInt$2,typedArrayFrom$1=function(e){var t,r,n,i,o,a,s,c,u=aConstructor$1(this),l=toObject$6(e),d=arguments.length,h=d>1?arguments[1]:void 0,f=void 0!==h,p=getIteratorMethod(l);if(p&&!isArrayIteratorMethod(p))for(c=(s=getIterator(l,p)).next,l=[];!(a=call$8(c,s)).done;)l.push(a.value);for(f&&d>2&&(h=bind$3(h,arguments[2])),r=lengthOfArrayLike$8(l),n=new(aTypedArrayConstructor$3(u))(r),i=isBigIntArray(n),t=0;r>t;t++)o=f?h(l[t],t):l[t],n[t]=i?toBigInt$1(o):+o;return n},classof$4=classofRaw$2,isArray$3=Array.isArray||function(e){return"Array"==classof$4(e)},isArray$2=isArray$3,isConstructor$1=isConstructor$3,isObject$b=isObject$n,wellKnownSymbol$7=wellKnownSymbol$m,SPECIES$2=wellKnownSymbol$7("species"),$Array$1=Array,arraySpeciesConstructor$1=function(e){var t;return isArray$2(e)&&(t=e.constructor,(isConstructor$1(t)&&(t===$Array$1||isArray$2(t.prototype))||isObject$b(t)&&null===(t=t[SPECIES$2]))&&(t=void 0)),void 0===t?$Array$1:t},arraySpeciesConstructor=arraySpeciesConstructor$1,arraySpeciesCreate$1=function(e,t){return new(arraySpeciesConstructor(e))(0===t?0:t)},bind$2=functionBindContext,uncurryThis$m=functionUncurryThis,IndexedObject$1=indexedObject,toObject$5=toObject$a,lengthOfArrayLike$7=lengthOfArrayLike$d,arraySpeciesCreate=arraySpeciesCreate$1,push$4=uncurryThis$m([].push),createMethod$3=function(e){var t=1==e,r=2==e,n=3==e,i=4==e,o=6==e,a=7==e,s=5==e||o;return function(c,u,l,d){for(var h,f,p=toObject$5(c),y=IndexedObject$1(p),m=bind$2(u,l),g=lengthOfArrayLike$7(y),v=0,b=d||arraySpeciesCreate,_=t?b(c,g):r||a?b(c,0):void 0;g>v;v++)if((s||v in y)&&(f=m(h=y[v],v,p),e))if(t)_[v]=f;else if(f)switch(e){case 3:return!0;case 5:return h;case 6:return v;case 2:push$4(_,h)}else switch(e){case 4:return!1;case 7:push$4(_,h)}return o?-1:n||i?i:_}},arrayIteration={forEach:createMethod$3(0),map:createMethod$3(1),filter:createMethod$3(2),some:createMethod$3(3),every:createMethod$3(4),find:createMethod$3(5),findIndex:createMethod$3(6),filterReject:createMethod$3(7)},isCallable$2=isCallable$p,isObject$a=isObject$n,setPrototypeOf$1=objectSetPrototypeOf,inheritIfRequired$3=function(e,t,r){var n,i;return setPrototypeOf$1&&isCallable$2(n=t.constructor)&&n!==r&&isObject$a(i=n.prototype)&&i!==r.prototype&&setPrototypeOf$1(e,i),e},$$w=_export,global$g=global$C,call$7=functionCall,DESCRIPTORS$6=descriptors,TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1=typedArrayConstructorsRequireWrappers,ArrayBufferViewCore$o=arrayBufferViewCore,ArrayBufferModule$1=arrayBuffer,anInstance$2=anInstance$5,createPropertyDescriptor$1=createPropertyDescriptor$6,createNonEnumerableProperty$2=createNonEnumerableProperty$8,isIntegralNumber=isIntegralNumber$1,toLength$5=toLength$a,toIndex=toIndex$2,toOffset$1=toOffset$2,toPropertyKey$1=toPropertyKey$5,hasOwn$8=hasOwnProperty_1,classof$3=classof$c,isObject$9=isObject$n,isSymbol$2=isSymbol$5,create$3=objectCreate,isPrototypeOf$4=objectIsPrototypeOf,setPrototypeOf=objectSetPrototypeOf,getOwnPropertyNames$1=objectGetOwnPropertyNames.f,typedArrayFrom=typedArrayFrom$1,forEach$3=arrayIteration.forEach,setSpecies$1=setSpecies$3,defineBuiltInAccessor$1=defineBuiltInAccessor$5,definePropertyModule$1=objectDefineProperty,getOwnPropertyDescriptorModule$1=objectGetOwnPropertyDescriptor,InternalStateModule$3=internalState,inheritIfRequired$2=inheritIfRequired$3,getInternalState$2=InternalStateModule$3.get,setInternalState$3=InternalStateModule$3.set,enforceInternalState=InternalStateModule$3.enforce,nativeDefineProperty$1=definePropertyModule$1.f,nativeGetOwnPropertyDescriptor$2=getOwnPropertyDescriptorModule$1.f,round=Math.round,RangeError$2=global$g.RangeError,ArrayBuffer$2=ArrayBufferModule$1.ArrayBuffer,ArrayBufferPrototype=ArrayBuffer$2.prototype,DataView$2=ArrayBufferModule$1.DataView,NATIVE_ARRAY_BUFFER_VIEWS=ArrayBufferViewCore$o.NATIVE_ARRAY_BUFFER_VIEWS,TYPED_ARRAY_TAG=ArrayBufferViewCore$o.TYPED_ARRAY_TAG,TypedArray=ArrayBufferViewCore$o.TypedArray,TypedArrayPrototype$1=ArrayBufferViewCore$o.TypedArrayPrototype,aTypedArrayConstructor$2=ArrayBufferViewCore$o.aTypedArrayConstructor,isTypedArray=ArrayBufferViewCore$o.isTypedArray,BYTES_PER_ELEMENT="BYTES_PER_ELEMENT",WRONG_LENGTH="Wrong length",fromList=function(e,t){aTypedArrayConstructor$2(e);for(var r=0,n=t.length,i=new e(n);n>r;)i[r]=t[r++];return i},addGetter=function(e,t){defineBuiltInAccessor$1(e,t,{configurable:!0,get:function(){return getInternalState$2(this)[t]}})},isArrayBuffer=function(e){var t;return isPrototypeOf$4(ArrayBufferPrototype,e)||"ArrayBuffer"==(t=classof$3(e))||"SharedArrayBuffer"==t},isTypedArrayIndex=function(e,t){return isTypedArray(e)&&!isSymbol$2(t)&&t in e&&isIntegralNumber(+t)&&t>=0},wrappedGetOwnPropertyDescriptor=function(e,t){return t=toPropertyKey$1(t),isTypedArrayIndex(e,t)?createPropertyDescriptor$1(2,e[t]):nativeGetOwnPropertyDescriptor$2(e,t)},wrappedDefineProperty=function(e,t,r){return t=toPropertyKey$1(t),!(isTypedArrayIndex(e,t)&&isObject$9(r)&&hasOwn$8(r,"value"))||hasOwn$8(r,"get")||hasOwn$8(r,"set")||r.configurable||hasOwn$8(r,"writable")&&!r.writable||hasOwn$8(r,"enumerable")&&!r.enumerable?nativeDefineProperty$1(e,t,r):(e[t]=r.value,e)};DESCRIPTORS$6?(NATIVE_ARRAY_BUFFER_VIEWS||(getOwnPropertyDescriptorModule$1.f=wrappedGetOwnPropertyDescriptor,definePropertyModule$1.f=wrappedDefineProperty,addGetter(TypedArrayPrototype$1,"buffer"),addGetter(TypedArrayPrototype$1,"byteOffset"),addGetter(TypedArrayPrototype$1,"byteLength"),addGetter(TypedArrayPrototype$1,"length")),$$w({target:"Object",stat:!0,forced:!NATIVE_ARRAY_BUFFER_VIEWS},{getOwnPropertyDescriptor:wrappedGetOwnPropertyDescriptor,defineProperty:wrappedDefineProperty}),typedArrayConstructor.exports=function(e,t,r){var n=e.match(/\d+/)[0]/8,i=e+(r?"Clamped":"")+"Array",o="get"+e,a="set"+e,s=global$g[i],c=s,u=c&&c.prototype,l={},d=function(e,t){nativeDefineProperty$1(e,t,{get:function(){return function(e,t){var r=getInternalState$2(e);return r.view[o](t*n+r.byteOffset,!0)}(this,t)},set:function(e){return function(e,t,i){var o=getInternalState$2(e);r&&(i=(i=round(i))<0?0:i>255?255:255&i),o.view[a](t*n+o.byteOffset,i,!0)}(this,t,e)},enumerable:!0})};NATIVE_ARRAY_BUFFER_VIEWS?TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS$1&&(c=t((function(e,t,r,i){return anInstance$2(e,u),inheritIfRequired$2(isObject$9(t)?isArrayBuffer(t)?void 0!==i?new s(t,toOffset$1(r,n),i):void 0!==r?new s(t,toOffset$1(r,n)):new s(t):isTypedArray(t)?fromList(c,t):call$7(typedArrayFrom,c,t):new s(toIndex(t)),e,c)})),setPrototypeOf&&setPrototypeOf(c,TypedArray),forEach$3(getOwnPropertyNames$1(s),(function(e){e in c||createNonEnumerableProperty$2(c,e,s[e])})),c.prototype=u):(c=t((function(e,t,r,i){anInstance$2(e,u);var o,a,s,l=0,h=0;if(isObject$9(t)){if(!isArrayBuffer(t))return isTypedArray(t)?fromList(c,t):call$7(typedArrayFrom,c,t);o=t,h=toOffset$1(r,n);var f=t.byteLength;if(void 0===i){if(f%n)throw RangeError$2(WRONG_LENGTH);if((a=f-h)<0)throw RangeError$2(WRONG_LENGTH)}else if((a=toLength$5(i)*n)+h>f)throw RangeError$2(WRONG_LENGTH);s=a/n}else s=toIndex(t),o=new ArrayBuffer$2(a=s*n);for(setInternalState$3(e,{buffer:o,byteOffset:h,byteLength:a,length:s,view:new DataView$2(o)});l<s;)d(e,l++)})),setPrototypeOf&&setPrototypeOf(c,TypedArray),u=c.prototype=create$3(TypedArrayPrototype$1)),u.constructor!==c&&createNonEnumerableProperty$2(u,"constructor",c),enforceInternalState(u).TypedArrayConstructor=c,TYPED_ARRAY_TAG&&createNonEnumerableProperty$2(u,TYPED_ARRAY_TAG,i);var h=c!=s;l[i]=c,$$w({global:!0,constructor:!0,forced:h,sham:!NATIVE_ARRAY_BUFFER_VIEWS},l),BYTES_PER_ELEMENT in c||createNonEnumerableProperty$2(c,BYTES_PER_ELEMENT,n),BYTES_PER_ELEMENT in u||createNonEnumerableProperty$2(u,BYTES_PER_ELEMENT,n),setSpecies$1(i)}):typedArrayConstructor.exports=function(){};var typedArrayConstructorExports=typedArrayConstructor.exports,tryToString$1=tryToString$7,$TypeError$1=TypeError,deletePropertyOrThrow$2=function(e,t){if(!delete e[t])throw $TypeError$1("Cannot delete property "+tryToString$1(t)+" of "+tryToString$1(e))},toObject$4=toObject$a,toAbsoluteIndex$3=toAbsoluteIndex$8,lengthOfArrayLike$6=lengthOfArrayLike$d,deletePropertyOrThrow$1=deletePropertyOrThrow$2,min$3=Math.min,arrayCopyWithin=[].copyWithin||function(e,t){var r=toObject$4(this),n=lengthOfArrayLike$6(r),i=toAbsoluteIndex$3(e,n),o=toAbsoluteIndex$3(t,n),a=arguments.length>2?arguments[2]:void 0,s=min$3((void 0===a?n:toAbsoluteIndex$3(a,n))-o,n-i),c=1;for(o<i&&i<o+s&&(c=-1,o+=s-1,i+=s-1);s-- >0;)o in r?r[i]=r[o]:deletePropertyOrThrow$1(r,i),i+=c,o+=c;return r},uncurryThis$l=functionUncurryThis,ArrayBufferViewCore$n=arrayBufferViewCore,$ArrayCopyWithin=arrayCopyWithin,u$ArrayCopyWithin=uncurryThis$l($ArrayCopyWithin),aTypedArray$l=ArrayBufferViewCore$n.aTypedArray,exportTypedArrayMethod$m=ArrayBufferViewCore$n.exportTypedArrayMethod;exportTypedArrayMethod$m("copyWithin",(function(e,t){return u$ArrayCopyWithin(aTypedArray$l(this),e,t,arguments.length>2?arguments[2]:void 0)}));var ArrayBufferViewCore$m=arrayBufferViewCore,$every=arrayIteration.every,aTypedArray$k=ArrayBufferViewCore$m.aTypedArray,exportTypedArrayMethod$l=ArrayBufferViewCore$m.exportTypedArrayMethod;exportTypedArrayMethod$l("every",(function(e){return $every(aTypedArray$k(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$l=arrayBufferViewCore,$fill=arrayFill$1,toBigInt=toBigInt$2,classof$2=classof$c,call$6=functionCall,uncurryThis$k=functionUncurryThis,fails$p=fails$G,aTypedArray$j=ArrayBufferViewCore$l.aTypedArray,exportTypedArrayMethod$k=ArrayBufferViewCore$l.exportTypedArrayMethod,slice5=uncurryThis$k("".slice),CONVERSION_BUG=fails$p((function(){var e=0;return new Int8Array(2).fill({valueOf:function(){return e++}}),1!==e}));exportTypedArrayMethod$k("fill",(function(e){var t=arguments.length;aTypedArray$j(this);var r="Big"===slice5(classof$2(this),0,3)?toBigInt(e):+e;return call$6($fill,this,r,t>1?arguments[1]:void 0,t>2?arguments[2]:void 0)}),CONVERSION_BUG);var lengthOfArrayLike$5=lengthOfArrayLike$d,arrayFromConstructorAndList$1=function(e,t){for(var r=0,n=lengthOfArrayLike$5(t),i=new e(n);n>r;)i[r]=t[r++];return i},ArrayBufferViewCore$k=arrayBufferViewCore,speciesConstructor$2=speciesConstructor$5,aTypedArrayConstructor$1=ArrayBufferViewCore$k.aTypedArrayConstructor,getTypedArrayConstructor=ArrayBufferViewCore$k.getTypedArrayConstructor,typedArraySpeciesConstructor$4=function(e){return aTypedArrayConstructor$1(speciesConstructor$2(e,getTypedArrayConstructor(e)))},arrayFromConstructorAndList=arrayFromConstructorAndList$1,typedArraySpeciesConstructor$3=typedArraySpeciesConstructor$4,typedArrayFromSpeciesAndList=function(e,t){return arrayFromConstructorAndList(typedArraySpeciesConstructor$3(e),t)},ArrayBufferViewCore$j=arrayBufferViewCore,$filter=arrayIteration.filter,fromSpeciesAndList=typedArrayFromSpeciesAndList,aTypedArray$i=ArrayBufferViewCore$j.aTypedArray,exportTypedArrayMethod$j=ArrayBufferViewCore$j.exportTypedArrayMethod;exportTypedArrayMethod$j("filter",(function(e){var t=$filter(aTypedArray$i(this),e,arguments.length>1?arguments[1]:void 0);return fromSpeciesAndList(this,t)}));var ArrayBufferViewCore$i=arrayBufferViewCore,$find=arrayIteration.find,aTypedArray$h=ArrayBufferViewCore$i.aTypedArray,exportTypedArrayMethod$i=ArrayBufferViewCore$i.exportTypedArrayMethod;exportTypedArrayMethod$i("find",(function(e){return $find(aTypedArray$h(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$h=arrayBufferViewCore,$findIndex=arrayIteration.findIndex,aTypedArray$g=ArrayBufferViewCore$h.aTypedArray,exportTypedArrayMethod$h=ArrayBufferViewCore$h.exportTypedArrayMethod;exportTypedArrayMethod$h("findIndex",(function(e){return $findIndex(aTypedArray$g(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$g=arrayBufferViewCore,$forEach$2=arrayIteration.forEach,aTypedArray$f=ArrayBufferViewCore$g.aTypedArray,exportTypedArrayMethod$g=ArrayBufferViewCore$g.exportTypedArrayMethod;exportTypedArrayMethod$g("forEach",(function(e){$forEach$2(aTypedArray$f(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$f=arrayBufferViewCore,$includes=arrayIncludes.includes,aTypedArray$e=ArrayBufferViewCore$f.aTypedArray,exportTypedArrayMethod$f=ArrayBufferViewCore$f.exportTypedArrayMethod;exportTypedArrayMethod$f("includes",(function(e){return $includes(aTypedArray$e(this),e,arguments.length>1?arguments[1]:void 0)}));var ArrayBufferViewCore$e=arrayBufferViewCore,$indexOf$1=arrayIncludes.indexOf,aTypedArray$d=ArrayBufferViewCore$e.aTypedArray,exportTypedArrayMethod$e=ArrayBufferViewCore$e.exportTypedArrayMethod;exportTypedArrayMethod$e("indexOf",(function(e){return $indexOf$1(aTypedArray$d(this),e,arguments.length>1?arguments[1]:void 0)}));var global$f=global$C,fails$o=fails$G,uncurryThis$j=functionUncurryThis,ArrayBufferViewCore$d=arrayBufferViewCore,ArrayIterators=es_array_iterator,wellKnownSymbol$6=wellKnownSymbol$m,ITERATOR$3=wellKnownSymbol$6("iterator"),Uint8Array$2=global$f.Uint8Array,arrayValues=uncurryThis$j(ArrayIterators.values),arrayKeys=uncurryThis$j(ArrayIterators.keys),arrayEntries=uncurryThis$j(ArrayIterators.entries),aTypedArray$c=ArrayBufferViewCore$d.aTypedArray,exportTypedArrayMethod$d=ArrayBufferViewCore$d.exportTypedArrayMethod,TypedArrayPrototype=Uint8Array$2&&Uint8Array$2.prototype,GENERIC=!fails$o((function(){TypedArrayPrototype[ITERATOR$3].call([1])})),ITERATOR_IS_VALUES=!!TypedArrayPrototype&&TypedArrayPrototype.values&&TypedArrayPrototype[ITERATOR$3]===TypedArrayPrototype.values&&"values"===TypedArrayPrototype.values.name,typedArrayValues=function(){return arrayValues(aTypedArray$c(this))};exportTypedArrayMethod$d("entries",(function(){return arrayEntries(aTypedArray$c(this))}),GENERIC),exportTypedArrayMethod$d("keys",(function(){return arrayKeys(aTypedArray$c(this))}),GENERIC),exportTypedArrayMethod$d("values",typedArrayValues,GENERIC||!ITERATOR_IS_VALUES,{name:"values"}),exportTypedArrayMethod$d(ITERATOR$3,typedArrayValues,GENERIC||!ITERATOR_IS_VALUES,{name:"values"});var ArrayBufferViewCore$c=arrayBufferViewCore,uncurryThis$i=functionUncurryThis,aTypedArray$b=ArrayBufferViewCore$c.aTypedArray,exportTypedArrayMethod$c=ArrayBufferViewCore$c.exportTypedArrayMethod,$join=uncurryThis$i([].join);exportTypedArrayMethod$c("join",(function(e){return $join(aTypedArray$b(this),e)}));var apply$4=functionApply,toIndexedObject$5=toIndexedObject$b,toIntegerOrInfinity$3=toIntegerOrInfinity$9,lengthOfArrayLike$4=lengthOfArrayLike$d,arrayMethodIsStrict$5=arrayMethodIsStrict$6,min$2=Math.min,$lastIndexOf$1=[].lastIndexOf,NEGATIVE_ZERO$1=!!$lastIndexOf$1&&1/[1].lastIndexOf(1,-0)<0,STRICT_METHOD$4=arrayMethodIsStrict$5("lastIndexOf"),FORCED$c=NEGATIVE_ZERO$1||!STRICT_METHOD$4,arrayLastIndexOf=FORCED$c?function(e){if(NEGATIVE_ZERO$1)return apply$4($lastIndexOf$1,this,arguments)||0;var t=toIndexedObject$5(this),r=lengthOfArrayLike$4(t),n=r-1;for(arguments.length>1&&(n=min$2(n,toIntegerOrInfinity$3(arguments[1]))),n<0&&(n=r+n);n>=0;n--)if(n in t&&t[n]===e)return n||0;return-1}:$lastIndexOf$1,ArrayBufferViewCore$b=arrayBufferViewCore,apply$3=functionApply,$lastIndexOf=arrayLastIndexOf,aTypedArray$a=ArrayBufferViewCore$b.aTypedArray,exportTypedArrayMethod$b=ArrayBufferViewCore$b.exportTypedArrayMethod;exportTypedArrayMethod$b("lastIndexOf",(function(e){var t=arguments.length;return apply$3($lastIndexOf,aTypedArray$a(this),t>1?[e,arguments[1]]:[e])}));var ArrayBufferViewCore$a=arrayBufferViewCore,$map$1=arrayIteration.map,typedArraySpeciesConstructor$2=typedArraySpeciesConstructor$4,aTypedArray$9=ArrayBufferViewCore$a.aTypedArray,exportTypedArrayMethod$a=ArrayBufferViewCore$a.exportTypedArrayMethod;exportTypedArrayMethod$a("map",(function(e){return $map$1(aTypedArray$9(this),e,arguments.length>1?arguments[1]:void 0,(function(e,t){return new(typedArraySpeciesConstructor$2(e))(t)}))}));var aCallable$2=aCallable$c,toObject$3=toObject$a,IndexedObject=indexedObject,lengthOfArrayLike$3=lengthOfArrayLike$d,$TypeError=TypeError,createMethod$2=function(e){return function(t,r,n,i){aCallable$2(r);var o=toObject$3(t),a=IndexedObject(o),s=lengthOfArrayLike$3(o),c=e?s-1:0,u=e?-1:1;if(n<2)for(;;){if(c in a){i=a[c],c+=u;break}if(c+=u,e?c<0:s<=c)throw $TypeError("Reduce of empty array with no initial value")}for(;e?c>=0:s>c;c+=u)c in a&&(i=r(i,a[c],c,o));return i}},arrayReduce={left:createMethod$2(!1),right:createMethod$2(!0)},ArrayBufferViewCore$9=arrayBufferViewCore,$reduce$1=arrayReduce.left,aTypedArray$8=ArrayBufferViewCore$9.aTypedArray,exportTypedArrayMethod$9=ArrayBufferViewCore$9.exportTypedArrayMethod;exportTypedArrayMethod$9("reduce",(function(e){var t=arguments.length;return $reduce$1(aTypedArray$8(this),e,t,t>1?arguments[1]:void 0)}));var ArrayBufferViewCore$8=arrayBufferViewCore,$reduceRight=arrayReduce.right,aTypedArray$7=ArrayBufferViewCore$8.aTypedArray,exportTypedArrayMethod$8=ArrayBufferViewCore$8.exportTypedArrayMethod;exportTypedArrayMethod$8("reduceRight",(function(e){var t=arguments.length;return $reduceRight(aTypedArray$7(this),e,t,t>1?arguments[1]:void 0)}));var ArrayBufferViewCore$7=arrayBufferViewCore,aTypedArray$6=ArrayBufferViewCore$7.aTypedArray,exportTypedArrayMethod$7=ArrayBufferViewCore$7.exportTypedArrayMethod,floor$3=Math.floor;exportTypedArrayMethod$7("reverse",(function(){for(var e,t=this,r=aTypedArray$6(t).length,n=floor$3(r/2),i=0;i<n;)e=t[i],t[i++]=t[--r],t[r]=e;return t}));var global$e=global$C,call$5=functionCall,ArrayBufferViewCore$6=arrayBufferViewCore,lengthOfArrayLike$2=lengthOfArrayLike$d,toOffset=toOffset$2,toIndexedObject$4=toObject$a,fails$n=fails$G,RangeError$1=global$e.RangeError,Int8Array$2=global$e.Int8Array,Int8ArrayPrototype=Int8Array$2&&Int8Array$2.prototype,$set=Int8ArrayPrototype&&Int8ArrayPrototype.set,aTypedArray$5=ArrayBufferViewCore$6.aTypedArray,exportTypedArrayMethod$6=ArrayBufferViewCore$6.exportTypedArrayMethod,WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS=!fails$n((function(){var e=new Uint8ClampedArray(2);return call$5($set,e,{length:1,0:3},1),3!==e[1]})),TO_OBJECT_BUG=WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS&&ArrayBufferViewCore$6.NATIVE_ARRAY_BUFFER_VIEWS&&fails$n((function(){var e=new Int8Array$2(2);return e.set(1),e.set("2",1),0!==e[0]||2!==e[1]}));exportTypedArrayMethod$6("set",(function(e){aTypedArray$5(this);var t=toOffset(arguments.length>1?arguments[1]:void 0,1),r=toIndexedObject$4(e);if(WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS)return call$5($set,this,r,t);var n=this.length,i=lengthOfArrayLike$2(r),o=0;if(i+t>n)throw RangeError$1("Wrong length");for(;o<i;)this[t+o]=r[o++]}),!WORKS_WITH_OBJECTS_AND_GENERIC_ON_TYPED_ARRAYS||TO_OBJECT_BUG);var ArrayBufferViewCore$5=arrayBufferViewCore,typedArraySpeciesConstructor$1=typedArraySpeciesConstructor$4,fails$m=fails$G,arraySlice$4=arraySlice$9,aTypedArray$4=ArrayBufferViewCore$5.aTypedArray,exportTypedArrayMethod$5=ArrayBufferViewCore$5.exportTypedArrayMethod,FORCED$b=fails$m((function(){new Int8Array(1).slice()}));exportTypedArrayMethod$5("slice",(function(e,t){for(var r=arraySlice$4(aTypedArray$4(this),e,t),n=typedArraySpeciesConstructor$1(this),i=0,o=r.length,a=new n(o);o>i;)a[i]=r[i++];return a}),FORCED$b);var ArrayBufferViewCore$4=arrayBufferViewCore,$some$1=arrayIteration.some,aTypedArray$3=ArrayBufferViewCore$4.aTypedArray,exportTypedArrayMethod$4=ArrayBufferViewCore$4.exportTypedArrayMethod;exportTypedArrayMethod$4("some",(function(e){return $some$1(aTypedArray$3(this),e,arguments.length>1?arguments[1]:void 0)}));var arraySlice$3=arraySliceSimple,floor$2=Math.floor,mergeSort=function(e,t){var r=e.length,n=floor$2(r/2);return r<8?insertionSort(e,t):merge2(e,mergeSort(arraySlice$3(e,0,n),t),mergeSort(arraySlice$3(e,n),t),t)},insertionSort=function(e,t){for(var r,n,i=e.length,o=1;o<i;){for(n=o,r=e[o];n&&t(e[n-1],r)>0;)e[n]=e[--n];n!==o++&&(e[n]=r)}return e},merge2=function(e,t,r,n){for(var i=t.length,o=r.length,a=0,s=0;a<i||s<o;)e[a+s]=a<i&&s<o?n(t[a],r[s])<=0?t[a++]:r[s++]:a<i?t[a++]:r[s++];return e},arraySort=mergeSort,userAgent$1=engineUserAgent,firefox=userAgent$1.match(/firefox\/(\d+)/i),engineFfVersion=!!firefox&&+firefox[1],UA=engineUserAgent,engineIsIeOrEdge=/MSIE|Trident/.test(UA),userAgent=engineUserAgent,webkit=userAgent.match(/AppleWebKit\/(\d+)\./),engineWebkitVersion=!!webkit&&+webkit[1],global$d=global$C,uncurryThis$h=functionUncurryThisClause,fails$l=fails$G,aCallable$1=aCallable$c,internalSort$1=arraySort,ArrayBufferViewCore$3=arrayBufferViewCore,FF$1=engineFfVersion,IE_OR_EDGE$1=engineIsIeOrEdge,V8$1=engineV8Version,WEBKIT$1=engineWebkitVersion,aTypedArray$2=ArrayBufferViewCore$3.aTypedArray,exportTypedArrayMethod$3=ArrayBufferViewCore$3.exportTypedArrayMethod,Uint16Array$1=global$d.Uint16Array,nativeSort$1=Uint16Array$1&&uncurryThis$h(Uint16Array$1.prototype.sort),ACCEPT_INCORRECT_ARGUMENTS=!(!nativeSort$1||fails$l((function(){nativeSort$1(new Uint16Array$1(2),null)}))&&fails$l((function(){nativeSort$1(new Uint16Array$1(2),{})}))),STABLE_SORT$1=!!nativeSort$1&&!fails$l((function(){if(V8$1)return V8$1<74;if(FF$1)return FF$1<67;if(IE_OR_EDGE$1)return!0;if(WEBKIT$1)return WEBKIT$1<602;var e,t,r=new Uint16Array$1(516),n=Array(516);for(e=0;e<516;e++)t=e%4,r[e]=515-e,n[e]=e-2*t+3;for(nativeSort$1(r,(function(e,t){return(e/4|0)-(t/4|0)})),e=0;e<516;e++)if(r[e]!==n[e])return!0})),getSortCompare$1=function(e){return function(t,r){return void 0!==e?+e(t,r)||0:r!=r?-1:t!=t?1:0===t&&0===r?1/t>0&&1/r<0?1:-1:t>r}};exportTypedArrayMethod$3("sort",(function(e){return void 0!==e&&aCallable$1(e),STABLE_SORT$1?nativeSort$1(this,e):internalSort$1(aTypedArray$2(this),getSortCompare$1(e))}),!STABLE_SORT$1||ACCEPT_INCORRECT_ARGUMENTS);var ArrayBufferViewCore$2=arrayBufferViewCore,toLength$4=toLength$a,toAbsoluteIndex$2=toAbsoluteIndex$8,typedArraySpeciesConstructor=typedArraySpeciesConstructor$4,aTypedArray$1=ArrayBufferViewCore$2.aTypedArray,exportTypedArrayMethod$2=ArrayBufferViewCore$2.exportTypedArrayMethod;exportTypedArrayMethod$2("subarray",(function(e,t){var r=aTypedArray$1(this),n=r.length,i=toAbsoluteIndex$2(e,n);return new(typedArraySpeciesConstructor(r))(r.buffer,r.byteOffset+i*r.BYTES_PER_ELEMENT,toLength$4((void 0===t?n:toAbsoluteIndex$2(t,n))-i))}));var global$c=global$C,apply$2=functionApply,ArrayBufferViewCore$1=arrayBufferViewCore,fails$k=fails$G,arraySlice$2=arraySlice$9,Int8Array$1=global$c.Int8Array,aTypedArray=ArrayBufferViewCore$1.aTypedArray,exportTypedArrayMethod$1=ArrayBufferViewCore$1.exportTypedArrayMethod,$toLocaleString=[].toLocaleString,TO_LOCALE_STRING_BUG=!!Int8Array$1&&fails$k((function(){$toLocaleString.call(new Int8Array$1(1))})),FORCED$a=fails$k((function(){return[1,2].toLocaleString()!=new Int8Array$1([1,2]).toLocaleString()}))||!fails$k((function(){Int8Array$1.prototype.toLocaleString.call([1,2])}));exportTypedArrayMethod$1("toLocaleString",(function(){return apply$2($toLocaleString,TO_LOCALE_STRING_BUG?arraySlice$2(aTypedArray(this)):aTypedArray(this),arraySlice$2(arguments))}),FORCED$a);var exportTypedArrayMethod=arrayBufferViewCore.exportTypedArrayMethod,fails$j=fails$G,global$b=global$C,uncurryThis$g=functionUncurryThis,Uint8Array$1=global$b.Uint8Array,Uint8ArrayPrototype=Uint8Array$1&&Uint8Array$1.prototype||{},arrayToString=[].toString,join4=uncurryThis$g([].join);fails$j((function(){arrayToString.call({})}))&&(arrayToString=function(){return join4(this)});var IS_NOT_ARRAY_METHOD=Uint8ArrayPrototype.toString!=arrayToString;exportTypedArrayMethod("toString",arrayToString,IS_NOT_ARRAY_METHOD);var uncurryThis$f=functionUncurryThis,toIntegerOrInfinity$2=toIntegerOrInfinity$9,toString$c=toString$d,requireObjectCoercible$5=requireObjectCoercible$8,charAt$2=uncurryThis$f("".charAt),charCodeAt$1=uncurryThis$f("".charCodeAt),stringSlice$5=uncurryThis$f("".slice),createMethod$1=function(e){return function(t,r){var n,i,o=toString$c(requireObjectCoercible$5(t)),a=toIntegerOrInfinity$2(r),s=o.length;return a<0||a>=s?e?"":void 0:(n=charCodeAt$1(o,a))<55296||n>56319||a+1===s||(i=charCodeAt$1(o,a+1))<56320||i>57343?e?charAt$2(o,a):n:e?stringSlice$5(o,a,a+2):i-56320+(n-55296<<10)+65536}},stringMultibyte={codeAt:createMethod$1(!1),charAt:createMethod$1(!0)},whitespaces$3="\t\n\v\f\r                 \u2028\u2029\ufeff",uncurryThis$e=functionUncurryThis,requireObjectCoercible$4=requireObjectCoercible$8,toString$b=toString$d,whitespaces$2=whitespaces$3,replace$1=uncurryThis$e("".replace),ltrim=RegExp("^["+whitespaces$2+"]+"),rtrim=RegExp("(^|[^"+whitespaces$2+"])["+whitespaces$2+"]+$"),createMethod=function(e){return function(t){var r=toString$b(requireObjectCoercible$4(t));return 1&e&&(r=replace$1(r,ltrim,"")),2&e&&(r=replace$1(r,rtrim,"$1")),r}},stringTrim={start:createMethod(1),end:createMethod(2),trim:createMethod(3)},$forEach$1=arrayIteration.forEach,arrayMethodIsStrict$4=arrayMethodIsStrict$6,STRICT_METHOD$3=arrayMethodIsStrict$4("forEach"),arrayForEach=STRICT_METHOD$3?[].forEach:function(e){return $forEach$1(this,e,arguments.length>1?arguments[1]:void 0)},$$v=_export,forEach$2=arrayForEach;$$v({target:"Array",proto:!0,forced:[].forEach!=arrayForEach},{forEach:arrayForEach});var domIterables={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},documentCreateElement=documentCreateElement$2,classList=documentCreateElement("span").classList,DOMTokenListPrototype$2=classList&&classList.constructor&&classList.constructor.prototype,domTokenListPrototype=DOMTokenListPrototype$2===Object.prototype?void 0:DOMTokenListPrototype$2,global$a=global$C,DOMIterables$1=domIterables,DOMTokenListPrototype$1=domTokenListPrototype,forEach$1=arrayForEach,createNonEnumerableProperty$1=createNonEnumerableProperty$8,handlePrototype$1=function(e){if(e&&e.forEach!==forEach$1)try{createNonEnumerableProperty$1(e,"forEach",forEach$1)}catch(t){e.forEach=forEach$1}};for(var COLLECTION_NAME$1 in DOMIterables$1)DOMIterables$1[COLLECTION_NAME$1]&&handlePrototype$1(global$a[COLLECTION_NAME$1]&&global$a[COLLECTION_NAME$1].prototype);handlePrototype$1(DOMTokenListPrototype$1);var IntervalTimer=function(){function e(){_classCallCheck$4(this,e),this.timeID=null,this.func=null}return _createClass$4(e,[{key:"repeat",value:function(e,t){this.timeID=1,this.repeatInterval(e,t)}},{key:"repeatInterval",value:function(e,t){var r=this;this.timeID&&(null===this.func&&(this.func=e),this.func===e&&(this.timeID&&clearTimeout(this.timeID),this.timeID=null,this.timeID=setTimeout((function(){e(),r.repeatInterval(e,t)}),t)))}},{key:"clear",value:function(){clearTimeout(this.timeID),this.timeID=null}}]),e}(),IntervalTimer$1=IntervalTimer,$$u=_export,uncurryThis$d=functionUncurryThisClause,$indexOf=arrayIncludes.indexOf,arrayMethodIsStrict$3=arrayMethodIsStrict$6,nativeIndexOf=uncurryThis$d([].indexOf),NEGATIVE_ZERO=!!nativeIndexOf&&1/nativeIndexOf([1],1,-0)<0,FORCED$9=NEGATIVE_ZERO||!arrayMethodIsStrict$3("indexOf");$$u({target:"Array",proto:!0,forced:FORCED$9},{indexOf:function(e){var t=arguments.length>1?arguments[1]:void 0;return NEGATIVE_ZERO?nativeIndexOf(this,e,t)||0:$indexOf(this,e,t)}});var isSupport$1=_isLocalStorageUsable$1();function probeSupport$1(){try{return"undefined"!=typeof localStorage&&"setItem"in localStorage&&!!localStorage.setItem}catch(e){return!1}}function checkIfLocalStorageThrows$1(){var e="_localstorage_support_test";try{return localStorage.setItem(e,!0),localStorage.removeItem(e),!1}catch(e){return!0}}function _isLocalStorageUsable$1(){return probeSupport$1&&!checkIfLocalStorageThrows$1()}var proxyLocalStorage={length:isSupport$1?localStorage.length:0,clear:function(e){try{for(var t=localStorage.length-1;t>=0;t--){var r=localStorage.key(t);0===r.indexOf(e)&&localStorage.removeItem(r)}}catch(e){}},getItem:function(e){try{return localStorage.getItem(e)}catch(e){return null}},key:function(e){try{return localStorage.key(e)}catch(e){return null}},setItem:function(e,t){try{localStorage.setItem(e,t)}catch(e){}},removeItem:function(e){try{localStorage.removeItem(e)}catch(e){}},isSupport:isSupport$1},proxyLocalStorage$1=proxyLocalStorage,CONTENT_TYPES={VIDEO:"video",AUDIO:"audio"},OP_NAME={APPEND:"appendBuffer",REMOVE:"removeBuffer"},MSE_EVENTS={MSE_ERROR:"mse_error",UPDATE_END:"updateend",MSE_OPEN:"mse_open",MSE_OPEN_DONE:"mse_open_done"},MSE=function(e){_inherits$3(r,EventEmitter$1);var t=_createSuper$3(r);function r(e,n){var i;return _classCallCheck$5(this,r),(i=t.call(this)).mediaSource=new window.MediaSource(e),i.url=window.URL.createObjectURL(i.mediaSource),i.queue=[],i._hasDestroyed=!1,i._onSourceOpen=i._onSourceOpen.bind(_assertThisInitialized$3(i)),i._onSourceBufferError=i._onSourceBufferError.bind(_assertThisInitialized$3(i)),i._onSourceBufferUpdateEnd=i._onSourceBufferUpdateEnd.bind(_assertThisInitialized$3(i)),i._mseStart=nowTime$1(),i._appendStart=-1,i.mediaSource.addEventListener("sourceopen",i._onSourceOpen),i.opQueues={},i.sourceBuffers={},i.updateHanders={},i.errorHandlers={},i.logger=n||function(){},i._sourceOpenDonePromise=new ProxyPromise$1,i._mseAppendFlag=!1,i._mseOpenTime=-1,i.mseFullFlag={},i}return _createClass$5(r,[{key:"init",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:_defineProperty$3({},CONTENT_TYPES.VIDEO,{mimeType:"video/mp4",codec:'video/mp4; codecs="avc1.64001E, mp4a.40.5"'});return this.contentTypes=e,this._sourceOpenDonePromise}},{key:"_onSourceOpen",value:function(){var e=this;this._mseOpenTime=nowTime$1()-this._mseStart,console.log("[mseOpen]==> costtime",this._mseOpenTime),this.mediaSource.removeEventListener("sourceopen",this._onSourceOpen),this.emit(MSE_EVENTS.MSE_OPEN,{costtime:this._mseOpenTime});for(var t=Object.keys(this.contentTypes),r=0;r<t.length;r++)try{!function(){var n=t[r],i=e.contentTypes[n].codec,o=e.mediaSource.addSourceBuffer(i),a=function(){return e._onSourceBufferError(n)};o.addEventListener("error",a);var s=function(){return e._onSourceBufferUpdateEnd(n)};o.addEventListener("updateend",s),e.updateHanders={},e.sourceBuffers[n]=o,e.opQueues[n]=[],e.updateHanders[n]=s,e.errorHandlers[n]=a}()}catch(e){e.errtype="open_error",this.emit(MSE_EVENTS.MSE_ERROR,e)}this.logger("[debug mse] mse init ready, readyState",this.mediaSource.readyState),this._mseAppendFlag=!0,this.emit(MSE_EVENTS.MSE_OPEN_DONE,{costtime:nowTime$1()-this._mseStart}),this._sourceOpenDonePromise.resolve()}},{key:"ready",get:function(){return this._mseAppendFlag}},{key:"_onSourceBufferError",value:function(e){if(!this._hasDestroyed){this.logger("[debug mse] sourceBuffer error, contentType",e,"readyState",this.mediaSource.readyState);var t=this.opQueues[e][0];this.emit(MSE_EVENTS.MSE_ERROR,{errtype:"append_error",name:t.name,context:t.context})}}},{key:"_onSourceBufferUpdateEnd",value:function(e){if(!this._hasDestroyed){var t=this.opQueues[e][0];t&&(this.emit(MSE_EVENTS.UPDATE_END,{name:t.name,context:t.context,costtime:nowTime$1()-this._appendStart}),this.pop(e))}}},{key:"state",get:function(){return this.mediaSource.readyState}},{key:"duration",get:function(){return this.mediaSource.duration}},{key:"setDuration",value:function(e){var t=this;this.mediaSource.duration>e||this.enqueueBlockOp((function(){t.ended()?t.logger("[debug mse] setDuration ended"):(t.logger("[debug mse] setDuration"),t.mediaSource.duration=e)}),"setDuration")}},{key:"appendBuffer",value:function(e,t,r){var n=this;return this.enqueueOp(e,(function(){return n._append(e,t,r)}),OP_NAME.APPEND,r)}},{key:"_append",value:function(e,t,r){this._appendStart=nowTime$1(),this.logger("[real appendBuffer], context,",r),this.sourceBuffers[e].appendBuffer(t)}},{key:"enqueueOp",value:function(e,t,r,n){var i=this;if(!this._hasDestroyed){var o={handler:t,context:n,name:r};return this._mseAppendFlag?this._enQueue(e,o):this._sourceOpenDonePromise.then((function(){i._hasDestroyed||i._enQueue(e,o)})),o.p}}},{key:"_enQueue",value:function(e,t){this.opQueues[e]||(this.opQueues[e]=[]),this.mseFullFlag[e]&&t.name===OP_NAME.REMOVE?(this.opQueues[e].splice(0,0,t),this.mseFullFlag[e]=!1,this.handleOp(e)):(this.opQueues[e].push(t),1===this.opQueues[e].length&&this.handleOp(e))}},{key:"enqueueBlockOp",value:function(e,t){var r=this;this._hasDestroyed||this._sourceOpenDonePromise.then((function(){if(!r._hasDestroyed){for(var n=[],i=Object.keys(r.contentTypes),o=function(e){var o=i[e],a=new ProxyPromise$1,s={handler:function(){return a.resolve()},p:a,name:t};r.opQueues[o]||(r.opQueues[o]=[]),r.opQueues[o].push(s),n.push(a),1===r.opQueues[o].length&&s.handler()},a=0;a<i.length;a++)o(a);Promise.all(n).then((function(){try{e()}catch(e){console.log(e)}finally{for(var t=0;t<i.length;t++){var n=i[t];r.pop(n)}}})).catch((function(e){console.log("waiting cath",e)}))}}))}},{key:"isFull",value:function(e){return e?this.mseFullFlag[e]:this.mseFullFlag[CONTENT_TYPES.VIDEO]}},{key:"handleOp",value:function(e){if(!this._hasDestroyed){var t=this.opQueues[e][0];if(t&&!this.mseFullFlag[e])try{t.handler()}catch(r){r&&r.message.indexOf("SourceBuffer is full")>=0?(this.mseFullFlag[e]=!0,this.logger("[MSE error], context,",t.context,",name,",t.name,",err,SourceBuffer is full")):this.pop(e),this.emit(MSE_EVENTS.MSE_ERROR,{errtype:"append_error",context:t.context,errMsg:r?r.message:null})}}}},{key:"pop",value:function(e){this._hasDestroyed||(this.opQueues[e].shift(),this.handleOp(e))}},{key:"clearOpqueues",value:function(e){var t,r=[];if(this.opQueues[e].map((function(e){e.context.isinit&&r.push(e)})),this.opQueues&&this.opQueues[e]&&this.opQueues[e].length>1)if(this.opQueues[e][0].name===OP_NAME.APPEND||this.opQueues[e][0].name===OP_NAME.REMOVE)this.logger("[debug mse] clearOpqueues, left:",1,", len,",this.opQueues[e].length),this.opQueues[e]=this.opQueues[e].slice(0,1);else{var n=Math.min(this.opQueues[e].length,Object.keys(this.contentTypes).length);this.logger("[debug mse] clearOpqueues, left:",n,", len,",this.opQueues[e].length),this.opQueues[e]=this.opQueues[e].slice(0,n)}r.length>0&&(t=this.opQueues[e]).push.apply(t,r)}},{key:"removeBuffer",value:function(e,t,r,n){var i=this;return this.enqueueOp(e,(function(){return i._remove(e,t,r,n)}),OP_NAME.REMOVE,n)}},{key:"_remove",value:function(e,t,r,n){r<=t?this._onSourceBufferUpdateEnd(e):(this.logger("[debug mse],real removeBuffer, context,",n),this._appendStart=nowTime$1(),this.sourceBuffers[e].remove(t,r))}},{key:"endOfStream",value:function(){var e=this;this._hasDestroyed||this.ended()||this.enqueueBlockOp((function(){e._hasDestroyed||e.ended()||(e.logger("[debug mse] endOfStream"),e.mediaSource.endOfStream())}),"endOfStream")}},{key:"ended",value:function(){return!!this.mediaSource&&"ended"===this.mediaSource.readyState}},{key:"isMediaSourceOpen",value:function(){return!!this.mediaSource&&"open"===this.mediaSource.readyState}},{key:"abort",value:function(e){var t=this;return this.isMediaSourceOpen()?this.enqueueOp(e,(function(){t.sourceBuffers[e].abort(),t._onSourceBufferUpdateEnd(e)}),"abort"):Promise.resolve()}},{key:"reuse",value:function(e,t){for(var r=Object.keys(this.contentTypes),n=0;n<r.length;n++){var i=r[n];this.removeBuffer(i,e,t,{start:e,end:t})}}},{key:"_forceAbort",value:function(){try{for(var e=Object.keys(this.contentTypes),t=0;t<e.length;t++){var r=e[t];this.sourceBuffers[r].abort()}}catch(e){console.log("forceAbort error")}}},{key:"destroy",value:function(){if(this.logger("[debug mse] destroy execute"),!this._hasDestroyed){this._forceAbort(),this._hasDestroyed=!0,window.URL.revokeObjectURL(this.url),this.mediaSource&&(this.mediaSource.removeEventListener("sourceclose",this._onMediaSourceClose),this.mediaSource.removeEventListener("sourceopen",this._onSourceOpen));for(var e=Object.keys(this.contentTypes),t=0;t<e.length;t++){var r=e[t],n=this.sourceBuffers[r];if(n){var i=this.errorHandlers[r];n.removeEventListener("error",i);var o=this.updateHanders[r];n.removeEventListener("updateend",o)}}this.opQueues={},this.sourceBuffers={}}}},{key:"buffered",value:function(e){return this.sourceBuffers[e]&&this.sourceBuffers[e].buffered}},{key:"sourceBuffer",value:function(e){return this.sourceBuffers[e]}},{key:"removeSourceBuffer",value:function(e){var t=this.sourceBuffer(e);if(t){this.mediaSource.removeSourceBuffer(t);var r=this.errorHandlers[e];t.removeEventListener("error",r);var n=this.updateHanders[e];t.removeEventListener("updateend",n),delete this.errorHandlers[e],delete this.sourceBuffers[e],delete this.updateHanders[e]}}},{key:"setTimeoffset",value:function(e,t){var r=this;return this.enqueueOp(e,(function(){t<0&&(t+=.001),r.sourceBuffers[e].timestampOffset=t,r._onSourceBufferUpdateEnd(e)}),"setTimeoffset")}}],[{key:"isSupported",value:function(e){return window.MediaSource&&window.MediaSource.isTypeSupported(e)}}]),r}(),nowTime$1=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},$$t=_export$2,uncurryThis$c=functionUncurryThisClause$2,fails$i=fails$1T,ArrayBufferModule=arrayBuffer$1,anObject$5=anObject$N,toAbsoluteIndex$1=toAbsoluteIndex$k,toLength$3=toLength$k,speciesConstructor$1=speciesConstructor$9,ArrayBuffer$1=ArrayBufferModule.ArrayBuffer,DataView$1=ArrayBufferModule.DataView,DataViewPrototype=DataView$1.prototype,nativeArrayBufferSlice=uncurryThis$c(ArrayBuffer$1.prototype.slice),getUint8=uncurryThis$c(DataViewPrototype.getUint8),setUint8=uncurryThis$c(DataViewPrototype.setUint8),INCORRECT_SLICE=fails$i((function(){return!new ArrayBuffer$1(2).slice(1,void 0).byteLength}));$$t({target:"ArrayBuffer",proto:!0,unsafe:!0,forced:INCORRECT_SLICE},{slice:function(e,t){if(nativeArrayBufferSlice&&void 0===t)return nativeArrayBufferSlice(anObject$5(this),e);for(var r=anObject$5(this).byteLength,n=toAbsoluteIndex$1(e,r),i=toAbsoluteIndex$1(void 0===t?r:t,r),o=new(speciesConstructor$1(this,ArrayBuffer$1))(toLength$3(i-n)),a=new DataView$1(this),s=new DataView$1(o),c=0;n<i;)setUint8(s,c++,getUint8(a,n++));return o}});var collection$2=collection$5,collectionStrong$2=collectionStrong$5;collection$2("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),collectionStrong$2);var concat3={};Object.defineProperty(concat3,"__esModule",{value:!0}),concat3.default=function(e){for(var t=0,r=arguments.length,n=Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];var o=!0,a=!1,s=void 0;try{for(var c,u=n[Symbol.iterator]();!(o=(c=u.next()).done);o=!0){t+=c.value.length}}catch(e){a=!0,s=e}finally{try{!o&&u.return&&u.return()}finally{if(a)throw s}}var l=new e(t),d=0,h=!0,f=!1,p=void 0;try{for(var y,m=n[Symbol.iterator]();!(h=(y=m.next()).done);h=!0){var g=y.value;l.set(g,d),d+=g.length}}catch(e){f=!0,p=e}finally{try{!h&&m.return&&m.return()}finally{if(f)throw p}}return l};var _concat=concat3,_concat2=_interopRequireDefault(_concat);function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var lib=_concat2.default,Concat=getDefaultExportFromCjs(lib);function _classCallCheck$3(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$3(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$3(e,t,r){return t&&_defineProperties$3(e.prototype,t),r&&_defineProperties$3(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$2(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _slicedToArray$1(e,t){return _arrayWithHoles$1(e)||_iterableToArrayLimit$1(e,t)||_unsupportedIterableToArray$3(e,t)||_nonIterableRest$1()}function _toConsumableArray$2(e){return _arrayWithoutHoles$2(e)||_iterableToArray$2(e)||_unsupportedIterableToArray$3(e)||_nonIterableSpread$2()}function _arrayWithoutHoles$2(e){if(Array.isArray(e))return _arrayLikeToArray$3(e)}function _arrayWithHoles$1(e){if(Array.isArray(e))return e}function _iterableToArray$2(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterableToArrayLimit$1(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw i}}return o}}function _unsupportedIterableToArray$3(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$3(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$3(e,t):void 0}}function _arrayLikeToArray$3(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$2(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableRest$1(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var TrackType={VIDEO:"video",AUDIO:"audio",METADATA:"metadata"},VideoCodecType={AVC:"avc",HEVC:"hevc"},AudioCodecType={AAC:"aac",G711PCMA:"g7110a",G711PCMU:"g7110m"},VideoTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",1),_defineProperty$2(this,"type",TrackType.VIDEO),_defineProperty$2(this,"codecType",VideoCodecType.AVC),_defineProperty$2(this,"pid",-1),_defineProperty$2(this,"hvcC",void 0),_defineProperty$2(this,"codec",""),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"formatTimescale",0),_defineProperty$2(this,"sequenceNumber",0),_defineProperty$2(this,"baseMediaDecodeTime",0),_defineProperty$2(this,"baseDts",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"warnings",[]),_defineProperty$2(this,"samples",[]),_defineProperty$2(this,"pps",[]),_defineProperty$2(this,"sps",[]),_defineProperty$2(this,"vps",[]),_defineProperty$2(this,"fpsNum",0),_defineProperty$2(this,"fpsDen",0),_defineProperty$2(this,"sarRatio",[]),_defineProperty$2(this,"width",0),_defineProperty$2(this,"height",0),_defineProperty$2(this,"nalUnitSize",4),_defineProperty$2(this,"present",!1),_defineProperty$2(this,"isVideoEncryption",!1),_defineProperty$2(this,"isAudioEncryption",!1),_defineProperty$2(this,"kid",null),_defineProperty$2(this,"pssh",null),_defineProperty$2(this,"ext",void 0)}return _createClass$3(e,[{key:"reset",value:function(){this.sequenceNumber=this.width=this.height=this.fpsDen=this.fpsNum=this.duration=this.baseMediaDecodeTime=this.timescale=0,this.codec="",this.present=!1,this.pid=-1,this.pps=[],this.sps=[],this.vps=[],this.sarRatio=[],this.samples=[],this.warnings=[],this.hvcC=null}},{key:"exist",value:function(){return!!(this.pps.length&&this.sps.length&&this.codec)}},{key:"hasSample",value:function(){return!!this.samples.length}}]),e}(),AudioTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",2),_defineProperty$2(this,"type",TrackType.AUDIO),_defineProperty$2(this,"codecType",AudioCodecType.AAC),_defineProperty$2(this,"pid",-1),_defineProperty$2(this,"codec",""),_defineProperty$2(this,"sequenceNumber",0),_defineProperty$2(this,"sampleDuration",0),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"formatTimescale",0),_defineProperty$2(this,"baseMediaDecodeTime",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"warnings",[]),_defineProperty$2(this,"samples",[]),_defineProperty$2(this,"baseDts",0),_defineProperty$2(this,"sampleSize",16),_defineProperty$2(this,"sampleRate",0),_defineProperty$2(this,"channelCount",0),_defineProperty$2(this,"objectType",0),_defineProperty$2(this,"sampleRateIndex",0),_defineProperty$2(this,"config",[]),_defineProperty$2(this,"present",!1),_defineProperty$2(this,"isVideoEncryption",!1),_defineProperty$2(this,"isAudioEncryption",!1),_defineProperty$2(this,"kid",null),_defineProperty$2(this,"ext",void 0)}return _createClass$3(e,[{key:"reset",value:function(){this.sequenceNumber=0,this.timescale=0,this.sampleDuration=0,this.sampleRate=0,this.channelCount=0,this.baseMediaDecodeTime=0,this.present=!1,this.pid=-1,this.codec="",this.samples=[],this.config=[],this.warnings=[]}},{key:"exist",value:function(){return!!(this.sampleRate&&this.channelCount&&this.codec&&this.codecType===AudioCodecType.AAC)}},{key:"hasSample",value:function(){return!!this.samples.length}}]),e}(),VideoSample=function(){function e(t,r,n){_classCallCheck$3(this,e),_defineProperty$2(this,"flag",{}),_defineProperty$2(this,"keyframe",!1),_defineProperty$2(this,"gopId",0),_defineProperty$2(this,"duration",0),_defineProperty$2(this,"size",0),_defineProperty$2(this,"units",[]),_defineProperty$2(this,"chromaFormat",420),this.originPts=this.pts=t,this.originDts=this.dts=r,n&&(this.units=n)}return _createClass$3(e,[{key:"cts",get:function(){return this.pts-this.dts}},{key:"setToKeyframe",value:function(){this.keyframe=!0,this.flag.dependsOn=2,this.flag.isNonSyncSample=0}}]),e}(),AudioSample=_createClass$3((function e(t,r,n,i){_classCallCheck$3(this,e),_defineProperty$2(this,"duration",1024),_defineProperty$2(this,"flag",{dependsOn:2,isNonSyncSample:0}),_defineProperty$2(this,"keyframe",!0),this.originPts=this.pts=this.dts=t,this.data=r,this.size=r.byteLength,this.sampleOffset=i,n&&(this.duration=n)})),MetadataTrack=function(){function e(){_classCallCheck$3(this,e),_defineProperty$2(this,"id",3),_defineProperty$2(this,"type",TrackType.METADATA),_defineProperty$2(this,"timescale",0),_defineProperty$2(this,"flvScriptSamples",[]),_defineProperty$2(this,"seiSamples",[])}return _createClass$3(e,[{key:"exist",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length||!this.timescale)}},{key:"reset",value:function(){this.timescale=0,this.flvScriptSamples=[],this.seiSamples=[]}},{key:"hasSample",value:function(){return!(!this.flvScriptSamples.length&&!this.seiSamples.length)}}]),e}(),isBrowser="undefined"!=typeof window,ua=isBrowser&&navigator.userAgent.toLocaleLowerCase(),isFirefox=isBrowser&&ua.includes("firefox"),isAndroid=isBrowser&&ua.includes("android"),AAC=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"getRateIndexByRate",value:function(t){return e.FREQ.indexOf(t)}},{key:"parseADTS",value:function(t,r){for(var n=t.length,i=0;i+2<n&&(255!==t[i]||240!=(246&t[i+1]));)i++;if(!(i>=n)){var o=i,a=[],s=(60&t[i+2])>>>2,c=e.FREQ[s];if(!c)throw new Error("Invalid sampling index: ".concat(s));for(var u,l,d=1+((192&t[i+2])>>>6),h=(1&t[i+2])<<2|(192&t[i+3])>>>6,f=e._getConfig(s,h,d),p=f.config,y=f.codec,m=0,g=e.getFrameDuration(c);i+7<n;)if(255===t[i]&&240==(246&t[i+1])){if(n-i<(l=(3&t[i+3])<<11|t[i+4]<<3|(224&t[i+5])>>5))break;u=2*(1&~t[i+1]),a.push({pts:r+m*g,data:t.subarray(i+7+u,i+l)}),m++,i+=l}else i++;return{skip:o,remaining:i>=n?void 0:t.subarray(i),frames:a,samplingFrequencyIndex:s,sampleRate:c,objectType:d,channelCount:h,codec:y,config:p,originCodec:"mp4a.40.".concat(d)}}}},{key:"parseAudioSpecificConfig",value:function(t){if(t.length){var r=t[0]>>>3,n=(7&t[0])<<1|t[1]>>>7,i=(120&t[1])>>>3,o=e.FREQ[n];if(!o)throw new Error("Invalid sampling index: ".concat(n));var a=e._getConfig(n,i,r);return{samplingFrequencyIndex:n,sampleRate:o,objectType:r,channelCount:i,config:a.config,codec:a.codec,originCodec:"mp4a.40.".concat(r)}}}},{key:"getFrameDuration",value:function(e){return 1024*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4)/e}},{key:"_getConfig",value:function(e,t,r){var n,i,o=[];return isFirefox?e>=6?(n=5,i=e-3):(n=2,i=e):isAndroid?(n=2,i=e):(n=2===r||5===r?r:5,i=e,e>=6?i=e-3:1===t&&(n=2,i=e)),o[0]=n<<3,o[0]|=(14&e)>>1,o[1]=(1&e)<<7,o[1]|=t<<3,5===n&&(o[1]|=(14&i)>>1,o[2]=(1&i)<<7,o[2]|=8,o[3]=0),{config:o,codec:"mp4a.40.".concat(n)}}},{key:"getSilentFrame",value:function(e,t){if("mp4a.40.2"===e){if(1===t)return new Uint8Array([0,200,0,128,35,128]);if(2===t)return new Uint8Array([33,0,73,144,2,25,0,35,128]);if(3===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,142]);if(4===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,128,44,128,8,2,56]);if(5===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,56]);if(6===t)return new Uint8Array([0,200,0,128,32,132,1,38,64,8,100,0,130,48,4,153,0,33,144,2,0,178,0,32,8,224])}else{if(1===t)return new Uint8Array([1,64,34,128,163,78,230,128,186,8,0,0,0,28,6,241,193,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(2===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94]);if(3===t)return new Uint8Array([1,64,34,128,163,94,230,128,186,8,0,0,0,0,149,0,6,241,161,10,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,90,94])}}}]),e}();function concatUint8Array$1(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];t=t.filter(Boolean);var n=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){n.set(e,i),i+=e.byteLength})),n}_defineProperty$2(AAC,"FREQ",[96e3,88200,64e3,48e3,44100,32e3,24e3,22050,16e3,12e3,11025,8e3,7350]);var MAX_SIZE=Math.pow(2,32);function readBig16(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<8)+(e[t+1]||0)}function readBig24(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<16)+(e[t+1]<<8)+(e[t+2]||0)}function readBig32(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return(e[t]<<24>>>0)+(e[t+1]<<16)+(e[t+2]<<8)+(e[t+3]||0)}function readBig64(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return readBig32(e,t)*MAX_SIZE+readBig32(e,t+4)}function getAvcCodec(e){for(var t,r="avc1.",n=0;n<3;n++)(t=e[n].toString(16)).length<2&&(t="0".concat(t)),r+=t;return r}function formatIV(e){var t="";if(e.forEach((function(e){t+=bufferToString(e)})),t.length<=32)for(var r=32-t.length,n=0;n<r;n++)t+="0";return t}function parse3(e){if(!Array.isArray(e)){for(var t=[],r="",n=0;n<e.length;n++)n%2&&(r=e[n-1]+e[n],t.push(parseInt(r,16)),r="");return t}return e.map((function(e){return parseInt(e,16)}))}function bufferToString(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()}var MP4Parser=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"findBox",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=[];if(!t)return i;for(var o=0,a="",s=0;t.length>7;){if(o=readBig32(t),a=String.fromCharCode.apply(null,t.subarray(4,8)),s=8,1===o?(o=readBig64(t,8),s+=8):o||(o=t.length),!r[0]||a===r[0]){var c=t.subarray(0,o);if(!(r.length<2))return e.findBox(c.subarray(s),r.slice(1),n+s);i.push({start:n,size:o,headerSize:s,type:a,data:c})}n+=o,t=t.subarray(o)}return i}},{key:"tfhd",value:function(e){return parseBox(e,!0,(function(e,t){e.trackId=readBig32(t);var r=4,n=1&e.flags,i=2&e.flags,o=8&e.flags,a=16&e.flags,s=32&e.flags;n&&(r+=4,e.baseDataOffset=readBig32(t,r),r+=4),i&&(e.sampleDescriptionIndex=readBig32(t,r),r+=4),o&&(e.defaultSampleDuration=readBig32(t,r),r+=4),a&&(e.defaultSampleSize=readBig32(t,r),r+=4),s&&(e.defaultSampleFlags=readBig32(t,r))}))}},{key:"sidx",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;e.reference_ID=readBig32(t,r),r+=4,e.timescale=readBig32(t,r),r+=4,0===e.version?(e.earliest_presentation_time=readBig32(t,r),r+=4,e.first_offset=readBig32(t,r),r+=4):(e.earliest_presentation_time=readBig64(t,r),r+=8,e.first_offset=readBig64(t,r),r+=8),r+=2,e.references=[];var n=readBig16(t,r);r+=2;for(var i=0;i<n;i++){var o={};e.references.push(o);var a=readBig32(t,r);r+=4,o.reference_type=a>>31&1,o.referenced_size=2147483647&a,o.subsegment_duration=readBig32(t,r),a=readBig32(t,r+=4),r+=4,o.starts_with_SAP=a>>31&1,o.SAP_type=a>>28&7,o.SAP_delta_time=268435455&a}}))}},{key:"moov",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mvhd=e.mvhd(e.findBox(r,["mvhd"],n)[0]),t.trak=e.findBox(r,["trak"],n).map((function(t){return e.trak(t)})),t.pssh=e.pssh(e.findBox(r,["pssh"],n)[0])}))}},{key:"mvhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.timescale=readBig32(t,16),e.duration=readBig64(t,20),r+=28):(e.timescale=readBig32(t,8),e.duration=readBig32(t,12),r+=16),e.nextTrackId=readBig32(t,r+76)}))}},{key:"trak",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tkhd=e.tkhd(e.findBox(r,["tkhd"],n)[0]),t.mdia=e.mdia(e.findBox(r,["mdia"],n)[0])}))}},{key:"tkhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.trackId=readBig32(t,16),e.duration=readBig64(t,24),r+=32):(e.trackId=readBig32(t,8),e.duration=readBig32(t,16),r+=20),e.width=readBig32(t,r+52),e.height=readBig32(t,r+56)}))}},{key:"mdia",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mdhd=e.mdhd(e.findBox(r,["mdhd"],n)[0]),t.hdlr=e.hdlr(e.findBox(r,["hdlr"],n)[0]),t.minf=e.minf(e.findBox(r,["minf"],n)[0])}))}},{key:"mdhd",value:function(e){return parseBox(e,!0,(function(e,t){var r=0;1===e.version?(e.timescale=readBig32(t,16),e.duration=readBig64(t,20),r+=28):(e.timescale=readBig32(t,8),e.duration=readBig32(t,12),r+=16);var n=readBig16(t,r);e.language=String.fromCharCode(96+(n>>10&31),96+(n>>5&31),96+(31&n))}))}},{key:"hdlr",value:function(e){return parseBox(e,!0,(function(e,t){0===e.version&&(e.handlerType=String.fromCharCode.apply(null,t.subarray(4,8)))}))}},{key:"minf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.vmhd=e.vmhd(e.findBox(r,["vmhd"],n)[0]),t.smhd=e.smhd(e.findBox(r,["smhd"],n)[0]),t.stbl=e.stbl(e.findBox(r,["stbl"],n)[0])}))}},{key:"vmhd",value:function(e){return parseBox(e,!0,(function(e,t){e.graphicsmode=readBig16(t),e.opcolor=[readBig16(t,2),readBig16(t,4),readBig16(t,6)]}))}},{key:"smhd",value:function(e){return parseBox(e,!0,(function(e,t){e.balance=readBig16(t)}))}},{key:"stbl",value:function(t){return parseBox(t,!1,(function(t,r,n){t.stsd=e.stsd(e.findBox(r,["stsd"],n)[0]),t.stts=e.stts(e.findBox(r,["stts"],n)[0]),t.ctts=e.ctts(e.findBox(r,["ctts"],n)[0]),t.stsc=e.stsc(e.findBox(r,["stsc"],n)[0]),t.stsz=e.stsz(e.findBox(r,["stsz"],n)[0]),t.stco=e.stco(e.findBox(r,["stco"],n)[0]),t.stco||(t.co64=e.co64(e.findBox(r,["co64"],n)[0]),t.stco=t.co64),t.stss=e.stss(e.findBox(r,["stss"],n)[0]),t.senc=e.senc(e.findBox(r,["senc"],n)[0])}))}},{key:"senc",value:function(e){return parseBox(e,!0,(function(e,t){var r=0,n=readBig32(t,r);r+=4,e.samples=[];for(var i=0;i<n;i++){var o={};if(o.InitializationVector=[t[r],t[r+1],t[r+2],t[r+3],t[r+4],t[r+5],t[r+6],t[r+7]],r+=8,2&e.flags){o.subsamples=[];var a=readBig16(t,r);r+=2;for(var s=0;s<a;s++){var c={};c.BytesOfClearData=readBig16(t,r),r+=2,c.BytesOfProtectedData=readBig32(t,r),r+=4,o.subsamples.push(c)}}e.samples.push(o)}}))}},{key:"pssh",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=[],n=[],i=0,o=0;o<16;o++)n.push(toHex(t[i+o]));if(i+=16,e.version>0){var a=readBig32(t,i);i+=4;for(var s=0;s<(""+a).length;s++)for(var c=0;c<16;c++){var u=t[i];i+=1,r.push(toHex(u))}}var l=readBig32(t,i);e.data_size=l,i+=4,e.kid=r,e.system_id=n,e.buffer=t}))}},{key:"stsd",value:function(t){return parseBox(t,!0,(function(t,r,n){t.entryCount=readBig32(r),t.entries=e.findBox(r.subarray(4),[],n+4).map((function(t){switch(t.type){case"avc1":case"avc2":case"avc3":case"avc4":return e.avc1(t);case"hvc1":case"hev1":return e.hvc1(t);case"mp4a":return e.mp4a(t);case"alaw":case"ulaw":return e.alaw(t);case"enca":return parseBox(t,!1,(function(t,r,n){t.channelCount=readBig16(r,16),t.samplesize=readBig16(r,18),t.sampleRate=readBig32(r,24)/65536,r=r.subarray(28),t.sinf=e.sinf(e.findBox(r,["sinf"],n)[0]),t.esds=e.esds(e.findBox(r,["esds"],n)[0])}));case"encv":return parseBox(t,!1,(function(t,r,n){t.width=readBig16(r,24),t.height=readBig16(r,26),t.horizresolution=readBig32(r,28),t.vertresolution=readBig32(r,32),r=r.subarray(78),t.sinf=e.sinf(e.findBox(r,["sinf"],n)[0]),t.avcC=e.avcC(e.findBox(r,["avcC"],n)[0]),t.hvcC=e.hvcC(e.findBox(r,["hvcC"],n)[0]),t.pasp=e.pasp(e.findBox(r,["pasp"],n)[0])}))}})).filter(Boolean)}))}},{key:"tenc",value:function(e){return parseBox(e,!1,(function(e,t){var r=6;e.default_IsEncrypted=t[r],r+=1,e.default_IV_size=t[r],r+=1,e.default_KID=[];for(var n=0;n<16;n++)e.default_KID.push(toHex(t[r])),r+=1}))}},{key:"schi",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tenc=e.tenc(e.findBox(r,["tenc"],n)[0])}))}},{key:"sinf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.schi=e.schi(e.findBox(r,["schi"],n)[0]),t.frma=e.frma(e.findBox(r,["frma"],n)[0])}))}},{key:"frma",value:function(e){return parseBox(e,!1,(function(e,t){e.data_format="";for(var r=0;r<4;r++)e.data_format+=String.fromCharCode(t[r])}))}},{key:"avc1",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseVisualSampleEntry(t,r),o=r.subarray(i);n+=i,t.avcC=e.avcC(e.findBox(o,["avcC"],n)[0]),t.pasp=e.pasp(e.findBox(o,["pasp"],n)[0])}))}},{key:"avcC",value:function(e){return parseBox(e,!1,(function(e,t){e.configurationVersion=t[0],e.AVCProfileIndication=t[1],e.profileCompatibility=t[2],e.AVCLevelIndication=t[3],e.codec=getAvcCodec([t[1],t[2],t[3]]),e.lengthSizeMinusOne=3&t[4],e.spsLength=31&t[5],e.sps=[];for(var r=6,n=0;n<e.spsLength;n++){var i=readBig16(t,r);r+=2,e.sps.push(t.subarray(r,r+i)),r+=i}e.ppsLength=t[r],r+=1,e.pps=[];for(var o=0;o<e.ppsLength;o++){var a=readBig16(t,r);r+=2,e.pps.push(t.subarray(r,r+=a)),r+=a}}))}},{key:"hvc1",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseVisualSampleEntry(t,r),o=r.subarray(i);n+=i,t.hvcC=e.hvcC(e.findBox(o,["hvcC"],n)[0]),t.pasp=e.pasp(e.findBox(o,["pasp"],n)[0])}))}},{key:"hvcC",value:function(e){return parseBox(e,!1,(function(t,r){t.data=e.data,t.codec="hev1.1.6.L93.B0",t.configurationVersion=r[0];var n=r[1];t.generalProfileSpace=n>>6,t.generalTierFlag=(32&n)>>5,t.generalProfileIdc=31&n,t.generalProfileCompatibility=readBig32(r,2),t.generalConstraintIndicatorFlags=r.subarray(6,12),t.generalLevelIdc=r[12],t.avgFrameRate=readBig16(r,19),t.numOfArrays=r[22],t.vps=[],t.sps=[],t.pps=[];for(var i=23,o=0,a=0,s=0,c=0;c<t.numOfArrays;c++){o=63&r[i],a=readBig16(r,i+1),i+=3;for(var u,l=[],d=0;d<a;d++)s=readBig16(r,i),i+=2,l.push(r.subarray(i,i+s)),i+=s;if(32===o)(u=t.vps).push.apply(u,l);else if(33===o){var h;(h=t.sps).push.apply(h,l)}else if(34===o){var f;(f=t.pps).push.apply(f,l)}}}))}},{key:"pasp",value:function(e){return parseBox(e,!1,(function(e,t){e.hSpacing=readBig32(t),e.vSpacing=readBig32(t,4)}))}},{key:"mp4a",value:function(t){return parseBox(t,!1,(function(t,r,n){var i=parseAudioSampleEntry(t,r);t.esds=e.esds(e.findBox(r.subarray(i),["esds"],n+i)[0])}))}},{key:"esds",value:function(e){return parseBox(e,!0,(function(e,t){e.codec="mp4a.";for(var r=0,n=0,i=0,o=0;t.length;){for(o=t[r=0],n=t[r+1],r+=2;128&n;)i=(127&n)<<7,n=t[r],r+=1;if(i+=127&n,3===o)t=t.subarray(r+3);else{if(4!==o){if(5===o){var a=e.config=t.subarray(r,r+i),s=(248&a[0])>>3;return 31===s&&a.length>=2&&(s=32+((7&a[0])<<3)+((224&a[1])>>5)),e.objectType=s,e.codec+=s.toString(16),void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}return void("."===e.codec[e.codec.length-1]&&(e.codec=e.codec.substring(0,e.codec.length-1)))}e.codec+=(t[r].toString(16)+".").padStart(3,"0"),t=t.subarray(r+13)}}}))}},{key:"alaw",value:function(e){return parseBox(e,!1,(function(e,t){parseAudioSampleEntry(e,t)}))}},{key:"stts",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push({count:readBig32(t,i),delta:readBig32(t,i+4)}),i+=8;e.entryCount=r,e.entries=n}))}},{key:"ctts",value:function(e){return parseBox(e,!0,(function(e,t){var r=readBig32(t),n=[],i=4;if(1===e.version)for(var o=0;o<r;o++)n.push({count:readBig32(t,i),offset:readBig32(t,i+4)}),i+=8;else for(var a=0;a<r;a++)n.push({count:readBig32(t,i),offset:-(1+~readBig32(t,i+4))}),i+=8;e.entryCount=r,e.entries=n}))}},{key:"stsc",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push({firstChunk:readBig32(t,i),samplesPerChunk:readBig32(t,i+4),sampleDescriptionIndex:readBig32(t,i+8)}),i+=12;e.entryCount=r,e.entries=n}))}},{key:"stsz",value:function(e){return parseBox(e,!0,(function(e,t){var r=readBig32(t),n=readBig32(t,4),i=[];if(!r)for(var o=8,a=0;a<n;a++)i.push(readBig32(t,o)),o+=4;e.sampleSize=r,e.sampleCount=n,e.entrySizes=i}))}},{key:"stco",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig32(t,i)),i+=4;e.entryCount=r,e.entries=n}))}},{key:"co64",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig64(t,i)),i+=8;e.entryCount=r,e.entries=n}))}},{key:"stss",value:function(e){return parseBox(e,!0,(function(e,t){for(var r=readBig32(t),n=[],i=4,o=0;o<r;o++)n.push(readBig32(t,i)),i+=4;e.entryCount=r,e.entries=n}))}},{key:"moof",value:function(t){return parseBox(t,!1,(function(t,r,n){t.mfhd=e.mfhd(e.findBox(r,["mfhd"],n)[0]),t.traf=e.findBox(r,["traf"],n).map((function(t){return e.traf(t)}))}))}},{key:"mfhd",value:function(e){return parseBox(e,!0,(function(e,t){e.sequenceNumber=readBig32(t)}))}},{key:"traf",value:function(t){return parseBox(t,!1,(function(t,r,n){t.tfhd=e.tfhd(e.findBox(r,["tfhd"],n)[0]),t.tfdt=e.tfdt(e.findBox(r,["tfdt"],n)[0]),t.trun=e.trun(e.findBox(r,["trun"],n)[0])}))}},{key:"trun",value:function(e){return parseBox(e,!0,(function(e,t){var r=e.version,n=e.flags,i=t.length,o=e.sampleCount=readBig32(t),a=4;if(i>a&&1&n&&(e.dataOffset=-(1+~readBig32(t,a)),a+=4),i>a&&4&n&&(e.firstSampleFlags=readBig32(t,a),a+=4),e.samples=[],i>a)for(var s,c=0;c<o;c++)s={},256&n&&(s.duration=readBig32(t,a),a+=4),512&n&&(s.size=readBig32(t,a),a+=4),1024&n&&(s.flags=readBig32(t,a),a+=4),2048&n&&(s.cts=r?-(1+~readBig32(t,a+4)):readBig32(t,a),a+=4),e.samples.push(s)}))}},{key:"tfdt",value:function(e){return parseBox(e,!0,(function(e,t){1===e.version?e.baseMediaDecodeTime=readBig64(t):e.baseMediaDecodeTime=readBig32(t)}))}},{key:"probe",value:function(t){return!!e.findBox(t,["ftyp"])}},{key:"parseSampleFlags",value:function(e){return{isLeading:(12&e[0])>>>2,dependsOn:3&e[0],isDependedOn:(192&e[1])>>>6,hasRedundancy:(48&e[1])>>>4,paddingValue:(14&e[1])>>>1,isNonSyncSample:1&e[1],degradationPriority:e[2]<<8|e[3]}}},{key:"moovToTrack",value:function(e,t,r){var n,i,o=e.trak;if(o&&o.length){var a=o.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),s=o.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(a&&t){var c,u,l,d,h,f,p,y=t,m=null===(c=a.tkhd)||void 0===c?void 0:c.trackId;null!=m&&(y.id=a.tkhd.trackId),y.tkhdDuration=a.tkhd.duration,y.mvhdDurtion=e.mvhd.duration,y.mvhdTimecale=e.mvhd.timescale,y.timescale=y.formatTimescale=a.mdia.mdhd.timescale,y.duration=a.mdia.mdhd.duration||y.mvhdDurtion/y.mvhdTimecale*y.timescale;var g,v,b,_,$,A,E,T,S=a.mdia.minf.stbl.stsd.entries[0];if(y.width=S.width,y.height=S.height,S.pasp&&(y.sarRatio=[S.pasp.hSpacing,S.pasp.vSpacing]),S.hvcC)y.codecType=VideoCodecType.HEVC,y.codec=S.hvcC.codec,y.vps=S.hvcC.vps,y.sps=S.hvcC.sps,y.pps=S.hvcC.pps,y.hvcC=S.hvcC.data;else{if(!S.avcC)throw new Error("unknown video stsd entry");y.codec=S.avcC.codec,y.sps=S.avcC.sps,y.pps=S.avcC.pps}if(y.present=!0,y.ext={},y.ext.stss=null===(u=a.mdia)||void 0===u||null===(l=u.minf)||void 0===l||null===(d=l.stbl)||void 0===d?void 0:d.stss,y.ext.ctts=null===(h=a.mdia)||void 0===h||null===(f=h.minf)||void 0===f||null===(p=f.stbl)||void 0===p?void 0:p.ctts,S&&"encv"===S.type)y.isVideoEncryption=!0,S.default_KID=null===(g=S.sinf)||void 0===g||null===(v=g.schi)||void 0===v?void 0:v.tenc.default_KID,S.default_IsEncrypted=null===(b=S.sinf)||void 0===b||null===(_=b.schi)||void 0===_?void 0:_.tenc.default_IsEncrypted,S.default_IV_size=null===($=S.sinf)||void 0===$||null===(A=$.schi)||void 0===A?void 0:A.tenc.default_IV_size,y.videoSenc=a.mdia.minf.stbl.senc&&a.mdia.minf.stbl.senc.samples,S.data_format=null===(E=S.sinf)||void 0===E||null===(T=E.frma)||void 0===T?void 0:T.data_format,y.useEME=e.useEME,y.kidValue=e.kidValue,y.pssh=e.pssh,y.encv=S}if(s&&r){var I,w,R,P,O,C,k,x,L,D=r,M=null===(I=s.tkhd)||void 0===I?void 0:I.trackId;null!=M&&(D.id=s.tkhd.trackId),D.tkhdDuration=s.tkhd.duration,D.mvhdDurtion=e.mvhd.duration,D.mvhdTimecale=e.mvhd.timescale,D.timescale=D.formatTimescale=s.mdia.mdhd.timescale,D.duration=s.mdia.mdhd.duration||D.mvhdDurtion/D.mvhdTimecale*D.timescale;var N,G,V,U,Z,F,B,j,X=s.mdia.minf.stbl.stsd.entries[0];switch(D.sampleSize=X.sampleSize,D.sampleRate=X.sampleRate,D.channelCount=X.channelCount,D.present=!0,X.type){case"alaw":D.codecType=D.codec=AudioCodecType.G711PCMA,D.sampleRate=8e3;break;case"ulaw":D.codecType=D.codec=AudioCodecType.G711PCMU,D.sampleRate=8e3;break;default:D.sampleDuration=AAC.getFrameDuration(D.sampleRate,D.timescale),D.sampleRateIndex=AAC.getRateIndexByRate(D.sampleRate),D.objectType=(null===(n=X.esds)||void 0===n?void 0:n.objectType)||2,X.esds&&(D.config=Array.from(X.esds.config)),D.codec=(null===(i=X.esds)||void 0===i?void 0:i.codec)||"mp4a.40.2"}if(D.sampleDuration=AAC.getFrameDuration(D.sampleRate,D.timescale),D.objectType=(null===(w=X.esds)||void 0===w?void 0:w.objectType)||2,X.esds&&(X.esds.config?D.config=Array.from(X.esds.config):console.warn("esds config is null")),D.codec=(null===(R=X.esds)||void 0===R?void 0:R.codec)||"mp4a.40.2",D.sampleRateIndex=AAC.getRateIndexByRate(D.sampleRate),D.ext={},D.ext.stss=null===(P=s.mdia)||void 0===P||null===(O=P.minf)||void 0===O||null===(C=O.stbl)||void 0===C?void 0:C.stss,D.ext.ctts=null===(k=s.mdia)||void 0===k||null===(x=k.minf)||void 0===x||null===(L=x.stbl)||void 0===L?void 0:L.ctts,D.present=!0,X&&"enca"===X.type)D.isAudioEncryption=!0,X.data_format=null===(N=X.sinf)||void 0===N||null===(G=N.frma)||void 0===G?void 0:G.data_format,X.default_KID=null===(V=X.sinf)||void 0===V||null===(U=V.schi)||void 0===U?void 0:U.tenc.default_KID,X.default_IsEncrypted=null===(Z=X.sinf)||void 0===Z||null===(F=Z.schi)||void 0===F?void 0:F.tenc.default_IsEncrypted,X.default_IV_size=null===(B=X.sinf)||void 0===B||null===(j=B.schi)||void 0===j?void 0:j.tenc.default_IV_size,D.audioSenc=s.mdia.minf.stbl.senc&&s.mdia.minf.stbl.senc.samples,D.useEME=e.useEME,D.kidValue=e.kidValue,D.enca=X}if(r&&(r.isVideoEncryption=!!t&&t.isVideoEncryption),t&&(t.isAudioEncryption=!!r&&r.isAudioEncryption),null!=t&&t.encv||null!=r&&r.enca){var W,H,K=null==t||null===(W=t.encv)||void 0===W?void 0:W.default_KID,Y=null==r||null===(H=r.enca)||void 0===H?void 0:H.default_KID,z=K||Y?(K||Y).join(""):null;t&&(t.kid=z),r&&(r.kid=z)}return t&&(t.flags=3841),r&&(r.flags=1793),{videoTrack:t,audioTrack:r}}}},{key:"evaluateDefaultDuration",value:function(e,t,r){var n,i=null==t||null===(n=t.samples)||void 0===n?void 0:n.length;return i?1024*i/t.timescale*e.timescale/r:1024}},{key:"moofToSamples",value:function(t,r,n){var i={};return t.mfhd&&(r&&(r.sequenceNumber=t.mfhd.sequenceNumber),n&&(n.sequenceNumber=t.mfhd.sequenceNumber)),t.traf.forEach((function(t){var o=t.tfhd,a=t.tfdt,s=t.trun;if(o&&s){a&&(r&&r.id===o.trackId&&(r.baseMediaDecodeTime=a.baseMediaDecodeTime),n&&n.id===o.trackId&&(n.baseMediaDecodeTime=a.baseMediaDecodeTime));var c=o.defaultSampleSize||0,u=o.defaultSampleDuration||e.evaluateDefaultDuration(r,n,s.samples.length||s.sampleCount),l=s.dataOffset||0,d=0,h=-1;if(!s.samples.length&&s.sampleCount){i[o.trackId]=[];for(var f=0;f<s.sampleCount;f++)i[o.trackId].push({offset:l,dts:d,duration:u,size:c}),d+=u,l+=c}else i[o.trackId]=s.samples.map((function(e,t){return(e={offset:l,dts:d,pts:d+(e.cts||0),duration:e.duration||u,size:e.size||c,gopId:h,keyframe:0===t||null!==e.flags&&void 0!==e.flags&&(65536&e.flags)>>>0!=65536}).keyframe&&(h++,e.gopId=h),d+=e.duration,l+=e.size,e}))}})),i}},{key:"moovToSamples",value:function(e){var t=e.trak;if(t&&t.length){var r=t.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),n=t.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(r||n){var i,o;if(r){var a,s,c=null===(a=r.mdia)||void 0===a||null===(s=a.minf)||void 0===s?void 0:s.stbl;if(!c)return;var u=c.stts,l=c.stsc,d=c.stsz,h=c.stco,f=c.stss,p=c.ctts;if(!(u&&l&&d&&h&&f))return;i=getSamples(u,l,d,h,p,f)}if(n){var y,m,g,v=null===(y=n.mdia)||void 0===y||null===(m=y.minf)||void 0===m?void 0:m.stbl;if(!v)return;var b=null===(g=n.mdia.mdhd)||void 0===g?void 0:g.timescale,_=v.stts,$=v.stsc,A=v.stsz,E=v.stco;if(!(b&&_&&$&&A&&E))return;o=getSamples(_,$,A,E)}return{videoSamples:i,audioSamples:o}}}}}]),e}();function getSamples(e,t,r,n,i,o){var a,s,c,u=[],l=null==i?void 0:i.entries,d=t.entries,h=n.entries,f=r.entrySizes,p=null==o?void 0:o.entries;p&&(a={},p.forEach((function(e){a[e-1]=!0}))),l&&(s=[],l.forEach((function(e){for(var t=e.count,r=e.offset,n=0;n<t;n++)s.push(r)})));var y=-1,m=0,g=0,v=0,b=0,_=0,$=d[0].samplesPerChunk,A=d[1]?d[1].firstChunk-1:1/0;return e.entries.forEach((function(e){for(var t=e.count,n=e.delta,i=0;i<t;i++)c={dts:m,duration:n,size:f[g]||r.sampleSize,offset:h[v]+_,index:g},p&&(c.keyframe=a[g],c.keyframe&&y++,c.gopId=y),s&&g<s.length&&(c.pts=c.dts+s[g]),u.push(c),m+=n,++g<$?_+=c.size:(v++,_=0,v>=A&&(b++,A=d[b+1]?d[b+1].firstChunk-1:1/0),$+=d[b].samplesPerChunk)})),u}function parseVisualSampleEntry(e,t){return e.dataReferenceIndex=readBig16(t,6),e.width=readBig16(t,24),e.height=readBig16(t,26),e.horizresolution=readBig32(t,28),e.vertresolution=readBig32(t,32),e.frameCount=readBig16(t,40),e.depth=readBig16(t,74),78}function parseAudioSampleEntry(e,t){return e.dataReferenceIndex=readBig16(t,6),e.channelCount=readBig16(t,16),e.sampleSize=readBig16(t,18),e.sampleRate=readBig32(t,24)/65536,28}function parseBox(e,t,r){if(e){if(e.size!==e.data.length)throw new Error("box ".concat(e.type," size !== data.length"));var n={start:e.start,size:e.size,headerSize:e.headerSize,type:e.type};return t&&(n.version=e.data[e.headerSize],n.flags=readBig24(e.data,e.headerSize+1),n.headerSize+=4),r(n,e.data.subarray(n.headerSize),n.start+n.headerSize),n}}var padStart3=function(e,t,r){for(var n=String(r),i=t>>0,o=Math.ceil(i/n.length),a=[],s=String(e);o--;)a.push(n);return a.join("").substring(0,i-s.length)+s},toHex=function(){for(var e=[],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e.push(padStart3(Number(t).toString(16),2,0))})),e[0]},Buffer2=function(){function e(){_classCallCheck$3(this,e),this.buffer=new Uint8Array(0)}return _createClass$3(e,[{key:"write",value:function(){for(var e=this,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];r.forEach((function(t){t?e.buffer=Concat(Uint8Array,e.buffer,t):window.console.warn(t)}))}}],[{key:"writeUint16",value:function(e){return new Uint8Array([e>>8&255,255&e])}},{key:"writeUint32",value:function(e){return new Uint8Array([e>>24,e>>16&255,e>>8&255,255&e])}}]),e}(),UINT32_MAX=Math.pow(2,32)-1,MP4$1=function(){function e(){_classCallCheck$3(this,e)}return _createClass$3(e,null,[{key:"box",value:function(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var i=8+(r=r.filter(Boolean)).reduce((function(e,t){return e+t.byteLength}),0),o=new Uint8Array(i);o[0]=i>>24&255,o[1]=i>>16&255,o[2]=i>>8&255,o[3]=255&i,o.set(e,4);var a=8;return r.forEach((function(e){o.set(e,a),a+=e.byteLength})),o}},{key:"ftyp",value:function(t){return t.find((function(e){return e.type===TrackType.VIDEO&&e.codecType===VideoCodecType.HEVC}))?e.FTYPHEV1:e.FTYPAVC1}},{key:"initSegment",value:function(t){return concatUint8Array$1(e.ftyp(t),e.moov(t))}},{key:"pssh",value:function(t){var r=new Uint8Array([1,0,0,0].concat([16,119,239,236,192,178,77,2,172,227,60,30,82,226,251,75],[0,0,0,1],parse3(t.kid),[0,0,0,0]));return e.box(e.types.pssh,r)}},{key:"moov",value:function(t){if(t[0].useEME&&(t[0].encv||t[0].enca)){t[0].pssh||(t[0].pssh={kid:t[0].kid});var r=this.pssh(t[0].pssh);return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale),e.mvex(t)].concat(_toConsumableArray$2(t.map((function(t){return e.trak(t)}))),[r]))}return e.box.apply(e,[e.types.moov,e.mvhd(t[0].mvhdDurtion||t[0].duration,t[0].mvhdTimecale||t[0].timescale)].concat(_toConsumableArray$2(t.map((function(t){return e.trak(t)}))),[e.mvex(t)]))}},{key:"mvhd",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mvhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,t>>24&255,t>>16&255,t>>8&255,255&t,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255]))}},{key:"trak",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.tkhdDuration||0,t.width,t.height),e.mdia(t))}},{key:"tkhd",value:function(t,r){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0;return e.box(e.types.tkhd,new Uint8Array([0,0,0,7,0,0,0,0,0,0,0,0,t>>24&255,t>>16&255,t>>8&255,255&t,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,n>>8&255,255&n,0,0,i>>8&255,255&i,0,0]))}},{key:"mdia",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minf(t))}},{key:"mdhd",value:function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:9e4;return e.box(e.types.mdhd,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r,t>>24&255,t>>16&255,t>>8&255,255&t,85,196,0,0]))}},{key:"hdlr",value:function(t){return e.box(e.types.hdlr,e.HDLR_TYPES[t])}},{key:"minf",value:function(t){return e.box(e.types.minf,t.type===TrackType.VIDEO?e.VMHD:e.SMHD,e.DINF,e.stbl(t))}},{key:"stbl",value:function(t){var r=[];return t&&t.ext&&t.ext.stss&&r.push(e.stss(t.ext.stss.entries)),e.box(e.types.stbl,e.stsd(t),e.STTS,r[0],e.STSC,e.STSZ,e.STCO)}},{key:"stsd",value:function(t){var r;return r="audio"===t.type?t.useEME&&t.enca?e.enca(t):e.mp4a(t):t.useEME&&t.encv?e.encv(t):e.avc1hev1(t),e.box(e.types.stsd,new Uint8Array([0,0,0,0,0,0,0,1]),r)}},{key:"enca",value:function(t){var r=t.enca.channelCount,n=t.enca.sampleRate,i=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,r,0,16,0,0,0,0,n>>8&255,255&n,0,0]),o=e.esds(t.config),a=e.sinf(t.enca);return e.box(e.types.enca,i,o,a)}},{key:"encv",value:function(t){var r,n,i=t.sps.length>0?t.sps[0]:[],o=t.pps.length>0?t.pps[0]:[],a=t.width,s=t.height,c=t.sarRatio[0],u=t.sarRatio[1],l=new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,a>>8&255,255&a,s>>8&255,255&s,0,72,0,0,0,72,0,0,0,0,0,0,0,1,18,100,97,105,108,121,109,111,116,105,111,110,47,104,108,115,46,106,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),d=new Uint8Array((r=(n=[1,i[1],i[2],i[3],255,225,i.length>>>8&255,255&i.length]).concat.apply(n,_toConsumableArray$2(i)).concat([1,o.length>>>8&255,255&o.length])).concat.apply(r,_toConsumableArray$2(o))),h=new Uint8Array([0,0,88,57,0,15,200,192,0,4,86,72]),f=e.sinf(t.encv),p=new Uint8Array([c>>24,c>>16&255,c>>8&255,255&c,u>>24,u>>16&255,u>>8&255,255&u]);return e.box(e.types.encv,l,e.box(e.types.avcC,d),e.box(e.types.btrt,h),f,e.box(e.types.pasp,p))}},{key:"schi",value:function(t){var r=new Uint8Array([]),n=e.tenc(t);return e.box(e.types.schi,r,n)}},{key:"tenc",value:function(t){var r=new Uint8Array([0,0,0,0,0,0,255&t.default_IsEncrypted,255&t.default_IV_size].concat(parse3(t.default_KID)));return e.box(e.types.tenc,r)}},{key:"sinf",value:function(t){var r=new Uint8Array([]),n=new Uint8Array([t.data_format.charCodeAt(0),t.data_format.charCodeAt(1),t.data_format.charCodeAt(2),t.data_format.charCodeAt(3)]),i=new Uint8Array([0,0,0,0,99,101,110,99,0,1,0,0]),o=e.schi(t);return e.box(e.types.sinf,r,e.box(e.types.frma,n),e.box(e.types.schm,i),o)}},{key:"avc1hev1",value:function(t){var r=t.codecType===VideoCodecType.HEVC,n=r?e.types.hvc1:e.types.avc1,i=r?e.hvcC(t):e.avcC(t),o=[new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,t.width>>8&255,255&t.width,t.height>>8&255,255&t.height,0,72,0,0,0,72,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,17,17]),i];return r?o.push(e.box(e.types.fiel,new Uint8Array([1,0]))):t.sarRatio&&t.sarRatio.length>1&&o.push(e.pasp(t.sarRatio)),e.box.apply(e,[n].concat(o))}},{key:"avcC",value:function(t){var r,n,i,o=[],a=[];return t.sps.forEach((function(e){i=e.byteLength,o.push(i>>>8&255),o.push(255&i),o.push.apply(o,_toConsumableArray$2(e))})),t.pps.forEach((function(e){i=e.byteLength,a.push(i>>>8&255),a.push(255&i),a.push.apply(a,_toConsumableArray$2(e))})),e.box(e.types.avcC,new Uint8Array((r=(n=[1,o[3],o[4],o[5],255,224|t.sps.length]).concat.apply(n,o).concat([t.pps.length])).concat.apply(r,a)))}},{key:"hvcC",value:function(t){var r=t.hvcC;if(r instanceof ArrayBuffer||r instanceof Uint8Array)return r;var n,i=t.vps,o=t.sps,a=t.pps;if(r){var s=r.generalProfileCompatibilityFlags,c=r.generalConstraintIndicatorFlags,u=(i.length&&1)+(o.length&&1)+(a.length&&1);n=[1,r.generalProfileSpace<<6|r.generalTierFlag<<5|r.generalProfileIdc,s>>>24,s>>>16,s>>>8,s,c[0],c[1],c[2],c[3],c[4],c[5],r.generalLevelIdc,240,0,252,252|r.chromaFormatIdc,248|r.bitDepthLumaMinus8,248|r.bitDepthChromaMinus8,0,0,r.numTemporalLayers<<3|r.temporalIdNested<<2|3,u];var l=function(e){var t;n.push(e.length>>8,e.length),(t=n).push.apply(t,_toConsumableArray$2(e))};i.length&&(n.push(160,0,i.length),i.forEach(l)),o.length&&(n.push(161,0,o.length),o.forEach(l)),a.length&&(n.push(162,0,a.length),a.forEach(l))}else n=[1,1,96,0,0,0,144,0,0,0,0,0,93,240,0,252,253,248,248,0,0,15,3,160,0,1,0,24,64,1,12,1,255,255,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,153,152,9,161,0,1,0,45,66,1,1,1,96,0,0,3,0,144,0,0,3,0,0,3,0,93,160,2,128,128,45,22,89,153,164,147,43,154,128,128,128,130,0,0,3,0,2,0,0,3,0,50,16,162,0,1,0,7,68,1,193,114,180,98,64];return e.box(e.types.hvcC,new Uint8Array(n))}},{key:"pasp",value:function(t){var r=_slicedToArray$1(t,2),n=r[0],i=r[1];return e.box(e.types.pasp,new Uint8Array([n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"mp4a",value:function(t){return e.box(e.types.mp4a,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,t.channelCount,0,16,0,0,0,0,t.sampleRate>>8&255,255&t.sampleRate,0,0]),t.config.length?e.esds(t.config):void 0)}},{key:"esds",value:function(t){var r=t.length;return e.box(e.types.esds,new Uint8Array([0,0,0,0,3,23+r,0,0,0,4,15+r,64,21,0,6,0,0,0,218,192,0,0,218,192,5].concat([r]).concat(t).concat([6,1,2])))}},{key:"mvex",value:function(t){return e.box.apply(e,[e.types.mvex].concat(_toConsumableArray$2(t.map((function(t){return e.trex(t.id)})))))}},{key:"trex",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,1]))}},{key:"trex1",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,2,0,0,0,0,0,0,1,0,0]))}},{key:"trex2",value:function(t){return e.box(e.types.trex,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t,0,0,0,1,0,0,4,0,0,0,0,0,2,0,0,0]))}},{key:"moof",value:function(t){return e.box.apply(e,[e.types.moof,e.mfhd(t[0].samples?t[0].samples[0].gopId:0)].concat(_toConsumableArray$2(t.map((function(t){return e.traf(t)})))))}},{key:"mfhd",value:function(t){return e.box(e.types.mfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"traf",value:function(t){var r=e.tfhd(t.id),n=e.tfdt(t,t.baseMediaDecodeTime);if(t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)){if(t.isVideoEncryption){if(1===t.id){var i=e.saiz(t),o=e.saio(t),a=e.trun1(t),s=e.senc(t);return e.box(e.types.traf,r,n,i,o,a,s)}if(t.isAudioEncryption){var c=e.sbgp(),u=e.saiz(t),l=e.saio(t),d=e.senc(t),h=e.trun1(t);return e.box(e.types.traf,r,n,c,u,l,d,h)}var f=e.sbgp(),p=e.trun1(t);return e.box(e.types.traf,r,n,f,p)}if(1===t.id){var y=e.trun1(t);return e.box(e.types.traf,r,n,y)}var m=e.sbgp(),g=e.saiz(t),v=e.saio(t),b=e.senc(t),_=e.trun1(t);return e.box(e.types.traf,r,n,m,g,v,b,_)}var $=e.sdtp(t);return e.box(e.types.traf,r,n,$,e.trun(t.samples,$.byteLength+76))}},{key:"sdtp",value:function(t){var r=new Buffer2;return t.samples.forEach((function(e){r.write(new Uint8Array(1===t.id?[e.keyframe?32:16]:[16]))})),e.box(e.types.sdtp,this.extension(0,0),r.buffer)}},{key:"trun1",value:function(t){var r=new Buffer2,n=Buffer2.writeUint32(t.samples.length),i=null;if(1===t.id){var o=t.videoSencLength;i=Buffer2.writeUint32(16*t.samples.length+o+149),!t.isVideoEncryption&&t.isAudioEncryption&&(i=Buffer2.writeUint32(16*t.samples.length+92))}else{var a=12*t.samples.length+124;t.isAudioEncryption&&(a=12*t.samples.length+8*t.audioSenc.length+177),i=Buffer2.writeUint32(a)}return t.samples.forEach((function(e){r.write(Buffer2.writeUint32(e.duration)),r.write(Buffer2.writeUint32(e.size)),r.write(Buffer2.writeUint32(e.keyframe?33554432:65536)),1===t.id&&r.write(Buffer2.writeUint32(e.cts?e.cts:0))})),e.box(e.types.trun,this.extension(0,t.flags),n,i,r.buffer)}},{key:"senc",value:function(t){var r=new Buffer2,n=t.samples.length,i=1===t.id?16:8,o=1===t.id?2:0,a=[],s=0;return 1===t.id?(a=t.videoSenc,s=t.videoSencLength):a=t.audioSenc,s=s||i*n,r.write(Buffer2.writeUint32(16+s),e.types.senc,this.extension(0,o)),r.write(Buffer2.writeUint32(n)),a.forEach((function(e){for(var t=0;t<e.InitializationVector.length;t++)r.write(new Uint8Array([e.InitializationVector[t]]));e.subsamples&&e.subsamples.length&&(r.write(Buffer2.writeUint16(e.subsamples.length)),e.subsamples.forEach((function(e){r.write(Buffer2.writeUint16(e.BytesOfClearData)),r.write(Buffer2.writeUint32(e.BytesOfProtectedData))})))})),r.buffer}},{key:"saio",value:function(t){var r=12*t.samples.length+141;2===t.id&&t.isAudioEncryption&&(r=149);var n=new Uint8Array([1,0,0,0,0,0,0,1,0,0,0,0,r>>24&255,r>>16&255,r>>8&255,255&r]);return e.box(e.types.saio,n)}},{key:"saiz",value:function(t){var r=t.samples.length,n=new Uint8Array([0,0,0,0,16,r>>24&255,r>>16&255,r>>8&255,255&r]);return e.box(e.types.saiz,n)}},{key:"sbgp",value:function(){var t=new Uint8Array([114,111,108,108,0,0,0,1,0,0,1,25,0,0,0,1]);return e.box(e.types.sbgp,this.extension(0,0),t)}},{key:"extension",value:function(e,t){return new Uint8Array([e,t>>16&255,t>>8&255,255&t])}},{key:"tfhd",value:function(t){return e.box(e.types.tfhd,new Uint8Array([0,0,0,0,t>>24,t>>16&255,t>>8&255,255&t]))}},{key:"tfdt",value:function(t,r){var n=Math.floor(r/(UINT32_MAX+1)),i=Math.floor(r%(UINT32_MAX+1));return t.useEME&&(t.isVideoEncryption||t.isAudioEncryption)?e.box(e.types.tfdt,new Uint8Array([0,0,0,0,i>>24,i>>16&255,i>>8&255,255&i])):e.box(e.types.tfdt,new Uint8Array([1,0,0,0,n>>24,n>>16&255,n>>8&255,255&n,i>>24,i>>16&255,i>>8&255,255&i]))}},{key:"trun",value:function(t,r){var n=t.length,i=12+16*n;r+=8+i;var o=new Uint8Array(i);o.set([0,0,15,1,n>>>24&255,n>>>16&255,n>>>8&255,255&n,r>>>24&255,r>>>16&255,r>>>8&255,255&r],0);for(var a=0;a<n;a++){var s=t[a],c=s.duration,u=s.size,l=s.flag,d=void 0===l?{}:l,h=s.cts,f=void 0===h?0:h;o.set([c>>>24&255,c>>>16&255,c>>>8&255,255&c,u>>>24&255,u>>>16&255,u>>>8&255,255&u,d.isLeading<<2|(null===d.dependsOn||void 0===d.dependsOn?1:d.dependsOn),d.isDependedOn<<6|d.hasRedundancy<<4|d.paddingValue<<1|(null===d.isNonSyncSample||void 0===d.isNonSyncSample?1:d.isNonSyncSample),61440&d.degradationPriority,15&d.degradationPriority,f>>>24&255,f>>>16&255,f>>>8&255,255&f],12+16*a)}return e.box(e.types.trun,o)}},{key:"moovMP4",value:function(t){return e.box.apply(e,[e.types.moov,e.mvhd(t[0].duration,t[0].timescale)].concat(_toConsumableArray$2(t.map((function(t){return e.trackMP4(t)})))))}},{key:"trackMP4",value:function(t){return e.box(e.types.trak,e.tkhd(t.id,t.duration,t.width,t.height),e.mdiaMP4(t))}},{key:"mdiaMP4",value:function(t){return e.box(e.types.mdia,e.mdhd(t.duration,t.timescale),e.hdlr(t.type),e.minfMP4(t))}},{key:"minfMP4",value:function(t){return e.box(e.types.minf,t.type===TrackType.VIDEO?e.VMHD:e.SMHD,e.DINF,e.stblMP4(t))}},{key:"stblMP4",value:function(t){var r=t.ext,n=[e.stsd(t),e.stts(r.stts),e.stsc(r.stsc),e.stsz(r.stsz),e.stco(r.stco)];return r.stss.length&&n.push(e.stss(r.stss)),r.ctts.length&&n.push(e.ctts(r.ctts)),e.box.apply(e,[e.types.stbl].concat(n))}},{key:"stts",value:function(t){var r=t.length,n=new Uint8Array(8*r),i=0;return t.forEach((function(e){var t=e.value,r=e.count;n.set([r>>24,r>>16&255,r>>8&255,255&r,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.stts,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stsc",value:function(t){var r=t.length,n=new Uint8Array(12*r),i=0;return t.forEach((function(e){var t=e.firstChunk,r=e.samplesPerChunk,o=e.sampleDescIndex;n.set([t>>24,t>>16&255,t>>8&255,255&t,r>>24,r>>16&255,r>>8&255,255&r,o>>24,o>>16&255,o>>8&255,255&o],i),i+=12})),e.box(e.types.stsc,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stsz",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stsz,concatUint8Array$1(new Uint8Array([0,0,0,0,0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stco",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stco,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"stss",value:function(t){var r=t.length,n=new Uint8Array(4*r),i=0;return t.forEach((function(e){n.set([e>>24,e>>16&255,e>>8&255,255&e],i),i+=4})),e.box(e.types.stss,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"ctts",value:function(t){var r=t.length,n=new Uint8Array(8*r),i=0;return t.forEach((function(e){var t=e.value,r=e.count;n.set([r>>24,r>>16&255,r>>8&255,255&r,t>>24,t>>16&255,t>>8&255,255&t],i),i+=8})),e.box(e.types.ctts,concatUint8Array$1(new Uint8Array([0,0,0,0,r>>24,r>>16&255,r>>8&255,255&r]),n))}},{key:"styp",value:function(){return e.box(e.types.styp,new Uint8Array([109,115,100,104,0,0,0,0,109,115,100,104,109,115,105,120]))}},{key:"sidx",value:function(t){var r=t.timescale,n=t.samples[0].duration,i=n*t.samples.length,o=t.samples[0].sampleOffset*n,a=8;t.samples.forEach((function(e){a+=e.size}));var s=0;if(1===t.id){var c,u=0;t.videoSenc&&(c=t.videoSenc),1===t.id&&c.forEach((function(e){u+=8,e.subsamples&&e.subsamples.length&&(u+=2,u+=6*e.subsamples.length)})),t.videoSencLength=u,s=a+141+16*t.samples.length+u,t.useEME&&t.isAudioEncryption&&!t.isVideoEncryption&&(s=a+16*t.samples.length+84)}else s=a+116+12*t.samples.length,t.useEME&&t.isAudioEncryption&&(s=a+169+12*t.samples.length+8*t.audioSenc.length);var l=new Uint8Array([0,0,0,0,0,0,0,255&t.id,r>>24&255,r>>16&255,r>>8&255,255&r,o>>24&255,o>>16&255,o>>8&255,255&o,0,0,0,0,0,0,0,1,0,s>>16&255,s>>8&255,255&s,i>>24&255,i>>16&255,i>>8&255,255&i,144,0,0,0]);return e.box(e.types.sidx,l)}},{key:"mdat",value:function(t){return e.box(e.types.mdat,t)}}]),e}();_defineProperty$2(MP4$1,"types",["avc1","avcC","hvc1","hvcC","dinf","dref","esds","ftyp","hdlr","mdat","mdhd","mdia","mfhd","minf","moof","moov","mp4a","mvex","mvhd","pasp","stbl","stco","stsc","stsd","stsz","stts","tfdt","tfhd","traf","trak","trex","tkhd","vmhd","smhd","ctts","stss","styp","pssh","sidx","sbgp","saiz","saio","senc","trun","encv","enca","sinf","btrt","frma","tenc","schm","schi","mehd","fiel","sdtp"].reduce((function(e,t){return e[t]=[t.charCodeAt(0),t.charCodeAt(1),t.charCodeAt(2),t.charCodeAt(3)],e}),Object.create(null))),_defineProperty$2(MP4$1,"HDLR_TYPES",{video:new Uint8Array([0,0,0,0,0,0,0,0,118,105,100,101,0,0,0,0,0,0,0,0,0,0,0,0,86,105,100,101,111,72,97,110,100,108,101,114,0]),audio:new Uint8Array([0,0,0,0,0,0,0,0,115,111,117,110,0,0,0,0,0,0,0,0,0,0,0,0,83,111,117,110,100,72,97,110,100,108,101,114,0])}),_defineProperty$2(MP4$1,"FTYPAVC1",MP4$1.box(MP4$1.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,97,118,99,49]))),_defineProperty$2(MP4$1,"FTYPHEV1",MP4$1.box(MP4$1.types.ftyp,new Uint8Array([105,115,111,109,0,0,0,1,105,115,111,109,104,101,118,49]))),_defineProperty$2(MP4$1,"DINF",MP4$1.box(MP4$1.types.dinf,MP4$1.box(MP4$1.types.dref,new Uint8Array([0,0,0,0,0,0,0,1,0,0,0,12,117,114,108,32,0,0,0,1])))),_defineProperty$2(MP4$1,"VMHD",MP4$1.box(MP4$1.types.vmhd,new Uint8Array([0,0,0,1,0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"SMHD",MP4$1.box(MP4$1.types.smhd,new Uint8Array([0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"StblTable",new Uint8Array([0,0,0,0,0,0,0,0])),_defineProperty$2(MP4$1,"STTS",MP4$1.box(MP4$1.types.stts,MP4$1.StblTable)),_defineProperty$2(MP4$1,"STSC",MP4$1.box(MP4$1.types.stsc,MP4$1.StblTable)),_defineProperty$2(MP4$1,"STSZ",MP4$1.box(MP4$1.types.stsz,new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0]))),_defineProperty$2(MP4$1,"STCO",MP4$1.box(MP4$1.types.stco,MP4$1.StblTable));var Logger$1=function(){function e(t,r){_classCallCheck$3(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]"),e.disabled=r}return _createClass$3(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).debug.apply(t,[this._prefix].concat(n))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).log.apply(t,[this._prefix].concat(n))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).warn.apply(t,[this._prefix].concat(n))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).error.apply(t,[this._prefix].concat(n))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();_defineProperty$2(Logger$1,"disabled",!0);var FMP4Remuxer=function(){function e(t,r,n){_classCallCheck$3(this,e),this.videoTrack=t,this.audioTrack=r;var i=/Chrome\/([^.]+)/.exec(navigator.userAgent);this.forceFirstIDR=i&&Number(i[1])<50,this.log=new Logger$1("FMP4Remuxer",!n||!n.openLog||!n.openLog)}return _createClass$3(e,[{key:"remux",value:function(){var e,t,r,n,i,o=arguments.length>0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},s=this.videoTrack,c=this.audioTrack,u=s.exist(),l=c.exist(),d=[];return o&&(a&&a.initMerge?(u&&d.push(this.videoTrack),l&&d.push(this.audioTrack),r=MP4$1.initSegment(d)):(u&&(e=MP4$1.initSegment([this.videoTrack])),l&&(t=MP4$1.initSegment([this.audioTrack])))),u&&s.hasSample()&&(n=this._remuxVideo()),l&&c.hasSample()&&(i=this._remuxAudio()),s.samples=[],c.samples=[],{initSegment:r,videoInitSegment:e,audioInitSegment:t,videoSegment:n,audioSegment:i}}},{key:"_remuxVideo",value:function(){var e=this.videoTrack;this.forceFirstIDR&&(e.samples[0].flag={dependsOn:2,isNonSyncSample:0});var t=e.samples,r=0;t.forEach((function(e){r+=e.units.reduce((function(e,t){return e+t.byteLength}),0),r+=4*e.units.length}));for(var n,i=new Uint8Array(r),o=new DataView(i.buffer),a=function(e,r,a,s){s=t[e];var c=0;s.units.forEach((function(e){o.setUint32(a,e.byteLength),a+=4,i.set(e,a),a+=e.byteLength,c+=4+e.byteLength})),s.size=c,u=a,n=s},s=0,c=t.length,u=0;s<c;s++)a(s,0,u,n);var l=MP4$1.mdat(i);return e.isVideoEncryption||e.isAudioEncryption?concatUint8Array$1(MP4$1.styp(),MP4$1.sidx(e),MP4$1.moof([e]),l):concatUint8Array$1(MP4$1.moof([e]),l)}},{key:"_remuxAudio",value:function(){var e=this.audioTrack,t=new Uint8Array(e.samples.reduce((function(e,t){return e+t.size}),0));e.samples.reduce((function(e,r){return t.set(r.data,e),e+r.size}),0);var r=MP4$1.mdat(t);return e.isVideoEncryption||e.isAudioEncryption?concatUint8Array$1(MP4$1.styp(),MP4$1.sidx(e),MP4$1.moof([e]),r):concatUint8Array$1(MP4$1.moof([e]),r)}},{key:"reset",value:function(){this.videoTrack.reset(),this.audioTrack.reset()}}]),e}(),Crypto={decryptWordArray:function(e,t,r){var n=Hex.parse(t),i=Hex.parse(formatIV(r)),o=WordArray.create(new Uint8Array(e)),a=AES.decrypt(CipherParams.create({ciphertext:o}),n,{iv:i,mode:CTR,padding:NoPadding});return Crypto.wordArrayToUint8Array(a)},wordArrayToUint8Array:function(e){for(var t=e.sigBytes,r=e.words,n=new Uint8Array(t),i=0,o=0;i!==t;){var a=r[o++];if(n[i++]=(4278190080&a)>>>24,i===t)break;if(n[i++]=(16711680&a)>>>16,i===t)break;if(n[i++]=(65280&a)>>>8,i===t)break;n[i++]=255&a}return n}},NEW_ARRAY_MAX_CNT=20,MP4Demuxer=function(){function e(t,r,n,i){var o=this;_classCallCheck$3(this,e),_defineProperty$2(this,"_videoSamples",[]),_defineProperty$2(this,"_audioSamples",[]),_defineProperty$2(this,"_lastRemainBuffer",[]),_defineProperty$2(this,"_lastRemainBufferStartPos",0),this.videoTrack=new VideoTrack,this.audioTrack=new AudioTrack,this.metadataTrack=n||new MetadataTrack,this.log=new Logger$1("MP4Demuxer",!i||!i.openLog||!i.openLog),t&&t.forEach((function(e){var t;(t=o._videoSamples).push.apply(t,_toConsumableArray$2(e.frames))})),r&&r.forEach((function(e){var t;(t=o._audioSamples).push.apply(t,_toConsumableArray$2(e.frames))}))}return _createClass$3(e,[{key:"parseSamples",value:function(e){if(!e)throw new Error("moov is required");if(this.videoTrack.codec||this.audioTrack.codec||(MP4Parser.moovToTrack(e,this.videoTrack,this.audioTrack),this.videoSenc=this.videoTrack.videoSenc,this.audioSenc=this.audioTrack.audioSenc),!this._audioSamples.length&&!this._videoSamples.length){var t=MP4Parser.moovToSamples(e);if(!t)throw new Error("cannot parse samples from moov box");this._videoSamples=t.videoSamples||[],this._audioSamples=t.audioSamples||[]}}},{key:"demux",value:function(e,t,r,n,i){this.parseSamples(i);var o,a,s,c=this.videoTrack,u=this.audioTrack;if(c.samples=[],u.samples=[],r){for(var l,d=0,h=r[0],f=r[1];h<=f;h++){if(!(o=this._videoSamples[h]))throw new Error("cannot found video frame #".concat(h));s=o.offset-t,a=e.subarray(s,s+o.size),(l=new VideoSample(o.pts||o.dts,o.dts)).duration=o.duration,l.gopId=o.gopId,o.keyframe&&l.setToKeyframe();for(var p=0,y=a.length-1;p<y;)d=readBig32(a,p),p+=4,l.units.push(a.subarray(p,p+d)),p+=d;c.samples.push(l)}c.baseMediaDecodeTime=c.samples[0].dts}if(n){for(var m=n[0],g=n[1];m<=g;m++){if(!(o=this._audioSamples[m]))throw new Error("cannot found video frame #".concat(m));s=o.offset-t,a=e.subarray(s,s+o.size),u.samples.push(new AudioSample(o.dts,a,o.duration))}u.baseMediaDecodeTime=u.samples[0].dts}return{videoTrack:c,audioTrack:u,metadataTrack:this.metadataTrack}}},{key:"demuxPart",value:function(e,t,r,n,i,o,a){if(this.parseSamples(i),this.videoTrack.useEME=o,this.audioTrack.useEME=o,this._lastRemainBuffer&&this._lastRemainBuffer.byteLength>0&&t>this._lastRemainBufferStartPos&&t<=this._lastRemainBufferStartPos+this._lastRemainBuffer.byteLength)for(var s=0;s<NEW_ARRAY_MAX_CNT;)try{var c=this._lastRemainBuffer.subarray(0,t-this._lastRemainBufferStartPos),u=new Uint8Array(e.byteLength+c.byteLength);u.set(c,0),u.set(new Uint8Array(e),c.byteLength),e=u,t-=c.byteLength,this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0;break}catch(e){if(!(s<NEW_ARRAY_MAX_CNT))throw new Error("new Uint8Array error:,"+e.errorMessage);s++}var l,d,h,f=this.videoTrack,p=this.audioTrack;f.samples=[],p.samples=[],f.videoSenc=null,p.audioSenc=null;var y=0,m=0;if(this._videoSamples.length>0&&r.length>0){for(var g,v=e.byteLength+t,b=r[0];b<=r[1];b++){if(!(l=this._videoSamples[b]))throw new Error("cannot found video frame #".concat(b));l.offset>=t&&l.offset+l.size<=v&&(y=(h=l.offset-t)+l.size,d=e.subarray(h,y),(g=new VideoSample(l.pts||l.dts,l.dts)).duration=l.duration,g.gopId=l.gopId,g.sampleOffset=l.index,l.keyframe&&g.setToKeyframe(),g.data=d,g.size=l.size,f.samples.push(g))}f.samples.length>0&&(f.gopId=f.samples[0].gopId,f.baseMediaDecodeTime=f.samples[0].dts,f.startPts=f.samples[0].pts/f.timescale,f.endPts=f.samples[f.samples.length-1].pts/f.timescale,this.videoSenc&&(f.videoSenc=this.videoSenc.slice(f.samples[0].sampleOffset,f.samples[0].sampleOffset+f.samples.length),f.kidValue=a))}if(this._audioSamples.length>0&&n.length>0){for(var _=n[0];_<=n[1];_++){if(!(l=this._audioSamples[_]))throw new Error("cannot found video frame #".concat(_));l.offset>=t&&l.offset+l.size<=e.byteLength+t&&(m=(h=l.offset-t)+l.size,d=e.subarray(h,m),p.samples.push(new AudioSample(l.dts,d,l.duration,l.index)))}p.samples.length>0&&(p.gopId=p.samples[0].gopId||f.gopId,p.baseMediaDecodeTime=p.samples[0].dts,p.startPts=p.samples[0].pts/p.timescale,p.endPts=p.samples[p.samples.length-1].pts/p.timescale,this.audioSenc&&(p.audioSenc=this.audioSenc.slice(p.samples[0].sampleOffset,p.samples[0].sampleOffset+p.samples.length),p.kidValue=a))}this.decoderData(f,p);for(var $=0,A=0;A<f.samples.length;A++)for(var E=0,T=f.samples[A].data,S=T.length-1;E<S;)$=readBig32(T,E),E+=4,f.samples[A].units.push(T.subarray(E,E+$)),E+=$;return this._lastRemainBuffer=e.subarray(Math.max(y,m)),this._lastRemainBuffer.byteLength>0?this._lastRemainBufferStartPos=t+e.byteLength-this._lastRemainBuffer.byteLength:this._lastRemainBufferStartPos=0,{videoTrack:f,audioTrack:p,metadataTrack:this.metadataTrack}}},{key:"reset",value:function(){this._videoSamples=[],this._audioSamples=[],this._lastRemainBuffer=null,this._lastRemainBufferStartPos=0,this.videoTrack.reset(),this.audioTrack.reset(),this.metadataTrack.reset()}},{key:"decoderData",value:function(e,t){if(!e.useEME&&!t.useEME){if(e.videoSenc&&1===e.id){var r=e.kidValue,n=e.videoSenc;e.samples.forEach((function(t,i){var o=n[i],a=t.data,s=[],c=[],u=o.InitializationVector;if(o.subsamples&&o.subsamples.length)o.subsamples.forEach((function(e){var t=e.BytesOfClearData+e.BytesOfProtectedData,r=a.slice(0,t);s.push(r.slice(0,e.BytesOfClearData)),c.push(r.slice(e.BytesOfClearData)),a=a.slice(t)}));else{var l=t.size;s.push(a.slice(0,0)),c.push(a.slice(0,l)),a=a.slice(l)}var d=new Buffer2;d.write.apply(d,c);var h=Crypto.decryptWordArray(d.buffer,r,u),f=new Buffer2;s.forEach((function(e,t){var r=c[t].length,n=h.slice(0,r);f.write(e),f.write(n),h=h.slice(r)})),e.samples[i].data=f.buffer}))}if(t.audioSenc&&2===t.id){var i=t.kidValue,o=t.audioSenc;t.samples.forEach((function(e,r){var n=o[r],a=Crypto.decryptWordArray(e.data,i,n.InitializationVector);t.samples[r].data=a}))}}}}],[{key:"probe",value:function(e){return MP4Parser.probe(e)}}]),e}(),version="3.0.0-alpha.36-3",ERROR_CODES={416:-499899,401:-499898,403:-499897,404:-499896,timeout:-499895,"4xx":-499894,"5xx":-499893,networkError:-499892,contentError:-499891,mse:-499971,mseOpen:-499972,mseAppend:-499973,boxsError:-499980,moovError:-499981,notH264:-499982,mdatError:-499983,mdhdError:-499984,metaError:-499985,muxError:-499986,h265Error:-499987,noneURL:-499988,other:-499989,other1:-499990,waitTimeout:-499791,onWaitInBufferRange:-499792},ERROR_TYPES={network:1003,format:1005,runtime:1002,other:9999,demux:1006,remux:1007};function getErrorCodeByHttpCode(e){var t=0;switch(e){case 0:t=0;break;case-1:t=ERROR_CODES.networkError;break;case-2:t=ERROR_CODES.timeout;break;case-3:t=ERROR_CODES.contentError;break;default:t=e<500?ERROR_CODES[e]||e["4xx"]:ERROR_CODES[e]||e["5xx"]}return t}var NetWorkError=_createClass$6((function e(t,r,n){_classCallCheck$6(this,e);var i=0,o=0;n&&n.range&&n.range.length>1&&(i=n.range[0],o=n.range[1]);var a=getErrorCodeByHttpCode(r);return{errorCode:a,errorType:t,errorTypeCode:ERROR_TYPES[t],errorMessage:(null==n?void 0:n.httpText)||(null==n?void 0:n.message),url:null==n?void 0:n.url,httpCode:r,version:version,rangeStart:i,rangeEnd:o,ext:n,mediaError:{code:a,message:(null==n?void 0:n.httpText)||(null==n?void 0:n.message)}}})),ParserError=_createClass$6((function e(t,r,n){return _classCallCheck$6(this,e),{errorCode:r,errorType:t,errorTypeCode:ERROR_TYPES[t],version:version,errorMessage:n.msg,ext:n,mediaError:{code:r,message:n.msg}}})),$$s=_export$2,isArray$1=isArray$k;$$s({target:"Array",stat:!0},{isArray:isArray$1});var call$4=functionCall$2,fixRegExpWellKnownSymbolLogic$1=fixRegexpWellKnownSymbolLogic,anObject$4=anObject$N,isNullOrUndefined$3=isNullOrUndefined$m,toLength$2=toLength$k,toString$a=toString$E,requireObjectCoercible$3=requireObjectCoercible$m,getMethod$1=getMethod$e,advanceStringIndex$1=advanceStringIndex$3,regExpExec=regexpExecAbstract;fixRegExpWellKnownSymbolLogic$1("match",(function(e,t,r){return[function(t){var r=requireObjectCoercible$3(this),n=isNullOrUndefined$3(t)?void 0:getMethod$1(t,e);return n?call$4(n,t,r):new RegExp(t)[e](toString$a(r))},function(e){var n=anObject$4(this),i=toString$a(e),o=r(t,n,i);if(o.done)return o.value;if(!n.global)return regExpExec(n,i);var a=n.unicode;n.lastIndex=0;for(var s,c=[],u=0;null!==(s=regExpExec(n,i));){var l=toString$a(s[0]);c[u]=l,""===l&&(n.lastIndex=advanceStringIndex$1(i,toLength$2(n.lastIndex),a)),u++}return 0===u?null:c}]}));var util={};function ownKeys$1(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2$1(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys$1(Object(r),!0).forEach((function(t){_defineProperty$1(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys$1(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime$1(){_regeneratorRuntime$1=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function asyncGeneratorStep$1(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator$1(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep$1(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep$1(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$2(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$2(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$2(e,t,r){return t&&_defineProperties$2(e.prototype,t),r&&_defineProperties$2(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty$1(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$2(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$2(e,t)}function _getPrototypeOf$2(e){return(_getPrototypeOf$2=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$2(e,t){return(_setPrototypeOf$2=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$2(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _objectWithoutPropertiesLoose$1(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}function _objectWithoutProperties$1(e,t){if(null==e)return{};var r,n,i=_objectWithoutPropertiesLoose$1(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function _assertThisInitialized$2(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$2(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$2(e)}function _createSuper$2(e){var t=_isNativeReflectConstruct$2();return function(){var r,n=_getPrototypeOf$2(e);if(t){var i=_getPrototypeOf$2(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$2(this,r)}}function _slicedToArray(e,t){return _arrayWithHoles(e)||_iterableToArrayLimit(e,t)||_unsupportedIterableToArray$2(e,t)||_nonIterableRest()}function _toConsumableArray$1(e){return _arrayWithoutHoles$1(e)||_iterableToArray$1(e)||_unsupportedIterableToArray$2(e)||_nonIterableSpread$1()}function _arrayWithoutHoles$1(e){if(Array.isArray(e))return _arrayLikeToArray$2(e)}function _arrayWithHoles(e){if(Array.isArray(e))return e}function _iterableToArray$1(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _iterableToArrayLimit(e,t){var r=null==e?null:"undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=r){var n,i,o=[],a=!0,s=!1;try{for(r=r.call(e);!(a=(n=r.next()).done)&&(o.push(n.value),!t||o.length!==t);a=!0);}catch(e){s=!0,i=e}finally{try{a||null==r.return||r.return()}finally{if(s)throw i}}return o}}function _unsupportedIterableToArray$2(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$2(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$2(e,t):void 0}}function _arrayLikeToArray$2(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _nonIterableSpread$1(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ownKeys3(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys3(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys3(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _regeneratorRuntime(){_regeneratorRuntime=function(){return e};var e={},t=Object.prototype,r=t.hasOwnProperty,n=Object.defineProperty||function(e,t,r){e[t]=r.value},i="function"==typeof Symbol?Symbol:{},o=i.iterator||"@@iterator",a=i.asyncIterator||"@@asyncIterator",s=i.toStringTag||"@@toStringTag";function c(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{c({},"")}catch(e){c=function(e,t,r){return e[t]=r}}function u(e,t,r,i){var o=t&&t.prototype instanceof h?t:h,a=Object.create(o.prototype),s=new S(i||[]);return n(a,"_invoke",{value:$(e,r,s)}),a}function l(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=u;var d={};function h(){}function f(){}function p(){}var y={};c(y,o,(function(){return this}));var m=Object.getPrototypeOf,g=m&&m(m(I([])));g&&g!==t&&r.call(g,o)&&(y=g);var v=p.prototype=h.prototype=Object.create(y);function b(e){["next","throw","return"].forEach((function(t){c(e,t,(function(e){return this._invoke(t,e)}))}))}function _(e,t){function i(n,o,a,s){var c=l(e[n],e,o);if("throw"!==c.type){var u=c.arg,d=u.value;return d&&"object"==typeof d&&r.call(d,"__await")?t.resolve(d.__await).then((function(e){i("next",e,a,s)}),(function(e){i("throw",e,a,s)})):t.resolve(d).then((function(e){u.value=e,a(u)}),(function(e){return i("throw",e,a,s)}))}s(c.arg)}var o;n(this,"_invoke",{value:function(e,r){function n(){return new t((function(t,n){i(e,r,t,n)}))}return o=o?o.then(n,n):n()}})}function $(e,t,r){var n="suspendedStart";return function(i,o){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===i)throw o;return{value:void 0,done:!0}}for(r.method=i,r.arg=o;;){var a=r.delegate;if(a){var s=A(a,r);if(s){if(s===d)continue;return s}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var c=l(e,t,r);if("normal"===c.type){if(n=r.done?"completed":"suspendedYield",c.arg===d)continue;return{value:c.arg,done:r.done}}"throw"===c.type&&(n="completed",r.method="throw",r.arg=c.arg)}}}function A(e,t){var r=e.iterator[t.method];if(void 0===r){if(t.delegate=null,"throw"===t.method){if(e.iterator.return&&(t.method="return",t.arg=void 0,A(e,t),"throw"===t.method))return d;t.method="throw",t.arg=new TypeError("The iterator does not provide a 'throw' method")}return d}var n=l(r,e.iterator,t.arg);if("throw"===n.type)return t.method="throw",t.arg=n.arg,t.delegate=null,d;var i=n.arg;return i?i.done?(t[e.resultName]=i.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,d):i:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,d)}function E(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function T(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(E,this),this.reset(!0)}function I(e){if(e){var t=e[o];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n<e.length;)if(r.call(e,n))return t.value=e[n],t.done=!1,t;return t.value=void 0,t.done=!0,t};return i.next=i}}return{next:w}}function w(){return{value:void 0,done:!0}}return f.prototype=p,n(v,"constructor",{value:p,configurable:!0}),n(p,"constructor",{value:f,configurable:!0}),f.displayName=c(p,s,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===f||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,p):(e.__proto__=p,c(e,s,"GeneratorFunction")),e.prototype=Object.create(v),e},e.awrap=function(e){return{__await:e}},b(_.prototype),c(_.prototype,a,(function(){return this})),e.AsyncIterator=_,e.async=function(t,r,n,i,o){void 0===o&&(o=Promise);var a=new _(u(t,r,n,i),o);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},b(v),c(v,s,"Generator"),c(v,o,(function(){return this})),c(v,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=Object(e),r=[];for(var n in t)r.push(n);return r.reverse(),function e(){for(;r.length;){var n=r.pop();if(n in t)return e.value=n,e.done=!1,e}return e.done=!0,e}},e.values=I,S.prototype={constructor:S,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(T),!e)for(var t in this)"t"===t.charAt(0)&&r.call(this,t)&&!isNaN(+t.slice(1))&&(this[t]=void 0)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var t=this;function n(r,n){return a.type="throw",a.arg=e,t.next=r,n&&(t.method="next",t.arg=void 0),!!n}for(var i=this.tryEntries.length-1;i>=0;--i){var o=this.tryEntries[i],a=o.completion;if("root"===o.tryLoc)return n("end");if(o.tryLoc<=this.prev){var s=r.call(o,"catchLoc"),c=r.call(o,"finallyLoc");if(s&&c){if(this.prev<o.catchLoc)return n(o.catchLoc,!0);if(this.prev<o.finallyLoc)return n(o.finallyLoc)}else if(s){if(this.prev<o.catchLoc)return n(o.catchLoc,!0)}else{if(!c)throw new Error("try statement without catch or finally");if(this.prev<o.finallyLoc)return n(o.finallyLoc)}}}},abrupt:function(e,t){for(var n=this.tryEntries.length-1;n>=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&r.call(i,"finallyLoc")&&this.prev<i.finallyLoc){var o=i;break}}o&&("break"===e||"continue"===e)&&o.tryLoc<=t&&t<=o.finallyLoc&&(o=null);var a=o?o.completion:{};return a.type=e,a.arg=t,o?(this.method="next",this.next=o.finallyLoc,d):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),d},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),T(r),d}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var i=n.arg;T(r)}return i}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,r){return this.delegate={iterator:I(e),resultName:t,nextLoc:r},"next"===this.method&&(this.arg=void 0),d}},e}function _typeof$2(e){return(_typeof$2="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function asyncGeneratorStep(e,t,r,n,i,o,a){try{var s=e[o](a),c=s.value}catch(e){return void r(e)}s.done?t(c):Promise.resolve(c).then(n,i)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,i){var o=e.apply(t,r);function a(e){asyncGeneratorStep(o,n,i,a,s,"next",e)}function s(e){asyncGeneratorStep(o,n,i,a,s,"throw",e)}a(void 0)}))}}function _classCallCheck$1(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties$1(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass$1(e,t,r){return t&&_defineProperties$1(e.prototype,t),r&&_defineProperties$1(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function _inherits$1(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf$1(e,t)}function _getPrototypeOf$1(e){return(_getPrototypeOf$1=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function _setPrototypeOf$1(e,t){return(_setPrototypeOf$1=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _isNativeReflectConstruct$1(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}function _construct(e,t,r){return(_construct=_isNativeReflectConstruct$1()?Reflect.construct.bind():function(e,t,r){var n=[null];n.push.apply(n,t);var i=new(Function.bind.apply(e,n));return r&&_setPrototypeOf$1(i,r.prototype),i}).apply(null,arguments)}function _isNativeFunction(e){return-1!==Function.toString.call(e).indexOf("[native code]")}function _wrapNativeSuper(e){var t="function"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(e){if(null===e||!_isNativeFunction(e))return e;if("function"!=typeof e)throw new TypeError("Super expression must either be null or a function");if(void 0!==t){if(t.has(e))return t.get(e);t.set(e,r)}function r(){return _construct(e,arguments,_getPrototypeOf$1(this).constructor)}return r.prototype=Object.create(e.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),_setPrototypeOf$1(r,e)},_wrapNativeSuper(e)}function _objectWithoutPropertiesLoose(e,t){if(null==e)return{};var r,n,i={},o=Object.keys(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||(i[r]=e[r]);return i}function _objectWithoutProperties(e,t){if(null==e)return{};var r,n,i=_objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(n=0;n<o.length;n++)r=o[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}function _assertThisInitialized$1(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _possibleConstructorReturn$1(e,t){if(t&&("object"==typeof t||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized$1(e)}function _createSuper$1(e){var t=_isNativeReflectConstruct$1();return function(){var r,n=_getPrototypeOf$1(e);if(t){var i=_getPrototypeOf$1(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn$1(this,r)}}function _superPropBase(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=_getPrototypeOf$1(e)););return e}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var n=_superPropBase(e,t);if(n){var i=Object.getOwnPropertyDescriptor(n,t);return i.get?i.get.call(arguments.length<3?e:r):i.value}},_get.apply(this,arguments)}function _unsupportedIterableToArray$1(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray$1(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray$1(e,t):void 0}}function _arrayLikeToArray$1(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _createForOfIteratorHelper(e,t){var r="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!r){if(Array.isArray(e)||(r=_unsupportedIterableToArray$1(e))||t&&e&&"number"==typeof e.length){r&&(e=r);var n=0,i=function(){};return{s:i,n:function(){return n>=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(e){throw e},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,s=!1;return{s:function(){r=r.call(e)},n:function(){var e=r.next();return a=e.done,e},e:function(e){s=!0,o=e},f:function(){try{a||null==r.return||r.return()}finally{if(s)throw o}}}}function createPublicPromise(){var e,t,r=new Promise((function(r,n){e=r,t=n}));return r.used=!1,r.resolve=function(){return r.used=!0,e.apply(void 0,arguments)},r.reject=function(){return r.used=!0,t.apply(void 0,arguments)},r}function nowTime(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}}util.findBox=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[];if(e.type!==t){if(e&&e.subBox){var n=e.subBox.filter((function(e){return e.type===t}));n.length?n.forEach((function(e){return r.push(e)})):e.subBox.forEach((function(e){return util.findBox(e,t,r)}))}}else r.push(e);return(r=[].concat(r)).length>1?r:r[0]},util.padStart=function(e,t,r){for(var n=String(r),i=t>>0,o=Math.ceil(i/n.length),a=[],s=String(e);o--;)a.push(n);return a.join("").substring(0,i-s.length)+s},util.toHex=function(){for(var e=[],t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e.push(util.padStart(Number(t).toString(16),2,0))})),e},util.sum=function(){for(var e=0,t=arguments.length,r=new Array(t),n=0;n<t;n++)r[n]=arguments[n];return r.forEach((function(t){e+=t})),e},util.StringToArrayBuffer=function(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n<e.length;n++)r[n]=e.charCodeAt(n);return t},util.fromHex=function(e){for(var t=new Uint8Array(e.length/2),r=0;r<e.length;r+=2)t[r/2]=window.parseInt(e.substr(r,2),16);return t},util.fromCharCode=function(e){for(var t="",r=0;r<e.length;r+=16e3){var n=e.subarray(r,r+16e3);t+=String.fromCharCode.apply(null,n)}return t},util.ArrayBufferToString=function(e){for(var t="",r=new Uint8Array(e),n=0;n<r.length;n++)t+=String.fromCharCode(r[n]);return t},util.Base64ToHex=function(e){for(var t=window.atob(e.replace(/-/g,"+").replace(/_/g,"/")),r="",n=0;n<t.length;n++)r+=("0"+t.charCodeAt(n).toString(16)).substr(-2);return r},util.toBase64=function(e,t){var r=util.fromCharCode(e);t=void 0===t||t;var n=window.btoa(r).replace(/\+/g,"-").replace(/\//g,"_");return t?n:n.replace(/=*$/,"")},util.toUTF8=function(e){for(var t=encodeURIComponent(e),r=unescape(t),n=new Uint8Array(r.length),i=0;i<r.length;++i)n[i]=r.charCodeAt(i);return n.buffer},util.bufferToString=function(e){return("0"+Number(e).toString(16)).slice(-2).toUpperCase()},util.strToBuf=function(e){for(var t=[],r=0;r<e.length;r+=2)t.push(parseInt(e[r]+e[r+1],16));return new Uint8Array(t)},util.formatIV=function(e){var t="";if(e.forEach((function(e){t+=util.bufferToString(e)})),t.length<=32)for(var r=32-t.length,n=0;n<r;n++)t+="0";return t},util.str2hex=function(e){if(""===e)return"";for(var t=[],r=0;r<e.length;r++)t.push(e.charCodeAt(r));return t},util.parse=function(e){if(!Array.isArray(e)){for(var t=[],r="",n=0;n<e.length;n++)n%2&&(r=e[n-1]+e[n],t.push(parseInt(r,16)),r="");return t}return e.map((function(e){return parseInt(e,16)}))},util.generateUniqueKey=function(e){var t=e.vid;e.start,e.end;var r=e.mediaType,n=e.definition;return e.preloadTime,r=r||"video",n=n||"0",t?"".concat(t,"#").concat(r,"#").concat(n,"#mp4"):null},util.validateFragment=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];if(e instanceof ArrayBuffer){try{if(2===t.length){var r=t[1]-t[0]+1;if(!(e.byteLength===r))return}}catch(e){return console.error(e),!1}return!0}return!1},util.typeOf=function(e){return Object.prototype.toString.call(e).match(/([^\s.*]+)(?=]$)/g)[0]},util.getBufferSplits=function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:5e5;if(t-e-r<r/2||!t)return[[e,t]];for(var n=[];e<t;){var i=e+r;(i>t||t-i<r/2)&&(i=t),n.push([e,i]),e=i+1}return n},util.nowTime=function(){try{return parseInt(performance.now(),10)}catch(e){return(new Date).getTime()}},util.extUrl=function(e,t){try{var r=e.indexOf("?");return r<0?Object.keys(t).map((function(r,n){e+=0===n?"?".concat(r,"=").concat(t[r]):"&".concat(r,"=").concat(t[r])})):Object.keys(t).map((function(n,i){r===e.length-1?e+="".concat(n,"=").concat(t[n]):e+="&".concat(n,"=").concat(t[n])})),e}catch(t){return e}},util.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(e){return 0}},util.hashVal=function(e){var t,r=0;if(0===e.length)return r;for(t=0;t<e.length;t++)r=(r<<5)-r+e.charCodeAt(t),r|=0;return r},util.getFileSize=function(e,t){try{return e&&t?parseInt(t*e/8,10):0}catch(e){return 0}},util.concatData=function(e,t){var r=[],n=0;e&&r.push(e),t&&r.push(t),r.every((function(e){return e&&(n+=e.byteLength),!0}));var i=new Uint8Array(n),o=0;return r.every((function(e){return e&&(i.set(e,o),o+=e.byteLength),!0})),i},util.getFragRange=function(e,t,r){var n=e<t.length?t[e]:null,i=e<r.length?r[e]:null,o=0,a=0;return e===t.length-1&&(o=-1),e===r.length-1&&(a=-1),[Math.min((null==n?void 0:n.range[0])||1/0,(null==i?void 0:i.range[0])||1/0),Math.max((null==n?void 0:n.range[1])+o||0,(null==i?void 0:i.range[1])+a||0)]};var Logger=function(){function e(t){_classCallCheck$1(this,e),this.name=t||"",this._prefix="[".concat(this.name,"]")}return _createClass$1(e,[{key:"debug",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).debug.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"log",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).log.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"warn",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).warn.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"error",value:function(){var t;if(!e.disabled){for(var r=arguments.length,n=new Array(r),i=0;i<r;i++)n[i]=arguments[i];(t=console).error.apply(t,[this._prefix,nowTime()].concat(n))}}},{key:"table",value:function(){var t;e.disabled||(console.group(this._prefix),(t=console).table.apply(t,arguments),console.groupEnd())}}],[{key:"enable",value:function(){e.disabled=!1}},{key:"disable",value:function(){e.disabled=!0}}]),e}();_defineProperty(Logger,"disabled",!0);var LoaderType={FETCH:"fetch",XHR:"xhr"},ResponseType={ARRAY_BUFFER:"arraybuffer",TEXT:"text",JSON:"json"},NetError=function(e){_inherits$1(r,_wrapNativeSuper(Error));var t=_createSuper$1(r);function r(e,n,i,o){var a;return _classCallCheck$1(this,r),_defineProperty(_assertThisInitialized$1(a=t.call(this,o)),"retryCount",0),_defineProperty(_assertThisInitialized$1(a),"isTimeout",!1),_defineProperty(_assertThisInitialized$1(a),"loaderType",LoaderType.FETCH),_defineProperty(_assertThisInitialized$1(a),"startTime",0),_defineProperty(_assertThisInitialized$1(a),"endTime",0),a.url=e,a.request=n,a.response=i,a}return _createClass$1(r)}(),toString$9=Object.prototype.toString;function isObject$8(e){return null!==e&&"object"===_typeof$2(e)}function isPlainObject(e){if("[object Object]"!==toString$9.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function isDate(e){return"[object Date]"===toString$9.call(e)}function getRangeValue(e){if(e&&null!==e[0]&&void 0!==e[0]&&(0!==e[0]||null!==e[1]&&void 0!==e[1])){var t="bytes="+e[0]+"-";return e[1]&&(t+=e[1]),t}}function encode(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function setUrlParams(e,t){if(e){if(!t)return e;var r,n=Object.keys(t).map((function(e){if(null!=(r=t[e]))return Array.isArray(r)?e+="[]":r=[r],r.map((function(t){return isDate(t)?t=t.toISOString():isObject$8(t)&&(t=JSON.stringify(t)),"".concat(encode(e),"=").concat(encode(t))})).join("&")})).filter(Boolean).join("&");if(n){var i=e.indexOf("#");-1!==i&&(e=e.slice(0,i)),e+=(-1===e.indexOf("?")?"?":"&")+n}return e}}function createResponse(e,t,r,n,i,o,a,s,c,u,l){return i=null!=i?parseFloat(i):null,n=parseInt(n||"0",10),Number.isNaN(n)&&(n=0),{data:e,done:t,option:{range:c,vid:u,index:s,contentLength:n,age:i,startTime:o,firstByteTime:a,endTime:Date.now(),priOptions:l},response:r}}function calculateSpeed(e,t){return Math.round(8*e*1e3/t/1024)}var EVENT={ERROR:"error",TTFB:"core.ttfb",LOAD_START:"core.loadstart",LOAD_RESPONSE_HEADERS:"core.loadresponseheaders",LOAD_COMPLETE:"core.loadcomplete",LOAD_RETRY:"core.loadretry",SOURCEBUFFER_CREATED:"core.sourcebuffercreated",ANALYZE_DURATION_EXCEEDED:"core.analyzedurationexceeded",REMOVE_BUFFER:"core.removebuffer",BUFFEREOS:"core.buffereos",KEYFRAME:"core.keyframe",METADATA_PARSED:"core.metadataparsed",SEI:"core.sei",SEI_IN_TIME:"core.seiintime",FLV_SCRIPT_DATA:"core.flvscriptdata",LOWDECODE:"core.lowdecode",SWITCH_URL_SUCCESS:"core.switchurlsuccess",SWITCH_URL_FAILED:"core.switchurlfailed",SPEED:"core.speed",HLS_MANIFEST_LOADED:"core.hlsmanifestloaded",HLS_LEVEL_LOADED:"core.hlslevelloaded",STREAM_EXCEPTION:"core.streamexception",LARGE_AV_FIRST_FRAME_GAP_DETECT:"LARGE_AV_FIRST_FRAME_GAP_DETECT",LARGE_VIDEO_DTS_GAP_DETECT:"LARGE_VIDEO_DTS_GAP_DETECT",LARGE_AUDIO_DTS_GAP_DETECT:"LARGE_AUDIO_DTS_GAP_DETECT",AUDIO_GAP_DETECT:"AUDIO_GAP_DETECT",AUDIO_OVERLAP_DETECT:"AUDIO_OVERLAP_DETECT",MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT:"MAX_DTS_DELTA_WITH_NEXT_SEGMENT_DETECT",REAL_TIME_SPEED:"real_time_speed"},CACHESIZE=2097152,FetchLoader=function(e){_inherits$1(n,EventEmitter$1);var t,r=_createSuper$1(n);function n(){var e;return _classCallCheck$1(this,n),_defineProperty(_assertThisInitialized$1(e=r.call(this)),"_abortController",null),_defineProperty(_assertThisInitialized$1(e),"_timeoutTimer",null),_defineProperty(_assertThisInitialized$1(e),"_reader",null),_defineProperty(_assertThisInitialized$1(e),"_response",null),_defineProperty(_assertThisInitialized$1(e),"_aborted",!1),_defineProperty(_assertThisInitialized$1(e),"_index",-1),_defineProperty(_assertThisInitialized$1(e),"_range",null),_defineProperty(_assertThisInitialized$1(e),"_receivedLength",0),_defineProperty(_assertThisInitialized$1(e),"_running",!1),_defineProperty(_assertThisInitialized$1(e),"_logger",null),_defineProperty(_assertThisInitialized$1(e),"_vid",""),_defineProperty(_assertThisInitialized$1(e),"_onProcessMinLen",0),_defineProperty(_assertThisInitialized$1(e),"_onCancel",null),_defineProperty(_assertThisInitialized$1(e),"_priOptions",null),e}return _createClass$1(n,[{key:"load",value:function(e){var t,r=this,n=e.url,i=e.vid,o=e.timeout,a=e.responseType,s=e.onProgress,c=e.index,u=e.onTimeout,l=e.onCancel,d=e.range,h=e.transformResponse,f=e.request,p=e.params,y=e.logger,m=e.method,g=e.headers,v=e.body,b=e.mode,_=e.credentials,$=e.cache,A=e.redirect,E=e.referrer,T=e.referrerPolicy,S=e.onProcessMinLen,I=e.priOptions;this._logger=y,this._aborted=!1,this._onProcessMinLen=S,this._onCancel=l,this._abortController="undefined"!=typeof AbortController&&new AbortController,this._running=!0,this._index=c,this._range=d||[0,0],this._vid=i||n,this._priOptions=I||{};var w={method:m,headers:g,body:v,mode:b,credentials:_,cache:$,redirect:A,referrer:E,referrerPolicy:T,signal:null===(t=this._abortController)||void 0===t?void 0:t.signal},R=!1;clearTimeout(this._timeoutTimer),n=setUrlParams(n,p);var P=getRangeValue(d);P&&((g=f?f.headers:w.headers=w.headers||new Headers)instanceof Headers?g.append("Range",P):g.Range=P),o&&(this._timeoutTimer=setTimeout((function(){if(R=!0,r.cancel(),u){var e=new NetError(n,w,null,"timeout");e.isTimeout=!0,u(e,r._index)}}),o));var O=Date.now();return this._logger.debug("[fetch load start], index,",c,",range,",d),new Promise((function(e,t){fetch(f||n,f?void 0:w).then(function(){var i=_asyncToGenerator(_regeneratorRuntime().mark((function i(o){var u,l,f,p;return _regeneratorRuntime().wrap((function(i){for(;;)switch(i.prev=i.next){case 0:if(clearTimeout(r._timeoutTimer),r._response=o,!r._aborted&&r._running){i.next=4;break}return i.abrupt("return");case 4:if(h&&(o=h(o,n)||o),o.ok){i.next=7;break}throw new NetError(n,w,o,"bad network response");case 7:if(u=Date.now(),a!==ResponseType.TEXT){i.next=15;break}return i.next=11,o.text();case 11:l=i.sent,r._running=!1,i.next=37;break;case 15:if(a!==ResponseType.JSON){i.next=22;break}return i.next=18,o.json();case 18:l=i.sent,r._running=!1,i.next=37;break;case 22:if(!s){i.next=29;break}return r.resolve=e,r.reject=t,r._loadChunk(o,s,O,u),i.abrupt("return");case 29:return i.next=31,o.arrayBuffer();case 31:l=i.sent,l=new Uint8Array(l),r._running=!1,f=Date.now()-O,p=calculateSpeed(l.byteLength,f),r.emit(EVENT.REAL_TIME_SPEED,{speed:p});case 37:r._logger.debug("[fetch load end], index,",c,",range,",d),e(createResponse(l,!0,o,o.headers.get("Content-Length"),o.headers.get("age"),O,u,c,d,r._vid,r._priOptions));case 39:case"end":return i.stop()}}),i)})));return function(e){return i.apply(this,arguments)}}()).catch((function(e){clearTimeout(r._timeoutTimer),r._running=!1,r._aborted&&!R||((e=e instanceof NetError?e:new NetError(n,w,null,JSON.stringify(e))).startTime=O,e.endTime=Date.now(),e.isTimeout=R,t(e))}))}))}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._aborted){e.next=2;break}return e.abrupt("return");case 2:if(this._aborted=!0,this._running=!1,!this._response){e.next=14;break}if(e.prev=5,!this._reader){e.next=9;break}return e.next=9,this._reader.cancel();case 9:e.next=13;break;case 11:e.prev=11,e.t0=e.catch(5);case 13:this._response=this._reader=null;case 14:if(this._abortController){try{this._abortController.abort()}catch(e){}this._abortController=null}this._onCancel&&this._onCancel(this._index);case 16:case"end":return e.stop()}}),e,this,[[5,11]])}))),function(){return t.apply(this,arguments)})},{key:"_loadChunk",value:function(e,t,r,n){var i=this;if(!e.body||!e.body.getReader)return this._running=!1,void this.reject(NetError(e.url,"",e,"onProgress of bad response.body.getReader"));this._onProcessMinLen>0&&(this._cache=new Uint8Array(CACHESIZE),this._writeIdx=0);var o,a,s,c=this._reader=e.body.getReader(),u=function(){var l=_asyncToGenerator(_regeneratorRuntime().mark((function l(){var d,h,f,p,y,m;return _regeneratorRuntime().wrap((function(l){for(;;)switch(l.prev=l.next){case 0:return a=Date.now(),l.prev=1,l.next=4,c.read();case 4:o=l.sent,s=Date.now(),l.next=13;break;case 8:return l.prev=8,l.t0=l.catch(1),s=Date.now(),i._aborted||(i._running=!1,i.reject(l.t0)),l.abrupt("return");case 13:if(d=i._range[0]+i._receivedLength,!i._aborted){l.next=18;break}return i._running=!1,t(void 0,!1,{range:[d,d],vid:i._vid,index:i._index,startTime:a,endTime:s,priOptions:i._priOptions},e),l.abrupt("return");case 18:h=o.value?o.value.byteLength:0,i._receivedLength+=h,i._logger.debug("【fetchLoader,onProgress call】,task,",i._range,", start,",d,", end,",i._range[0]+i._receivedLength,", done,",o.done),i._onProcessMinLen>0?i._writeIdx+h>=i._onProcessMinLen||o.done?((f=new Uint8Array(i._writeIdx+h)).set(i._cache.slice(0,i._writeIdx),0),h>0&&f.set(o.value,i._writeIdx),i._writeIdx=0,i._logger.debug("【fetchLoader,onProgress enough】,done,",o.done,",len,",f.byteLength,", writeIdx,",i._writeIdx)):h>0&&i._writeIdx+h<CACHESIZE?(i._cache.set(o.value,i._writeIdx),i._writeIdx+=h,i._logger.debug("【fetchLoader,onProgress cache】,len,",h,", writeIdx,",i._writeIdx)):h>0&&(p=new Uint8Array(i._writeIdx+h+2048),i._logger.debug("【fetchLoader,onProgress extra start】,size,",i._writeIdx+h+2048,", datalen,",h,", writeIdx,",i._writeIdx),p.set(i._cache.slice(0,i._writeIdx),0),h>0&&p.set(o.value,i._writeIdx),i._writeIdx+=h,delete i._cache,i._cache=p,i._logger.debug("【fetchLoader,onProgress extra end】,len,",h,", writeIdx,",i._writeIdx)):f=o.value,(f&&f.byteLength>0||o.done)&&t(f,o.done,{range:[i._range[0]+i._receivedLength-(f?f.byteLength:0),i._range[0]+i._receivedLength],vid:i._vid,index:i._index,startTime:a,endTime:s,priOptions:i._priOptions},e),y=Date.now()-r,m=calculateSpeed(i._receivedLength,y),i.emit(EVENT.REAL_TIME_SPEED,{speed:m}),o.done?(i._running=!1,i._logger.debug("[fetchLoader onProgress end],task,",i._range,",done,",o.done),i.resolve(createResponse(o,!0,e,e.headers.get("Content-Length"),e.headers.get("age"),a,n,i._index,i._range,i._vid,i._priOptions))):u();case 27:case"end":return l.stop()}}),l,null,[[1,8]])})));return function(){return l.apply(this,arguments)}}();u()}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}}],[{key:"isSupported",value:function(){return!("undefined"==typeof fetch)}}]),n}();function getConfig$1(e){return _objectSpread2({loaderType:LoaderType.FETCH,retry:0,retryDelay:0,timeout:0,request:null,onTimeout:void 0,onProgress:void 0,onRetryError:void 0,transformRequest:void 0,transformResponse:void 0,transformError:void 0,responseType:ResponseType.TEXT,range:void 0,url:"",params:void 0,method:"GET",headers:{},body:void 0,mode:void 0,credentials:void 0,cache:void 0,redirect:void 0,referrer:void 0,referrerPolicy:void 0,integrity:void 0,onProcessMinLen:0},e)}var XhrLoader=function(e){_inherits$1(r,EventEmitter$1);var t=_createSuper$1(r);function r(){var e;return _classCallCheck$1(this,r),_defineProperty(_assertThisInitialized$1(e=t.call(this)),"_xhr",null),_defineProperty(_assertThisInitialized$1(e),"_aborted",!1),_defineProperty(_assertThisInitialized$1(e),"_timeoutTimer",null),_defineProperty(_assertThisInitialized$1(e),"_range",null),_defineProperty(_assertThisInitialized$1(e),"_receivedLength",0),_defineProperty(_assertThisInitialized$1(e),"_url",null),_defineProperty(_assertThisInitialized$1(e),"_onProgress",null),_defineProperty(_assertThisInitialized$1(e),"_index",-1),_defineProperty(_assertThisInitialized$1(e),"_headers",null),_defineProperty(_assertThisInitialized$1(e),"_currentChunkSizeKB",384),_defineProperty(_assertThisInitialized$1(e),"_timeout",null),_defineProperty(_assertThisInitialized$1(e),"_xhr",null),_defineProperty(_assertThisInitialized$1(e),"_withCredentials",null),_defineProperty(_assertThisInitialized$1(e),"_startTime",-1),_defineProperty(_assertThisInitialized$1(e),"_loadCompleteResolve",null),_defineProperty(_assertThisInitialized$1(e),"_loadCompleteReject",null),_defineProperty(_assertThisInitialized$1(e),"_runing",!1),_defineProperty(_assertThisInitialized$1(e),"_logger",!1),_defineProperty(_assertThisInitialized$1(e),"_vid",""),_defineProperty(_assertThisInitialized$1(e),"_responseType",void 0),_defineProperty(_assertThisInitialized$1(e),"_credentials",void 0),_defineProperty(_assertThisInitialized$1(e),"_method",void 0),_defineProperty(_assertThisInitialized$1(e),"_transformResponse",void 0),_defineProperty(_assertThisInitialized$1(e),"_firstRtt",void 0),_defineProperty(_assertThisInitialized$1(e),"_subRangeStartTime",void 0),_defineProperty(_assertThisInitialized$1(e),"_onCancel",null),_defineProperty(_assertThisInitialized$1(e),"_priOptions",null),e}return _createClass$1(r,[{key:"load",value:function(e){var t=this;clearTimeout(this._timeoutTimer),this._logger=e.logger,this._range=e.range||[0,0],this._onProgress=e.onProgress,this._index=e.index,this._headers=e.headers,this._withCredentials="include"===e.credentials||"same-origin"===e.credentials,this._timeout=e.timeout||null,this._runing=!0,this._vid=e.vid||e.url,this._responseType=e.responseType,this._firstRtt=-1,this._onTimeout=e.onTimeout,this._onCancel=e.onCancel,this._request=e.request,this._credentials=e.credentials,this._priOptions=e.priOptions||{},this._logger.debug("【xhrLoader task】, range",this._range),this._url=setUrlParams(e.url,e.params);var r=Date.now();return new Promise((function(e,r){t._loadCompleteResolve=e,t._loadCompleteReject=r,t._startLoad()})).catch((function(e){if(clearTimeout(t._timeoutTimer),t._runing=!1,!t._aborted)throw(e=e instanceof NetError?e:new NetError(t._url,t._request)).startTime=r,e.endTime=Date.now(),e}))}},{key:"_startLoad",value:function(){var e=null;if(this._range&&this._range.length>1)if(this._onProgress){this._subRangeStartTime=Date.now(),this._firstRtt=-1;var t=1024*this._currentChunkSizeKB,r=this._range[0]+this._receivedLength,n=this._range[1];t<this._range[1]-r&&(n=r+t),e=[r,n],this._logger.debug("[xhr_loader->],tast :",this._range,", SubRange, ",e)}else e=this._range,this._logger.debug("[xhr_loader->],tast :",this._range,", allRange, ",e);this._internalOpen(e)}},{key:"_internalOpen",value:function(e){var t=this;try{this._startTime=Date.now();var r=this._xhr=new XMLHttpRequest;r.open(this._method||"GET",this._url,!0),r.responseType=this._responseType,this._timeout&&(r.timeout=this._timeout),r.withCredentials=this._credentials,r.onload=this._onLoad.bind(this),r.onreadystatechange=this._onReadyStatechange.bind(this),r.onerror=function(e){t._running=!1;var r=new NetError(t._url,t._request,{status:0},"onerror");t._loadCompleteReject(r)},r.ontimeout=function(e){t.cancel();var r=new NetError(t._url,t._request,{status:408},"timeout");t._onTimeout&&(r.isTimeout=!0,t._onTimeout(r,t._index)),t._loadCompleteReject(r)};var n=getRangeValue(e),i=null;n&&((i=this._headers||{}).Range=n),i&&Object.keys(i).forEach((function(e){r.setRequestHeader(e,i[e])})),this._logger.debug("[xhr.send->] tast,",this._range,",load sub range, ",e),r.send()}catch(e){this._loadCompleteReject(e)}}},{key:"_onReadyStatechange",value:function(e){2===e.target.readyState&&this._firstRtt<0&&(this._firstRtt=Date.now())}},{key:"_onLoad",value:function(e){var t=e.target.status;if(t<200||t>299)return this._loadCompleteReject(new NetError(this._url,null,_objectSpread2(_objectSpread2({},e.target.response),{},{status:t}),"bad response,status:"+t));var r,n=null,i=!1;if(this._responseType===ResponseType.ARRAY_BUFFER){var o=new Uint8Array(e.target.response);if(r=this._range[0]+this._receivedLength,o&&o.byteLength>0){this._receivedLength+=o.byteLength;var a=Date.now()-this._subRangeStartTime,s=calculateSpeed(this._receivedLength,a);this.emit(EVENT.REAL_TIME_SPEED,{speed:s})}n=o,i=!(this._range.length>1&&this._range[1]&&this._receivedLength<this._range[1]-this._range[0]),this._logger.debug("[xhr load done->], tast :",this._range,", start",r,"end ",this._range[0]+this._receivedLength,",dataLen,",o?o.byteLength:0,",receivedLength",this._receivedLength,",index,",this._index,", done,",i)}else i=!0,n=e.target.response;var c={ok:t>=200&&t<300,status:t,statusText:this._xhr.statusText,url:this._xhr.responseURL,headers:this._getHeaders(this._xhr),body:this._xhr.response};this._transformResponse&&(c=this._transformResponse(c,this._url)||c),this._onProgress&&this._onProgress(n,i,{index:this._index,vid:this._vid,range:[r,this._range[0]+this._receivedLength],startTime:this._startTime,endTime:Date.now(),priOptions:this._priOptions},c),i?(this._runing=!1,this._loadCompleteResolve&&this._loadCompleteResolve(createResponse(this._onProgress?null:n,i,c,c.headers["content-length"],c.headers.age,this._startTime,-1,this._index,this._range,this._vid,this._priOptions))):this._startLoad()}},{key:"cancel",value:function(){if(!this._aborted)return this._aborted=!0,this._runing=!1,_get(_getPrototypeOf$1(r.prototype),"removeAllListeners",this).call(this),this._onCancel&&this._onCancel(this._index),this._xhr?this._xhr.abort():void 0}},{key:"receiveLen",get:function(){return this._receivedLength}},{key:"running",get:function(){return this._running},set:function(e){this._running=e}},{key:"_getHeaders",value:function(e){var t,r={},n=_createForOfIteratorHelper(e.getAllResponseHeaders().trim().split("\r\n"));try{for(n.s();!(t=n.n()).done;){var i=t.value.split(": ");r[i[0].toLowerCase()]=i.slice(1).join(": ")}}catch(e){n.e(e)}finally{n.f()}return r}}],[{key:"isSupported",value:function(){return"undefined"!=typeof XMLHttpRequest}}]),r}(),_excluded$1=["retry","retryDelay","onRetryError","transformError"],Task=function(){function e(t,r){_classCallCheck$1(this,e),this.promise=createPublicPromise(),this.alive=!!r.onProgress,!r.logger&&(r.logger=new Logger("Loader")),this._loaderType=t,this._loader=t===LoaderType.FETCH?new FetchLoader:new XhrLoader,this._config=r,this._retryCount=0,this._retryTimer=null,this._canceled=!1,this._logger=r.logger}var t;return _createClass$1(e,[{key:"exec",value:function(){var e=this,t=this._config,r=t.retry,n=t.retryDelay,i=t.onRetryError,o=t.transformError,a=_objectWithoutProperties(t,_excluded$1),s=function(){var t=_asyncToGenerator(_regeneratorRuntime().mark((function t(){var c,u;return _regeneratorRuntime().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.prev=0,t.next=3,e._loader.load(a);case 3:c=t.sent,e.promise.resolve(c),t.next=28;break;case 7:if(t.prev=7,t.t0=t.catch(0),e._loader.running=!1,e._logger.debug("[task request catch err]",t.t0),!e._canceled){t.next=13;break}return t.abrupt("return");case 13:if(!(t.t0.response&&t.t0.response.status>=400&&t.t0.response.status<=599)){t.next=16;break}return e.promise.reject(t.t0),t.abrupt("return");case 16:if(t.t0.loaderType=e._loaderType,t.t0.retryCount=e._retryCount,u=t.t0,o&&(u=o(u)||u),i&&e._retryCount>0&&i(u,e._retryCount,r),e._retryCount++,!(e._retryCount<=r)){t.next=27;break}return clearTimeout(e._retryTimer),e._logger.debug("[task request setTimeout],retry",e._retryCount,",retry range,",a.range),e._retryTimer=setTimeout(s,n),t.abrupt("return");case 27:e.promise.reject(u);case 28:case"end":return t.stop()}}),t,null,[[0,7]])})));return function(){return t.apply(this,arguments)}}();return s(),this.promise}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return clearTimeout(this._retryTimer),this._canceled=!0,this._loader.running=!1,e.abrupt("return",this._loader.cancel());case 4:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"running",get:function(){return this._loader&&this._loader.running}},{key:"loader",get:function(){return this._loader}}]),e}();function concatUint8Array(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];if((t=t.filter(Boolean)).length<2)return t[0];var n=new Uint8Array(t.reduce((function(e,t){return e+t.byteLength}),0)),i=0;return t.forEach((function(e){n.set(e,i),i+=e.byteLength})),n}function sleep(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new Promise((function(t){return setTimeout(t,e)}))}var NetLoader=function(e){_inherits$1(n,EventEmitter$1);var t,r=_createSuper$1(n);function n(e){var t;return _classCallCheck$1(this,n),_defineProperty(_assertThisInitialized$1(t=r.call(this,e)),"type",LoaderType.FETCH),_defineProperty(_assertThisInitialized$1(t),"_queue",[]),_defineProperty(_assertThisInitialized$1(t),"_alive",[]),_defineProperty(_assertThisInitialized$1(t),"_currentTask",null),_defineProperty(_assertThisInitialized$1(t),"_config",void 0),t._config=getConfig$1(e),t._config.loaderType!==LoaderType.XHR&&FetchLoader.isSupported()||(t.type=LoaderType.XHR),t.log=e.logger,t}return _createClass$1(n,[{key:"isFetch",value:function(){return this.type===LoaderType.FETCH}},{key:"load",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};"string"!=typeof e&&e?r=e:r.url=e||r.url||this._config.url,(r=Object.assign({},this._config,r)).params&&(r.params=Object.assign({},r.params)),r.headers&&isPlainObject(r.headers)&&(r.headers=Object.assign({},r.headers)),r.body&&isPlainObject(r.body)&&(r.body=Object.assign({},r.body)),r.transformRequest&&(r=r.transformRequest(r)||r),r.logger=this.log;var n=new Task(this.type,r);return n.loader.on(EVENT.REAL_TIME_SPEED,(function(e){t.emit(EVENT.REAL_TIME_SPEED,e)})),this._queue.push(n),1!==this._queue.length||this._currentTask&&this._currentTask.running||this._processTask(),n.promise}},{key:"cancel",value:(t=_asyncToGenerator(_regeneratorRuntime().mark((function e(){var t;return _regeneratorRuntime().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=this._queue.map((function(e){return e.cancel()})).concat(this._alive.map((function(e){return e.cancel()}))),this._currentTask&&t.push(this._currentTask.cancel()),this._queue=[],this._alive=[],e.next=6,Promise.all(t);case 6:return e.next=8,sleep();case 8:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"_processTask",value:function(){var e=this;this._currentTask=this._queue.shift(),this._currentTask&&(this._currentTask.alive&&this._alive.push(this._currentTask),this._currentTask.exec().catch((function(e){})).finally((function(){e._processTask()})))}}],[{key:"isFetchSupport",value:function(){return FetchLoader.isSupported()}}]),n}();function getConfig(e){return _objectSpread2$1({vid:"",moovEnd:8e4,segmentDuration:2,maxDownloadInfoSize:30,responseType:"arraybuffer",cache:null},e)}var MediaError=_createClass$2((function e(t,r){_classCallCheck$2(this,e),this.type="file",this.message=t,this.data=r})),Cache=function(){function e(){_classCallCheck$2(this,e),_defineProperty$1(this,"_data",Object.create(null))}return _createClass$2(e,[{key:"set",value:function(e,t){this._data[e]=t}},{key:"get",value:function(e){return this._data[e]}},{key:"clear",value:function(){this._data=Object.create(null)}}]),e}();function moovToSegments(e,t){var r=e.trak;if(r&&r.length){var n=r.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),i=r.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)}));if(n||i){var o,a=[],s=[];if(n){var c,u,l,d=null===(c=n.mdia)||void 0===c||null===(u=c.minf)||void 0===u?void 0:u.stbl;if(!d)return;var h=null===(l=n.mdia.mdhd)||void 0===l?void 0:l.timescale,f=d.stts,p=d.stsc,y=d.stsz,m=d.stco,g=d.stss,v=d.ctts;if(!(h&&f&&p&&y&&m&&g))return;o=(a=getSegments(t,h,f,p,y,m,g,v)).map((function(e){return e.duration}))}if(i){var b,_,$,A=null===(b=i.mdia)||void 0===b||null===(_=b.minf)||void 0===_?void 0:_.stbl;if(!A)return;var E=null===($=i.mdia.mdhd)||void 0===$?void 0:$.timescale,T=A.stts,S=A.stsc,I=A.stsz,w=A.stco;if(!(E&&T&&S&&I&&w))return;s=getSegments(t,E,T,S,I,w,null,null,o)}return{videoSegments:a,audioSegments:s}}}}function getSegments(e,t,r,n,i,o,a,s,c){var u,l,d,h,f=[],p=[],y=[],m=n.entries,g=o.entries,v=i.entrySizes,b=null==a?void 0:a.entries,_=null==s?void 0:s.entries;_&&(u=[],_.forEach((function(e){for(var t=e.count,r=e.offset,n=0;n<t;n++)u.push(r)}))),b&&(l={},b.forEach((function(e){l[e-1]=!0})));var $=0,A=0,E=0,T=0,S=0,I=m[0].samplesPerChunk,w=m[1]?m[1].firstChunk-1:1/0,R=0,P=-1;r.entries.forEach((function(e){var t=e.count,r=e.delta;h=r;for(var n=0;n<t;n++)d={dts:R,startTime:$,duration:h,size:v[A]||i.sampleSize,offset:g[E]+S,index:A},b&&(d.keyframe=l[A],d.keyframe?(P++,p.push([d]),y.push(d.duration)):(p[p.length-1].push(d),y[p.length-1]+=d.duration),d.gopId=P),u&&A<u.length&&(d.pts=R+u[A]),0===A&&(d.pts=0),f.push(d),$+=h,R+=r,++A<I?S+=d.size:(E++,S=0,E>=w&&(T++,w=m[T+1]?m[T+1].firstChunk-1:1/0),I+=m[T].samplesPerChunk)}));var O=f.length;if(O&&(!a||f[0].keyframe)){var C,k=[],x=[],L=0,D=function(e){var r;C=x[x.length-1],k.push({index:k.length,startTime:(null===(r=k[k.length-1])||void 0===r?void 0:r.endTime)||x[0].startTime/t,endTime:(C.startTime+C.duration)/t,duration:e,range:[x[0].offset,C.offset+C.size],frames:x}),L=0,x=[]};if(a)for(var M=e*t,N=0,G=p.length;N<G;N++){var V;L+=y[N],(V=x).push.apply(V,_toConsumableArray$1(p[N])),N+1<G?(0===N||L>M)&&D(L/t):D(L/t)}else for(var U=(c=c||[])[0]||e,Z=0;Z<O;Z++)x.push(f[Z]),L+=f[Z].duration,(Z+1>=O||L/t>=U)&&(D(L/t),U=c[k.length]||e);return k}}function moovToMeta(e){var t="",r="",n=0,i=0,o=0,a=0,s=0,c=0,u=0;e.mvhd&&(s=e.mvhd.duration/e.mvhd.timescale);var l=e.trak;if(l){var d,h,f,p,y,m,g,v,b,_,$,A,E,T,S,I,w,R=l.find((function(e){var t,r;return"vide"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),P=l.find((function(e){var t,r;return"soun"===(null===(t=e.mdia)||void 0===t||null===(r=t.hdlr)||void 0===r?void 0:r.handlerType)})),O=null;if(R)if(O=null===(h=R.mdia)||void 0===h||null===(f=h.minf)||void 0===f||null===(p=f.stbl)||void 0===p?void 0:p.stsd.entries[0])if(n=O.width,i=O.height,c=null===(y=R.mdia)||void 0===y||null===(m=y.mdhd)||void 0===m?void 0:m.timescale,t=null===(g=O.avcC||O.hvcC)||void 0===g?void 0:g.codec,"encv"===O.type)d=null===(v=O.sinf)||void 0===v||null===(b=v.schi)||void 0===b?void 0:b.tenc.default_KID;if(P)if(O=null===(_=P.mdia)||void 0===_||null===($=_.minf)||void 0===$||null===(A=$.stbl)||void 0===A?void 0:A.stsd.entries[0])if(o=O.channelCount,a=O.sampleRate,r=null===(E=O.esds)||void 0===E?void 0:E.codec,u=null===(T=P.mdia)||void 0===T||null===(S=T.mdhd)||void 0===S?void 0:S.timescale,"enca"===O.type)d=d||(null===(I=O.sinf)||void 0===I||null===(w=I.schi)||void 0===w?void 0:w.tenc.default_KID);return{kid:d?d.join(""):null,videoCodec:t,audioCodec:r,width:n,height:i,videoTimescale:c,audioChannelCount:o,audioSampleRate:a,duration:s,audioTimescale:u,moov:e}}}function isNumber(e){return"number"==typeof e&&!Number.isNaN(e)}var _excluded=["vid","cache"],MP4Loader=function(e){_inherits$2(f,EventEmitter$1);var t,r,n,i,o,a,s,c,u,l,d,h=_createSuper$2(f);function f(e){var t;_classCallCheck$2(this,f),_defineProperty$1(_assertThisInitialized$2(t=h.call(this)),"vid",""),_defineProperty$1(_assertThisInitialized$2(t),"url",""),_defineProperty$1(_assertThisInitialized$2(t),"meta",{}),_defineProperty$1(_assertThisInitialized$2(t),"downloadInfo",[]),_defineProperty$1(_assertThisInitialized$2(t),"videoSegments",[]),_defineProperty$1(_assertThisInitialized$2(t),"audioSegments",[]),_defineProperty$1(_assertThisInitialized$2(t),"cache",null),_defineProperty$1(_assertThisInitialized$2(t),"_currentSegmentIndex",-1),_defineProperty$1(_assertThisInitialized$2(t),"_currentLoadingSegmentIndex",-1),_defineProperty$1(_assertThisInitialized$2(t),"buffer",void 0),_defineProperty$1(_assertThisInitialized$2(t),"_error",void 0),_defineProperty$1(_assertThisInitialized$2(t),"_transformError",(function(e){return e})),t._config=getConfig(e);var r=t._config,n=r.vid,i=r.cache,o=_objectWithoutProperties$1(r,_excluded);return t.cache=i||new Cache,t.vid=n||o.url,t.url=o.url,o.transformError=t._transformError,t.logger=new Logger("MP4Loader_"+t.vid),e.openLog&&Logger.enable(),o.logger=t.logger,t._loader=new NetLoader(o),t._loader.on(EVENT.REAL_TIME_SPEED,(function(e){t.emit(EVENT.REAL_TIME_SPEED,e)})),t}return _createClass$2(f,[{key:"isMetaLoaded",get:function(){return this.videoSegments.length||this.audioSegments.length}},{key:"setCurrentSegment",value:function(e){isNumber(e)&&(this._currentSegmentIndex=e)}},{key:"isLastSegment",value:function(e){var t,r;return!!isNumber(e)&&e===((null===(t=this.videoSegments[this.videoSegments.length-1])||void 0===t?void 0:t.index)||(null===(r=this.audioSegments[this.audioSegments.length-1])||void 0===r?void 0:r.index)||0)}},{key:"isSegmentLoading",value:function(e){return e===this._currentLoadingSegmentIndex}},{key:"changeUrl",value:(d=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return r=o.length>1&&void 0!==o[1]?o[1]:t,n=o.length>2?o[2]:void 0,i=o.length>3?o[3]:void 0,e.next=5,this.reset(i);case 5:t&&(this.url=t),r&&(this.vid=r),n&&(this._config.moovEnd=n);case 8:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"getOrLoadMeta",value:(l=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(t);case 3:return e.abrupt("return",this.meta);case 4:case"end":return e.stop()}}),e,this)}))),function(e){return l.apply(this,arguments)})},{key:"loadMetaProcess",value:(u=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n,i){var o,a,s,c,u=this;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=_slicedToArray(r,2),a=o[0],s=o[1],this._error=!1,this.logger.debug("[loadMetaProcess start], range,",[a,s]),c=function(){var e=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(r,o,c){var l,d,h,f,p,y,m,g;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(u.meta&&null!=c&&c.range&&c.range.length>0&&c.range[1]>=s&&(o=!0,u.logger.debug("[loadMetaProcess],data done,setstate true,[",a,s,"]")),o&&null!=c&&c.range&&c.range.length>0&&c.range[1]<s&&(o=!1,u.logger.debug("[loadMetaProcess],data not done,setstate false,[",a,s,"]")),u.logger.debug("[loadMetaProcess],task,[",a,s,"], range,",c.range,",dataLen,",r?r.byteLength:void 0,", state,",o,",err,",u._error),!u._error&&r&&r.byteLength>0&&n(r,o,c),!u.meta.moov&&!u._error){e.next=6;break}return e.abrupt("return");case 6:if(!(r&&r.byteLength>0)){e.next=44;break}if(u.buffer=concatUint8Array(u.buffer,r),l=MP4Parser.findBox(u.buffer,["moov"])[0]){e.next=23;break}if(d=MP4Parser.findBox(u.buffer,["mdat"])[0],!o){e.next=23;break}if(d){e.next=18;break}return u._error=!0,n(null,o,c,{err:"cannot find moov or mdat box"}),e.abrupt("return");case 18:return h=d.start+d.size,e.next=21,u.loadData([h,""],t,i);case 21:(f=e.sent)&&(l=MP4Parser.findBox(f.data,["moov"])[0]);case 23:if(!(l&&o&&l.size>l.data.length)){e.next=27;break}return u.logger.debug("[loadMetaProcess],moov not all, range,",c.range[1],",dataLen,",u.buffer.byteLength,", state,",o),e.next=27,u.loadMetaProcess(t,[c.range[1],l.start+l.size-1],n);case 27:if(!(l&&l.size<=l.data.length)||u.meta.moov){e.next=44;break}if(p=MP4Parser.moov(l)){e.next=33;break}return u._error=!0,n(null,o,c,{err:"cannot parse moov box"}),e.abrupt("return");case 33:if(y=moovToSegments(p,u._config.segmentDuration)){e.next=38;break}return u._error=!0,n(null,o,c,{err:"cannot parse segments"}),e.abrupt("return");case 38:u.meta=moovToMeta(p),m=y.videoSegments,g=y.audioSegments,u.videoSegments=m,u.audioSegments=g,u.logger.debug("[loadMetaProcess] moov ok"),n(void 0,o,{meta:{meta:u.meta,videoSegments:m,audioSegments:g}});case 44:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}(),e.next=6,this.loadData([a,s||this._config.moovEnd],t,_objectSpread2$1({onProgress:c},i));case 6:case"end":return e.stop()}}),e,this)}))),function(e,t,r,n){return u.apply(this,arguments)})},{key:"loadMeta",value:(c=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n){var i,o,a,s,c,u,l,d,h;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=[],this.logger.debug("[loadMeta start]"),e.next=4,this.loadData([0,r||this._config.moovEnd],t,n);case 4:if(o=e.sent){e.next=7;break}return e.abrupt("return");case 7:if(i.push(o),a=MP4Parser.findBox(o.data,["moov"])[0]){e.next=23;break}if(s=MP4Parser.findBox(o.data,["mdat"])[0]){e.next=13;break}throw new MediaError("cannot find moov or mdat box",o.data);case 13:return c=s.start+s.size,e.next=16,this.loadData([c],t,n);case 16:if(o=e.sent){e.next=19;break}return e.abrupt("return");case 19:if(i.push(o),a=MP4Parser.findBox(o.data,["moov"],c)[0]){e.next=23;break}throw new MediaError("cannot find moov box",o.data);case 23:if(!(a.size>a.data.length)){e.next=31;break}return e.next=26,this.loadData([o.data.length,a.start+a.size-1],t,n);case 26:if(o=e.sent){e.next=29;break}return e.abrupt("return");case 29:i.push(o),a.data=concatUint8Array(a.data,o.data);case 31:if(u=MP4Parser.moov(a)){e.next=34;break}throw new MediaError("cannot parse moov box",a.data);case 34:if(l=moovToSegments(u,this._config.segmentDuration)){e.next=37;break}throw new MediaError("cannot parse segments",a.data);case 37:return this.meta=moovToMeta(u),d=l.videoSegments,h=l.audioSegments,this.videoSegments=d,this.audioSegments=h,this.logger.debug("[load moov end!!!!!]"),e.abrupt("return",{meta:this.meta,videoSegments:d,audioSegments:h,responses:i});case 43:case"end":return e.stop()}}),e,this)}))),function(e,t,r){return c.apply(this,arguments)})},{key:"getSegmentByTime",value:function(e){var t,r;return this.videoSegments.length?(t=this.videoSegments.find((function(t){return t.startTime<=e&&t.endTime>e})))&&(r=this.audioSegments[t.index]):r=this.audioSegments.find((function(t){return t.startTime<=e&&t.endTime>e})),{video:t,audio:r}}},{key:"loadSegmentByTime",value:(s=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r){var n,i,o,a,s,c=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=!(c.length>2&&void 0!==c[2])||c[2],i=c.length>3&&void 0!==c[3]?c[3]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta(r);case 5:return o=this.getSegmentByTime(t),a=o.video,s=o.audio,e.abrupt("return",this._loadSegment(a,s,r,n,i));case 7:case"end":return e.stop()}}),e,this)}))),function(e,t){return s.apply(this,arguments)})},{key:"loadNextSegment",value:(a=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o,a=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=!(a.length>1&&void 0!==a[1])||a[1],n=a.length>2&&void 0!==a[2]?a[2]:{},this.isMetaLoaded){e.next=5;break}return e.next=5,this.loadMeta();case 5:return i=this.videoSegments[this._currentSegmentIndex+1],o=this.audioSegments[this._currentSegmentIndex+1],e.abrupt("return",this._loadSegment(i,o,t,r,n));case 8:case"end":return e.stop()}}),e,this)}))),function(e){return a.apply(this,arguments)})},{key:"preload",value:(o=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){var r,n,i,o,a,s,c,u=this;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isMetaLoaded){e.next=3;break}return e.next=3,this.loadMeta(!0);case 3:if(t&&!(t<0)){e.next=5;break}return e.abrupt("return");case 5:if(r=this.getSegmentByTime(t),n=r.video,i=r.audio,o=Math.max((null==n?void 0:n.index)||0,(null==i?void 0:i.index)||0)){e.next=9;break}return e.abrupt("return");case 9:return a=this.videoSegments.slice(0,o),s=this.audioSegments.slice(0,o),c=function(){var e=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!(t>o)){e.next=2;break}return e.abrupt("return");case 2:return e.next=4,u._loadSegment(a[t],s[t],!0,!1);case 4:return e.next=6,c(t+1);case 6:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=14,c(0);case 14:case"end":return e.stop()}}),e,this)}))),function(e){return o.apply(this,arguments)})},{key:"cancel",value:function(){return this._loader.cancel()}},{key:"reset",value:(i=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(){var t=arguments;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.length>0&&void 0!==t[0]&&t[0]){e.next=5;break}return this.logger.debug("[MP4loader reset func call loader.cancel]"),e.next=5,this._loader.cancel();case 5:this.vid=this.url="",this.meta={},this.downloadInfo=[],this.videoSegments=[],this.audioSegments=[],this._currentSegmentIndex=-1,this._currentLoadingSegmentIndex=-1;case 12:case"end":return e.stop()}}),e,this)}))),function(){return i.apply(this,arguments)})},{key:"destroy",value:(n=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(){return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.reset();case 2:this.cache.clear();case 3:case"end":return e.stop()}}),e,this)}))),function(){return n.apply(this,arguments)})},{key:"_loadSegment",value:(r=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n,i,o){var a,s;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t||r){e.next=2;break}return e.abrupt("return");case 2:return a=(null==t?void 0:t.index)||(null==r?void 0:r.index)||0,this._currentLoadingSegmentIndex=a,e.prev=4,e.next=7,this.loadData([Math.min((null==t?void 0:t.range[0])||1/0,(null==r?void 0:r.range[0])||1/0),Math.max((null==t?void 0:t.range[1])||0,(null==r?void 0:r.range[1])||0)],n,o);case 7:s=e.sent;case 8:return e.prev=8,this._currentLoadingSegmentIndex=-1,e.finish(8);case 11:if(s){e.next=13;break}return e.abrupt("return");case 13:return i&&(this._currentSegmentIndex=a),s.video=t,s.audio=r,e.abrupt("return",s);case 17:case"end":return e.stop()}}),e,this,[[4,,8,11]])}))),function(e,t,n,i,o){return r.apply(this,arguments)})},{key:"loadData",value:(t=_asyncToGenerator$1(_regeneratorRuntime$1().mark((function e(t,r,n){var i,o,a;return _regeneratorRuntime$1().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=this._getCacheKey(t),e.next=3,this.cache.get(i);case 3:if(o=e.sent){e.next=10;break}return e.next=7,this._loader.load(this.url,_objectSpread2$1({range:t,vid:this.vid},n));case 7:a=e.sent,e.next=11;break;case 10:a={data:o,state:!0,options:{fromCache:!0,range:t,vid:this.vid}};case 11:if(a){e.next=13;break}return e.abrupt("return");case 13:return o||(a.data&&this.downloadInfo.push({startTime:a.startTime,endTime:a.endTime,size:a.data.byteLength,range:t}),this.downloadInfo&&this.downloadInfo.length>this._config.maxDownloadInfoSize&&(this.downloadInfo=this.downloadInfo.slice(-this._config.maxDownloadInfoSize))),e.abrupt("return",a);case 16:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"_getCacheKey",value:function(e){return(this.vid||this.url)+":"+e}}]),f}(),isSupport=_isLocalStorageUsable(),openLog=checkOpenLog();function probeSupport(){try{return"undefined"!=typeof localStorage&&"setItem"in window.localStorage&&!!window.localStorage.setItem}catch(e){return!1}}function checkIfLocalStorageThrows(){var e="_localstorage_support_test";try{return window.localStorage.setItem(e,!0),window.localStorage.removeItem(e),!1}catch(e){return!0}}function checkOpenLog(){if(isSupport)try{return!!window.localStorage.getItem("playerlog")}catch(e){return!1}return!1}function _isLocalStorageUsable(){return probeSupport()&&!checkIfLocalStorageThrows()}function log$2(e){for(var t,r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];openLog&&console.log&&(t=console).log.apply(t,["[logger]",util.nowTime(),e].concat(n))}var apply$1=functionApply$2,call$3=functionCall$2,uncurryThis$b=functionUncurryThis$2,fixRegExpWellKnownSymbolLogic=fixRegexpWellKnownSymbolLogic,anObject$3=anObject$N,isNullOrUndefined$2=isNullOrUndefined$m,isRegExp=isRegexp,requireObjectCoercible$2=requireObjectCoercible$m,speciesConstructor=speciesConstructor$9,advanceStringIndex=advanceStringIndex$3,toLength$1=toLength$k,toString$8=toString$E,getMethod=getMethod$e,arraySlice$1=arraySliceSimple$2,callRegExpExec=regexpExecAbstract,regexpExec=regexpExec$3,stickyHelpers=regexpStickyHelpers,fails$h=fails$1T,UNSUPPORTED_Y=stickyHelpers.UNSUPPORTED_Y,MAX_UINT32=4294967295,min$1=Math.min,$push=[].push,exec$1=uncurryThis$b(/./.exec),push$3=uncurryThis$b($push),stringSlice$4=uncurryThis$b("".slice),SPLIT_WORKS_WITH_OVERWRITTEN_EXEC=!fails$h((function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var r="ab".split(e);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}));fixRegExpWellKnownSymbolLogic("split",(function(e,t,r){var n;return n="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var n=toString$8(requireObjectCoercible$2(this)),i=void 0===r?MAX_UINT32:r>>>0;if(0===i)return[];if(void 0===e)return[n];if(!isRegExp(e))return call$3(t,n,e,i);for(var o,a,s,c=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),l=0,d=new RegExp(e.source,u+"g");(o=call$3(regexpExec,d,n))&&!((a=d.lastIndex)>l&&(push$3(c,stringSlice$4(n,l,o.index)),o.length>1&&o.index<n.length&&apply$1($push,c,arraySlice$1(o,1)),s=o[0].length,l=a,c.length>=i));)d.lastIndex===o.index&&d.lastIndex++;return l===n.length?!s&&exec$1(d,"")||push$3(c,""):push$3(c,stringSlice$4(n,l)),c.length>i?arraySlice$1(c,0,i):c}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:call$3(t,this,e,r)}:t,[function(t,r){var i=requireObjectCoercible$2(this),o=isNullOrUndefined$2(t)?void 0:getMethod(t,e);return o?call$3(o,t,i,r):call$3(n,toString$8(i),t,r)},function(e,i){var o=anObject$3(this),a=toString$8(e),s=r(n,o,a,i,n!==t);if(s.done)return s.value;var c=speciesConstructor(o,RegExp),u=o.unicode,l=(o.ignoreCase?"i":"")+(o.multiline?"m":"")+(o.unicode?"u":"")+(UNSUPPORTED_Y?"g":"y"),d=new c(UNSUPPORTED_Y?"^(?:"+o.source+")":o,l),h=void 0===i?MAX_UINT32:i>>>0;if(0===h)return[];if(0===a.length)return null===callRegExpExec(d,a)?[a]:[];for(var f=0,p=0,y=[];p<a.length;){d.lastIndex=UNSUPPORTED_Y?0:p;var m,g=callRegExpExec(d,UNSUPPORTED_Y?stringSlice$4(a,p):a);if(null===g||(m=min$1(toLength$1(d.lastIndex+(UNSUPPORTED_Y?p:0)),a.length))===f)p=advanceStringIndex(a,p,u);else{if(push$3(y,stringSlice$4(a,f,p)),y.length===h)return y;for(var v=1;v<=g.length-1;v++)if(push$3(y,g[v]),y.length===h)return y;p=f=m}}return push$3(y,stringSlice$4(a,f)),y}]}),!SPLIT_WORKS_WITH_OVERWRITTEN_EXEC,UNSUPPORTED_Y);var MONITOR_HEADERS={"x-cache":"x_cache","x-response-sinfo":"server_ip","x-response-cinfo":"x-response-cinfo"};function transformHeaders(e){var t={};return Object.keys(MONITOR_HEADERS).forEach((function(r){var n=MONITOR_HEADERS[r];e&&e.get&&e.get(r)&&(t[n]=e.get(r))})),t}var metaSizeConfig=[{range:[0,90],size:614400},{range:[90,120],size:1228800},{range:[120,Number.MAX_VALUE],size:2048e3}];function getMetaSize(e,t,r){var n=r>51200?Math.min(r,t):t;if(!e)return n;for(var i=0;i<metaSizeConfig.length;i++)if(e>=metaSizeConfig[i].range[0]&&e<metaSizeConfig[i].range[1]){n=Math.min(Math.max(n,metaSizeConfig[i].size),r>0?r:t);break}return n}var encodedJs="IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHQodCxlKXt2YXIgcj1PYmplY3Qua2V5cyh0KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXt2YXIgbj1PYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHQpO2UmJihuPW4uZmlsdGVyKChmdW5jdGlvbihlKXtyZXR1cm4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0LGUpLmVudW1lcmFibGV9KSkpLHIucHVzaC5hcHBseShyLG4pfXJldHVybiByfWZ1bmN0aW9uIGUoZSl7Zm9yKHZhciByPTE7cjxhcmd1bWVudHMubGVuZ3RoO3IrKyl7dmFyIG49bnVsbCE9YXJndW1lbnRzW3JdP2FyZ3VtZW50c1tyXTp7fTtyJTI/dChPYmplY3QobiksITApLmZvckVhY2goKGZ1bmN0aW9uKHQpe28oZSx0LG5bdF0pfSkpOk9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzP09iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKGUsT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcnMobikpOnQoT2JqZWN0KG4pKS5mb3JFYWNoKChmdW5jdGlvbih0KXtPYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iobix0KSl9KSl9cmV0dXJuIGV9ZnVuY3Rpb24gcih0KXtyZXR1cm4ocj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHR9OmZ1bmN0aW9uKHQpe3JldHVybiB0JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0LmNvbnN0cnVjdG9yPT09U3ltYm9sJiZ0IT09U3ltYm9sLnByb3RvdHlwZT8ic3ltYm9sIjp0eXBlb2YgdH0pKHQpfWZ1bmN0aW9uIG4odCxlKXtpZighKHQgaW5zdGFuY2VvZiBlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKHQsZSl7Zm9yKHZhciByPTA7cjxlLmxlbmd0aDtyKyspe3ZhciBuPWVbcl07bi5lbnVtZXJhYmxlPW4uZW51bWVyYWJsZXx8ITEsbi5jb25maWd1cmFibGU9ITAsInZhbHVlImluIG4mJihuLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCxuLmtleSxuKX19ZnVuY3Rpb24gYSh0LGUscil7cmV0dXJuIGUmJmkodC5wcm90b3R5cGUsZSksciYmaSh0LHIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJwcm90b3R5cGUiLHt3cml0YWJsZTohMX0pLHR9ZnVuY3Rpb24gbyh0LGUscil7cmV0dXJuIGUgaW4gdD9PYmplY3QuZGVmaW5lUHJvcGVydHkodCxlLHt2YWx1ZTpyLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6dFtlXT1yLHR9ZnVuY3Rpb24gcyh0LGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiIpO3QucHJvdG90eXBlPU9iamVjdC5jcmVhdGUoZSYmZS5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTp0LHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSxlJiZjKHQsZSl9ZnVuY3Rpb24gdSh0KXtyZXR1cm4odT1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LmdldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0KXtyZXR1cm4gdC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KX0pKHQpfWZ1bmN0aW9uIGModCxlKXtyZXR1cm4oYz1PYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mLmJpbmQoKTpmdW5jdGlvbih0LGUpe3JldHVybiB0Ll9fcHJvdG9fXz1lLHR9KSh0LGUpfWZ1bmN0aW9uIGYoKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIFJlZmxlY3R8fCFSZWZsZWN0LmNvbnN0cnVjdClyZXR1cm4hMTtpZihSZWZsZWN0LmNvbnN0cnVjdC5zaGFtKXJldHVybiExO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSlyZXR1cm4hMDt0cnl7cmV0dXJuIEJvb2xlYW4ucHJvdG90eXBlLnZhbHVlT2YuY2FsbChSZWZsZWN0LmNvbnN0cnVjdChCb29sZWFuLFtdLChmdW5jdGlvbigpe30pKSksITB9Y2F0Y2godCl7cmV0dXJuITF9fWZ1bmN0aW9uIGwodCxlLHIpe3JldHVybihsPWYoKT9SZWZsZWN0LmNvbnN0cnVjdC5iaW5kKCk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVtudWxsXTtuLnB1c2guYXBwbHkobixlKTt2YXIgaT1uZXcoRnVuY3Rpb24uYmluZC5hcHBseSh0LG4pKTtyZXR1cm4gciYmYyhpLHIucHJvdG90eXBlKSxpfSkuYXBwbHkobnVsbCxhcmd1bWVudHMpfWZ1bmN0aW9uIGQodCxlKXtpZihlJiYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSkpcmV0dXJuIGU7aWYodm9pZCAwIT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJEZXJpdmVkIGNvbnN0cnVjdG9ycyBtYXkgb25seSByZXR1cm4gb2JqZWN0IG9yIHVuZGVmaW5lZCIpO3JldHVybiBmdW5jdGlvbih0KXtpZih2b2lkIDA9PT10KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIHR9KHQpfWZ1bmN0aW9uIGgodCl7dmFyIGU9ZigpO3JldHVybiBmdW5jdGlvbigpe3ZhciByLG49dSh0KTtpZihlKXt2YXIgaT11KHRoaXMpLmNvbnN0cnVjdG9yO3I9UmVmbGVjdC5jb25zdHJ1Y3Qobixhcmd1bWVudHMsaSl9ZWxzZSByPW4uYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBkKHRoaXMscil9fWZ1bmN0aW9uIHAodCxlKXtmb3IoOyFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKSYmbnVsbCE9PSh0PXUodCkpOyk7cmV0dXJuIHR9ZnVuY3Rpb24gdigpe3JldHVybiB2PSJ1bmRlZmluZWQiIT10eXBlb2YgUmVmbGVjdCYmUmVmbGVjdC5nZXQ/UmVmbGVjdC5nZXQuYmluZCgpOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1wKHQsZSk7aWYobil7dmFyIGk9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihuLGUpO3JldHVybiBpLmdldD9pLmdldC5jYWxsKGFyZ3VtZW50cy5sZW5ndGg8Mz90OnIpOmkudmFsdWV9fSx2LmFwcGx5KHRoaXMsYXJndW1lbnRzKX1mdW5jdGlvbiB5KHQsZSl7aWYoISh0IGluc3RhbmNlb2YgZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gZyh0LGUpe2Zvcih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKXt2YXIgbj1lW3JdO24uZW51bWVyYWJsZT1uLmVudW1lcmFibGV8fCExLG4uY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiBuJiYobi53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbi5rZXksbil9fWZ1bmN0aW9uIG0odCxlLHIpe3JldHVybiBlJiZnKHQucHJvdG90eXBlLGUpLHImJmcodCxyKSxPYmplY3QuZGVmaW5lUHJvcGVydHkodCwicHJvdG90eXBlIix7d3JpdGFibGU6ITF9KSx0fWZ1bmN0aW9uIGIodCxlLHIpe3JldHVybiBlIGluIHQ/T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsZSx7dmFsdWU6cixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOnRbZV09cix0fWZ1bmN0aW9uIHcodCxlKXtyZXR1cm4gZnVuY3Rpb24odCl7aWYoQXJyYXkuaXNBcnJheSh0KSlyZXR1cm4gdH0odCl8fGZ1bmN0aW9uKHQsZSl7dmFyIHI9bnVsbD09dD9udWxsOiJ1bmRlZmluZWQiIT10eXBlb2YgU3ltYm9sJiZ0W1N5bWJvbC5pdGVyYXRvcl18fHRbIkBAaXRlcmF0b3IiXTtpZihudWxsPT1yKXJldHVybjt2YXIgbixpLGE9W10sbz0hMCxzPSExO3RyeXtmb3Iocj1yLmNhbGwodCk7IShvPShuPXIubmV4dCgpKS5kb25lKSYmKGEucHVzaChuLnZhbHVlKSwhZXx8YS5sZW5ndGghPT1lKTtvPSEwKTt9Y2F0Y2godSl7cz0hMCxpPXV9ZmluYWxseXt0cnl7b3x8bnVsbD09ci5yZXR1cm58fHIucmV0dXJuKCl9ZmluYWxseXtpZihzKXRocm93IGl9fXJldHVybiBhfSh0LGUpfHx4KHQsZSl8fGZ1bmN0aW9uKCl7dGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiBrKHQpe3JldHVybiBmdW5jdGlvbih0KXtpZihBcnJheS5pc0FycmF5KHQpKXJldHVybiBBKHQpfSh0KXx8ZnVuY3Rpb24odCl7aWYoInVuZGVmaW5lZCIhPXR5cGVvZiBTeW1ib2wmJm51bGwhPXRbU3ltYm9sLml0ZXJhdG9yXXx8bnVsbCE9dFsiQEBpdGVyYXRvciJdKXJldHVybiBBcnJheS5mcm9tKHQpfSh0KXx8eCh0KXx8ZnVuY3Rpb24oKXt0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGF0dGVtcHQgdG8gc3ByZWFkIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cbkluIG9yZGVyIHRvIGJlIGl0ZXJhYmxlLCBub24tYXJyYXkgb2JqZWN0cyBtdXN0IGhhdmUgYSBbU3ltYm9sLml0ZXJhdG9yXSgpIG1ldGhvZC4iKX0oKX1mdW5jdGlvbiB4KHQsZSl7aWYodCl7aWYoInN0cmluZyI9PXR5cGVvZiB0KXJldHVybiBBKHQsZSk7dmFyIHI9T2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHQpLnNsaWNlKDgsLTEpO3JldHVybiJPYmplY3QiPT09ciYmdC5jb25zdHJ1Y3RvciYmKHI9dC5jb25zdHJ1Y3Rvci5uYW1lKSwiTWFwIj09PXJ8fCJTZXQiPT09cj9BcnJheS5mcm9tKHQpOiJBcmd1bWVudHMiPT09cnx8L14oPzpVaXxJKW50KD86OHwxNnwzMikoPzpDbGFtcGVkKT9BcnJheSQvLnRlc3Qocik/QSh0LGUpOnZvaWQgMH19ZnVuY3Rpb24gQSh0LGUpeyhudWxsPT1lfHxlPnQubGVuZ3RoKSYmKGU9dC5sZW5ndGgpO2Zvcih2YXIgcj0wLG49bmV3IEFycmF5KGUpO3I8ZTtyKyspbltyXT10W3JdO3JldHVybiBufXZhciBTPSJ1bmRlZmluZWQiIT10eXBlb2YgZ2xvYmFsVGhpcz9nbG9iYWxUaGlzOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIGdsb2JhbD9nbG9iYWw6InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6e30sXz1mdW5jdGlvbih0KXtyZXR1cm4gdCYmdC5NYXRoPT1NYXRoJiZ0fSxUPV8oIm9iamVjdCI9PSgidW5kZWZpbmVkIj09dHlwZW9mIGdsb2JhbFRoaXM/InVuZGVmaW5lZCI6cihnbG9iYWxUaGlzKSkmJmdsb2JhbFRoaXMpfHxfKCJvYmplY3QiPT0oInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3c/InVuZGVmaW5lZCI6cih3aW5kb3cpKSYmd2luZG93KXx8Xygib2JqZWN0Ij09KCJ1bmRlZmluZWQiPT10eXBlb2Ygc2VsZj8idW5kZWZpbmVkIjpyKHNlbGYpKSYmc2VsZil8fF8oIm9iamVjdCI9PXIoUykmJlMpfHxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpfHxGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgpLEU9e30sST1mdW5jdGlvbih0KXt0cnl7cmV0dXJuISF0KCl9Y2F0Y2goZSl7cmV0dXJuITB9fSxPPSFJKChmdW5jdGlvbigpe3JldHVybiA3IT1PYmplY3QuZGVmaW5lUHJvcGVydHkoe30sMSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIDd9fSlbMV19KSksTT17fSxDPXt9LnByb3BlcnR5SXNFbnVtZXJhYmxlLFI9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcixCPVImJiFDLmNhbGwoezE6Mn0sMSk7TS5mPUI/ZnVuY3Rpb24odCl7dmFyIGU9Uih0aGlzLHQpO3JldHVybiEhZSYmZS5lbnVtZXJhYmxlfTpDO3ZhciBQPWZ1bmN0aW9uKHQsZSl7cmV0dXJue2VudW1lcmFibGU6ISgxJnQpLGNvbmZpZ3VyYWJsZTohKDImdCksd3JpdGFibGU6ISg0JnQpLHZhbHVlOmV9fSxVPXt9LnRvU3RyaW5nLEQ9ZnVuY3Rpb24odCl7cmV0dXJuIFUuY2FsbCh0KS5zbGljZSg4LC0xKX0sej1ELGo9IiIuc3BsaXQsTD1JKChmdW5jdGlvbigpe3JldHVybiFPYmplY3QoInoiKS5wcm9wZXJ0eUlzRW51bWVyYWJsZSgwKX0pKT9mdW5jdGlvbih0KXtyZXR1cm4iU3RyaW5nIj09eih0KT9qLmNhbGwodCwiIik6T2JqZWN0KHQpfTpPYmplY3QsRj1mdW5jdGlvbih0KXtpZihudWxsPT10KXRocm93IFR5cGVFcnJvcigiQ2FuJ3QgY2FsbCBtZXRob2Qgb24gIit0KTtyZXR1cm4gdH0sTj1MLFY9RixIPWZ1bmN0aW9uKHQpe3JldHVybiBOKFYodCkpfSxZPWZ1bmN0aW9uKHQpe3JldHVybiJvYmplY3QiPT09cih0KT9udWxsIT09dDoiZnVuY3Rpb24iPT10eXBlb2YgdH0sSz1ZLFc9ZnVuY3Rpb24odCxlKXtpZighSyh0KSlyZXR1cm4gdDt2YXIgcixuO2lmKGUmJiJmdW5jdGlvbiI9PXR5cGVvZihyPXQudG9TdHJpbmcpJiYhSyhuPXIuY2FsbCh0KSkpcmV0dXJuIG47aWYoImZ1bmN0aW9uIj09dHlwZW9mKHI9dC52YWx1ZU9mKSYmIUsobj1yLmNhbGwodCkpKXJldHVybiBuO2lmKCFlJiYiZnVuY3Rpb24iPT10eXBlb2Yocj10LnRvU3RyaW5nKSYmIUsobj1yLmNhbGwodCkpKXJldHVybiBuO3Rocm93IFR5cGVFcnJvcigiQ2FuJ3QgY29udmVydCBvYmplY3QgdG8gcHJpbWl0aXZlIHZhbHVlIil9LEc9RixxPWZ1bmN0aW9uKHQpe3JldHVybiBPYmplY3QoRyh0KSl9LFg9cSwkPXt9Lmhhc093blByb3BlcnR5LFE9ZnVuY3Rpb24odCxlKXtyZXR1cm4gJC5jYWxsKFgodCksZSl9LFo9WSxKPVQuZG9jdW1lbnQsdHQ9WihKKSYmWihKLmNyZWF0ZUVsZW1lbnQpLGV0PWZ1bmN0aW9uKHQpe3JldHVybiB0dD9KLmNyZWF0ZUVsZW1lbnQodCk6e319LHJ0PWV0LG50PSFPJiYhSSgoZnVuY3Rpb24oKXtyZXR1cm4gNyE9T2JqZWN0LmRlZmluZVByb3BlcnR5KHJ0KCJkaXYiKSwiYSIse2dldDpmdW5jdGlvbigpe3JldHVybiA3fX0pLmF9KSksaXQ9TyxhdD1NLG90PVAsc3Q9SCx1dD1XLGN0PVEsZnQ9bnQsbHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjtFLmY9aXQ/bHQ6ZnVuY3Rpb24odCxlKXtpZih0PXN0KHQpLGU9dXQoZSwhMCksZnQpdHJ5e3JldHVybiBsdCh0LGUpfWNhdGNoKHIpe31pZihjdCh0LGUpKXJldHVybiBvdCghYXQuZi5jYWxsKHQsZSksdFtlXSl9O3ZhciBkdD17fSxodD1ZLHB0PWZ1bmN0aW9uKHQpe2lmKCFodCh0KSl0aHJvdyBUeXBlRXJyb3IoU3RyaW5nKHQpKyIgaXMgbm90IGFuIG9iamVjdCIpO3JldHVybiB0fSx2dD1PLHl0PW50LGd0PXB0LG10PVcsYnQ9T2JqZWN0LmRlZmluZVByb3BlcnR5O2R0LmY9dnQ/YnQ6ZnVuY3Rpb24odCxlLHIpe2lmKGd0KHQpLGU9bXQoZSwhMCksZ3QocikseXQpdHJ5e3JldHVybiBidCh0LGUscil9Y2F0Y2gobil7fWlmKCJnZXQiaW4gcnx8InNldCJpbiByKXRocm93IFR5cGVFcnJvcigiQWNjZXNzb3JzIG5vdCBzdXBwb3J0ZWQiKTtyZXR1cm4idmFsdWUiaW4gciYmKHRbZV09ci52YWx1ZSksdH07dmFyIHd0PWR0LGt0PVAseHQ9Tz9mdW5jdGlvbih0LGUscil7cmV0dXJuIHd0LmYodCxlLGt0KDEscikpfTpmdW5jdGlvbih0LGUscil7cmV0dXJuIHRbZV09cix0fSxBdD17ZXhwb3J0czp7fX0sU3Q9VCxfdD14dCxUdD1mdW5jdGlvbih0LGUpe3RyeXtfdChTdCx0LGUpfWNhdGNoKHIpe1N0W3RdPWV9cmV0dXJuIGV9LEV0PVR0LEl0PSJfX2NvcmUtanNfc2hhcmVkX18iLE90PVRbSXRdfHxFdChJdCx7fSksTXQ9T3QsQ3Q9RnVuY3Rpb24udG9TdHJpbmc7ImZ1bmN0aW9uIiE9dHlwZW9mIE10Lmluc3BlY3RTb3VyY2UmJihNdC5pbnNwZWN0U291cmNlPWZ1bmN0aW9uKHQpe3JldHVybiBDdC5jYWxsKHQpfSk7dmFyIFJ0PU10Lmluc3BlY3RTb3VyY2UsQnQ9UnQsUHQ9VC5XZWFrTWFwLFV0PSJmdW5jdGlvbiI9PXR5cGVvZiBQdCYmL25hdGl2ZSBjb2RlLy50ZXN0KEJ0KFB0KSksRHQ9e2V4cG9ydHM6e319LHp0PU90OyhEdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIHp0W3RdfHwoenRbdF09dm9pZCAwIT09ZT9lOnt9KX0pKCJ2ZXJzaW9ucyIsW10pLnB1c2goe3ZlcnNpb246IjMuMTIuMSIsbW9kZToiZ2xvYmFsIixjb3B5cmlnaHQ6IsKpIDIwMjEgRGVuaXMgUHVzaGthcmV2ICh6bG9pcm9jay5ydSkifSk7dmFyIGp0LEx0LEZ0LE50PTAsVnQ9TWF0aC5yYW5kb20oKSxIdD1mdW5jdGlvbih0KXtyZXR1cm4iU3ltYm9sKCIrU3RyaW5nKHZvaWQgMD09PXQ/IiI6dCkrIilfIisoKytOdCtWdCkudG9TdHJpbmcoMzYpfSxZdD1EdC5leHBvcnRzLEt0PUh0LFd0PVl0KCJrZXlzIiksR3Q9ZnVuY3Rpb24odCl7cmV0dXJuIFd0W3RdfHwoV3RbdF09S3QodCkpfSxxdD17fSxYdD1VdCwkdD1ZLFF0PXh0LFp0PVEsSnQ9T3QsdGU9R3QsZWU9cXQscmU9Ik9iamVjdCBhbHJlYWR5IGluaXRpYWxpemVkIixuZT1ULldlYWtNYXA7aWYoWHR8fEp0LnN0YXRlKXt2YXIgaWU9SnQuc3RhdGV8fChKdC5zdGF0ZT1uZXcgbmUpLGFlPWllLmdldCxvZT1pZS5oYXMsc2U9aWUuc2V0O2p0PWZ1bmN0aW9uKHQsZSl7aWYob2UuY2FsbChpZSx0KSl0aHJvdyBuZXcgVHlwZUVycm9yKHJlKTtyZXR1cm4gZS5mYWNhZGU9dCxzZS5jYWxsKGllLHQsZSksZX0sTHQ9ZnVuY3Rpb24odCl7cmV0dXJuIGFlLmNhbGwoaWUsdCl8fHt9fSxGdD1mdW5jdGlvbih0KXtyZXR1cm4gb2UuY2FsbChpZSx0KX19ZWxzZXt2YXIgdWU9dGUoInN0YXRlIik7ZWVbdWVdPSEwLGp0PWZ1bmN0aW9uKHQsZSl7aWYoWnQodCx1ZSkpdGhyb3cgbmV3IFR5cGVFcnJvcihyZSk7cmV0dXJuIGUuZmFjYWRlPXQsUXQodCx1ZSxlKSxlfSxMdD1mdW5jdGlvbih0KXtyZXR1cm4gWnQodCx1ZSk/dFt1ZV06e319LEZ0PWZ1bmN0aW9uKHQpe3JldHVybiBadCh0LHVlKX19dmFyIGNlPXtzZXQ6anQsZ2V0Okx0LGhhczpGdCxlbmZvcmNlOmZ1bmN0aW9uKHQpe3JldHVybiBGdCh0KT9MdCh0KTpqdCh0LHt9KX0sZ2V0dGVyRm9yOmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlKXt2YXIgcjtpZighJHQoZSl8fChyPUx0KGUpKS50eXBlIT09dCl0aHJvdyBUeXBlRXJyb3IoIkluY29tcGF0aWJsZSByZWNlaXZlciwgIit0KyIgcmVxdWlyZWQiKTtyZXR1cm4gcn19fSxmZT1ULGxlPXh0LGRlPVEsaGU9VHQscGU9UnQsdmU9Y2UuZ2V0LHllPWNlLmVuZm9yY2UsZ2U9U3RyaW5nKFN0cmluZykuc3BsaXQoIlN0cmluZyIpOyhBdC5leHBvcnRzPWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpLGE9ISFuJiYhIW4udW5zYWZlLG89ISFuJiYhIW4uZW51bWVyYWJsZSxzPSEhbiYmISFuLm5vVGFyZ2V0R2V0OyJmdW5jdGlvbiI9PXR5cGVvZiByJiYoInN0cmluZyIhPXR5cGVvZiBlfHxkZShyLCJuYW1lIil8fGxlKHIsIm5hbWUiLGUpLChpPXllKHIpKS5zb3VyY2V8fChpLnNvdXJjZT1nZS5qb2luKCJzdHJpbmciPT10eXBlb2YgZT9lOiIiKSkpLHQhPT1mZT8oYT8hcyYmdFtlXSYmKG89ITApOmRlbGV0ZSB0W2VdLG8/dFtlXT1yOmxlKHQsZSxyKSk6bz90W2VdPXI6aGUoZSxyKX0pKEZ1bmN0aW9uLnByb3RvdHlwZSwidG9TdHJpbmciLChmdW5jdGlvbigpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiB0aGlzJiZ2ZSh0aGlzKS5zb3VyY2V8fHBlKHRoaXMpfSkpO3ZhciBtZT1ULGJlPVQsd2U9ZnVuY3Rpb24odCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp2b2lkIDB9LGtlPWZ1bmN0aW9uKHQsZSl7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg8Mj93ZShtZVt0XSl8fHdlKGJlW3RdKTptZVt0XSYmbWVbdF1bZV18fGJlW3RdJiZiZVt0XVtlXX0seGU9e30sQWU9TWF0aC5jZWlsLFNlPU1hdGguZmxvb3IsX2U9ZnVuY3Rpb24odCl7cmV0dXJuIGlzTmFOKHQ9K3QpPzA6KHQ+MD9TZTpBZSkodCl9LFRlPV9lLEVlPU1hdGgubWluLEllPWZ1bmN0aW9uKHQpe3JldHVybiB0PjA/RWUoVGUodCksOTAwNzE5OTI1NDc0MDk5MSk6MH0sT2U9X2UsTWU9TWF0aC5tYXgsQ2U9TWF0aC5taW4sUmU9ZnVuY3Rpb24odCxlKXt2YXIgcj1PZSh0KTtyZXR1cm4gcjwwP01lKHIrZSwwKTpDZShyLGUpfSxCZT1ILFBlPUllLFVlPVJlLERlPWZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbihlLHIsbil7dmFyIGksYT1CZShlKSxvPVBlKGEubGVuZ3RoKSxzPVVlKG4sbyk7aWYodCYmciE9cil7Zm9yKDtvPnM7KWlmKChpPWFbcysrXSkhPWkpcmV0dXJuITB9ZWxzZSBmb3IoO28+cztzKyspaWYoKHR8fHMgaW4gYSkmJmFbc109PT1yKXJldHVybiB0fHxzfHwwO3JldHVybiF0JiYtMX19LHplPXtpbmNsdWRlczpEZSghMCksaW5kZXhPZjpEZSghMSl9LGplPVEsTGU9SCxGZT16ZS5pbmRleE9mLE5lPXF0LFZlPWZ1bmN0aW9uKHQsZSl7dmFyIHIsbj1MZSh0KSxpPTAsYT1bXTtmb3IociBpbiBuKSFqZShOZSxyKSYmamUobixyKSYmYS5wdXNoKHIpO2Zvcig7ZS5sZW5ndGg+aTspamUobixyPWVbaSsrXSkmJih+RmUoYSxyKXx8YS5wdXNoKHIpKTtyZXR1cm4gYX0sSGU9WyJjb25zdHJ1Y3RvciIsImhhc093blByb3BlcnR5IiwiaXNQcm90b3R5cGVPZiIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidG9Mb2NhbGVTdHJpbmciLCJ0b1N0cmluZyIsInZhbHVlT2YiXSxZZT1WZSxLZT1IZS5jb25jYXQoImxlbmd0aCIsInByb3RvdHlwZSIpO3hlLmY9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXN8fGZ1bmN0aW9uKHQpe3JldHVybiBZZSh0LEtlKX07dmFyIFdlPXt9O1dlLmY9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9sczt2YXIgR2UscWUsWGU9eGUsJGU9V2UsUWU9cHQsWmU9a2UoIlJlZmxlY3QiLCJvd25LZXlzIil8fGZ1bmN0aW9uKHQpe3ZhciBlPVhlLmYoUWUodCkpLHI9JGUuZjtyZXR1cm4gcj9lLmNvbmNhdChyKHQpKTplfSxKZT1RLHRyPVplLGVyPUUscnI9ZHQsbnI9SSxpcj0vI3xcLnByb3RvdHlwZVwuLyxhcj1mdW5jdGlvbih0LGUpe3ZhciByPXNyW29yKHQpXTtyZXR1cm4gcj09Y3J8fHIhPXVyJiYoImZ1bmN0aW9uIj09dHlwZW9mIGU/bnIoZSk6ISFlKX0sb3I9YXIubm9ybWFsaXplPWZ1bmN0aW9uKHQpe3JldHVybiBTdHJpbmcodCkucmVwbGFjZShpciwiLiIpLnRvTG93ZXJDYXNlKCl9LHNyPWFyLmRhdGE9e30sdXI9YXIuTkFUSVZFPSJOIixjcj1hci5QT0xZRklMTD0iUCIsZnI9YXIsbHI9VCxkcj1FLmYsaHI9eHQscHI9QXQuZXhwb3J0cyx2cj1UdCx5cj1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj10cihlKSxuPXJyLmYsaT1lci5mLGE9MDthPHIubGVuZ3RoO2ErKyl7dmFyIG89clthXTtKZSh0LG8pfHxuKHQsbyxpKGUsbykpfX0sZ3I9ZnIsbXI9ZnVuY3Rpb24odCxlKXt2YXIgbixpLGEsbyxzLHU9dC50YXJnZXQsYz10Lmdsb2JhbCxmPXQuc3RhdDtpZihuPWM/bHI6Zj9sclt1XXx8dnIodSx7fSk6KGxyW3VdfHx7fSkucHJvdG90eXBlKWZvcihpIGluIGUpe2lmKG89ZVtpXSxhPXQubm9UYXJnZXRHZXQ/KHM9ZHIobixpKSkmJnMudmFsdWU6bltpXSwhZ3IoYz9pOnUrKGY/Ii4iOiIjIikraSx0LmZvcmNlZCkmJnZvaWQgMCE9PWEpe2lmKHIobyk9PT1yKGEpKWNvbnRpbnVlO3lyKG8sYSl9KHQuc2hhbXx8YSYmYS5zaGFtKSYmaHIobywic2hhbSIsITApLHByKG4saSxvLHQpfX0sYnI9RCx3cj1BcnJheS5pc0FycmF5fHxmdW5jdGlvbih0KXtyZXR1cm4iQXJyYXkiPT1icih0KX0sa3I9Vyx4cj1kdCxBcj1QLFNyPWZ1bmN0aW9uKHQsZSxyKXt2YXIgbj1rcihlKTtuIGluIHQ/eHIuZih0LG4sQXIoMCxyKSk6dFtuXT1yfSxfcj1rZSgibmF2aWdhdG9yIiwidXNlckFnZW50Iil8fCIiLFRyPV9yLEVyPVQucHJvY2VzcyxJcj1FciYmRXIudmVyc2lvbnMsT3I9SXImJklyLnY4O09yP3FlPShHZT1Pci5zcGxpdCgiLiIpKVswXTw0PzE6R2VbMF0rR2VbMV06VHImJighKEdlPVRyLm1hdGNoKC9FZGdlXC8oXGQrKS8pKXx8R2VbMV0+PTc0KSYmKEdlPVRyLm1hdGNoKC9DaHJvbWVcLyhcZCspLykpJiYocWU9R2VbMV0pO3ZhciBNcj1xZSYmK3FlLENyPU1yLFJyPUksQnI9ISFPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzJiYhUnIoKGZ1bmN0aW9uKCl7cmV0dXJuIVN0cmluZyhTeW1ib2woKSl8fCFTeW1ib2wuc2hhbSYmQ3ImJkNyPDQxfSkpLFByPUJyJiYhU3ltYm9sLnNoYW0mJiJzeW1ib2wiPT1yKFN5bWJvbC5pdGVyYXRvciksVXI9VCxEcj1EdC5leHBvcnRzLHpyPVEsanI9SHQsTHI9QnIsRnI9UHIsTnI9RHIoIndrcyIpLFZyPVVyLlN5bWJvbCxIcj1Gcj9WcjpWciYmVnIud2l0aG91dFNldHRlcnx8anIsWXI9ZnVuY3Rpb24odCl7cmV0dXJuIHpyKE5yLHQpJiYoTHJ8fCJzdHJpbmciPT10eXBlb2YgTnJbdF0pfHwoTHImJnpyKFZyLHQpP05yW3RdPVZyW3RdOk5yW3RdPUhyKCJTeW1ib2wuIit0KSksTnJbdF19LEtyPVksV3I9d3IsR3I9WXIoInNwZWNpZXMiKSxxcj1mdW5jdGlvbih0LGUpe3ZhciByO3JldHVybiBXcih0KSYmKCJmdW5jdGlvbiIhPXR5cGVvZihyPXQuY29uc3RydWN0b3IpfHxyIT09QXJyYXkmJiFXcihyLnByb3RvdHlwZSk/S3IocikmJm51bGw9PT0ocj1yW0dyXSkmJihyPXZvaWQgMCk6cj12b2lkIDApLG5ldyh2b2lkIDA9PT1yP0FycmF5OnIpKDA9PT1lPzA6ZSl9LFhyPUksJHI9TXIsUXI9WXIoInNwZWNpZXMiKSxacj1mdW5jdGlvbih0KXtyZXR1cm4gJHI+PTUxfHwhWHIoKGZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuKGUuY29uc3RydWN0b3I9e30pW1FyXT1mdW5jdGlvbigpe3JldHVybntmb286MX19LDEhPT1lW3RdKEJvb2xlYW4pLmZvb30pKX0sSnI9bXIsdG49SSxlbj13cixybj1ZLG5uPXEsYW49SWUsb249U3Isc249cXIsdW49WnIsY249TXIsZm49WXIoImlzQ29uY2F0U3ByZWFkYWJsZSIpLGxuPTkwMDcxOTkyNTQ3NDA5OTEsZG49Ik1heGltdW0gYWxsb3dlZCBpbmRleCBleGNlZWRlZCIsaG49Y24+PTUxfHwhdG4oKGZ1bmN0aW9uKCl7dmFyIHQ9W107cmV0dXJuIHRbZm5dPSExLHQuY29uY2F0KClbMF0hPT10fSkpLHBuPXVuKCJjb25jYXQiKSx2bj1mdW5jdGlvbih0KXtpZighcm4odCkpcmV0dXJuITE7dmFyIGU9dFtmbl07cmV0dXJuIHZvaWQgMCE9PWU/ISFlOmVuKHQpfTtKcih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOiFobnx8IXBufSx7Y29uY2F0OmZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbz1ubih0aGlzKSxzPXNuKG8sMCksdT0wO2ZvcihlPS0xLG49YXJndW1lbnRzLmxlbmd0aDtlPG47ZSsrKWlmKHZuKGE9LTE9PT1lP286YXJndW1lbnRzW2VdKSl7aWYodSsoaT1hbihhLmxlbmd0aCkpPmxuKXRocm93IFR5cGVFcnJvcihkbik7Zm9yKHI9MDtyPGk7cisrLHUrKylyIGluIGEmJm9uKHMsdSxhW3JdKX1lbHNle2lmKHU+PWxuKXRocm93IFR5cGVFcnJvcihkbik7b24ocyx1KyssYSl9cmV0dXJuIHMubGVuZ3RoPXUsc319KTt2YXIgeW49e307eW5bWXIoInRvU3RyaW5nVGFnIildPSJ6Ijt2YXIgZ249IltvYmplY3Qgel0iPT09U3RyaW5nKHluKSxtbj1nbixibj1ELHduPVlyKCJ0b1N0cmluZ1RhZyIpLGtuPSJBcmd1bWVudHMiPT1ibihmdW5jdGlvbigpe3JldHVybiBhcmd1bWVudHN9KCkpLHhuPW1uP2JuOmZ1bmN0aW9uKHQpe3ZhciBlLHIsbjtyZXR1cm4gdm9pZCAwPT09dD8iVW5kZWZpbmVkIjpudWxsPT09dD8iTnVsbCI6InN0cmluZyI9PXR5cGVvZihyPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0W2VdfWNhdGNoKHIpe319KGU9T2JqZWN0KHQpLHduKSk/cjprbj9ibihlKToiT2JqZWN0Ij09KG49Ym4oZSkpJiYiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/IkFyZ3VtZW50cyI6bn0sQW49eG4sU249Z24/e30udG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4iW29iamVjdCAiK0FuKHRoaXMpKyJdIn0sX249Z24sVG49QXQuZXhwb3J0cyxFbj1Tbjtfbnx8VG4oT2JqZWN0LnByb3RvdHlwZSwidG9TdHJpbmciLEVuLHt1bnNhZmU6ITB9KTt2YXIgSW49e0NTU1J1bGVMaXN0OjAsQ1NTU3R5bGVEZWNsYXJhdGlvbjowLENTU1ZhbHVlTGlzdDowLENsaWVudFJlY3RMaXN0OjAsRE9NUmVjdExpc3Q6MCxET01TdHJpbmdMaXN0OjAsRE9NVG9rZW5MaXN0OjEsRGF0YVRyYW5zZmVySXRlbUxpc3Q6MCxGaWxlTGlzdDowLEhUTUxBbGxDb2xsZWN0aW9uOjAsSFRNTENvbGxlY3Rpb246MCxIVE1MRm9ybUVsZW1lbnQ6MCxIVE1MU2VsZWN0RWxlbWVudDowLE1lZGlhTGlzdDowLE1pbWVUeXBlQXJyYXk6MCxOYW1lZE5vZGVNYXA6MCxOb2RlTGlzdDoxLFBhaW50UmVxdWVzdExpc3Q6MCxQbHVnaW46MCxQbHVnaW5BcnJheTowLFNWR0xlbmd0aExpc3Q6MCxTVkdOdW1iZXJMaXN0OjAsU1ZHUGF0aFNlZ0xpc3Q6MCxTVkdQb2ludExpc3Q6MCxTVkdTdHJpbmdMaXN0OjAsU1ZHVHJhbnNmb3JtTGlzdDowLFNvdXJjZUJ1ZmZlckxpc3Q6MCxTdHlsZVNoZWV0TGlzdDowLFRleHRUcmFja0N1ZUxpc3Q6MCxUZXh0VHJhY2tMaXN0OjAsVG91Y2hMaXN0OjB9LE9uPWZ1bmN0aW9uKHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0KXRocm93IFR5cGVFcnJvcihTdHJpbmcodCkrIiBpcyBub3QgYSBmdW5jdGlvbiIpO3JldHVybiB0fSxNbj1PbixDbj1mdW5jdGlvbih0LGUscil7aWYoTW4odCksdm9pZCAwPT09ZSlyZXR1cm4gdDtzd2l0Y2gocil7Y2FzZSAwOnJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmNhbGwoZSl9O2Nhc2UgMTpyZXR1cm4gZnVuY3Rpb24ocil7cmV0dXJuIHQuY2FsbChlLHIpfTtjYXNlIDI6cmV0dXJuIGZ1bmN0aW9uKHIsbil7cmV0dXJuIHQuY2FsbChlLHIsbil9O2Nhc2UgMzpyZXR1cm4gZnVuY3Rpb24ocixuLGkpe3JldHVybiB0LmNhbGwoZSxyLG4saSl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiB0LmFwcGx5KGUsYXJndW1lbnRzKX19LFJuPUNuLEJuPUwsUG49cSxVbj1JZSxEbj1xcix6bj1bXS5wdXNoLGpuPWZ1bmN0aW9uKHQpe3ZhciBlPTE9PXQscj0yPT10LG49Mz09dCxpPTQ9PXQsYT02PT10LG89Nz09dCxzPTU9PXR8fGE7cmV0dXJuIGZ1bmN0aW9uKHUsYyxmLGwpe2Zvcih2YXIgZCxoLHA9UG4odSksdj1CbihwKSx5PVJuKGMsZiwzKSxnPVVuKHYubGVuZ3RoKSxtPTAsYj1sfHxEbix3PWU/Yih1LGcpOnJ8fG8/Yih1LDApOnZvaWQgMDtnPm07bSsrKWlmKChzfHxtIGluIHYpJiYoaD15KGQ9dlttXSxtLHApLHQpKWlmKGUpd1ttXT1oO2Vsc2UgaWYoaClzd2l0Y2godCl7Y2FzZSAzOnJldHVybiEwO2Nhc2UgNTpyZXR1cm4gZDtjYXNlIDY6cmV0dXJuIG07Y2FzZSAyOnpuLmNhbGwodyxkKX1lbHNlIHN3aXRjaCh0KXtjYXNlIDQ6cmV0dXJuITE7Y2FzZSA3OnpuLmNhbGwodyxkKX1yZXR1cm4gYT8tMTpufHxpP2k6d319LExuPXtmb3JFYWNoOmpuKDApLG1hcDpqbigxKSxmaWx0ZXI6am4oMiksc29tZTpqbigzKSxldmVyeTpqbig0KSxmaW5kOmpuKDUpLGZpbmRJbmRleDpqbig2KSxmaWx0ZXJPdXQ6am4oNyl9LEZuPUksTm49ZnVuY3Rpb24odCxlKXt2YXIgcj1bXVt0XTtyZXR1cm4hIXImJkZuKChmdW5jdGlvbigpe3IuY2FsbChudWxsLGV8fGZ1bmN0aW9uKCl7dGhyb3cgMX0sMSl9KSl9LFZuPUxuLmZvckVhY2gsSG49Tm4oImZvckVhY2giKT9bXS5mb3JFYWNoOmZ1bmN0aW9uKHQpe3JldHVybiBWbih0aGlzLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSxZbj1ULEtuPUluLFduPUhuLEduPXh0O2Zvcih2YXIgcW4gaW4gS24pe3ZhciBYbj1Zbltxbl0sJG49WG4mJlhuLnByb3RvdHlwZTtpZigkbiYmJG4uZm9yRWFjaCE9PVduKXRyeXtHbigkbiwiZm9yRWFjaCIsV24pfWNhdGNoKFN2KXskbi5mb3JFYWNoPVdufX12YXIgUW49TG4ubWFwO21yKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVpyKCJtYXAiKX0se21hcDpmdW5jdGlvbih0KXtyZXR1cm4gUW4odGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgWm4sSm49VmUsdGk9SGUsZWk9T2JqZWN0LmtleXN8fGZ1bmN0aW9uKHQpe3JldHVybiBKbih0LHRpKX0scmk9ZHQsbmk9cHQsaWk9ZWksYWk9Tz9PYmplY3QuZGVmaW5lUHJvcGVydGllczpmdW5jdGlvbih0LGUpe25pKHQpO2Zvcih2YXIgcixuPWlpKGUpLGk9bi5sZW5ndGgsYT0wO2k+YTspcmkuZih0LHI9blthKytdLGVbcl0pO3JldHVybiB0fSxvaT1rZSgiZG9jdW1lbnQiLCJkb2N1bWVudEVsZW1lbnQiKSxzaT1wdCx1aT1haSxjaT1IZSxmaT1xdCxsaT1vaSxkaT1ldCxoaT1HdCgiSUVfUFJPVE8iKSxwaT1mdW5jdGlvbigpe30sdmk9ZnVuY3Rpb24odCl7cmV0dXJuIjxzY3JpcHQ+Iit0KyI8LyIrInNjcmlwdD4ifSx5aT1mdW5jdGlvbigpe3RyeXtabj1kb2N1bWVudC5kb21haW4mJm5ldyBBY3RpdmVYT2JqZWN0KCJodG1sZmlsZSIpfWNhdGNoKFN2KXt9dmFyIHQsZTt5aT1abj9mdW5jdGlvbih0KXt0LndyaXRlKHZpKCIiKSksdC5jbG9zZSgpO3ZhciBlPXQucGFyZW50V2luZG93Lk9iamVjdDtyZXR1cm4gdD1udWxsLGV9KFpuKTooKGU9ZGkoImlmcmFtZSIpKS5zdHlsZS5kaXNwbGF5PSJub25lIixsaS5hcHBlbmRDaGlsZChlKSxlLnNyYz1TdHJpbmcoImphdmFzY3JpcHQ6IiksKHQ9ZS5jb250ZW50V2luZG93LmRvY3VtZW50KS5vcGVuKCksdC53cml0ZSh2aSgiZG9jdW1lbnQuRj1PYmplY3QiKSksdC5jbG9zZSgpLHQuRik7Zm9yKHZhciByPWNpLmxlbmd0aDtyLS07KWRlbGV0ZSB5aS5wcm90b3R5cGVbY2lbcl1dO3JldHVybiB5aSgpfTtmaVtoaV09ITA7dmFyIGdpPU9iamVjdC5jcmVhdGV8fGZ1bmN0aW9uKHQsZSl7dmFyIHI7cmV0dXJuIG51bGwhPT10PyhwaS5wcm90b3R5cGU9c2kodCkscj1uZXcgcGkscGkucHJvdG90eXBlPW51bGwscltoaV09dCk6cj15aSgpLHZvaWQgMD09PWU/cjp1aShyLGUpfSxtaT1naSxiaT1kdCx3aT1ZcigidW5zY29wYWJsZXMiKSxraT1BcnJheS5wcm90b3R5cGU7bnVsbD09a2lbd2ldJiZiaS5mKGtpLHdpLHtjb25maWd1cmFibGU6ITAsdmFsdWU6bWkobnVsbCl9KTt2YXIgeGk9ZnVuY3Rpb24odCl7a2lbd2ldW3RdPSEwfSxBaT16ZS5pbmNsdWRlcyxTaT14aTttcih7dGFyZ2V0OiJBcnJheSIscHJvdG86ITB9LHtpbmNsdWRlczpmdW5jdGlvbih0KXtyZXR1cm4gQWkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KSxTaSgiaW5jbHVkZXMiKTt2YXIgX2k9WSxUaT1ELEVpPVlyKCJtYXRjaCIpLElpPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiBfaSh0KSYmKHZvaWQgMCE9PShlPXRbRWldKT8hIWU6IlJlZ0V4cCI9PVRpKHQpKX0sT2k9WXIoIm1hdGNoIiksTWk9ZnVuY3Rpb24odCl7aWYoSWkodCkpdGhyb3cgVHlwZUVycm9yKCJUaGUgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHJlZ3VsYXIgZXhwcmVzc2lvbnMiKTtyZXR1cm4gdH0sQ2k9Rjttcih7dGFyZ2V0OiJTdHJpbmciLHByb3RvOiEwLGZvcmNlZDohZnVuY3Rpb24odCl7dmFyIGU9Ly4vO3RyeXsiLy4vIlt0XShlKX1jYXRjaChyKXt0cnl7cmV0dXJuIGVbT2ldPSExLCIvLi8iW3RdKGUpfWNhdGNoKG4pe319cmV0dXJuITF9KCJpbmNsdWRlcyIpfSx7aW5jbHVkZXM6ZnVuY3Rpb24odCl7cmV0dXJuISF+U3RyaW5nKENpKHRoaXMpKS5pbmRleE9mKE1pKHQpLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgUmk9TG4uZmlsdGVyO21yKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IVpyKCJmaWx0ZXIiKX0se2ZpbHRlcjpmdW5jdGlvbih0KXtyZXR1cm4gUmkodGhpcyx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX19KTt2YXIgQmk9InZpZGVvIixQaT0iYXVkaW8iLFVpPSJtZXRhZGF0YSIsRGk9ImF2YyIsemk9ImhldmMiLGppPSJhYWMiLExpPSJnNzExMGEiLEZpPSJnNzExMG0iLE5pPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSxiKHRoaXMsImlkIiwxKSxiKHRoaXMsInR5cGUiLEJpKSxiKHRoaXMsImNvZGVjVHlwZSIsRGkpLGIodGhpcywicGlkIiwtMSksYih0aGlzLCJodmNDIix2b2lkIDApLGIodGhpcywiY29kZWMiLCIiKSxiKHRoaXMsInRpbWVzY2FsZSIsMCksYih0aGlzLCJmb3JtYXRUaW1lc2NhbGUiLDApLGIodGhpcywic2VxdWVuY2VOdW1iZXIiLDApLGIodGhpcywiYmFzZU1lZGlhRGVjb2RlVGltZSIsMCksYih0aGlzLCJiYXNlRHRzIiwwKSxiKHRoaXMsImR1cmF0aW9uIiwwKSxiKHRoaXMsIndhcm5pbmdzIixbXSksYih0aGlzLCJzYW1wbGVzIixbXSksYih0aGlzLCJwcHMiLFtdKSxiKHRoaXMsInNwcyIsW10pLGIodGhpcywidnBzIixbXSksYih0aGlzLCJmcHNOdW0iLDApLGIodGhpcywiZnBzRGVuIiwwKSxiKHRoaXMsInNhclJhdGlvIixbXSksYih0aGlzLCJ3aWR0aCIsMCksYih0aGlzLCJoZWlnaHQiLDApLGIodGhpcywibmFsVW5pdFNpemUiLDQpLGIodGhpcywicHJlc2VudCIsITEpLGIodGhpcywiaXNWaWRlb0VuY3J5cHRpb24iLCExKSxiKHRoaXMsImlzQXVkaW9FbmNyeXB0aW9uIiwhMSksYih0aGlzLCJraWQiLG51bGwpLGIodGhpcywicHNzaCIsbnVsbCksYih0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIG0odCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj10aGlzLndpZHRoPXRoaXMuaGVpZ2h0PXRoaXMuZnBzRGVuPXRoaXMuZnBzTnVtPXRoaXMuZHVyYXRpb249dGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPXRoaXMudGltZXNjYWxlPTAsdGhpcy5jb2RlYz0iIix0aGlzLnByZXNlbnQ9ITEsdGhpcy5waWQ9LTEsdGhpcy5wcHM9W10sdGhpcy5zcHM9W10sdGhpcy52cHM9W10sdGhpcy5zYXJSYXRpbz1bXSx0aGlzLnNhbXBsZXM9W10sdGhpcy53YXJuaW5ncz1bXSx0aGlzLmh2Y0M9bnVsbH19LHtrZXk6ImV4aXN0Iix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiEhKHRoaXMucHBzLmxlbmd0aCYmdGhpcy5zcHMubGVuZ3RoJiZ0aGlzLmNvZGVjKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fV0pLHR9KCksVmk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eSh0aGlzLHQpLGIodGhpcywiaWQiLDIpLGIodGhpcywidHlwZSIsUGkpLGIodGhpcywiY29kZWNUeXBlIixqaSksYih0aGlzLCJwaWQiLC0xKSxiKHRoaXMsImNvZGVjIiwiIiksYih0aGlzLCJzZXF1ZW5jZU51bWJlciIsMCksYih0aGlzLCJzYW1wbGVEdXJhdGlvbiIsMCksYih0aGlzLCJ0aW1lc2NhbGUiLDApLGIodGhpcywiZm9ybWF0VGltZXNjYWxlIiwwKSxiKHRoaXMsImJhc2VNZWRpYURlY29kZVRpbWUiLDApLGIodGhpcywiZHVyYXRpb24iLDApLGIodGhpcywid2FybmluZ3MiLFtdKSxiKHRoaXMsInNhbXBsZXMiLFtdKSxiKHRoaXMsImJhc2VEdHMiLDApLGIodGhpcywic2FtcGxlU2l6ZSIsMTYpLGIodGhpcywic2FtcGxlUmF0ZSIsMCksYih0aGlzLCJjaGFubmVsQ291bnQiLDApLGIodGhpcywib2JqZWN0VHlwZSIsMCksYih0aGlzLCJzYW1wbGVSYXRlSW5kZXgiLDApLGIodGhpcywiY29uZmlnIixbXSksYih0aGlzLCJwcmVzZW50IiwhMSksYih0aGlzLCJpc1ZpZGVvRW5jcnlwdGlvbiIsITEpLGIodGhpcywiaXNBdWRpb0VuY3J5cHRpb24iLCExKSxiKHRoaXMsImtpZCIsbnVsbCksYih0aGlzLCJleHQiLHZvaWQgMCl9cmV0dXJuIG0odCxbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5zZXF1ZW5jZU51bWJlcj0wLHRoaXMudGltZXNjYWxlPTAsdGhpcy5zYW1wbGVEdXJhdGlvbj0wLHRoaXMuc2FtcGxlUmF0ZT0wLHRoaXMuY2hhbm5lbENvdW50PTAsdGhpcy5iYXNlTWVkaWFEZWNvZGVUaW1lPTAsdGhpcy5wcmVzZW50PSExLHRoaXMucGlkPS0xLHRoaXMuY29kZWM9IiIsdGhpcy5zYW1wbGVzPVtdLHRoaXMuY29uZmlnPVtdLHRoaXMud2FybmluZ3M9W119fSx7a2V5OiJleGlzdCIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hISh0aGlzLnNhbXBsZVJhdGUmJnRoaXMuY2hhbm5lbENvdW50JiZ0aGlzLmNvZGVjJiZ0aGlzLmNvZGVjVHlwZT09PWppKX19LHtrZXk6Imhhc1NhbXBsZSIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuc2FtcGxlcy5sZW5ndGh9fV0pLHR9KCksSGk9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuKXt5KHRoaXMsdCksYih0aGlzLCJmbGFnIix7fSksYih0aGlzLCJrZXlmcmFtZSIsITEpLGIodGhpcywiZ29wSWQiLDApLGIodGhpcywiZHVyYXRpb24iLDApLGIodGhpcywic2l6ZSIsMCksYih0aGlzLCJ1bml0cyIsW10pLGIodGhpcywiY2hyb21hRm9ybWF0Iiw0MjApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPWUsdGhpcy5vcmlnaW5EdHM9dGhpcy5kdHM9cixuJiYodGhpcy51bml0cz1uKX1yZXR1cm4gbSh0LFt7a2V5OiJjdHMiLGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB0cy10aGlzLmR0c319LHtrZXk6InNldFRvS2V5ZnJhbWUiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5rZXlmcmFtZT0hMCx0aGlzLmZsYWcuZGVwZW5kc09uPTIsdGhpcy5mbGFnLmlzTm9uU3luY1NhbXBsZT0wfX1dKSx0fSgpLFlpPW0oKGZ1bmN0aW9uIHQoZSxyLG4saSl7eSh0aGlzLHQpLGIodGhpcywiZHVyYXRpb24iLDEwMjQpLGIodGhpcywiZmxhZyIse2RlcGVuZHNPbjoyLGlzTm9uU3luY1NhbXBsZTowfSksYih0aGlzLCJrZXlmcmFtZSIsITApLHRoaXMub3JpZ2luUHRzPXRoaXMucHRzPXRoaXMuZHRzPWUsdGhpcy5kYXRhPXIsdGhpcy5zaXplPXIuYnl0ZUxlbmd0aCx0aGlzLnNhbXBsZU9mZnNldD1pLG4mJih0aGlzLmR1cmF0aW9uPW4pfSkpLEtpPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSxiKHRoaXMsImlkIiwzKSxiKHRoaXMsInR5cGUiLFVpKSxiKHRoaXMsInRpbWVzY2FsZSIsMCksYih0aGlzLCJmbHZTY3JpcHRTYW1wbGVzIixbXSksYih0aGlzLCJzZWlTYW1wbGVzIixbXSl9cmV0dXJuIG0odCxbe2tleToiZXhpc3QiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGh8fCF0aGlzLnRpbWVzY2FsZSl9fSx7a2V5OiJyZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt0aGlzLnRpbWVzY2FsZT0wLHRoaXMuZmx2U2NyaXB0U2FtcGxlcz1bXSx0aGlzLnNlaVNhbXBsZXM9W119fSx7a2V5OiJoYXNTYW1wbGUiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuISghdGhpcy5mbHZTY3JpcHRTYW1wbGVzLmxlbmd0aCYmIXRoaXMuc2VpU2FtcGxlcy5sZW5ndGgpfX1dKSx0fSgpLFdpPVksR2k9cHQscWk9ZnVuY3Rpb24odCl7aWYoIVdpKHQpJiZudWxsIT09dCl0aHJvdyBUeXBlRXJyb3IoIkNhbid0IHNldCAiK1N0cmluZyh0KSsiIGFzIGEgcHJvdG90eXBlIik7cmV0dXJuIHR9LFhpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8KCJfX3Byb3RvX18iaW57fT9mdW5jdGlvbigpe3ZhciB0LGU9ITEscj17fTt0cnl7KHQ9T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihPYmplY3QucHJvdG90eXBlLCJfX3Byb3RvX18iKS5zZXQpLmNhbGwocixbXSksZT1yIGluc3RhbmNlb2YgQXJyYXl9Y2F0Y2goU3Ype31yZXR1cm4gZnVuY3Rpb24ocixuKXtyZXR1cm4gR2kocikscWkobiksZT90LmNhbGwocixuKTpyLl9fcHJvdG9fXz1uLHJ9fSgpOnZvaWQgMCksJGk9WSxRaT1YaSxaaT1mdW5jdGlvbih0LGUscil7dmFyIG4saTtyZXR1cm4gUWkmJiJmdW5jdGlvbiI9PXR5cGVvZihuPWUuY29uc3RydWN0b3IpJiZuIT09ciYmJGkoaT1uLnByb3RvdHlwZSkmJmkhPT1yLnByb3RvdHlwZSYmUWkodCxpKSx0fSxKaT1GLHRhPSJbXHRcblx2XGZcciDCoOGagOKAgOKAgeKAguKAg+KAhOKAheKAhuKAh+KAiOKAieKAiuKAr+KBn+OAgFx1MjAyOFx1MjAyOVx1ZmVmZl0iLGVhPVJlZ0V4cCgiXiIrdGErdGErIioiKSxyYT1SZWdFeHAodGErdGErIiokIiksbmE9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciByPVN0cmluZyhKaShlKSk7cmV0dXJuIDEmdCYmKHI9ci5yZXBsYWNlKGVhLCIiKSksMiZ0JiYocj1yLnJlcGxhY2UocmEsIiIpKSxyfX0saWE9e3N0YXJ0Om5hKDEpLGVuZDpuYSgyKSx0cmltOm5hKDMpfSxhYT1PLG9hPVQsc2E9ZnIsdWE9QXQuZXhwb3J0cyxjYT1RLGZhPUQsbGE9WmksZGE9VyxoYT1JLHBhPWdpLHZhPXhlLmYseWE9RS5mLGdhPWR0LmYsbWE9aWEudHJpbSxiYT0iTnVtYmVyIix3YT1vYS5OdW1iZXIsa2E9d2EucHJvdG90eXBlLHhhPWZhKHBhKGthKSk9PWJhLEFhPWZ1bmN0aW9uKHQpe3ZhciBlLHIsbixpLGEsbyxzLHUsYz1kYSh0LCExKTtpZigic3RyaW5nIj09dHlwZW9mIGMmJmMubGVuZ3RoPjIpaWYoNDM9PT0oZT0oYz1tYShjKSkuY2hhckNvZGVBdCgwKSl8fDQ1PT09ZSl7aWYoODg9PT0ocj1jLmNoYXJDb2RlQXQoMikpfHwxMjA9PT1yKXJldHVybiBOYU59ZWxzZSBpZig0OD09PWUpe3N3aXRjaChjLmNoYXJDb2RlQXQoMSkpe2Nhc2UgNjY6Y2FzZSA5ODpuPTIsaT00OTticmVhaztjYXNlIDc5OmNhc2UgMTExOm49OCxpPTU1O2JyZWFrO2RlZmF1bHQ6cmV0dXJuK2N9Zm9yKG89KGE9Yy5zbGljZSgyKSkubGVuZ3RoLHM9MDtzPG87cysrKWlmKCh1PWEuY2hhckNvZGVBdChzKSk8NDh8fHU+aSlyZXR1cm4gTmFOO3JldHVybiBwYXJzZUludChhLG4pfXJldHVybitjfTtpZihzYShiYSwhd2EoIiAwbzEiKXx8IXdhKCIwYjEiKXx8d2EoIisweDEiKSkpe2Zvcih2YXIgU2EsX2E9ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDwxPzA6dCxyPXRoaXM7cmV0dXJuIHIgaW5zdGFuY2VvZiBfYSYmKHhhP2hhKChmdW5jdGlvbigpe2thLnZhbHVlT2YuY2FsbChyKX0pKTpmYShyKSE9YmEpP2xhKG5ldyB3YShBYShlKSkscixfYSk6QWEoZSl9LFRhPWFhP3ZhKHdhKToiTUFYX1ZBTFVFLE1JTl9WQUxVRSxOYU4sTkVHQVRJVkVfSU5GSU5JVFksUE9TSVRJVkVfSU5GSU5JVFksRVBTSUxPTixpc0Zpbml0ZSxpc0ludGVnZXIsaXNOYU4saXNTYWZlSW50ZWdlcixNQVhfU0FGRV9JTlRFR0VSLE1JTl9TQUZFX0lOVEVHRVIscGFyc2VGbG9hdCxwYXJzZUludCxpc0ludGVnZXIsZnJvbVN0cmluZyxyYW5nZSIuc3BsaXQoIiwiKSxFYT0wO1RhLmxlbmd0aD5FYTtFYSsrKWNhKHdhLFNhPVRhW0VhXSkmJiFjYShfYSxTYSkmJmdhKF9hLFNhLHlhKHdhLFNhKSk7X2EucHJvdG90eXBlPWthLGthLmNvbnN0cnVjdG9yPV9hLHVhKG9hLGJhLF9hKX12YXIgSWEsT2EsTWEsQ2E9e30sUmE9IUkoKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe31yZXR1cm4gdC5wcm90b3R5cGUuY29uc3RydWN0b3I9bnVsbCxPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IHQpIT09dC5wcm90b3R5cGV9KSksQmE9USxQYT1xLFVhPVJhLERhPUd0KCJJRV9QUk9UTyIpLHphPU9iamVjdC5wcm90b3R5cGUsamE9VWE/T2JqZWN0LmdldFByb3RvdHlwZU9mOmZ1bmN0aW9uKHQpe3JldHVybiB0PVBhKHQpLEJhKHQsRGEpP3RbRGFdOiJmdW5jdGlvbiI9PXR5cGVvZiB0LmNvbnN0cnVjdG9yJiZ0IGluc3RhbmNlb2YgdC5jb25zdHJ1Y3Rvcj90LmNvbnN0cnVjdG9yLnByb3RvdHlwZTp0IGluc3RhbmNlb2YgT2JqZWN0P3phOm51bGx9LExhPUksRmE9amEsTmE9eHQsVmE9USxIYT1ZcigiaXRlcmF0b3IiKSxZYT0hMTtbXS5rZXlzJiYoIm5leHQiaW4oTWE9W10ua2V5cygpKT8oT2E9RmEoRmEoTWEpKSkhPT1PYmplY3QucHJvdG90eXBlJiYoSWE9T2EpOllhPSEwKSwobnVsbD09SWF8fExhKChmdW5jdGlvbigpe3ZhciB0PXt9O3JldHVybiBJYVtIYV0uY2FsbCh0KSE9PXR9KSkpJiYoSWE9e30pLFZhKElhLEhhKXx8TmEoSWEsSGEsKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KSk7dmFyIEthPXtJdGVyYXRvclByb3RvdHlwZTpJYSxCVUdHWV9TQUZBUklfSVRFUkFUT1JTOllhfSxXYT1kdC5mLEdhPVEscWE9WXIoInRvU3RyaW5nVGFnIiksWGE9ZnVuY3Rpb24odCxlLHIpe3QmJiFHYSh0PXI/dDp0LnByb3RvdHlwZSxxYSkmJldhKHQscWEse2NvbmZpZ3VyYWJsZTohMCx2YWx1ZTplfSl9LCRhPUthLkl0ZXJhdG9yUHJvdG90eXBlLFFhPWdpLFphPVAsSmE9WGEsdG89Q2EsZW89ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30scm89bXIsbm89ZnVuY3Rpb24odCxlLHIpe3ZhciBuPWUrIiBJdGVyYXRvciI7cmV0dXJuIHQucHJvdG90eXBlPVFhKCRhLHtuZXh0OlphKDEscil9KSxKYSh0LG4sITEpLHRvW25dPWVvLHR9LGlvPWphLGFvPVhpLG9vPVhhLHNvPXh0LHVvPUF0LmV4cG9ydHMsY289Q2EsZm89S2EuSXRlcmF0b3JQcm90b3R5cGUsbG89S2EuQlVHR1lfU0FGQVJJX0lURVJBVE9SUyxobz1ZcigiaXRlcmF0b3IiKSxwbz0ia2V5cyIsdm89InZhbHVlcyIseW89ImVudHJpZXMiLGdvPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LG1vPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe25vKHIsZSxuKTt2YXIgcyx1LGMsZj1mdW5jdGlvbih0KXtpZih0PT09aSYmdilyZXR1cm4gdjtpZighbG8mJnQgaW4gaClyZXR1cm4gaFt0XTtzd2l0Y2godCl7Y2FzZSBwbzpjYXNlIHZvOmNhc2UgeW86cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyByKHRoaXMsdCl9fXJldHVybiBmdW5jdGlvbigpe3JldHVybiBuZXcgcih0aGlzKX19LGw9ZSsiIEl0ZXJhdG9yIixkPSExLGg9dC5wcm90b3R5cGUscD1oW2hvXXx8aFsiQEBpdGVyYXRvciJdfHxpJiZoW2ldLHY9IWxvJiZwfHxmKGkpLHk9IkFycmF5Ij09ZSYmaC5lbnRyaWVzfHxwO2lmKHkmJihzPWlvKHkuY2FsbChuZXcgdCkpLGZvIT09T2JqZWN0LnByb3RvdHlwZSYmcy5uZXh0JiYoaW8ocykhPT1mbyYmKGFvP2FvKHMsZm8pOiJmdW5jdGlvbiIhPXR5cGVvZiBzW2hvXSYmc28ocyxobyxnbykpLG9vKHMsbCwhMCkpKSxpPT12byYmcCYmcC5uYW1lIT09dm8mJihkPSEwLHY9ZnVuY3Rpb24oKXtyZXR1cm4gcC5jYWxsKHRoaXMpfSksaFtob10hPT12JiZzbyhoLGhvLHYpLGNvW2VdPXYsaSlpZih1PXt2YWx1ZXM6Zih2byksa2V5czphP3Y6ZihwbyksZW50cmllczpmKHlvKX0sbylmb3IoYyBpbiB1KShsb3x8ZHx8IShjIGluIGgpKSYmdW8oaCxjLHVbY10pO2Vsc2Ugcm8oe3RhcmdldDplLHByb3RvOiEwLGZvcmNlZDpsb3x8ZH0sdSk7cmV0dXJuIHV9LGJvPUgsd289eGksa289Q2EseG89Y2UsQW89bW8sU289IkFycmF5IEl0ZXJhdG9yIixfbz14by5zZXQsVG89eG8uZ2V0dGVyRm9yKFNvKSxFbz1BbyhBcnJheSwiQXJyYXkiLChmdW5jdGlvbih0LGUpe19vKHRoaXMse3R5cGU6U28sdGFyZ2V0OmJvKHQpLGluZGV4OjAsa2luZDplfSl9KSwoZnVuY3Rpb24oKXt2YXIgdD1Ubyh0aGlzKSxlPXQudGFyZ2V0LHI9dC5raW5kLG49dC5pbmRleCsrO3JldHVybiFlfHxuPj1lLmxlbmd0aD8odC50YXJnZXQ9dm9pZCAwLHt2YWx1ZTp2b2lkIDAsZG9uZTohMH0pOiJrZXlzIj09cj97dmFsdWU6bixkb25lOiExfToidmFsdWVzIj09cj97dmFsdWU6ZVtuXSxkb25lOiExfTp7dmFsdWU6W24sZVtuXV0sZG9uZTohMX19KSwidmFsdWVzIik7a28uQXJndW1lbnRzPWtvLkFycmF5LHdvKCJrZXlzIiksd28oInZhbHVlcyIpLHdvKCJlbnRyaWVzIik7dmFyIElvPXtleHBvcnRzOnt9fSxPbz1ZcigiaXRlcmF0b3IiKSxNbz0hMTt0cnl7dmFyIENvPTAsUm89e25leHQ6ZnVuY3Rpb24oKXtyZXR1cm57ZG9uZTohIUNvKyt9fSxyZXR1cm46ZnVuY3Rpb24oKXtNbz0hMH19O1JvW09vXT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxBcnJheS5mcm9tKFJvLChmdW5jdGlvbigpe3Rocm93IDJ9KSl9Y2F0Y2goU3Ype312YXIgQm8sUG89ZnVuY3Rpb24odCxlKXtpZighZSYmIU1vKXJldHVybiExO3ZhciByPSExO3RyeXt2YXIgbj17fTtuW09vXT1mdW5jdGlvbigpe3JldHVybntuZXh0OmZ1bmN0aW9uKCl7cmV0dXJue2RvbmU6cj0hMH19fX0sdChuKX1jYXRjaChTdil7fXJldHVybiByfSxVbz0idW5kZWZpbmVkIiE9dHlwZW9mIEFycmF5QnVmZmVyJiYidW5kZWZpbmVkIiE9dHlwZW9mIERhdGFWaWV3LERvPVVvLHpvPU8sam89VCxMbz1ZLEZvPVEsTm89eG4sVm89eHQsSG89QXQuZXhwb3J0cyxZbz1kdC5mLEtvPWphLFdvPVhpLEdvPVlyLHFvPUh0LFhvPWpvLkludDhBcnJheSwkbz1YbyYmWG8ucHJvdG90eXBlLFFvPWpvLlVpbnQ4Q2xhbXBlZEFycmF5LFpvPVFvJiZRby5wcm90b3R5cGUsSm89WG8mJktvKFhvKSx0cz0kbyYmS28oJG8pLGVzPU9iamVjdC5wcm90b3R5cGUscnM9ZXMuaXNQcm90b3R5cGVPZixucz1HbygidG9TdHJpbmdUYWciKSxpcz1xbygiVFlQRURfQVJSQVlfVEFHIiksYXM9RG8mJiEhV28mJiJPcGVyYSIhPT1Obyhqby5vcGVyYSksb3M9ITEsc3M9e0ludDhBcnJheToxLFVpbnQ4QXJyYXk6MSxVaW50OENsYW1wZWRBcnJheToxLEludDE2QXJyYXk6MixVaW50MTZBcnJheToyLEludDMyQXJyYXk6NCxVaW50MzJBcnJheTo0LEZsb2F0MzJBcnJheTo0LEZsb2F0NjRBcnJheTo4fSx1cz17QmlnSW50NjRBcnJheTo4LEJpZ1VpbnQ2NEFycmF5Ojh9LGNzPWZ1bmN0aW9uKHQpe2lmKCFMbyh0KSlyZXR1cm4hMTt2YXIgZT1Obyh0KTtyZXR1cm4gRm8oc3MsZSl8fEZvKHVzLGUpfTtmb3IoQm8gaW4gc3Mpam9bQm9dfHwoYXM9ITEpO2lmKCghYXN8fCJmdW5jdGlvbiIhPXR5cGVvZiBKb3x8Sm89PT1GdW5jdGlvbi5wcm90b3R5cGUpJiYoSm89ZnVuY3Rpb24oKXt0aHJvdyBUeXBlRXJyb3IoIkluY29ycmVjdCBpbnZvY2F0aW9uIil9LGFzKSlmb3IoQm8gaW4gc3Mpam9bQm9dJiZXbyhqb1tCb10sSm8pO2lmKCghYXN8fCF0c3x8dHM9PT1lcykmJih0cz1Kby5wcm90b3R5cGUsYXMpKWZvcihCbyBpbiBzcylqb1tCb10mJldvKGpvW0JvXS5wcm90b3R5cGUsdHMpO2lmKGFzJiZLbyhabykhPT10cyYmV28oWm8sdHMpLHpvJiYhRm8odHMsbnMpKWZvcihCbyBpbiBvcz0hMCxZbyh0cyxucyx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIExvKHRoaXMpP3RoaXNbaXNdOnZvaWQgMH19KSxzcylqb1tCb10mJlZvKGpvW0JvXSxpcyxCbyk7dmFyIGZzPXtOQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTOmFzLFRZUEVEX0FSUkFZX1RBRzpvcyYmaXMsYVR5cGVkQXJyYXk6ZnVuY3Rpb24odCl7aWYoY3ModCkpcmV0dXJuIHQ7dGhyb3cgVHlwZUVycm9yKCJUYXJnZXQgaXMgbm90IGEgdHlwZWQgYXJyYXkiKX0sYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjpmdW5jdGlvbih0KXtpZihXbyl7aWYocnMuY2FsbChKbyx0KSlyZXR1cm4gdH1lbHNlIGZvcih2YXIgZSBpbiBzcylpZihGbyhzcyxCbykpe3ZhciByPWpvW2VdO2lmKHImJih0PT09cnx8cnMuY2FsbChyLHQpKSlyZXR1cm4gdH10aHJvdyBUeXBlRXJyb3IoIlRhcmdldCBpcyBub3QgYSB0eXBlZCBhcnJheSBjb25zdHJ1Y3RvciIpfSxleHBvcnRUeXBlZEFycmF5TWV0aG9kOmZ1bmN0aW9uKHQsZSxyKXtpZih6byl7aWYocilmb3IodmFyIG4gaW4gc3Mpe3ZhciBpPWpvW25dO2lmKGkmJkZvKGkucHJvdG90eXBlLHQpKXRyeXtkZWxldGUgaS5wcm90b3R5cGVbdF19Y2F0Y2goU3Ype319dHNbdF0mJiFyfHxIbyh0cyx0LHI/ZTphcyYmJG9bdF18fGUpfX0sZXhwb3J0VHlwZWRBcnJheVN0YXRpY01ldGhvZDpmdW5jdGlvbih0LGUscil7dmFyIG4saTtpZih6byl7aWYoV28pe2lmKHIpZm9yKG4gaW4gc3MpaWYoKGk9am9bbl0pJiZGbyhpLHQpKXRyeXtkZWxldGUgaVt0XX1jYXRjaChTdil7fWlmKEpvW3RdJiYhcilyZXR1cm47dHJ5e3JldHVybiBIbyhKbyx0LHI/ZTphcyYmSm9bdF18fGUpfWNhdGNoKFN2KXt9fWZvcihuIGluIHNzKSEoaT1qb1tuXSl8fGlbdF0mJiFyfHxIbyhpLHQsZSl9fSxpc1ZpZXc6ZnVuY3Rpb24odCl7aWYoIUxvKHQpKXJldHVybiExO3ZhciBlPU5vKHQpO3JldHVybiJEYXRhVmlldyI9PT1lfHxGbyhzcyxlKXx8Rm8odXMsZSl9LGlzVHlwZWRBcnJheTpjcyxUeXBlZEFycmF5OkpvLFR5cGVkQXJyYXlQcm90b3R5cGU6dHN9LGxzPVQsZHM9SSxocz1Qbyxwcz1mcy5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLHZzPWxzLkFycmF5QnVmZmVyLHlzPWxzLkludDhBcnJheSxncz0hcHN8fCFkcygoZnVuY3Rpb24oKXt5cygxKX0pKXx8IWRzKChmdW5jdGlvbigpe25ldyB5cygtMSl9KSl8fCFocygoZnVuY3Rpb24odCl7bmV3IHlzLG5ldyB5cyhudWxsKSxuZXcgeXMoMS41KSxuZXcgeXModCl9KSwhMCl8fGRzKChmdW5jdGlvbigpe3JldHVybiAxIT09bmV3IHlzKG5ldyB2cygyKSwxLHZvaWQgMCkubGVuZ3RofSkpLG1zPUF0LmV4cG9ydHMsYnM9ZnVuY3Rpb24odCxlLHIpe2lmKCEodCBpbnN0YW5jZW9mIGUpKXRocm93IFR5cGVFcnJvcigiSW5jb3JyZWN0ICIrKHI/cisiICI6IiIpKyJpbnZvY2F0aW9uIik7cmV0dXJuIHR9LHdzPV9lLGtzPUllLHhzPWZ1bmN0aW9uKHQpe2lmKHZvaWQgMD09PXQpcmV0dXJuIDA7dmFyIGU9d3ModCkscj1rcyhlKTtpZihlIT09cil0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBsZW5ndGggb3IgaW5kZXgiKTtyZXR1cm4gcn0sQXM9TWF0aC5hYnMsU3M9TWF0aC5wb3csX3M9TWF0aC5mbG9vcixUcz1NYXRoLmxvZyxFcz1NYXRoLkxOMixJcz1xLE9zPVJlLE1zPUllLENzPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1Jcyh0aGlzKSxyPU1zKGUubGVuZ3RoKSxuPWFyZ3VtZW50cy5sZW5ndGgsaT1PcyhuPjE/YXJndW1lbnRzWzFdOnZvaWQgMCxyKSxhPW4+Mj9hcmd1bWVudHNbMl06dm9pZCAwLG89dm9pZCAwPT09YT9yOk9zKGEscik7bz5pOyllW2krK109dDtyZXR1cm4gZX0sUnM9VCxCcz1PLFBzPVVvLFVzPXh0LERzPWZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG4gaW4gZSltcyh0LG4sZVtuXSxyKTtyZXR1cm4gdH0senM9SSxqcz1icyxMcz1fZSxGcz1JZSxOcz14cyxWcz17cGFjazpmdW5jdGlvbih0LGUscil7dmFyIG4saSxhLG89bmV3IEFycmF5KHIpLHM9OCpyLWUtMSx1PSgxPDxzKS0xLGM9dT4+MSxmPTIzPT09ZT9TcygyLC0yNCktU3MoMiwtNzcpOjAsbD10PDB8fDA9PT10JiYxL3Q8MD8xOjAsZD0wO2ZvcigodD1Bcyh0KSkhPXR8fHQ9PT0xLzA/KGk9dCE9dD8xOjAsbj11KToobj1fcyhUcyh0KS9FcyksdCooYT1TcygyLC1uKSk8MSYmKG4tLSxhKj0yKSwodCs9bitjPj0xP2YvYTpmKlNzKDIsMS1jKSkqYT49MiYmKG4rKyxhLz0yKSxuK2M+PXU/KGk9MCxuPXUpOm4rYz49MT8oaT0odCphLTEpKlNzKDIsZSksbis9Yyk6KGk9dCpTcygyLGMtMSkqU3MoMixlKSxuPTApKTtlPj04O29bZCsrXT0yNTUmaSxpLz0yNTYsZS09OCk7Zm9yKG49bjw8ZXxpLHMrPWU7cz4wO29bZCsrXT0yNTUmbixuLz0yNTYscy09OCk7cmV0dXJuIG9bLS1kXXw9MTI4Kmwsb30sdW5wYWNrOmZ1bmN0aW9uKHQsZSl7dmFyIHIsbj10Lmxlbmd0aCxpPTgqbi1lLTEsYT0oMTw8aSktMSxvPWE+PjEscz1pLTcsdT1uLTEsYz10W3UtLV0sZj0xMjcmYztmb3IoYz4+PTc7cz4wO2Y9MjU2KmYrdFt1XSx1LS0scy09OCk7Zm9yKHI9ZiYoMTw8LXMpLTEsZj4+PS1zLHMrPWU7cz4wO3I9MjU2KnIrdFt1XSx1LS0scy09OCk7aWYoMD09PWYpZj0xLW87ZWxzZXtpZihmPT09YSlyZXR1cm4gcj9OYU46Yz8tMS8wOjEvMDtyKz1TcygyLGUpLGYtPW99cmV0dXJuKGM/LTE6MSkqcipTcygyLGYtZSl9fSxIcz1qYSxZcz1YaSxLcz14ZS5mLFdzPWR0LmYsR3M9Q3MscXM9WGEsWHM9Y2UuZ2V0LCRzPWNlLnNldCxRcz0iQXJyYXlCdWZmZXIiLFpzPSJEYXRhVmlldyIsSnM9Ildyb25nIGluZGV4Iix0dT1Scy5BcnJheUJ1ZmZlcixldT10dSxydT1Scy5EYXRhVmlldyxudT1ydSYmcnUucHJvdG90eXBlLGl1PU9iamVjdC5wcm90b3R5cGUsYXU9UnMuUmFuZ2VFcnJvcixvdT1Wcy5wYWNrLHN1PVZzLnVucGFjayx1dT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnRdfSxjdT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTVdfSxmdT1mdW5jdGlvbih0KXtyZXR1cm5bMjU1JnQsdD4+OCYyNTUsdD4+MTYmMjU1LHQ+PjI0JjI1NV19LGx1PWZ1bmN0aW9uKHQpe3JldHVybiB0WzNdPDwyNHx0WzJdPDwxNnx0WzFdPDw4fHRbMF19LGR1PWZ1bmN0aW9uKHQpe3JldHVybiBvdSh0LDIzLDQpfSxodT1mdW5jdGlvbih0KXtyZXR1cm4gb3UodCw1Miw4KX0scHU9ZnVuY3Rpb24odCxlKXtXcyh0LnByb3RvdHlwZSxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gWHModGhpcylbZV19fSl9LHZ1PWZ1bmN0aW9uKHQsZSxyLG4pe3ZhciBpPU5zKHIpLGE9WHModCk7aWYoaStlPmEuYnl0ZUxlbmd0aCl0aHJvdyBhdShKcyk7dmFyIG89WHMoYS5idWZmZXIpLmJ5dGVzLHM9aSthLmJ5dGVPZmZzZXQsdT1vLnNsaWNlKHMscytlKTtyZXR1cm4gbj91OnUucmV2ZXJzZSgpfSx5dT1mdW5jdGlvbih0LGUscixuLGksYSl7dmFyIG89TnMocikscz1Ycyh0KTtpZihvK2U+cy5ieXRlTGVuZ3RoKXRocm93IGF1KEpzKTtmb3IodmFyIHU9WHMocy5idWZmZXIpLmJ5dGVzLGM9bytzLmJ5dGVPZmZzZXQsZj1uKCtpKSxsPTA7bDxlO2wrKyl1W2MrbF09ZlthP2w6ZS1sLTFdfTtpZihQcyl7aWYoIXpzKChmdW5jdGlvbigpe3R1KDEpfSkpfHwhenMoKGZ1bmN0aW9uKCl7bmV3IHR1KC0xKX0pKXx8enMoKGZ1bmN0aW9uKCl7cmV0dXJuIG5ldyB0dSxuZXcgdHUoMS41KSxuZXcgdHUoTmFOKSx0dS5uYW1lIT1Rc30pKSl7Zm9yKHZhciBndSxtdT0oZXU9ZnVuY3Rpb24odCl7cmV0dXJuIGpzKHRoaXMsZXUpLG5ldyB0dShOcyh0KSl9KS5wcm90b3R5cGU9dHUucHJvdG90eXBlLGJ1PUtzKHR1KSx3dT0wO2J1Lmxlbmd0aD53dTspKGd1PWJ1W3d1KytdKWluIGV1fHxVcyhldSxndSx0dVtndV0pO211LmNvbnN0cnVjdG9yPWV1fVlzJiZIcyhudSkhPT1pdSYmWXMobnUsaXUpO3ZhciBrdT1uZXcgcnUobmV3IGV1KDIpKSx4dT1udS5zZXRJbnQ4O2t1LnNldEludDgoMCwyMTQ3NDgzNjQ4KSxrdS5zZXRJbnQ4KDEsMjE0NzQ4MzY0OSksIWt1LmdldEludDgoMCkmJmt1LmdldEludDgoMSl8fERzKG51LHtzZXRJbnQ4OmZ1bmN0aW9uKHQsZSl7eHUuY2FsbCh0aGlzLHQsZTw8MjQ+PjI0KX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXt4dS5jYWxsKHRoaXMsdCxlPDwyND4+MjQpfX0se3Vuc2FmZTohMH0pfWVsc2UgZXU9ZnVuY3Rpb24odCl7anModGhpcyxldSxRcyk7dmFyIGU9TnModCk7JHModGhpcyx7Ynl0ZXM6R3MuY2FsbChuZXcgQXJyYXkoZSksMCksYnl0ZUxlbmd0aDplfSksQnN8fCh0aGlzLmJ5dGVMZW5ndGg9ZSl9LHJ1PWZ1bmN0aW9uKHQsZSxyKXtqcyh0aGlzLHJ1LFpzKSxqcyh0LGV1LFpzKTt2YXIgbj1Ycyh0KS5ieXRlTGVuZ3RoLGk9THMoZSk7aWYoaTwwfHxpPm4pdGhyb3cgYXUoIldyb25nIG9mZnNldCIpO2lmKGkrKHI9dm9pZCAwPT09cj9uLWk6RnMocikpPm4pdGhyb3cgYXUoIldyb25nIGxlbmd0aCIpOyRzKHRoaXMse2J1ZmZlcjp0LGJ5dGVMZW5ndGg6cixieXRlT2Zmc2V0Oml9KSxCc3x8KHRoaXMuYnVmZmVyPXQsdGhpcy5ieXRlTGVuZ3RoPXIsdGhpcy5ieXRlT2Zmc2V0PWkpfSxCcyYmKHB1KGV1LCJieXRlTGVuZ3RoIikscHUocnUsImJ1ZmZlciIpLHB1KHJ1LCJieXRlTGVuZ3RoIikscHUocnUsImJ5dGVPZmZzZXQiKSksRHMocnUucHJvdG90eXBlLHtnZXRJbnQ4OmZ1bmN0aW9uKHQpe3JldHVybiB2dSh0aGlzLDEsdClbMF08PDI0Pj4yNH0sZ2V0VWludDg6ZnVuY3Rpb24odCl7cmV0dXJuIHZ1KHRoaXMsMSx0KVswXX0sZ2V0SW50MTY6ZnVuY3Rpb24odCl7dmFyIGU9dnUodGhpcywyLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybihlWzFdPDw4fGVbMF0pPDwxNj4+MTZ9LGdldFVpbnQxNjpmdW5jdGlvbih0KXt2YXIgZT12dSh0aGlzLDIsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCk7cmV0dXJuIGVbMV08PDh8ZVswXX0sZ2V0SW50MzI6ZnVuY3Rpb24odCl7cmV0dXJuIGx1KHZ1KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSl9LGdldFVpbnQzMjpmdW5jdGlvbih0KXtyZXR1cm4gbHUodnUodGhpcyw0LHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApKT4+PjB9LGdldEZsb2F0MzI6ZnVuY3Rpb24odCl7cmV0dXJuIHN1KHZ1KHRoaXMsNCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSwyMyl9LGdldEZsb2F0NjQ6ZnVuY3Rpb24odCl7cmV0dXJuIHN1KHZ1KHRoaXMsOCx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKSw1Mil9LHNldEludDg6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDEsdCx1dSxlKX0sc2V0VWludDg6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDEsdCx1dSxlKX0sc2V0SW50MTY6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDIsdCxjdSxlLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX0sc2V0VWludDE2OmZ1bmN0aW9uKHQsZSl7eXUodGhpcywyLHQsY3UsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEludDMyOmZ1bmN0aW9uKHQsZSl7eXUodGhpcyw0LHQsZnUsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldFVpbnQzMjpmdW5jdGlvbih0LGUpe3l1KHRoaXMsNCx0LGZ1LGUsYXJndW1lbnRzLmxlbmd0aD4yP2FyZ3VtZW50c1syXTp2b2lkIDApfSxzZXRGbG9hdDMyOmZ1bmN0aW9uKHQsZSl7eXUodGhpcyw0LHQsZHUsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9LHNldEZsb2F0NjQ6ZnVuY3Rpb24odCxlKXt5dSh0aGlzLDgsdCxodSxlLGFyZ3VtZW50cy5sZW5ndGg+Mj9hcmd1bWVudHNbMl06dm9pZCAwKX19KTtxcyhldSxRcykscXMocnUsWnMpO3ZhciBBdT17QXJyYXlCdWZmZXI6ZXUsRGF0YVZpZXc6cnV9LFN1PV9lLF91PWZ1bmN0aW9uKHQpe3ZhciBlPVN1KHQpO2lmKGU8MCl0aHJvdyBSYW5nZUVycm9yKCJUaGUgYXJndW1lbnQgY2FuJ3QgYmUgbGVzcyB0aGFuIDAiKTtyZXR1cm4gZX0sVHU9ZnVuY3Rpb24odCxlKXt2YXIgcj1fdSh0KTtpZihyJWUpdGhyb3cgUmFuZ2VFcnJvcigiV3Jvbmcgb2Zmc2V0Iik7cmV0dXJuIHJ9LEV1PXhuLEl1PUNhLE91PVlyKCJpdGVyYXRvciIpLE11PWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpcmV0dXJuIHRbT3VdfHx0WyJAQGl0ZXJhdG9yIl18fEl1W0V1KHQpXX0sQ3U9Q2EsUnU9WXIoIml0ZXJhdG9yIiksQnU9QXJyYXkucHJvdG90eXBlLFB1PWZ1bmN0aW9uKHQpe3JldHVybiB2b2lkIDAhPT10JiYoQ3UuQXJyYXk9PT10fHxCdVtSdV09PT10KX0sVXU9cSxEdT1JZSx6dT1NdSxqdT1QdSxMdT1DbixGdT1mcy5hVHlwZWRBcnJheUNvbnN0cnVjdG9yLE51PWtlLFZ1PWR0LEh1PU8sWXU9WXIoInNwZWNpZXMiKSxLdT1mdW5jdGlvbih0KXt2YXIgZT1OdSh0KSxyPVZ1LmY7SHUmJmUmJiFlW1l1XSYmcihlLFl1LHtjb25maWd1cmFibGU6ITAsZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9fSl9LFd1PW1yLEd1PVQscXU9TyxYdT1ncywkdT1mcyxRdT1BdSxadT1icyxKdT1QLHRjPXh0LGVjPUllLHJjPXhzLG5jPVR1LGljPVcsYWM9USxvYz14bixzYz1ZLHVjPWdpLGNjPVhpLGZjPXhlLmYsbGM9ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHM9VXUodCksdT1hcmd1bWVudHMubGVuZ3RoLGM9dT4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsZj12b2lkIDAhPT1jLGw9enUocyk7aWYobnVsbCE9bCYmIWp1KGwpKWZvcihvPShhPWwuY2FsbChzKSkubmV4dCxzPVtdOyEoaT1vLmNhbGwoYSkpLmRvbmU7KXMucHVzaChpLnZhbHVlKTtmb3IoZiYmdT4yJiYoYz1MdShjLGFyZ3VtZW50c1syXSwyKSkscj1EdShzLmxlbmd0aCksbj1uZXcoRnUodGhpcykpKHIpLGU9MDtyPmU7ZSsrKW5bZV09Zj9jKHNbZV0sZSk6c1tlXTtyZXR1cm4gbn0sZGM9TG4uZm9yRWFjaCxoYz1LdSxwYz1kdCx2Yz1FLHljPVppLGdjPWNlLmdldCxtYz1jZS5zZXQsYmM9cGMuZix3Yz12Yy5mLGtjPU1hdGgucm91bmQseGM9R3UuUmFuZ2VFcnJvcixBYz1RdS5BcnJheUJ1ZmZlcixTYz1RdS5EYXRhVmlldyxfYz0kdS5OQVRJVkVfQVJSQVlfQlVGRkVSX1ZJRVdTLFRjPSR1LlRZUEVEX0FSUkFZX1RBRyxFYz0kdS5UeXBlZEFycmF5LEljPSR1LlR5cGVkQXJyYXlQcm90b3R5cGUsT2M9JHUuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixNYz0kdS5pc1R5cGVkQXJyYXksQ2M9IkJZVEVTX1BFUl9FTEVNRU5UIixSYz0iV3JvbmcgbGVuZ3RoIixCYz1mdW5jdGlvbih0LGUpe2Zvcih2YXIgcj0wLG49ZS5sZW5ndGgsaT1uZXcoT2ModCkpKG4pO24+cjspaVtyXT1lW3IrK107cmV0dXJuIGl9LFBjPWZ1bmN0aW9uKHQsZSl7YmModCxlLHtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gZ2ModGhpcylbZV19fSl9LFVjPWZ1bmN0aW9uKHQpe3ZhciBlO3JldHVybiB0IGluc3RhbmNlb2YgQWN8fCJBcnJheUJ1ZmZlciI9PShlPW9jKHQpKXx8IlNoYXJlZEFycmF5QnVmZmVyIj09ZX0sRGM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gTWModCkmJiJzeW1ib2wiIT1yKGUpJiZlIGluIHQmJlN0cmluZygrZSk9PVN0cmluZyhlKX0semM9ZnVuY3Rpb24odCxlKXtyZXR1cm4gRGModCxlPWljKGUsITApKT9KdSgyLHRbZV0pOndjKHQsZSl9LGpjPWZ1bmN0aW9uKHQsZSxyKXtyZXR1cm4hKERjKHQsZT1pYyhlLCEwKSkmJnNjKHIpJiZhYyhyLCJ2YWx1ZSIpKXx8YWMociwiZ2V0Iil8fGFjKHIsInNldCIpfHxyLmNvbmZpZ3VyYWJsZXx8YWMociwid3JpdGFibGUiKSYmIXIud3JpdGFibGV8fGFjKHIsImVudW1lcmFibGUiKSYmIXIuZW51bWVyYWJsZT9iYyh0LGUscik6KHRbZV09ci52YWx1ZSx0KX07cXU/KF9jfHwodmMuZj16YyxwYy5mPWpjLFBjKEljLCJidWZmZXIiKSxQYyhJYywiYnl0ZU9mZnNldCIpLFBjKEljLCJieXRlTGVuZ3RoIiksUGMoSWMsImxlbmd0aCIpKSxXdSh7dGFyZ2V0OiJPYmplY3QiLHN0YXQ6ITAsZm9yY2VkOiFfY30se2dldE93blByb3BlcnR5RGVzY3JpcHRvcjp6YyxkZWZpbmVQcm9wZXJ0eTpqY30pLElvLmV4cG9ydHM9ZnVuY3Rpb24odCxlLHIpe3ZhciBuPXQubWF0Y2goL1xkKyQvKVswXS84LGk9dCsocj8iQ2xhbXBlZCI6IiIpKyJBcnJheSIsYT0iZ2V0Iit0LG89InNldCIrdCxzPUd1W2ldLHU9cyxjPXUmJnUucHJvdG90eXBlLGY9e30sbD1mdW5jdGlvbih0LGUpe2JjKHQsZSx7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuIGZ1bmN0aW9uKHQsZSl7dmFyIHI9Z2ModCk7cmV0dXJuIHIudmlld1thXShlKm4rci5ieXRlT2Zmc2V0LCEwKX0odGhpcyxlKX0sc2V0OmZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbih0LGUsaSl7dmFyIGE9Z2ModCk7ciYmKGk9KGk9a2MoaSkpPDA/MDppPjI1NT8yNTU6MjU1JmkpLGEudmlld1tvXShlKm4rYS5ieXRlT2Zmc2V0LGksITApfSh0aGlzLGUsdCl9LGVudW1lcmFibGU6ITB9KX07X2M/WHUmJih1PWUoKGZ1bmN0aW9uKHQsZSxyLGEpe3JldHVybiBadSh0LHUsaSkseWMoc2MoZSk/VWMoZSk/dm9pZCAwIT09YT9uZXcgcyhlLG5jKHIsbiksYSk6dm9pZCAwIT09cj9uZXcgcyhlLG5jKHIsbikpOm5ldyBzKGUpOk1jKGUpP0JjKHUsZSk6bGMuY2FsbCh1LGUpOm5ldyBzKHJjKGUpKSx0LHUpfSkpLGNjJiZjYyh1LEVjKSxkYyhmYyhzKSwoZnVuY3Rpb24odCl7dCBpbiB1fHx0Yyh1LHQsc1t0XSl9KSksdS5wcm90b3R5cGU9Yyk6KHU9ZSgoZnVuY3Rpb24odCxlLHIsYSl7WnUodCx1LGkpO3ZhciBvLHMsYyxmPTAsZD0wO2lmKHNjKGUpKXtpZighVWMoZSkpcmV0dXJuIE1jKGUpP0JjKHUsZSk6bGMuY2FsbCh1LGUpO289ZSxkPW5jKHIsbik7dmFyIGg9ZS5ieXRlTGVuZ3RoO2lmKHZvaWQgMD09PWEpe2lmKGglbil0aHJvdyB4YyhSYyk7aWYoKHM9aC1kKTwwKXRocm93IHhjKFJjKX1lbHNlIGlmKChzPWVjKGEpKm4pK2Q+aCl0aHJvdyB4YyhSYyk7Yz1zL259ZWxzZSBjPXJjKGUpLG89bmV3IEFjKHM9YypuKTtmb3IobWModCx7YnVmZmVyOm8sYnl0ZU9mZnNldDpkLGJ5dGVMZW5ndGg6cyxsZW5ndGg6Yyx2aWV3Om5ldyBTYyhvKX0pO2Y8YzspbCh0LGYrKyl9KSksY2MmJmNjKHUsRWMpLGM9dS5wcm90b3R5cGU9dWMoSWMpKSxjLmNvbnN0cnVjdG9yIT09dSYmdGMoYywiY29uc3RydWN0b3IiLHUpLFRjJiZ0YyhjLFRjLGkpLGZbaV09dSxXdSh7Z2xvYmFsOiEwLGZvcmNlZDp1IT1zLHNoYW06IV9jfSxmKSxDYyBpbiB1fHx0Yyh1LENjLG4pLENjIGluIGN8fHRjKGMsQ2MsbiksaGMoaSl9KTpJby5leHBvcnRzPWZ1bmN0aW9uKCl7fSwoMCxJby5leHBvcnRzKSgiVWludDgiLChmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3JldHVybiB0KHRoaXMsZSxyLG4pfX0pKTt2YXIgTGM9SWUsRmM9X2UsTmM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImF0IiwoZnVuY3Rpb24odCl7dmFyIGU9TmModGhpcykscj1MYyhlLmxlbmd0aCksbj1GYyh0KSxpPW4+PTA/bjpyK247cmV0dXJuIGk8MHx8aT49cj92b2lkIDA6ZVtpXX0pKTt2YXIgVmM9cSxIYz1SZSxZYz1JZSxLYz1NYXRoLm1pbixXYz1bXS5jb3B5V2l0aGlufHxmdW5jdGlvbih0LGUpe3ZhciByPVZjKHRoaXMpLG49WWMoci5sZW5ndGgpLGk9SGModCxuKSxhPUhjKGUsbiksbz1hcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCxzPUtjKCh2b2lkIDA9PT1vP246SGMobyxuKSktYSxuLWkpLHU9MTtmb3IoYTxpJiZpPGErcyYmKHU9LTEsYSs9cy0xLGkrPXMtMSk7cy0tID4wOylhIGluIHI/cltpXT1yW2FdOmRlbGV0ZSByW2ldLGkrPXUsYSs9dTtyZXR1cm4gcn0sR2M9V2MscWM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImNvcHlXaXRoaW4iLChmdW5jdGlvbih0LGUpe3JldHVybiBHYy5jYWxsKHFjKHRoaXMpLHQsZSxhcmd1bWVudHMubGVuZ3RoPjI/YXJndW1lbnRzWzJdOnZvaWQgMCl9KSk7dmFyIFhjPUxuLmV2ZXJ5LCRjPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJldmVyeSIsKGZ1bmN0aW9uKHQpe3JldHVybiBYYygkYyh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgUWM9Q3MsWmM9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbGwiLChmdW5jdGlvbih0KXtyZXR1cm4gUWMuYXBwbHkoWmModGhpcyksYXJndW1lbnRzKX0pKTt2YXIgSmM9cHQsdGY9T24sZWY9WXIoInNwZWNpZXMiKSxyZj1mdW5jdGlvbih0LGUpe3ZhciByLG49SmModCkuY29uc3RydWN0b3I7cmV0dXJuIHZvaWQgMD09PW58fG51bGw9PShyPUpjKG4pW2VmXSk/ZTp0ZihyKX0sbmY9ZnMuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcixhZj1yZixvZj1Mbi5maWx0ZXIsc2Y9ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9YWYodCx0LmNvbnN0cnVjdG9yKSxuPTAsaT1lLmxlbmd0aCxhPW5ldyhuZihyKSkoaSk7aT5uOylhW25dPWVbbisrXTtyZXR1cm4gYX0sdWY9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbHRlciIsKGZ1bmN0aW9uKHQpe3ZhciBlPW9mKHVmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApO3JldHVybiBzZih0aGlzLGUpfSkpO3ZhciBjZj1Mbi5maW5kLGZmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kIiwoZnVuY3Rpb24odCl7cmV0dXJuIGNmKGZmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBsZj1Mbi5maW5kSW5kZXgsZGY9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRJbmRleCIsKGZ1bmN0aW9uKHQpe3JldHVybiBsZihkZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgaGY9Q24scGY9TCx2Zj1xLHlmPUllLGdmPWZ1bmN0aW9uKHQpe3ZhciBlPTY9PXQ7cmV0dXJuIGZ1bmN0aW9uKHIsbixpKXtmb3IodmFyIGEsbz12ZihyKSxzPXBmKG8pLHU9aGYobixpLDMpLGM9eWYocy5sZW5ndGgpO2MtLSA+MDspaWYodShhPXNbY10sYyxvKSlzd2l0Y2godCl7Y2FzZSA1OnJldHVybiBhO2Nhc2UgNjpyZXR1cm4gY31yZXR1cm4gZT8tMTp2b2lkIDB9fSxtZj17ZmluZExhc3Q6Z2YoNSksZmluZExhc3RJbmRleDpnZig2KX0sYmY9bWYuZmluZExhc3Qsd2Y9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoImZpbmRMYXN0IiwoZnVuY3Rpb24odCl7cmV0dXJuIGJmKHdmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBrZj1tZi5maW5kTGFzdEluZGV4LHhmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmaW5kTGFzdEluZGV4IiwoZnVuY3Rpb24odCl7cmV0dXJuIGtmKHhmKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBBZj1Mbi5mb3JFYWNoLFNmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJmb3JFYWNoIiwoZnVuY3Rpb24odCl7QWYoU2YodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9KSk7dmFyIF9mPXplLmluY2x1ZGVzLFRmPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJpbmNsdWRlcyIsKGZ1bmN0aW9uKHQpe3JldHVybiBfZihUZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgRWY9emUuaW5kZXhPZixJZj1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgiaW5kZXhPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiBFZihJZih0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgT2Y9VCxNZj1mcyxDZj1FbyxSZj1ZcigiaXRlcmF0b3IiKSxCZj1PZi5VaW50OEFycmF5LFBmPUNmLnZhbHVlcyxVZj1DZi5rZXlzLERmPUNmLmVudHJpZXMsemY9TWYuYVR5cGVkQXJyYXksamY9TWYuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxMZj1CZiYmQmYucHJvdG90eXBlW1JmXSxGZj0hIUxmJiYoInZhbHVlcyI9PUxmLm5hbWV8fG51bGw9PUxmLm5hbWUpLE5mPWZ1bmN0aW9uKCl7cmV0dXJuIFBmLmNhbGwoemYodGhpcykpfTtqZigiZW50cmllcyIsKGZ1bmN0aW9uKCl7cmV0dXJuIERmLmNhbGwoemYodGhpcykpfSkpLGpmKCJrZXlzIiwoZnVuY3Rpb24oKXtyZXR1cm4gVWYuY2FsbCh6Zih0aGlzKSl9KSksamYoInZhbHVlcyIsTmYsIUZmKSxqZihSZixOZiwhRmYpO3ZhciBWZj1mcy5hVHlwZWRBcnJheSxIZj1bXS5qb2luOygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJqb2luIiwoZnVuY3Rpb24odCl7cmV0dXJuIEhmLmFwcGx5KFZmKHRoaXMpLGFyZ3VtZW50cyl9KSk7dmFyIFlmPUgsS2Y9X2UsV2Y9SWUsR2Y9Tm4scWY9TWF0aC5taW4sWGY9W10ubGFzdEluZGV4T2YsJGY9ISFYZiYmMS9bMV0ubGFzdEluZGV4T2YoMSwtMCk8MCxRZj1HZigibGFzdEluZGV4T2YiKSxaZj0kZnx8IVFmP2Z1bmN0aW9uKHQpe2lmKCRmKXJldHVybiBYZi5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fDA7dmFyIGU9WWYodGhpcykscj1XZihlLmxlbmd0aCksbj1yLTE7Zm9yKGFyZ3VtZW50cy5sZW5ndGg+MSYmKG49cWYobixLZihhcmd1bWVudHNbMV0pKSksbjwwJiYobj1yK24pO24+PTA7bi0tKWlmKG4gaW4gZSYmZVtuXT09PXQpcmV0dXJuIG58fDA7cmV0dXJuLTF9OlhmLEpmPVpmLHRsPWZzLmFUeXBlZEFycmF5OygwLGZzLmV4cG9ydFR5cGVkQXJyYXlNZXRob2QpKCJsYXN0SW5kZXhPZiIsKGZ1bmN0aW9uKHQpe3JldHVybiBKZi5hcHBseSh0bCh0aGlzKSxhcmd1bWVudHMpfSkpO3ZhciBlbD1Mbi5tYXAscmw9cmYsbmw9ZnMuYVR5cGVkQXJyYXksaWw9ZnMuYVR5cGVkQXJyYXlDb25zdHJ1Y3RvcjsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgibWFwIiwoZnVuY3Rpb24odCl7cmV0dXJuIGVsKG5sKHRoaXMpLHQsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDAsKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyhpbChybCh0LHQuY29uc3RydWN0b3IpKSkoZSl9KSl9KSk7dmFyIGFsPU9uLG9sPXEsc2w9TCx1bD1JZSxjbD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4saSl7YWwocik7dmFyIGE9b2woZSksbz1zbChhKSxzPXVsKGEubGVuZ3RoKSx1PXQ/cy0xOjAsYz10Py0xOjE7aWYobjwyKWZvcig7Oyl7aWYodSBpbiBvKXtpPW9bdV0sdSs9YzticmVha31pZih1Kz1jLHQ/dTwwOnM8PXUpdGhyb3cgVHlwZUVycm9yKCJSZWR1Y2Ugb2YgZW1wdHkgYXJyYXkgd2l0aCBubyBpbml0aWFsIHZhbHVlIil9Zm9yKDt0P3U+PTA6cz51O3UrPWMpdSBpbiBvJiYoaT1yKGksb1t1XSx1LGEpKTtyZXR1cm4gaX19LGZsPXtsZWZ0OmNsKCExKSxyaWdodDpjbCghMCl9LGxsPWZsLmxlZnQsZGw9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInJlZHVjZSIsKGZ1bmN0aW9uKHQpe3JldHVybiBsbChkbCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGgsYXJndW1lbnRzLmxlbmd0aD4xP2FyZ3VtZW50c1sxXTp2b2lkIDApfSkpO3ZhciBobD1mbC5yaWdodCxwbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgicmVkdWNlUmlnaHQiLChmdW5jdGlvbih0KXtyZXR1cm4gaGwocGwodGhpcyksdCxhcmd1bWVudHMubGVuZ3RoLGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgdmw9ZnMuYVR5cGVkQXJyYXkseWw9ZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxnbD1NYXRoLmZsb29yO3lsKCJyZXZlcnNlIiwoZnVuY3Rpb24oKXtmb3IodmFyIHQsZT10aGlzLHI9dmwoZSkubGVuZ3RoLG49Z2woci8yKSxpPTA7aTxuOyl0PWVbaV0sZVtpKytdPWVbLS1yXSxlW3JdPXQ7cmV0dXJuIGV9KSk7dmFyIG1sPUllLGJsPVR1LHdsPXEsa2w9ZnMuYVR5cGVkQXJyYXk7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNldCIsKGZ1bmN0aW9uKHQpe2tsKHRoaXMpO3ZhciBlPWJsKGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwLDEpLHI9dGhpcy5sZW5ndGgsbj13bCh0KSxpPW1sKG4ubGVuZ3RoKSxhPTA7aWYoaStlPnIpdGhyb3cgUmFuZ2VFcnJvcigiV3JvbmcgbGVuZ3RoIik7Zm9yKDthPGk7KXRoaXNbZSthXT1uW2ErK119KSxJKChmdW5jdGlvbigpe25ldyBJbnQ4QXJyYXkoMSkuc2V0KHt9KX0pKSk7dmFyIHhsPXJmLEFsPWZzLmFUeXBlZEFycmF5LFNsPWZzLmFUeXBlZEFycmF5Q29uc3RydWN0b3IsX2w9W10uc2xpY2U7KDAsZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCkoInNsaWNlIiwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9X2wuY2FsbChBbCh0aGlzKSx0LGUpLG49eGwodGhpcyx0aGlzLmNvbnN0cnVjdG9yKSxpPTAsYT1yLmxlbmd0aCxvPW5ldyhTbChuKSkoYSk7YT5pOylvW2ldPXJbaSsrXTtyZXR1cm4gb30pLEkoKGZ1bmN0aW9uKCl7bmV3IEludDhBcnJheSgxKS5zbGljZSgpfSkpKTt2YXIgVGw9TG4uc29tZSxFbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29tZSIsKGZ1bmN0aW9uKHQpe3JldHVybiBUbChFbCh0aGlzKSx0LGFyZ3VtZW50cy5sZW5ndGg+MT9hcmd1bWVudHNbMV06dm9pZCAwKX0pKTt2YXIgSWw9ZnMuYVR5cGVkQXJyYXksT2w9W10uc29ydDsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic29ydCIsKGZ1bmN0aW9uKHQpe3JldHVybiBPbC5jYWxsKElsKHRoaXMpLHQpfSkpO3ZhciBNbD1JZSxDbD1SZSxSbD1yZixCbD1mcy5hVHlwZWRBcnJheTsoMCxmcy5leHBvcnRUeXBlZEFycmF5TWV0aG9kKSgic3ViYXJyYXkiLChmdW5jdGlvbih0LGUpe3ZhciByPUJsKHRoaXMpLG49ci5sZW5ndGgsaT1DbCh0LG4pO3JldHVybiBuZXcoUmwocixyLmNvbnN0cnVjdG9yKSkoci5idWZmZXIsci5ieXRlT2Zmc2V0K2kqci5CWVRFU19QRVJfRUxFTUVOVCxNbCgodm9pZCAwPT09ZT9uOkNsKGUsbikpLWkpKX0pKTt2YXIgUGw9ZnMsVWw9SSxEbD1ULkludDhBcnJheSx6bD1QbC5hVHlwZWRBcnJheSxqbD1QbC5leHBvcnRUeXBlZEFycmF5TWV0aG9kLExsPVtdLnRvTG9jYWxlU3RyaW5nLEZsPVtdLnNsaWNlLE5sPSEhRGwmJlVsKChmdW5jdGlvbigpe0xsLmNhbGwobmV3IERsKDEpKX0pKTtqbCgidG9Mb2NhbGVTdHJpbmciLChmdW5jdGlvbigpe3JldHVybiBMbC5hcHBseShObD9GbC5jYWxsKHpsKHRoaXMpKTp6bCh0aGlzKSxhcmd1bWVudHMpfSksVWwoKGZ1bmN0aW9uKCl7cmV0dXJuWzEsMl0udG9Mb2NhbGVTdHJpbmcoKSE9bmV3IERsKFsxLDJdKS50b0xvY2FsZVN0cmluZygpfSkpfHwhVWwoKGZ1bmN0aW9uKCl7RGwucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nLmNhbGwoWzEsMl0pfSkpKTt2YXIgVmw9ZnMuZXhwb3J0VHlwZWRBcnJheU1ldGhvZCxIbD1JLFlsPVQuVWludDhBcnJheSxLbD1ZbCYmWWwucHJvdG90eXBlfHx7fSxXbD1bXS50b1N0cmluZyxHbD1bXS5qb2luO0hsKChmdW5jdGlvbigpe1dsLmNhbGwoe30pfSkpJiYoV2w9ZnVuY3Rpb24oKXtyZXR1cm4gR2wuY2FsbCh0aGlzKX0pO3ZhciBxbD1LbC50b1N0cmluZyE9V2w7VmwoInRvU3RyaW5nIixXbCxxbCk7dmFyIFhsPXB0LCRsPWZ1bmN0aW9uKCl7dmFyIHQ9WGwodGhpcyksZT0iIjtyZXR1cm4gdC5nbG9iYWwmJihlKz0iZyIpLHQuaWdub3JlQ2FzZSYmKGUrPSJpIiksdC5tdWx0aWxpbmUmJihlKz0ibSIpLHQuZG90QWxsJiYoZSs9InMiKSx0LnVuaWNvZGUmJihlKz0idSIpLHQuc3RpY2t5JiYoZSs9InkiKSxlfSxRbD1BdC5leHBvcnRzLFpsPXB0LEpsPUksdGQ9JGwsZWQ9InRvU3RyaW5nIixyZD1SZWdFeHAucHJvdG90eXBlLG5kPXJkLnRvU3RyaW5nLGlkPUpsKChmdW5jdGlvbigpe3JldHVybiIvYS9iIiE9bmQuY2FsbCh7c291cmNlOiJhIixmbGFnczoiYiJ9KX0pKSxhZD1uZC5uYW1lIT1lZDsoaWR8fGFkKSYmUWwoUmVnRXhwLnByb3RvdHlwZSxlZCwoZnVuY3Rpb24oKXt2YXIgdD1abCh0aGlzKSxlPVN0cmluZyh0LnNvdXJjZSkscj10LmZsYWdzO3JldHVybiIvIitlKyIvIitTdHJpbmcodm9pZCAwPT09ciYmdCBpbnN0YW5jZW9mIFJlZ0V4cCYmISgiZmxhZ3MiaW4gcmQpP3RkLmNhbGwodCk6cil9KSx7dW5zYWZlOiEwfSk7dmFyIG9kPW1yLHNkPVksdWQ9d3IsY2Q9UmUsZmQ9SWUsbGQ9SCxkZD1TcixoZD1ZcixwZD1acigic2xpY2UiKSx2ZD1oZCgic3BlY2llcyIpLHlkPVtdLnNsaWNlLGdkPU1hdGgubWF4O29kKHt0YXJnZXQ6IkFycmF5Iixwcm90bzohMCxmb3JjZWQ6IXBkfSx7c2xpY2U6ZnVuY3Rpb24odCxlKXt2YXIgcixuLGksYT1sZCh0aGlzKSxvPWZkKGEubGVuZ3RoKSxzPWNkKHQsbyksdT1jZCh2b2lkIDA9PT1lP286ZSxvKTtpZih1ZChhKSYmKCJmdW5jdGlvbiIhPXR5cGVvZihyPWEuY29uc3RydWN0b3IpfHxyIT09QXJyYXkmJiF1ZChyLnByb3RvdHlwZSk/c2QocikmJm51bGw9PT0ocj1yW3ZkXSkmJihyPXZvaWQgMCk6cj12b2lkIDAscj09PUFycmF5fHx2b2lkIDA9PT1yKSlyZXR1cm4geWQuY2FsbChhLHMsdSk7Zm9yKG49bmV3KHZvaWQgMD09PXI/QXJyYXk6cikoZ2QodS1zLDApKSxpPTA7czx1O3MrKyxpKyspcyBpbiBhJiZkZChuLGksYVtzXSk7cmV0dXJuIG4ubGVuZ3RoPWksbn19KTt2YXIgbWQ9TyxiZD1kdC5mLHdkPUZ1bmN0aW9uLnByb3RvdHlwZSxrZD13ZC50b1N0cmluZyx4ZD0vXlxzKmZ1bmN0aW9uIChbXiAoXSopLyxBZD0ibmFtZSI7bWQmJiEoQWQgaW4gd2QpJiZiZCh3ZCxBZCx7Y29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3RyeXtyZXR1cm4ga2QuY2FsbCh0aGlzKS5tYXRjaCh4ZClbMV19Y2F0Y2goU3Ype3JldHVybiIifX19KTt2YXIgU2Q9bXIsX2Q9SCxUZD1bXS5qb2luLEVkPUwhPU9iamVjdCxJZD1Obigiam9pbiIsIiwiKTtTZCh7dGFyZ2V0OiJBcnJheSIscHJvdG86ITAsZm9yY2VkOkVkfHwhSWR9LHtqb2luOmZ1bmN0aW9uKHQpe3JldHVybiBUZC5jYWxsKF9kKHRoaXMpLHZvaWQgMD09PXQ/IiwiOnQpfX0pO3ZhciBPZD17fSxNZD1JO2Z1bmN0aW9uIENkKHQsZSl7cmV0dXJuIFJlZ0V4cCh0LGUpfU9kLlVOU1VQUE9SVEVEX1k9TWQoKGZ1bmN0aW9uKCl7dmFyIHQ9Q2QoImEiLCJ5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJhYmNkIil9KSksT2QuQlJPS0VOX0NBUkVUPU1kKChmdW5jdGlvbigpe3ZhciB0PUNkKCJeciIsImd5Iik7cmV0dXJuIHQubGFzdEluZGV4PTIsbnVsbCE9dC5leGVjKCJzdHIiKX0pKTt2YXIgUmQsQmQsUGQ9JGwsVWQ9T2QsRGQ9RHQuZXhwb3J0cyx6ZD1SZWdFeHAucHJvdG90eXBlLmV4ZWMsamQ9RGQoIm5hdGl2ZS1zdHJpbmctcmVwbGFjZSIsU3RyaW5nLnByb3RvdHlwZS5yZXBsYWNlKSxMZD16ZCxGZD0oUmQ9L2EvLEJkPS9iKi9nLHpkLmNhbGwoUmQsImEiKSx6ZC5jYWxsKEJkLCJhIiksMCE9PVJkLmxhc3RJbmRleHx8MCE9PUJkLmxhc3RJbmRleCksTmQ9VWQuVU5TVVBQT1JURURfWXx8VWQuQlJPS0VOX0NBUkVULFZkPXZvaWQgMCE9PS8oKT8/Ly5leGVjKCIiKVsxXTsoRmR8fFZkfHxOZCkmJihMZD1mdW5jdGlvbih0KXt2YXIgZSxyLG4saSxhPXRoaXMsbz1OZCYmYS5zdGlja3kscz1QZC5jYWxsKGEpLHU9YS5zb3VyY2UsYz0wLGY9dDtyZXR1cm4gbyYmKC0xPT09KHM9cy5yZXBsYWNlKCJ5IiwiIikpLmluZGV4T2YoImciKSYmKHMrPSJnIiksZj1TdHJpbmcodCkuc2xpY2UoYS5sYXN0SW5kZXgpLGEubGFzdEluZGV4PjAmJighYS5tdWx0aWxpbmV8fGEubXVsdGlsaW5lJiYiXG4iIT09dFthLmxhc3RJbmRleC0xXSkmJih1PSIoPzogIit1KyIpIixmPSIgIitmLGMrKykscj1uZXcgUmVnRXhwKCJeKD86Iit1KyIpIixzKSksVmQmJihyPW5ldyBSZWdFeHAoIl4iK3UrIiQoPyFcXHMpIixzKSksRmQmJihlPWEubGFzdEluZGV4KSxuPXpkLmNhbGwobz9yOmEsZiksbz9uPyhuLmlucHV0PW4uaW5wdXQuc2xpY2UoYyksblswXT1uWzBdLnNsaWNlKGMpLG4uaW5kZXg9YS5sYXN0SW5kZXgsYS5sYXN0SW5kZXgrPW5bMF0ubGVuZ3RoKTphLmxhc3RJbmRleD0wOkZkJiZuJiYoYS5sYXN0SW5kZXg9YS5nbG9iYWw/bi5pbmRleCtuWzBdLmxlbmd0aDplKSxWZCYmbiYmbi5sZW5ndGg+MSYmamQuY2FsbChuWzBdLHIsKGZ1bmN0aW9uKCl7Zm9yKGk9MTtpPGFyZ3VtZW50cy5sZW5ndGgtMjtpKyspdm9pZCAwPT09YXJndW1lbnRzW2ldJiYobltpXT12b2lkIDApfSkpLG59KTttcih7dGFyZ2V0OiJSZWdFeHAiLHByb3RvOiEwLGZvcmNlZDovLi8uZXhlYyE9PUxkfSx7ZXhlYzpMZH0pO3ZhciBIZCxZZCxLZD1tcixXZD1ZLEdkPShIZD0hMSwoWWQ9L1thY10vKS5leGVjPWZ1bmN0aW9uKCl7cmV0dXJuIEhkPSEwLC8uLy5leGVjLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sITA9PT1ZZC50ZXN0KCJhYmMiKSYmSGQpLHFkPS8uLy50ZXN0O0tkKHt0YXJnZXQ6IlJlZ0V4cCIscHJvdG86ITAsZm9yY2VkOiFHZH0se3Rlc3Q6ZnVuY3Rpb24odCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHRoaXMuZXhlYylyZXR1cm4gcWQuY2FsbCh0aGlzLHQpO3ZhciBlPXRoaXMuZXhlYyh0KTtpZihudWxsIT09ZSYmIVdkKGUpKXRocm93IG5ldyBFcnJvcigiUmVnRXhwIGV4ZWMgbWV0aG9kIHJldHVybmVkIHNvbWV0aGluZyBvdGhlciB0aGFuIGFuIE9iamVjdCBvciBudWxsIik7cmV0dXJuISFlfX0pO3ZhciBYZD0idW5kZWZpbmVkIiE9dHlwZW9mIHdpbmRvdywkZD1YZCYmbmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvY2FsZUxvd2VyQ2FzZSgpO1hkJiYvXigoPyFjaHJvbWV8YW5kcm9pZCkuKSpzYWZhcmkvLnRlc3QoJGQpO3ZhciBRZD1YZCYmJGQuaW5jbHVkZXMoImZpcmVmb3giKSxaZD1YZCYmJGQuaW5jbHVkZXMoImFuZHJvaWQiKSxKZD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt5KHRoaXMsdCl9cmV0dXJuIG0odCxudWxsLFt7a2V5OiJnZXRSYXRlSW5kZXhCeVJhdGUiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LkZSRVEuaW5kZXhPZihlKX19LHtrZXk6InBhcnNlQURUUyIsdmFsdWU6ZnVuY3Rpb24oZSxyKXtmb3IodmFyIG49ZS5sZW5ndGgsaT0wO2krMjxuJiYoMjU1IT09ZVtpXXx8MjQwIT0oMjQ2JmVbaSsxXSkpOylpKys7aWYoIShpPj1uKSl7dmFyIGE9aSxvPVtdLHM9KDYwJmVbaSsyXSk+Pj4yLHU9dC5GUkVRW3NdO2lmKCF1KXRocm93IG5ldyBFcnJvcigiSW52YWxpZCBzYW1wbGluZyBpbmRleDogIi5jb25jYXQocykpO2Zvcih2YXIgYyxmLGw9MSsoKDE5MiZlW2krMl0pPj4+NiksZD0oMSZlW2krMl0pPDwyfCgxOTImZVtpKzNdKT4+PjYsaD10Ll9nZXRDb25maWcocyxkLGwpLHA9aC5jb25maWcsdj1oLmNvZGVjLHk9MCxnPXQuZ2V0RnJhbWVEdXJhdGlvbih1KTtpKzc8bjspaWYoMjU1PT09ZVtpXSYmMjQwPT0oMjQ2JmVbaSsxXSkpe2lmKG4taTwoZj0oMyZlW2krM10pPDwxMXxlW2krNF08PDN8KDIyNCZlW2krNV0pPj41KSlicmVhaztjPTIqKDEmfmVbaSsxXSksby5wdXNoKHtwdHM6cit5KmcsZGF0YTplLnN1YmFycmF5KGkrNytjLGkrZil9KSx5KyssaSs9Zn1lbHNlIGkrKztyZXR1cm57c2tpcDphLHJlbWFpbmluZzppPj1uP3ZvaWQgMDplLnN1YmFycmF5KGkpLGZyYW1lczpvLHNhbXBsaW5nRnJlcXVlbmN5SW5kZXg6cyxzYW1wbGVSYXRlOnUsb2JqZWN0VHlwZTpsLGNoYW5uZWxDb3VudDpkLGNvZGVjOnYsY29uZmlnOnAsb3JpZ2luQ29kZWM6Im1wNGEuNDAuIi5jb25jYXQobCl9fX19LHtrZXk6InBhcnNlQXVkaW9TcGVjaWZpY0NvbmZpZyIsdmFsdWU6ZnVuY3Rpb24oZSl7aWYoZS5sZW5ndGgpe3ZhciByPWVbMF0+Pj4zLG49KDcmZVswXSk8PDF8ZVsxXT4+PjcsaT0oMTIwJmVbMV0pPj4+MyxhPXQuRlJFUVtuXTtpZighYSl0aHJvdyBuZXcgRXJyb3IoIkludmFsaWQgc2FtcGxpbmcgaW5kZXg6ICIuY29uY2F0KG4pKTt2YXIgbz10Ll9nZXRDb25maWcobixpLHIpO3JldHVybntzYW1wbGluZ0ZyZXF1ZW5jeUluZGV4Om4sc2FtcGxlUmF0ZTphLG9iamVjdFR5cGU6cixjaGFubmVsQ291bnQ6aSxjb25maWc6by5jb25maWcsY29kZWM6by5jb2RlYyxvcmlnaW5Db2RlYzoibXA0YS40MC4iLmNvbmNhdChyKX19fX0se2tleToiZ2V0RnJhbWVEdXJhdGlvbiIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNDtyZXR1cm4gMTAyNCplL3R9fSx7a2V5OiJfZ2V0Q29uZmlnIix2YWx1ZTpmdW5jdGlvbih0LGUscil7dmFyIG4saSxhPVtdO3JldHVybiBRZD90Pj02PyhuPTUsaT10LTMpOihuPTIsaT10KTpaZD8obj0yLGk9dCk6KG49Mj09PXJ8fDU9PT1yP3I6NSxpPXQsdD49Nj9pPXQtMzoxPT09ZSYmKG49MixpPXQpKSxhWzBdPW48PDMsYVswXXw9KDE0JnQpPj4xLGFbMV09KDEmdCk8PDcsYVsxXXw9ZTw8Myw1PT09biYmKGFbMV18PSgxNCZpKT4+MSxhWzJdPSgxJmkpPDw3LGFbMl18PTgsYVszXT0wKSx7Y29uZmlnOmEsY29kZWM6Im1wNGEuNDAuIi5jb25jYXQobil9fX0se2tleToiZ2V0U2lsZW50RnJhbWUiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7aWYoIm1wNGEuNDAuMiI9PT10KXtpZigxPT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDM1LDEyOF0pO2lmKDI9PT1lKXJldHVybiBuZXcgVWludDhBcnJheShbMzMsMCw3MywxNDQsMiwyNSwwLDM1LDEyOF0pO2lmKDM9PT1lKXJldHVybiBuZXcgVWludDhBcnJheShbMCwyMDAsMCwxMjgsMzIsMTMyLDEsMzgsNjQsOCwxMDAsMCwxNDJdKTtpZig0PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTI4LDQ0LDEyOCw4LDIsNTZdKTtpZig1PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsNTZdKTtpZig2PT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzAsMjAwLDAsMTI4LDMyLDEzMiwxLDM4LDY0LDgsMTAwLDAsMTMwLDQ4LDQsMTUzLDAsMzMsMTQ0LDIsMCwxNzgsMCwzMiw4LDIyNF0pfWVsc2V7aWYoMT09PWUpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsNzgsMjMwLDEyOCwxODYsOCwwLDAsMCwyOCw2LDI0MSwxOTMsMTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTAsOTRdKTtpZigyPT09ZSlyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoWzEsNjQsMzQsMTI4LDE2Myw5NCwyMzAsMTI4LDE4Niw4LDAsMCwwLDAsMTQ5LDAsNiwyNDEsMTYxLDEwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDkwLDk0XSk7aWYoMz09PWUpcmV0dXJuIG5ldyBVaW50OEFycmF5KFsxLDY0LDM0LDEyOCwxNjMsOTQsMjMwLDEyOCwxODYsOCwwLDAsMCwwLDE0OSwwLDYsMjQxLDE2MSwxMCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5MCw5NF0pfX19XSksdH0oKTtmdW5jdGlvbiB0aCgpe2Zvcih2YXIgdD1hcmd1bWVudHMubGVuZ3RoLGU9bmV3IEFycmF5KHQpLHI9MDtyPHQ7cisrKWVbcl09YXJndW1lbnRzW3JdO2U9ZS5maWx0ZXIoQm9vbGVhbik7dmFyIG49bmV3IFVpbnQ4QXJyYXkoZS5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5ieXRlTGVuZ3RofSksMCkpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnNldCh0LGkpLGkrPXQuYnl0ZUxlbmd0aH0pKSxufWIoSmQsIkZSRVEiLFs5NmUzLDg4MjAwLDY0ZTMsNDhlMyw0NDEwMCwzMmUzLDI0ZTMsMjIwNTAsMTZlMywxMmUzLDExMDI1LDhlMyw3MzUwXSk7dmFyIGVoPU1hdGgucG93KDIsMzIpO2Z1bmN0aW9uIHJoKHQpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTowO3JldHVybih0W2VdPDw4KSsodFtlKzFdfHwwKX1mdW5jdGlvbiBuaCh0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4odFtlXTw8MjQ+Pj4wKSsodFtlKzFdPDwxNikrKHRbZSsyXTw8OCkrKHRbZSszXXx8MCl9ZnVuY3Rpb24gaWgodCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjA7cmV0dXJuIG5oKHQsZSkqZWgrbmgodCxlKzQpfWZ1bmN0aW9uIGFoKHQpe3ZhciBlPSIiO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZSs9ZnVuY3Rpb24odCl7cmV0dXJuKCIwIitOdW1iZXIodCkudG9TdHJpbmcoMTYpKS5zbGljZSgtMikudG9VcHBlckNhc2UoKX0odCl9KSksZS5sZW5ndGg8PTMyKWZvcih2YXIgcj0zMi1lLmxlbmd0aCxuPTA7bjxyO24rKyllKz0iMCI7cmV0dXJuIGV9ZnVuY3Rpb24gb2godCl7aWYoIUFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgZT1bXSxyPSIiLG49MDtuPHQubGVuZ3RoO24rKyluJTImJihyPXRbbi0xXSt0W25dLGUucHVzaChwYXJzZUludChyLDE2KSkscj0iIik7cmV0dXJuIGV9cmV0dXJuIHQubWFwKChmdW5jdGlvbih0KXtyZXR1cm4gcGFyc2VJbnQodCwxNil9KSl9dmFyIHNoPU8sdWg9ZHQsY2g9JGwsZmg9T2QuVU5TVVBQT1JURURfWTtzaCYmKCJnIiE9Ly4vZy5mbGFnc3x8ZmgpJiZ1aC5mKFJlZ0V4cC5wcm90b3R5cGUsImZsYWdzIix7Y29uZmlndXJhYmxlOiEwLGdldDpjaH0pO3ZhciBsaD1ULGRoPUluLGhoPUVvLHBoPXh0LHZoPVlyLHloPXZoKCJpdGVyYXRvciIpLGdoPXZoKCJ0b1N0cmluZ1RhZyIpLG1oPWhoLnZhbHVlcztmb3IodmFyIGJoIGluIGRoKXt2YXIgd2g9bGhbYmhdLGtoPXdoJiZ3aC5wcm90b3R5cGU7aWYoa2gpe2lmKGtoW3loXSE9PW1oKXRyeXtwaChraCx5aCxtaCl9Y2F0Y2goU3Ype2toW3loXT1taH1pZihraFtnaF18fHBoKGtoLGdoLGJoKSxkaFtiaF0pZm9yKHZhciB4aCBpbiBoaClpZihraFt4aF0hPT1oaFt4aF0pdHJ5e3BoKGtoLHhoLGhoW3hoXSl9Y2F0Y2goU3Ype2toW3hoXT1oaFt4aF19fX12YXIgQWg9X2UsU2g9RixfaD1JZSxUaD1mdW5jdGlvbih0KXt2YXIgZT1TdHJpbmcoU2godGhpcykpLHI9IiIsbj1BaCh0KTtpZihuPDB8fG49PTEvMCl0aHJvdyBSYW5nZUVycm9yKCJXcm9uZyBudW1iZXIgb2YgcmVwZXRpdGlvbnMiKTtmb3IoO24+MDsobj4+Pj0xKSYmKGUrPWUpKTEmbiYmKHIrPWUpO3JldHVybiByfSxFaD1GLEloPU1hdGguY2VpbCxPaD1mdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyLG4pe3ZhciBpLGEsbz1TdHJpbmcoRWgoZSkpLHM9by5sZW5ndGgsdT12b2lkIDA9PT1uPyIgIjpTdHJpbmcobiksYz1faChyKTtyZXR1cm4gYzw9c3x8IiI9PXU/bzooaT1jLXMsKGE9VGguY2FsbCh1LEloKGkvdS5sZW5ndGgpKSkubGVuZ3RoPmkmJihhPWEuc2xpY2UoMCxpKSksdD9vK2E6YStvKX19LE1oPXtzdGFydDpPaCghMSksZW5kOk9oKCEwKX0sQ2g9L1ZlcnNpb25cLzEwKD86XC5cZCspezEsMn0oPzogW1x3Li9dKyk/KD86IE1vYmlsZVwvXHcrKT8gU2FmYXJpXC8vLnRlc3QoX3IpLFJoPU1oLnN0YXJ0O21yKHt0YXJnZXQ6IlN0cmluZyIscHJvdG86ITAsZm9yY2VkOkNofSx7cGFkU3RhcnQ6ZnVuY3Rpb24odCl7cmV0dXJuIFJoKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSk7dmFyIEJoPW1yLFBoPUxuLmZpbmQsVWg9eGksRGg9ImZpbmQiLHpoPSEwO0RoIGluW10mJkFycmF5KDEpLmZpbmQoKGZ1bmN0aW9uKCl7emg9ITF9KSksQmgoe3RhcmdldDoiQXJyYXkiLHByb3RvOiEwLGZvcmNlZDp6aH0se2ZpbmQ6ZnVuY3Rpb24odCl7cmV0dXJuIFBoKHRoaXMsdCxhcmd1bWVudHMubGVuZ3RoPjE/YXJndW1lbnRzWzFdOnZvaWQgMCl9fSksVWgoRGgpO3ZhciBqaD1wdCxMaD1wdCxGaD1mdW5jdGlvbih0KXt2YXIgZT10LnJldHVybjtpZih2b2lkIDAhPT1lKXJldHVybiBqaChlLmNhbGwodCkpLnZhbHVlfSxOaD1DbixWaD1xLEhoPWZ1bmN0aW9uKHQsZSxyLG4pe3RyeXtyZXR1cm4gbj9lKExoKHIpWzBdLHJbMV0pOmUocil9Y2F0Y2goU3Ype3Rocm93IEZoKHQpLFN2fX0sWWg9UHUsS2g9SWUsV2g9U3IsR2g9TXUscWg9ZnVuY3Rpb24odCl7dmFyIGUscixuLGksYSxvLHM9VmgodCksdT0iZnVuY3Rpb24iPT10eXBlb2YgdGhpcz90aGlzOkFycmF5LGM9YXJndW1lbnRzLmxlbmd0aCxmPWM+MT9hcmd1bWVudHNbMV06dm9pZCAwLGw9dm9pZCAwIT09ZixkPUdoKHMpLGg9MDtpZihsJiYoZj1OaChmLGM+Mj9hcmd1bWVudHNbMl06dm9pZCAwLDIpKSxudWxsPT1kfHx1PT1BcnJheSYmWWgoZCkpZm9yKHI9bmV3IHUoZT1LaChzLmxlbmd0aCkpO2U+aDtoKyspbz1sP2Yoc1toXSxoKTpzW2hdLFdoKHIsaCxvKTtlbHNlIGZvcihhPShpPWQuY2FsbChzKSkubmV4dCxyPW5ldyB1OyEobj1hLmNhbGwoaSkpLmRvbmU7aCsrKW89bD9IaChpLGYsW24udmFsdWUsaF0sITApOm4udmFsdWUsV2gocixoLG8pO3JldHVybiByLmxlbmd0aD1oLHJ9O21yKHt0YXJnZXQ6IkFycmF5IixzdGF0OiEwLGZvcmNlZDohUG8oKGZ1bmN0aW9uKHQpe0FycmF5LmZyb20odCl9KSl9LHtmcm9tOnFofSk7dmFyIFhoPV9lLCRoPUYsUWg9ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7dmFyIG4saSxhPVN0cmluZygkaChlKSksbz1YaChyKSxzPWEubGVuZ3RoO3JldHVybiBvPDB8fG8+PXM/dD8iIjp2b2lkIDA6KG49YS5jaGFyQ29kZUF0KG8pKTw1NTI5Nnx8bj41NjMxOXx8bysxPT09c3x8KGk9YS5jaGFyQ29kZUF0KG8rMSkpPDU2MzIwfHxpPjU3MzQzP3Q/YS5jaGFyQXQobyk6bjp0P2Euc2xpY2UobyxvKzIpOmktNTYzMjArKG4tNTUyOTY8PDEwKSs2NTUzNn19LFpoPXtjb2RlQXQ6UWgoITEpLGNoYXJBdDpRaCghMCl9LmNoYXJBdCxKaD1jZSx0cD1tbyxlcD0iU3RyaW5nIEl0ZXJhdG9yIixycD1KaC5zZXQsbnA9SmguZ2V0dGVyRm9yKGVwKTt0cChTdHJpbmcsIlN0cmluZyIsKGZ1bmN0aW9uKHQpe3JwKHRoaXMse3R5cGU6ZXAsc3RyaW5nOlN0cmluZyh0KSxpbmRleDowfSl9KSwoZnVuY3Rpb24oKXt2YXIgdCxlPW5wKHRoaXMpLHI9ZS5zdHJpbmcsbj1lLmluZGV4O3JldHVybiBuPj1yLmxlbmd0aD97dmFsdWU6dm9pZCAwLGRvbmU6ITB9Oih0PVpoKHIsbiksZS5pbmRleCs9dC5sZW5ndGgse3ZhbHVlOnQsZG9uZTohMX0pfSkpO3ZhciBpcD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXt5KHRoaXMsdCl9cmV0dXJuIG0odCxudWxsLFt7a2V5OiJmaW5kQm94Iix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGk9W107aWYoIWUpcmV0dXJuIGk7Zm9yKHZhciBhPTAsbz0iIixzPTA7ZS5sZW5ndGg+Nzspe2lmKGE9bmgoZSksbz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZS5zdWJhcnJheSg0LDgpKSxzPTgsMT09PWE/KGE9aWgoZSw4KSxzKz04KTphfHwoYT1lLmxlbmd0aCksIXJbMF18fG89PT1yWzBdKXt2YXIgdT1lLnN1YmFycmF5KDAsYSk7aWYoIShyLmxlbmd0aDwyKSlyZXR1cm4gdC5maW5kQm94KHUuc3ViYXJyYXkocyksci5zbGljZSgxKSxuK3MpO2kucHVzaCh7c3RhcnQ6bixzaXplOmEsaGVhZGVyU2l6ZTpzLHR5cGU6byxkYXRhOnV9KX1uKz1hLGU9ZS5zdWJhcnJheShhKX1yZXR1cm4gaX19LHtrZXk6InRmaGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3QudHJhY2tJZD1uaChlKTt2YXIgcj00LG49MSZ0LmZsYWdzLGk9MiZ0LmZsYWdzLGE9OCZ0LmZsYWdzLG89MTYmdC5mbGFncyxzPTMyJnQuZmxhZ3M7biYmKHIrPTQsdC5iYXNlRGF0YU9mZnNldD1uaChlLHIpLHIrPTQpLGkmJih0LnNhbXBsZURlc2NyaXB0aW9uSW5kZXg9bmgoZSxyKSxyKz00KSxhJiYodC5kZWZhdWx0U2FtcGxlRHVyYXRpb249bmgoZSxyKSxyKz00KSxvJiYodC5kZWZhdWx0U2FtcGxlU2l6ZT1uaChlLHIpLHIrPTQpLHMmJih0LmRlZmF1bHRTYW1wbGVGbGFncz1uaChlLHIpKX0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7dC5yZWZlcmVuY2VfSUQ9bmgoZSxyKSxyKz00LHQudGltZXNjYWxlPW5oKGUscikscis9NCwwPT09dC52ZXJzaW9uPyh0LmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPW5oKGUscikscis9NCx0LmZpcnN0X29mZnNldD1uaChlLHIpLHIrPTQpOih0LmVhcmxpZXN0X3ByZXNlbnRhdGlvbl90aW1lPWloKGUscikscis9OCx0LmZpcnN0X29mZnNldD1paChlLHIpLHIrPTgpLHIrPTIsdC5yZWZlcmVuY2VzPVtdO3ZhciBuPXJoKGUscik7cis9Mjtmb3IodmFyIGk9MDtpPG47aSsrKXt2YXIgYT17fTt0LnJlZmVyZW5jZXMucHVzaChhKTt2YXIgbz1uaChlLHIpO3IrPTQsYS5yZWZlcmVuY2VfdHlwZT1vPj4zMSYxLGEucmVmZXJlbmNlZF9zaXplPTIxNDc0ODM2NDcmbyxhLnN1YnNlZ21lbnRfZHVyYXRpb249bmgoZSxyKSxvPW5oKGUscis9NCkscis9NCxhLnN0YXJ0c193aXRoX1NBUD1vPj4zMSYxLGEuU0FQX3R5cGU9bz4+MjgmNyxhLlNBUF9kZWx0YV90aW1lPTI2ODQzNTQ1NSZvfX0pKX19LHtrZXk6Im1vb3YiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5tdmhkPXQubXZoZCh0LmZpbmRCb3gocixbIm12aGQiXSxuKVswXSksZS50cmFrPXQuZmluZEJveChyLFsidHJhayJdLG4pLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSxlLnBzc2g9dC5wc3NoKHQuZmluZEJveChyLFsicHNzaCJdLG4pWzBdKX0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7MT09PXQudmVyc2lvbj8odC50aW1lc2NhbGU9bmgoZSwxNiksdC5kdXJhdGlvbj1paChlLDIwKSxyKz0yOCk6KHQudGltZXNjYWxlPW5oKGUsOCksdC5kdXJhdGlvbj1uaChlLDEyKSxyKz0xNiksdC5uZXh0VHJhY2tJZD1uaChlLHIrNzYpfSkpfX0se2tleToidHJhayIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRraGQ9dC50a2hkKHQuZmluZEJveChyLFsidGtoZCJdLG4pWzBdKSxlLm1kaWE9dC5tZGlhKHQuZmluZEJveChyLFsibWRpYSJdLG4pWzBdKX0pKX19LHtrZXk6InRraGQiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPTA7MT09PXQudmVyc2lvbj8odC50cmFja0lkPW5oKGUsMTYpLHQuZHVyYXRpb249aWgoZSwyNCkscis9MzIpOih0LnRyYWNrSWQ9bmgoZSw4KSx0LmR1cmF0aW9uPW5oKGUsMTYpLHIrPTIwKSx0LndpZHRoPW5oKGUscis1MiksdC5oZWlnaHQ9bmgoZSxyKzU2KX0pKX19LHtrZXk6Im1kaWEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5tZGhkPXQubWRoZCh0LmZpbmRCb3gocixbIm1kaGQiXSxuKVswXSksZS5oZGxyPXQuaGRscih0LmZpbmRCb3gocixbImhkbHIiXSxuKVswXSksZS5taW5mPXQubWluZih0LmZpbmRCb3gocixbIm1pbmYiXSxuKVswXSl9KSl9fSx7a2V5OiJtZGhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt2YXIgcj0wOzE9PT10LnZlcnNpb24/KHQudGltZXNjYWxlPW5oKGUsMTYpLHQuZHVyYXRpb249aWgoZSwyMCkscis9MjgpOih0LnRpbWVzY2FsZT1uaChlLDgpLHQuZHVyYXRpb249bmgoZSwxMikscis9MTYpO3ZhciBuPXJoKGUscik7dC5sYW5ndWFnZT1TdHJpbmcuZnJvbUNoYXJDb2RlKDk2KyhuPj4xMCYzMSksOTYrKG4+PjUmMzEpLDk2KygzMSZuKSl9KSl9fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXswPT09dC52ZXJzaW9uJiYodC5oYW5kbGVyVHlwZT1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsZS5zdWJhcnJheSg0LDgpKSl9KSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uudm1oZD10LnZtaGQodC5maW5kQm94KHIsWyJ2bWhkIl0sbilbMF0pLGUuc21oZD10LnNtaGQodC5maW5kQm94KHIsWyJzbWhkIl0sbilbMF0pLGUuc3RibD10LnN0YmwodC5maW5kQm94KHIsWyJzdGJsIl0sbilbMF0pfSkpfX0se2tleToidm1oZCIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITAsKGZ1bmN0aW9uKHQsZSl7dC5ncmFwaGljc21vZGU9cmgoZSksdC5vcGNvbG9yPVtyaChlLDIpLHJoKGUsNCkscmgoZSw2KV19KSl9fSx7a2V5OiJzbWhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LmJhbGFuY2U9cmgoZSl9KSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uuc3RzZD10LnN0c2QodC5maW5kQm94KHIsWyJzdHNkIl0sbilbMF0pLGUuc3R0cz10LnN0dHModC5maW5kQm94KHIsWyJzdHRzIl0sbilbMF0pLGUuY3R0cz10LmN0dHModC5maW5kQm94KHIsWyJjdHRzIl0sbilbMF0pLGUuc3RzYz10LnN0c2ModC5maW5kQm94KHIsWyJzdHNjIl0sbilbMF0pLGUuc3Rzej10LnN0c3oodC5maW5kQm94KHIsWyJzdHN6Il0sbilbMF0pLGUuc3Rjbz10LnN0Y28odC5maW5kQm94KHIsWyJzdGNvIl0sbilbMF0pLGUuc3Rjb3x8KGUuY282ND10LmNvNjQodC5maW5kQm94KHIsWyJjbzY0Il0sbilbMF0pLGUuc3Rjbz1lLmNvNjQpLGUuc3Rzcz10LnN0c3ModC5maW5kQm94KHIsWyJzdHNzIl0sbilbMF0pLGUuc2VuYz10LnNlbmModC5maW5kQm94KHIsWyJzZW5jIl0sbilbMF0pfSkpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITAsKGZ1bmN0aW9uKHQsZSl7dmFyIHI9MCxuPW5oKGUscik7cis9NCx0LnNhbXBsZXM9W107Zm9yKHZhciBpPTA7aTxuO2krKyl7dmFyIGE9e307aWYoYS5Jbml0aWFsaXphdGlvblZlY3Rvcj1bZVtyXSxlW3IrMV0sZVtyKzJdLGVbciszXSxlW3IrNF0sZVtyKzVdLGVbcis2XSxlW3IrN11dLHIrPTgsMiZ0LmZsYWdzKXthLnN1YnNhbXBsZXM9W107dmFyIG89cmgoZSxyKTtyKz0yO2Zvcih2YXIgcz0wO3M8bztzKyspe3ZhciB1PXt9O3UuQnl0ZXNPZkNsZWFyRGF0YT1yaChlLHIpLHIrPTIsdS5CeXRlc09mUHJvdGVjdGVkRGF0YT1uaChlLHIpLHIrPTQsYS5zdWJzYW1wbGVzLnB1c2godSl9fXQuc2FtcGxlcy5wdXNoKGEpfX0pKX19LHtrZXk6InBzc2giLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1bXSxuPVtdLGk9MCxhPTA7YTwxNjthKyspbi5wdXNoKGZwKGVbaSthXSkpO2lmKGkrPTE2LHQudmVyc2lvbj4wKXt2YXIgbz1uaChlLGkpO2krPTQ7Zm9yKHZhciBzPTA7czwoIiIrbykubGVuZ3RoO3MrKylmb3IodmFyIHU9MDt1PDE2O3UrKyl7dmFyIGM9ZVtpXTtpKz0xLHIucHVzaChmcChjKSl9fXZhciBmPW5oKGUsaSk7dC5kYXRhX3NpemU9ZixpKz00LHQua2lkPXIsdC5zeXN0ZW1faWQ9bix0LmJ1ZmZlcj1lfSkpfX0se2tleToic3RzZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITAsKGZ1bmN0aW9uKGUscixuKXtlLmVudHJ5Q291bnQ9bmgociksZS5lbnRyaWVzPXQuZmluZEJveChyLnN1YmFycmF5KDQpLFtdLG4rNCkubWFwKChmdW5jdGlvbihlKXtzd2l0Y2goZS50eXBlKXtjYXNlImF2YzEiOmNhc2UiYXZjMiI6Y2FzZSJhdmMzIjpjYXNlImF2YzQiOnJldHVybiB0LmF2YzEoZSk7Y2FzZSJodmMxIjpjYXNlImhldjEiOnJldHVybiB0Lmh2YzEoZSk7Y2FzZSJtcDRhIjpyZXR1cm4gdC5tcDRhKGUpO2Nhc2UiYWxhdyI6Y2FzZSJ1bGF3IjpyZXR1cm4gdC5hbGF3KGUpO2Nhc2UiZW5jYSI6cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLmNoYW5uZWxDb3VudD1yaChyLDE2KSxlLnNhbXBsZXNpemU9cmgociwxOCksZS5zYW1wbGVSYXRlPW5oKHIsMjQpLzY1NTM2LHI9ci5zdWJhcnJheSgyOCksZS5zaW5mPXQuc2luZih0LmZpbmRCb3gocixbInNpbmYiXSxuKVswXSksZS5lc2RzPXQuZXNkcyh0LmZpbmRCb3gocixbImVzZHMiXSxuKVswXSl9KSk7Y2FzZSJlbmN2IjpyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2Uud2lkdGg9cmgociwyNCksZS5oZWlnaHQ9cmgociwyNiksZS5ob3JpenJlc29sdXRpb249bmgociwyOCksZS52ZXJ0cmVzb2x1dGlvbj1uaChyLDMyKSxyPXIuc3ViYXJyYXkoNzgpLGUuc2luZj10LnNpbmYodC5maW5kQm94KHIsWyJzaW5mIl0sbilbMF0pLGUuYXZjQz10LmF2Y0ModC5maW5kQm94KHIsWyJhdmNDIl0sbilbMF0pLGUuaHZjQz10Lmh2Y0ModC5maW5kQm94KHIsWyJodmNDIl0sbilbMF0pLGUucGFzcD10LnBhc3AodC5maW5kQm94KHIsWyJwYXNwIl0sbilbMF0pfSkpfX0pKS5maWx0ZXIoQm9vbGVhbil9KSl9fSx7a2V5OiJ0ZW5jIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24odCxlKXt2YXIgcj02O3QuZGVmYXVsdF9Jc0VuY3J5cHRlZD1lW3JdLHIrPTEsdC5kZWZhdWx0X0lWX3NpemU9ZVtyXSxyKz0xLHQuZGVmYXVsdF9LSUQ9W107Zm9yKHZhciBuPTA7bjwxNjtuKyspdC5kZWZhdWx0X0tJRC5wdXNoKGZwKGVbcl0pKSxyKz0xfSkpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRlbmM9dC50ZW5jKHQuZmluZEJveChyLFsidGVuYyJdLG4pWzBdKX0pKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7ZS5zY2hpPXQuc2NoaSh0LmZpbmRCb3gocixbInNjaGkiXSxuKVswXSksZS5mcm1hPXQuZnJtYSh0LmZpbmRCb3gocixbImZybWEiXSxuKVswXSl9KSl9fSx7a2V5OiJmcm1hIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24odCxlKXt0LmRhdGFfZm9ybWF0PSIiO2Zvcih2YXIgcj0wO3I8NDtyKyspdC5kYXRhX2Zvcm1hdCs9U3RyaW5nLmZyb21DaGFyQ29kZShlW3JdKX0pKX19LHtrZXk6ImF2YzEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB1cChlLCExLChmdW5jdGlvbihlLHIsbil7dmFyIGk9b3AoZSxyKSxhPXIuc3ViYXJyYXkoaSk7bis9aSxlLmF2Y0M9dC5hdmNDKHQuZmluZEJveChhLFsiYXZjQyJdLG4pWzBdKSxlLnBhc3A9dC5wYXNwKHQuZmluZEJveChhLFsicGFzcCJdLG4pWzBdKX0pKX19LHtrZXk6ImF2Y0MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCExLChmdW5jdGlvbih0LGUpe3QuY29uZmlndXJhdGlvblZlcnNpb249ZVswXSx0LkFWQ1Byb2ZpbGVJbmRpY2F0aW9uPWVbMV0sdC5wcm9maWxlQ29tcGF0aWJpbGl0eT1lWzJdLHQuQVZDTGV2ZWxJbmRpY2F0aW9uPWVbM10sdC5jb2RlYz1mdW5jdGlvbih0KXtmb3IodmFyIGUscj0iYXZjMS4iLG49MDtuPDM7bisrKShlPXRbbl0udG9TdHJpbmcoMTYpKS5sZW5ndGg8MiYmKGU9IjAiLmNvbmNhdChlKSkscis9ZTtyZXR1cm4gcn0oW2VbMV0sZVsyXSxlWzNdXSksdC5sZW5ndGhTaXplTWludXNPbmU9MyZlWzRdLHQuc3BzTGVuZ3RoPTMxJmVbNV0sdC5zcHM9W107Zm9yKHZhciByPTYsbj0wO248dC5zcHNMZW5ndGg7bisrKXt2YXIgaT1yaChlLHIpO3IrPTIsdC5zcHMucHVzaChlLnN1YmFycmF5KHIscitpKSkscis9aX10LnBwc0xlbmd0aD1lW3JdLHIrPTEsdC5wcHM9W107Zm9yKHZhciBhPTA7YTx0LnBwc0xlbmd0aDthKyspe3ZhciBvPXJoKGUscik7cis9Mix0LnBwcy5wdXNoKGUuc3ViYXJyYXkocixyKz1vKSkscis9b319KSl9fSx7a2V5OiJodmMxIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe3ZhciBpPW9wKGUsciksYT1yLnN1YmFycmF5KGkpO24rPWksZS5odmNDPXQuaHZjQyh0LmZpbmRCb3goYSxbImh2Y0MiXSxuKVswXSksZS5wYXNwPXQucGFzcCh0LmZpbmRCb3goYSxbInBhc3AiXSxuKVswXSl9KSl9fSx7a2V5OiJodmNDIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMSwoZnVuY3Rpb24oZSxyKXtlLmRhdGE9dC5kYXRhLGUuY29kZWM9ImhldjEuMS42Lkw5My5CMCIsZS5jb25maWd1cmF0aW9uVmVyc2lvbj1yWzBdO3ZhciBuPXJbMV07ZS5nZW5lcmFsUHJvZmlsZVNwYWNlPW4+PjYsZS5nZW5lcmFsVGllckZsYWc9KDMyJm4pPj41LGUuZ2VuZXJhbFByb2ZpbGVJZGM9MzEmbixlLmdlbmVyYWxQcm9maWxlQ29tcGF0aWJpbGl0eT1uaChyLDIpLGUuZ2VuZXJhbENvbnN0cmFpbnRJbmRpY2F0b3JGbGFncz1yLnN1YmFycmF5KDYsMTIpLGUuZ2VuZXJhbExldmVsSWRjPXJbMTJdLGUuYXZnRnJhbWVSYXRlPXJoKHIsMTkpLGUubnVtT2ZBcnJheXM9clsyMl0sZS52cHM9W10sZS5zcHM9W10sZS5wcHM9W107Zm9yKHZhciBpPTIzLGE9MCxvPTAscz0wLHU9MDt1PGUubnVtT2ZBcnJheXM7dSsrKXthPTYzJnJbaV0sbz1yaChyLGkrMSksaSs9Mztmb3IodmFyIGMsZj1bXSxsPTA7bDxvO2wrKylzPXJoKHIsaSksaSs9MixmLnB1c2goci5zdWJhcnJheShpLGkrcykpLGkrPXM7aWYoMzI9PT1hKShjPWUudnBzKS5wdXNoLmFwcGx5KGMsZik7ZWxzZSBpZigzMz09PWEpe3ZhciBkOyhkPWUuc3BzKS5wdXNoLmFwcGx5KGQsZil9ZWxzZSBpZigzND09PWEpe3ZhciBoOyhoPWUucHBzKS5wdXNoLmFwcGx5KGgsZil9fX0pKX19LHtrZXk6InBhc3AiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCExLChmdW5jdGlvbih0LGUpe3QuaFNwYWNpbmc9bmgoZSksdC52U3BhY2luZz1uaChlLDQpfSkpfX0se2tleToibXA0YSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXt2YXIgaT1zcChlLHIpO2UuZXNkcz10LmVzZHModC5maW5kQm94KHIuc3ViYXJyYXkoaSksWyJlc2RzIl0sbitpKVswXSl9KSl9fSx7a2V5OiJlc2RzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LmNvZGVjPSJtcDRhLiI7Zm9yKHZhciByPTAsbj0wLGk9MCxhPTA7ZS5sZW5ndGg7KXtmb3IoYT1lW3I9MF0sbj1lW3IrMV0scis9MjsxMjgmbjspaT0oMTI3Jm4pPDw3LG49ZVtyXSxyKz0xO2lmKGkrPTEyNyZuLDM9PT1hKWU9ZS5zdWJhcnJheShyKzMpO2Vsc2V7aWYoNCE9PWEpe2lmKDU9PT1hKXt2YXIgbz10LmNvbmZpZz1lLnN1YmFycmF5KHIscitpKSxzPSgyNDgmb1swXSk+PjM7cmV0dXJuIDMxPT09cyYmby5sZW5ndGg+PTImJihzPTMyKygoNyZvWzBdKTw8MykrKCgyMjQmb1sxXSk+PjUpKSx0Lm9iamVjdFR5cGU9cyx0LmNvZGVjKz1zLnRvU3RyaW5nKDE2KSx2b2lkKCIuIj09PXQuY29kZWNbdC5jb2RlYy5sZW5ndGgtMV0mJih0LmNvZGVjPXQuY29kZWMuc3Vic3RyaW5nKDAsdC5jb2RlYy5sZW5ndGgtMSkpKX1yZXR1cm4gdm9pZCgiLiI9PT10LmNvZGVjW3QuY29kZWMubGVuZ3RoLTFdJiYodC5jb2RlYz10LmNvZGVjLnN1YnN0cmluZygwLHQuY29kZWMubGVuZ3RoLTEpKSl9dC5jb2RlYys9KGVbcl0udG9TdHJpbmcoMTYpKyIuIikucGFkU3RhcnQoMywiMCIpLGU9ZS5zdWJhcnJheShyKzEzKX19fSkpfX0se2tleToiYWxhdyIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHVwKHQsITEsKGZ1bmN0aW9uKHQsZSl7c3AodCxlKX0pKX19LHtrZXk6InN0dHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uaChlKSxuPVtdLGk9NCxhPTA7YTxyO2ErKyluLnB1c2goe2NvdW50Om5oKGUsaSksZGVsdGE6bmgoZSxpKzQpfSksaSs9ODt0LmVudHJ5Q291bnQ9cix0LmVudHJpZXM9bn0pKX19LHtrZXk6ImN0dHMiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPW5oKGUpLG49W10saT00O2lmKDE9PT10LnZlcnNpb24pZm9yKHZhciBhPTA7YTxyO2ErKyluLnB1c2goe2NvdW50Om5oKGUsaSksb2Zmc2V0Om5oKGUsaSs0KX0pLGkrPTg7ZWxzZSBmb3IodmFyIG89MDtvPHI7bysrKW4ucHVzaCh7Y291bnQ6bmgoZSxpKSxvZmZzZXQ6LSgxK35uaChlLGkrNCkpfSksaSs9ODt0LmVudHJ5Q291bnQ9cix0LmVudHJpZXM9bn0pKX19LHtrZXk6InN0c2MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe2Zvcih2YXIgcj1uaChlKSxuPVtdLGk9NCxhPTA7YTxyO2ErKyluLnB1c2goe2ZpcnN0Q2h1bms6bmgoZSxpKSxzYW1wbGVzUGVyQ2h1bms6bmgoZSxpKzQpLHNhbXBsZURlc2NyaXB0aW9uSW5kZXg6bmgoZSxpKzgpfSksaSs9MTI7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJzdHN6Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt2YXIgcj1uaChlKSxuPW5oKGUsNCksaT1bXTtpZighcilmb3IodmFyIGE9OCxvPTA7bzxuO28rKylpLnB1c2gobmgoZSxhKSksYSs9NDt0LnNhbXBsZVNpemU9cix0LnNhbXBsZUNvdW50PW4sdC5lbnRyeVNpemVzPWl9KSl9fSx7a2V5OiJzdGNvIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKG5oKGUsaSkpLGkrPTQ7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJjbzY0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKGloKGUsaSkpLGkrPTg7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJzdHNzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9bmgoZSksbj1bXSxpPTQsYT0wO2E8cjthKyspbi5wdXNoKG5oKGUsaSkpLGkrPTQ7dC5lbnRyeUNvdW50PXIsdC5lbnRyaWVzPW59KSl9fSx7a2V5OiJtb29mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdXAoZSwhMSwoZnVuY3Rpb24oZSxyLG4pe2UubWZoZD10Lm1maGQodC5maW5kQm94KHIsWyJtZmhkIl0sbilbMF0pLGUudHJhZj10LmZpbmRCb3gocixbInRyYWYiXSxuKS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnRyYWYoZSl9KSl9KSl9fSx7a2V5OiJtZmhkIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXt0LnNlcXVlbmNlTnVtYmVyPW5oKGUpfSkpfX0se2tleToidHJhZiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHVwKGUsITEsKGZ1bmN0aW9uKGUscixuKXtlLnRmaGQ9dC50ZmhkKHQuZmluZEJveChyLFsidGZoZCJdLG4pWzBdKSxlLnRmZHQ9dC50ZmR0KHQuZmluZEJveChyLFsidGZkdCJdLG4pWzBdKSxlLnRydW49dC50cnVuKHQuZmluZEJveChyLFsidHJ1biJdLG4pWzBdKX0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB1cCh0LCEwLChmdW5jdGlvbih0LGUpe3ZhciByPXQudmVyc2lvbixuPXQuZmxhZ3MsaT1lLmxlbmd0aCxhPXQuc2FtcGxlQ291bnQ9bmgoZSksbz00O2lmKGk+byYmMSZuJiYodC5kYXRhT2Zmc2V0PS0oMSt+bmgoZSxvKSksbys9NCksaT5vJiY0Jm4mJih0LmZpcnN0U2FtcGxlRmxhZ3M9bmgoZSxvKSxvKz00KSx0LnNhbXBsZXM9W10saT5vKWZvcih2YXIgcyx1PTA7dTxhO3UrKylzPXt9LDI1NiZuJiYocy5kdXJhdGlvbj1uaChlLG8pLG8rPTQpLDUxMiZuJiYocy5zaXplPW5oKGUsbyksbys9NCksMTAyNCZuJiYocy5mbGFncz1uaChlLG8pLG8rPTQpLDIwNDgmbiYmKHMuY3RzPXI/LSgxK35uaChlLG8rNCkpOm5oKGUsbyksbys9NCksdC5zYW1wbGVzLnB1c2gocyl9KSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdXAodCwhMCwoZnVuY3Rpb24odCxlKXsxPT09dC52ZXJzaW9uP3QuYmFzZU1lZGlhRGVjb2RlVGltZT1paChlKTp0LmJhc2VNZWRpYURlY29kZVRpbWU9bmgoZSl9KSl9fSx7a2V5OiJwcm9iZSIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuISF0LmZpbmRCb3goZSxbImZ0eXAiXSl9fSx7a2V5OiJwYXJzZVNhbXBsZUZsYWdzIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm57aXNMZWFkaW5nOigxMiZ0WzBdKT4+PjIsZGVwZW5kc09uOjMmdFswXSxpc0RlcGVuZGVkT246KDE5MiZ0WzFdKT4+PjYsaGFzUmVkdW5kYW5jeTooNDgmdFsxXSk+Pj40LHBhZGRpbmdWYWx1ZTooMTQmdFsxXSk+Pj4xLGlzTm9uU3luY1NhbXBsZToxJnRbMV0sZGVncmFkYXRpb25Qcmlvcml0eTp0WzJdPDw4fHRbM119fX0se2tleToibW9vdlRvVHJhY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpLGE9dC50cmFrO2lmKGEmJmEubGVuZ3RoKXt2YXIgbz1hLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSkscz1hLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSk7aWYobyYmZSl7dmFyIHUsYyxmLGwsZCxoLHAsdj1lLHk9bnVsbD09PSh1PW8udGtoZCl8fHZvaWQgMD09PXU/dm9pZCAwOnUudHJhY2tJZDtudWxsIT15JiYodi5pZD1vLnRraGQudHJhY2tJZCksdi50a2hkRHVyYXRpb249by50a2hkLmR1cmF0aW9uLHYubXZoZER1cnRpb249dC5tdmhkLmR1cmF0aW9uLHYubXZoZFRpbWVjYWxlPXQubXZoZC50aW1lc2NhbGUsdi50aW1lc2NhbGU9di5mb3JtYXRUaW1lc2NhbGU9by5tZGlhLm1kaGQudGltZXNjYWxlLHYuZHVyYXRpb249by5tZGlhLm1kaGQuZHVyYXRpb258fHYubXZoZER1cnRpb24vdi5tdmhkVGltZWNhbGUqdi50aW1lc2NhbGU7dmFyIGcsbSxiLHcsayx4LEEsUyxfPW8ubWRpYS5taW5mLnN0Ymwuc3RzZC5lbnRyaWVzWzBdO2lmKHYud2lkdGg9Xy53aWR0aCx2LmhlaWdodD1fLmhlaWdodCxfLnBhc3AmJih2LnNhclJhdGlvPVtfLnBhc3AuaFNwYWNpbmcsXy5wYXNwLnZTcGFjaW5nXSksXy5odmNDKXYuY29kZWNUeXBlPXppLHYuY29kZWM9Xy5odmNDLmNvZGVjLHYudnBzPV8uaHZjQy52cHMsdi5zcHM9Xy5odmNDLnNwcyx2LnBwcz1fLmh2Y0MucHBzLHYuaHZjQz1fLmh2Y0MuZGF0YTtlbHNle2lmKCFfLmF2Y0MpdGhyb3cgbmV3IEVycm9yKCJ1bmtub3duIHZpZGVvIHN0c2QgZW50cnkiKTt2LmNvZGVjPV8uYXZjQy5jb2RlYyx2LnNwcz1fLmF2Y0Muc3BzLHYucHBzPV8uYXZjQy5wcHN9aWYodi5wcmVzZW50PSEwLHYuZXh0PXt9LHYuZXh0LnN0c3M9bnVsbD09PShjPW8ubWRpYSl8fHZvaWQgMD09PWN8fG51bGw9PT0oZj1jLm1pbmYpfHx2b2lkIDA9PT1mfHxudWxsPT09KGw9Zi5zdGJsKXx8dm9pZCAwPT09bD92b2lkIDA6bC5zdHNzLHYuZXh0LmN0dHM9bnVsbD09PShkPW8ubWRpYSl8fHZvaWQgMD09PWR8fG51bGw9PT0oaD1kLm1pbmYpfHx2b2lkIDA9PT1ofHxudWxsPT09KHA9aC5zdGJsKXx8dm9pZCAwPT09cD92b2lkIDA6cC5jdHRzLF8mJiJlbmN2Ij09PV8udHlwZSl2LmlzVmlkZW9FbmNyeXB0aW9uPSEwLF8uZGVmYXVsdF9LSUQ9bnVsbD09PShnPV8uc2luZil8fHZvaWQgMD09PWd8fG51bGw9PT0obT1nLnNjaGkpfHx2b2lkIDA9PT1tP3ZvaWQgMDptLnRlbmMuZGVmYXVsdF9LSUQsXy5kZWZhdWx0X0lzRW5jcnlwdGVkPW51bGw9PT0oYj1fLnNpbmYpfHx2b2lkIDA9PT1ifHxudWxsPT09KHc9Yi5zY2hpKXx8dm9pZCAwPT09dz92b2lkIDA6dy50ZW5jLmRlZmF1bHRfSXNFbmNyeXB0ZWQsXy5kZWZhdWx0X0lWX3NpemU9bnVsbD09PShrPV8uc2luZil8fHZvaWQgMD09PWt8fG51bGw9PT0oeD1rLnNjaGkpfHx2b2lkIDA9PT14P3ZvaWQgMDp4LnRlbmMuZGVmYXVsdF9JVl9zaXplLHYudmlkZW9TZW5jPW8ubWRpYS5taW5mLnN0Ymwuc2VuYyYmby5tZGlhLm1pbmYuc3RibC5zZW5jLnNhbXBsZXMsXy5kYXRhX2Zvcm1hdD1udWxsPT09KEE9Xy5zaW5mKXx8dm9pZCAwPT09QXx8bnVsbD09PShTPUEuZnJtYSl8fHZvaWQgMD09PVM/dm9pZCAwOlMuZGF0YV9mb3JtYXQsdi51c2VFTUU9dC51c2VFTUUsdi5raWRWYWx1ZT10LmtpZFZhbHVlLHYucHNzaD10LnBzc2gsdi5lbmN2PV99aWYocyYmcil7dmFyIFQsRSxJLE8sTSxDLFIsQixQLFU9cixEPW51bGw9PT0oVD1zLnRraGQpfHx2b2lkIDA9PT1UP3ZvaWQgMDpULnRyYWNrSWQ7bnVsbCE9RCYmKFUuaWQ9cy50a2hkLnRyYWNrSWQpLFUudGtoZER1cmF0aW9uPXMudGtoZC5kdXJhdGlvbixVLm12aGREdXJ0aW9uPXQubXZoZC5kdXJhdGlvbixVLm12aGRUaW1lY2FsZT10Lm12aGQudGltZXNjYWxlLFUudGltZXNjYWxlPVUuZm9ybWF0VGltZXNjYWxlPXMubWRpYS5tZGhkLnRpbWVzY2FsZSxVLmR1cmF0aW9uPXMubWRpYS5tZGhkLmR1cmF0aW9ufHxVLm12aGREdXJ0aW9uL1UubXZoZFRpbWVjYWxlKlUudGltZXNjYWxlO3ZhciB6LGosTCxGLE4sVixILFksSz1zLm1kaWEubWluZi5zdGJsLnN0c2QuZW50cmllc1swXTtzd2l0Y2goVS5zYW1wbGVTaXplPUsuc2FtcGxlU2l6ZSxVLnNhbXBsZVJhdGU9Sy5zYW1wbGVSYXRlLFUuY2hhbm5lbENvdW50PUsuY2hhbm5lbENvdW50LFUucHJlc2VudD0hMCxLLnR5cGUpe2Nhc2UiYWxhdyI6VS5jb2RlY1R5cGU9VS5jb2RlYz1MaSxVLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2Nhc2UidWxhdyI6VS5jb2RlY1R5cGU9VS5jb2RlYz1GaSxVLnNhbXBsZVJhdGU9OGUzO2JyZWFrO2RlZmF1bHQ6VS5zYW1wbGVEdXJhdGlvbj1KZC5nZXRGcmFtZUR1cmF0aW9uKFUuc2FtcGxlUmF0ZSxVLnRpbWVzY2FsZSksVS5zYW1wbGVSYXRlSW5kZXg9SmQuZ2V0UmF0ZUluZGV4QnlSYXRlKFUuc2FtcGxlUmF0ZSksVS5vYmplY3RUeXBlPShudWxsPT09KG49Sy5lc2RzKXx8dm9pZCAwPT09bj92b2lkIDA6bi5vYmplY3RUeXBlKXx8MixLLmVzZHMmJihVLmNvbmZpZz1BcnJheS5mcm9tKEsuZXNkcy5jb25maWcpKSxVLmNvZGVjPShudWxsPT09KGk9Sy5lc2RzKXx8dm9pZCAwPT09aT92b2lkIDA6aS5jb2RlYyl8fCJtcDRhLjQwLjIifWlmKFUuc2FtcGxlRHVyYXRpb249SmQuZ2V0RnJhbWVEdXJhdGlvbihVLnNhbXBsZVJhdGUsVS50aW1lc2NhbGUpLFUub2JqZWN0VHlwZT0obnVsbD09PShFPUsuZXNkcyl8fHZvaWQgMD09PUU/dm9pZCAwOkUub2JqZWN0VHlwZSl8fDIsSy5lc2RzJiYoSy5lc2RzLmNvbmZpZz9VLmNvbmZpZz1BcnJheS5mcm9tKEsuZXNkcy5jb25maWcpOmNvbnNvbGUud2FybigiZXNkcyBjb25maWcgaXMgbnVsbCIpKSxVLmNvZGVjPShudWxsPT09KEk9Sy5lc2RzKXx8dm9pZCAwPT09ST92b2lkIDA6SS5jb2RlYyl8fCJtcDRhLjQwLjIiLFUuc2FtcGxlUmF0ZUluZGV4PUpkLmdldFJhdGVJbmRleEJ5UmF0ZShVLnNhbXBsZVJhdGUpLFUuZXh0PXt9LFUuZXh0LnN0c3M9bnVsbD09PShPPXMubWRpYSl8fHZvaWQgMD09PU98fG51bGw9PT0oTT1PLm1pbmYpfHx2b2lkIDA9PT1NfHxudWxsPT09KEM9TS5zdGJsKXx8dm9pZCAwPT09Qz92b2lkIDA6Qy5zdHNzLFUuZXh0LmN0dHM9bnVsbD09PShSPXMubWRpYSl8fHZvaWQgMD09PVJ8fG51bGw9PT0oQj1SLm1pbmYpfHx2b2lkIDA9PT1CfHxudWxsPT09KFA9Qi5zdGJsKXx8dm9pZCAwPT09UD92b2lkIDA6UC5jdHRzLFUucHJlc2VudD0hMCxLJiYiZW5jYSI9PT1LLnR5cGUpVS5pc0F1ZGlvRW5jcnlwdGlvbj0hMCxLLmRhdGFfZm9ybWF0PW51bGw9PT0oej1LLnNpbmYpfHx2b2lkIDA9PT16fHxudWxsPT09KGo9ei5mcm1hKXx8dm9pZCAwPT09aj92b2lkIDA6ai5kYXRhX2Zvcm1hdCxLLmRlZmF1bHRfS0lEPW51bGw9PT0oTD1LLnNpbmYpfHx2b2lkIDA9PT1MfHxudWxsPT09KEY9TC5zY2hpKXx8dm9pZCAwPT09Rj92b2lkIDA6Ri50ZW5jLmRlZmF1bHRfS0lELEsuZGVmYXVsdF9Jc0VuY3J5cHRlZD1udWxsPT09KE49Sy5zaW5mKXx8dm9pZCAwPT09Tnx8bnVsbD09PShWPU4uc2NoaSl8fHZvaWQgMD09PVY/dm9pZCAwOlYudGVuYy5kZWZhdWx0X0lzRW5jcnlwdGVkLEsuZGVmYXVsdF9JVl9zaXplPW51bGw9PT0oSD1LLnNpbmYpfHx2b2lkIDA9PT1IfHxudWxsPT09KFk9SC5zY2hpKXx8dm9pZCAwPT09WT92b2lkIDA6WS50ZW5jLmRlZmF1bHRfSVZfc2l6ZSxVLmF1ZGlvU2VuYz1zLm1kaWEubWluZi5zdGJsLnNlbmMmJnMubWRpYS5taW5mLnN0Ymwuc2VuYy5zYW1wbGVzLFUudXNlRU1FPXQudXNlRU1FLFUua2lkVmFsdWU9dC5raWRWYWx1ZSxVLmVuY2E9S31pZihyJiYoci5pc1ZpZGVvRW5jcnlwdGlvbj0hIWUmJmUuaXNWaWRlb0VuY3J5cHRpb24pLGUmJihlLmlzQXVkaW9FbmNyeXB0aW9uPSEhciYmci5pc0F1ZGlvRW5jcnlwdGlvbiksbnVsbCE9ZSYmZS5lbmN2fHxudWxsIT1yJiZyLmVuY2Epe3ZhciBXLEcscT1udWxsPT1lfHxudWxsPT09KFc9ZS5lbmN2KXx8dm9pZCAwPT09Vz92b2lkIDA6Vy5kZWZhdWx0X0tJRCxYPW51bGw9PXJ8fG51bGw9PT0oRz1yLmVuY2EpfHx2b2lkIDA9PT1HP3ZvaWQgMDpHLmRlZmF1bHRfS0lELCQ9cXx8WD8ocXx8WCkuam9pbigiIik6bnVsbDtlJiYoZS5raWQ9JCksciYmKHIua2lkPSQpfXJldHVybiBlJiYoZS5mbGFncz0zODQxKSxyJiYoci5mbGFncz0xNzkzKSx7dmlkZW9UcmFjazplLGF1ZGlvVHJhY2s6cn19fX0se2tleToiZXZhbHVhdGVEZWZhdWx0RHVyYXRpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSxyKXt2YXIgbixpPW51bGw9PWV8fG51bGw9PT0obj1lLnNhbXBsZXMpfHx2b2lkIDA9PT1uP3ZvaWQgMDpuLmxlbmd0aDtyZXR1cm4gaT8xMDI0KmkvZS50aW1lc2NhbGUqdC50aW1lc2NhbGUvcjoxMDI0fX0se2tleToibW9vZlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24oZSxyLG4pe3ZhciBpPXt9O3JldHVybiBlLm1maGQmJihyJiYoci5zZXF1ZW5jZU51bWJlcj1lLm1maGQuc2VxdWVuY2VOdW1iZXIpLG4mJihuLnNlcXVlbmNlTnVtYmVyPWUubWZoZC5zZXF1ZW5jZU51bWJlcikpLGUudHJhZi5mb3JFYWNoKChmdW5jdGlvbihlKXt2YXIgYT1lLnRmaGQsbz1lLnRmZHQscz1lLnRydW47aWYoYSYmcyl7byYmKHImJnIuaWQ9PT1hLnRyYWNrSWQmJihyLmJhc2VNZWRpYURlY29kZVRpbWU9by5iYXNlTWVkaWFEZWNvZGVUaW1lKSxuJiZuLmlkPT09YS50cmFja0lkJiYobi5iYXNlTWVkaWFEZWNvZGVUaW1lPW8uYmFzZU1lZGlhRGVjb2RlVGltZSkpO3ZhciB1PWEuZGVmYXVsdFNhbXBsZVNpemV8fDAsYz1hLmRlZmF1bHRTYW1wbGVEdXJhdGlvbnx8dC5ldmFsdWF0ZURlZmF1bHREdXJhdGlvbihyLG4scy5zYW1wbGVzLmxlbmd0aHx8cy5zYW1wbGVDb3VudCksZj1zLmRhdGFPZmZzZXR8fDAsbD0wLGQ9LTE7aWYoIXMuc2FtcGxlcy5sZW5ndGgmJnMuc2FtcGxlQ291bnQpe2lbYS50cmFja0lkXT1bXTtmb3IodmFyIGg9MDtoPHMuc2FtcGxlQ291bnQ7aCsrKWlbYS50cmFja0lkXS5wdXNoKHtvZmZzZXQ6ZixkdHM6bCxkdXJhdGlvbjpjLHNpemU6dX0pLGwrPWMsZis9dX1lbHNlIGlbYS50cmFja0lkXT1zLnNhbXBsZXMubWFwKChmdW5jdGlvbih0LGUpe3JldHVybih0PXtvZmZzZXQ6ZixkdHM6bCxwdHM6bCsodC5jdHN8fDApLGR1cmF0aW9uOnQuZHVyYXRpb258fGMsc2l6ZTp0LnNpemV8fHUsZ29wSWQ6ZCxrZXlmcmFtZTowPT09ZXx8bnVsbCE9PXQuZmxhZ3MmJnZvaWQgMCE9PXQuZmxhZ3MmJig2NTUzNiZ0LmZsYWdzKT4+PjAhPTY1NTM2fSkua2V5ZnJhbWUmJihkKyssdC5nb3BJZD1kKSxsKz10LmR1cmF0aW9uLGYrPXQuc2l6ZSx0fSkpfX0pKSxpfX0se2tleToibW9vdlRvU2FtcGxlcyIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dC50cmFrO2lmKGUmJmUubGVuZ3RoKXt2YXIgcj1lLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInZpZGUiPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSksbj1lLmZpbmQoKGZ1bmN0aW9uKHQpe3ZhciBlLHI7cmV0dXJuInNvdW4iPT09KG51bGw9PT0oZT10Lm1kaWEpfHx2b2lkIDA9PT1lfHxudWxsPT09KHI9ZS5oZGxyKXx8dm9pZCAwPT09cj92b2lkIDA6ci5oYW5kbGVyVHlwZSl9KSk7aWYocnx8bil7dmFyIGksYTtpZihyKXt2YXIgbyxzLHU9bnVsbD09PShvPXIubWRpYSl8fHZvaWQgMD09PW98fG51bGw9PT0ocz1vLm1pbmYpfHx2b2lkIDA9PT1zP3ZvaWQgMDpzLnN0Ymw7aWYoIXUpcmV0dXJuO3ZhciBjPXUuc3R0cyxmPXUuc3RzYyxsPXUuc3RzeixkPXUuc3RjbyxoPXUuc3RzcyxwPXUuY3R0cztpZighKGMmJmYmJmwmJmQmJmgpKXJldHVybjtpPWFwKGMsZixsLGQscCxoKX1pZihuKXt2YXIgdix5LGcsbT1udWxsPT09KHY9bi5tZGlhKXx8dm9pZCAwPT09dnx8bnVsbD09PSh5PXYubWluZil8fHZvaWQgMD09PXk/dm9pZCAwOnkuc3RibDtpZighbSlyZXR1cm47dmFyIGI9bnVsbD09PShnPW4ubWRpYS5tZGhkKXx8dm9pZCAwPT09Zz92b2lkIDA6Zy50aW1lc2NhbGUsdz1tLnN0dHMsaz1tLnN0c2MseD1tLnN0c3osQT1tLnN0Y287aWYoIShiJiZ3JiZrJiZ4JiZBKSlyZXR1cm47YT1hcCh3LGsseCxBKX1yZXR1cm57dmlkZW9TYW1wbGVzOmksYXVkaW9TYW1wbGVzOmF9fX19fV0pLHR9KCk7ZnVuY3Rpb24gYXAodCxlLHIsbixpLGEpe3ZhciBvLHMsdSxjPVtdLGY9bnVsbD09aT92b2lkIDA6aS5lbnRyaWVzLGw9ZS5lbnRyaWVzLGQ9bi5lbnRyaWVzLGg9ci5lbnRyeVNpemVzLHA9bnVsbD09YT92b2lkIDA6YS5lbnRyaWVzO3AmJihvPXt9LHAuZm9yRWFjaCgoZnVuY3Rpb24odCl7b1t0LTFdPSEwfSkpKSxmJiYocz1bXSxmLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNvdW50LHI9dC5vZmZzZXQsbj0wO248ZTtuKyspcy5wdXNoKHIpfSkpKTt2YXIgdj0tMSx5PTAsZz0wLG09MCxiPTAsdz0wLGs9bFswXS5zYW1wbGVzUGVyQ2h1bmsseD1sWzFdP2xbMV0uZmlyc3RDaHVuay0xOjEvMDtyZXR1cm4gdC5lbnRyaWVzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10LmNvdW50LG49dC5kZWx0YSxpPTA7aTxlO2krKyl1PXtkdHM6eSxkdXJhdGlvbjpuLHNpemU6aFtnXXx8ci5zYW1wbGVTaXplLG9mZnNldDpkW21dK3csaW5kZXg6Z30scCYmKHUua2V5ZnJhbWU9b1tnXSx1LmtleWZyYW1lJiZ2KyssdS5nb3BJZD12KSxzJiZnPHMubGVuZ3RoJiYodS5wdHM9dS5kdHMrc1tnXSksYy5wdXNoKHUpLHkrPW4sKytnPGs/dys9dS5zaXplOihtKyssdz0wLG0+PXgmJihiKysseD1sW2IrMV0/bFtiKzFdLmZpcnN0Q2h1bmstMToxLzApLGsrPWxbYl0uc2FtcGxlc1BlckNodW5rKX0pKSxjfWZ1bmN0aW9uIG9wKHQsZSl7cmV0dXJuIHQuZGF0YVJlZmVyZW5jZUluZGV4PXJoKGUsNiksdC53aWR0aD1yaChlLDI0KSx0LmhlaWdodD1yaChlLDI2KSx0Lmhvcml6cmVzb2x1dGlvbj1uaChlLDI4KSx0LnZlcnRyZXNvbHV0aW9uPW5oKGUsMzIpLHQuZnJhbWVDb3VudD1yaChlLDQwKSx0LmRlcHRoPXJoKGUsNzQpLDc4fWZ1bmN0aW9uIHNwKHQsZSl7cmV0dXJuIHQuZGF0YVJlZmVyZW5jZUluZGV4PXJoKGUsNiksdC5jaGFubmVsQ291bnQ9cmgoZSwxNiksdC5zYW1wbGVTaXplPXJoKGUsMTgpLHQuc2FtcGxlUmF0ZT1uaChlLDI0KS82NTUzNiwyOH1mdW5jdGlvbiB1cCh0LGUscil7aWYodCl7aWYodC5zaXplIT09dC5kYXRhLmxlbmd0aCl0aHJvdyBuZXcgRXJyb3IoImJveCAiLmNvbmNhdCh0LnR5cGUsIiBzaXplICE9PSBkYXRhLmxlbmd0aCIpKTt2YXIgbj17c3RhcnQ6dC5zdGFydCxzaXplOnQuc2l6ZSxoZWFkZXJTaXplOnQuaGVhZGVyU2l6ZSx0eXBlOnQudHlwZX07cmV0dXJuIGUmJihuLnZlcnNpb249dC5kYXRhW3QuaGVhZGVyU2l6ZV0sbi5mbGFncz1mdW5jdGlvbih0KXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06MDtyZXR1cm4odFtlXTw8MTYpKyh0W2UrMV08PDgpKyh0W2UrMl18fDApfSh0LmRhdGEsdC5oZWFkZXJTaXplKzEpLG4uaGVhZGVyU2l6ZSs9NCkscihuLHQuZGF0YS5zdWJhcnJheShuLmhlYWRlclNpemUpLG4uc3RhcnQrbi5oZWFkZXJTaXplKSxufX12YXIgY3A9ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1TdHJpbmcociksaT1lPj4wLGE9TWF0aC5jZWlsKGkvbi5sZW5ndGgpLG89W10scz1TdHJpbmcodCk7YS0tOylvLnB1c2gobik7cmV0dXJuIG8uam9pbigiIikuc3Vic3RyaW5nKDAsaS1zLmxlbmd0aCkrc30sZnA9ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChjcChOdW1iZXIoZSkudG9TdHJpbmcoMTYpLDIsMCkpfSkpLHRbMF19LGxwPUt1LGRwPSJBcnJheUJ1ZmZlciIsaHA9QXUuQXJyYXlCdWZmZXI7bXIoe2dsb2JhbDohMCxmb3JjZWQ6VC5BcnJheUJ1ZmZlciE9PWhwfSx7QXJyYXlCdWZmZXI6aHB9KSxscChkcCk7dmFyIHBwLHZwPXt9O09iamVjdC5kZWZpbmVQcm9wZXJ0eSh2cCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdnAuZGVmYXVsdD1mdW5jdGlvbih0KXtmb3IodmFyIGU9MCxyPWFyZ3VtZW50cy5sZW5ndGgsbj1BcnJheShyPjE/ci0xOjApLGk9MTtpPHI7aSsrKW5baS0xXT1hcmd1bWVudHNbaV07dmFyIGE9ITAsbz0hMSxzPXZvaWQgMDt0cnl7Zm9yKHZhciB1LGM9bltTeW1ib2wuaXRlcmF0b3JdKCk7IShhPSh1PWMubmV4dCgpKS5kb25lKTthPSEwKXt2YXIgZj11LnZhbHVlO2UrPWYubGVuZ3RofX1jYXRjaChiKXtvPSEwLHM9Yn1maW5hbGx5e3RyeXshYSYmYy5yZXR1cm4mJmMucmV0dXJuKCl9ZmluYWxseXtpZihvKXRocm93IHN9fXZhciBsPW5ldyB0KGUpLGQ9MCxoPSEwLHA9ITEsdj12b2lkIDA7dHJ5e2Zvcih2YXIgeSxnPW5bU3ltYm9sLml0ZXJhdG9yXSgpOyEoaD0oeT1nLm5leHQoKSkuZG9uZSk7aD0hMCl7dmFyIG09eS52YWx1ZTtsLnNldChtLGQpLGQrPW0ubGVuZ3RofX1jYXRjaChiKXtwPSEwLHY9Yn1maW5hbGx5e3RyeXshaCYmZy5yZXR1cm4mJmcucmV0dXJuKCl9ZmluYWxseXtpZihwKXRocm93IHZ9fXJldHVybiBsfTt2YXIgeXA9KChwcD12cCkmJnBwLl9fZXNNb2R1bGU/cHA6e2RlZmF1bHQ6cHB9KS5kZWZhdWx0LGdwPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCgpe3kodGhpcyx0KSx0aGlzLmJ1ZmZlcj1uZXcgVWludDhBcnJheSgwKX1yZXR1cm4gbSh0LFt7a2V5OiJ3cml0ZSIsdmFsdWU6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9dGhpcyxlPWFyZ3VtZW50cy5sZW5ndGgscj1uZXcgQXJyYXkoZSksbj0wO248ZTtuKyspcltuXT1hcmd1bWVudHNbbl07ci5mb3JFYWNoKChmdW5jdGlvbihlKXtlP3QuYnVmZmVyPXlwKFVpbnQ4QXJyYXksdC5idWZmZXIsZSk6d2luZG93LmNvbnNvbGUud2FybihlKX0pKX19XSxbe2tleToid3JpdGVVaW50MTYiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBuZXcgVWludDhBcnJheShbdD4+OCYyNTUsMjU1JnRdKX19LHtrZXk6IndyaXRlVWludDMyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoW3Q+PjI0LHQ+PjE2JjI1NSx0Pj44JjI1NSwyNTUmdF0pfX1dKSx0fSgpLG1wPU1hdGgucG93KDIsMzIpLTEsYnA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7eSh0aGlzLHQpfXJldHVybiBtKHQsbnVsbCxbe2tleToiYm94Iix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlPjE/ZS0xOjApLG49MTtuPGU7bisrKXJbbi0xXT1hcmd1bWVudHNbbl07dmFyIGk9OCsocj1yLmZpbHRlcihCb29sZWFuKSkucmVkdWNlKChmdW5jdGlvbih0LGUpe3JldHVybiB0K2UuYnl0ZUxlbmd0aH0pLDApLGE9bmV3IFVpbnQ4QXJyYXkoaSk7YVswXT1pPj4yNCYyNTUsYVsxXT1pPj4xNiYyNTUsYVsyXT1pPj44JjI1NSxhWzNdPTI1NSZpLGEuc2V0KHQsNCk7dmFyIG89ODtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbih0KXthLnNldCh0LG8pLG8rPXQuYnl0ZUxlbmd0aH0pKSxhfX0se2tleToiZnR5cCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuZmluZCgoZnVuY3Rpb24odCl7cmV0dXJuIHQudHlwZT09PUJpJiZ0LmNvZGVjVHlwZT09PXppfSkpP3QuRlRZUEhFVjE6dC5GVFlQQVZDMX19LHtrZXk6ImluaXRTZWdtZW50Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdGgodC5mdHlwKGUpLHQubW9vdihlKSl9fSx7a2V5OiJwc3NoIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgVWludDhBcnJheShbMSwwLDAsMF0uY29uY2F0KFsxNiwxMTksMjM5LDIzNiwxOTIsMTc4LDc3LDIsMTcyLDIyNyw2MCwzMCw4MiwyMjYsMjUxLDc1XSxbMCwwLDAsMV0sb2goZS5raWQpLFswLDAsMCwwXSkpO3JldHVybiB0LmJveCh0LnR5cGVzLnBzc2gscil9fSx7a2V5OiJtb292Iix2YWx1ZTpmdW5jdGlvbihlKXtpZihlWzBdLnVzZUVNRSYmKGVbMF0uZW5jdnx8ZVswXS5lbmNhKSl7ZVswXS5wc3NofHwoZVswXS5wc3NoPXtraWQ6ZVswXS5raWR9KTt2YXIgcj10aGlzLnBzc2goZVswXS5wc3NoKTtyZXR1cm4gdC5ib3guYXBwbHkodCxbdC50eXBlcy5tb292LHQubXZoZChlWzBdLm12aGREdXJ0aW9ufHxlWzBdLmR1cmF0aW9uLGVbMF0ubXZoZFRpbWVjYWxlfHxlWzBdLnRpbWVzY2FsZSksdC5tdmV4KGUpXS5jb25jYXQoayhlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSksW3JdKSl9cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubW9vdix0Lm12aGQoZVswXS5tdmhkRHVydGlvbnx8ZVswXS5kdXJhdGlvbixlWzBdLm12aGRUaW1lY2FsZXx8ZVswXS50aW1lc2NhbGUpXS5jb25jYXQoayhlLm1hcCgoZnVuY3Rpb24oZSl7cmV0dXJuIHQudHJhayhlKX0pKSksW3QubXZleChlKV0pKX19LHtrZXk6Im12aGQiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTo5ZTQsbj10LmJveCh0LnR5cGVzLm12aGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLHI+PjI0JjI1NSxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnIsZT4+MjQmMjU1LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSwwLDEsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2NCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwyNTUsMjU1LDI1NSwyNTVdKSk7cmV0dXJuIG59fSx7a2V5OiJ0cmFrIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmFrLHQudGtoZChlLmlkLGUudGtoZER1cmF0aW9ufHwwLGUud2lkdGgsZS5oZWlnaHQpLHQubWRpYShlKSl9fSx7a2V5OiJ0a2hkIix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTowLGk9YXJndW1lbnRzLmxlbmd0aD4zJiZ2b2lkIDAhPT1hcmd1bWVudHNbM10/YXJndW1lbnRzWzNdOjAsYT10LmJveCh0LnR5cGVzLnRraGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDcsMCwwLDAsMCwwLDAsMCwwLGU+PjI0JjI1NSxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUsMCwwLDAsMCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDY0LDAsMCwwLG4+PjgmMjU1LDI1NSZuLDAsMCxpPj44JjI1NSwyNTUmaSwwLDBdKSk7cmV0dXJuIGF9fSx7a2V5OiJtZGlhIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5tZGlhLHQubWRoZChlLmR1cmF0aW9uLGUudGltZXNjYWxlKSx0LmhkbHIoZS50eXBlKSx0Lm1pbmYoZSkpfX0se2tleToibWRoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOjllNCxuPXQuYm94KHQudHlwZXMubWRoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAscj4+MjQmMjU1LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixlPj4yNCYyNTUsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDg1LDE5NiwwLDBdKSk7cmV0dXJuIG59fSx7a2V5OiJoZGxyIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5oZGxyLHQuSERMUl9UWVBFU1tlXSl9fSx7a2V5OiJtaW5mIix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5taW5mLGUudHlwZT09PUJpP3QuVk1IRDp0LlNNSEQsdC5ESU5GLHQuc3RibChlKSl9fSx7a2V5OiJzdGJsIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1bXTtyZXR1cm4gZSYmZS5leHQmJmUuZXh0LnN0c3MmJnIucHVzaCh0LnN0c3MoZS5leHQuc3Rzcy5lbnRyaWVzKSksdC5ib3godC50eXBlcy5zdGJsLHQuc3RzZChlKSx0LlNUVFMsclswXSx0LlNUU0MsdC5TVFNaLHQuU1RDTyl9fSx7a2V5OiJzdHNkIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcjtyZXR1cm4gcj0iYXVkaW8iPT09ZS50eXBlP2UudXNlRU1FJiZlLmVuY2E/dC5lbmNhKGUpOnQubXA0YShlKTplLnVzZUVNRSYmZS5lbmN2P3QuZW5jdihlKTp0LmF2YzFoZXYxKGUpLHQuYm94KHQudHlwZXMuc3RzZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxXSkscil9fSx7a2V5OiJlbmNhIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmVuY2EuY2hhbm5lbENvdW50LG49ZS5lbmNhLnNhbXBsZVJhdGUsaT1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLHIsMCwxNiwwLDAsMCwwLG4+PjgmMjU1LDI1NSZuLDAsMF0pLGE9dC5lc2RzKGUuY29uZmlnKSxvPXQuc2luZihlLmVuY2EpO3JldHVybiB0LmJveCh0LnR5cGVzLmVuY2EsaSxhLG8pfX0se2tleToiZW5jdiIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHIsbixpPWUuc3BzLmxlbmd0aD4wP2Uuc3BzWzBdOltdLGE9ZS5wcHMubGVuZ3RoPjA/ZS5wcHNbMF06W10sbz1lLndpZHRoLHM9ZS5oZWlnaHQsdT1lLnNhclJhdGlvWzBdLGM9ZS5zYXJSYXRpb1sxXSxmPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCxvPj44JjI1NSwyNTUmbyxzPj44JjI1NSwyNTUmcywwLDcyLDAsMCwwLDcyLDAsMCwwLDAsMCwwLDAsMSwxOCwxMDAsOTcsMTA1LDEwOCwxMjEsMTA5LDExMSwxMTYsMTA1LDExMSwxMTAsNDcsMTA0LDEwOCwxMTUsNDYsMTA2LDExNSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxsPW5ldyBVaW50OEFycmF5KChyPShuPVsxLGlbMV0saVsyXSxpWzNdLDI1NSwyMjUsaS5sZW5ndGg+Pj44JjI1NSwyNTUmaS5sZW5ndGhdKS5jb25jYXQuYXBwbHkobixrKGkpKS5jb25jYXQoWzEsYS5sZW5ndGg+Pj44JjI1NSwyNTUmYS5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KHIsayhhKSkpLGQ9bmV3IFVpbnQ4QXJyYXkoWzAsMCw4OCw1NywwLDE1LDIwMCwxOTIsMCw0LDg2LDcyXSksaD10LnNpbmYoZS5lbmN2KSxwPW5ldyBVaW50OEFycmF5KFt1Pj4yNCx1Pj4xNiYyNTUsdT4+OCYyNTUsMjU1JnUsYz4+MjQsYz4+MTYmMjU1LGM+PjgmMjU1LDI1NSZjXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuZW5jdixmLHQuYm94KHQudHlwZXMuYXZjQyxsKSx0LmJveCh0LnR5cGVzLmJ0cnQsZCksaCx0LmJveCh0LnR5cGVzLnBhc3AscCkpfX0se2tleToic2NoaSIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IFVpbnQ4QXJyYXkoW10pLG49dC50ZW5jKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnNjaGkscixuKX19LHtrZXk6InRlbmMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwyNTUmZS5kZWZhdWx0X0lzRW5jcnlwdGVkLDI1NSZlLmRlZmF1bHRfSVZfc2l6ZV0uY29uY2F0KG9oKGUuZGVmYXVsdF9LSUQpKSk7cmV0dXJuIHQuYm94KHQudHlwZXMudGVuYyxyKX19LHtrZXk6InNpbmYiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBVaW50OEFycmF5KFtdKSxuPW5ldyBVaW50OEFycmF5KFtlLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMCksZS5kYXRhX2Zvcm1hdC5jaGFyQ29kZUF0KDEpLGUuZGF0YV9mb3JtYXQuY2hhckNvZGVBdCgyKSxlLmRhdGFfZm9ybWF0LmNoYXJDb2RlQXQoMyldKSxpPW5ldyBVaW50OEFycmF5KFswLDAsMCwwLDk5LDEwMSwxMTAsOTksMCwxLDAsMF0pLGE9dC5zY2hpKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnNpbmYscix0LmJveCh0LnR5cGVzLmZybWEsbiksdC5ib3godC50eXBlcy5zY2htLGkpLGEpfX0se2tleToiYXZjMWhldjEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuY29kZWNUeXBlPT09emksbj1yP3QudHlwZXMuaHZjMTp0LnR5cGVzLmF2YzEsaT1yP3QuaHZjQyhlKTp0LmF2Y0MoZSksYT1bbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLGUud2lkdGg+PjgmMjU1LDI1NSZlLndpZHRoLGUuaGVpZ2h0Pj44JjI1NSwyNTUmZS5oZWlnaHQsMCw3MiwwLDAsMCw3MiwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMjQsMTcsMTddKSxpXTtyZXR1cm4gcj9hLnB1c2godC5ib3godC50eXBlcy5maWVsLG5ldyBVaW50OEFycmF5KFsxLDBdKSkpOmUuc2FyUmF0aW8mJmUuc2FyUmF0aW8ubGVuZ3RoPjEmJmEucHVzaCh0LnBhc3AoZS5zYXJSYXRpbykpLHQuYm94LmFwcGx5KHQsW25dLmNvbmNhdChhKSl9fSx7a2V5OiJhdmNDIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcixuLGksYT1bXSxvPVtdO3JldHVybiBlLnNwcy5mb3JFYWNoKChmdW5jdGlvbih0KXtpPXQuYnl0ZUxlbmd0aCxhLnB1c2goaT4+PjgmMjU1KSxhLnB1c2goMjU1JmkpLGEucHVzaC5hcHBseShhLGsodCkpfSkpLGUucHBzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2k9dC5ieXRlTGVuZ3RoLG8ucHVzaChpPj4+OCYyNTUpLG8ucHVzaCgyNTUmaSksby5wdXNoLmFwcGx5KG8sayh0KSl9KSksdC5ib3godC50eXBlcy5hdmNDLG5ldyBVaW50OEFycmF5KChyPShuPVsxLGFbM10sYVs0XSxhWzVdLDI1NSwyMjR8ZS5zcHMubGVuZ3RoXSkuY29uY2F0LmFwcGx5KG4sYSkuY29uY2F0KFtlLnBwcy5sZW5ndGhdKSkuY29uY2F0LmFwcGx5KHIsbykpKX19LHtrZXk6Imh2Y0MiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuaHZjQztpZihyIGluc3RhbmNlb2YgQXJyYXlCdWZmZXJ8fHIgaW5zdGFuY2VvZiBVaW50OEFycmF5KXJldHVybiByO3ZhciBuLGk9ZS52cHMsYT1lLnNwcyxvPWUucHBzO2lmKHIpe3ZhciBzPXIuZ2VuZXJhbFByb2ZpbGVDb21wYXRpYmlsaXR5RmxhZ3MsdT1yLmdlbmVyYWxDb25zdHJhaW50SW5kaWNhdG9yRmxhZ3MsYz0oaS5sZW5ndGgmJjEpKyhhLmxlbmd0aCYmMSkrKG8ubGVuZ3RoJiYxKTtuPVsxLHIuZ2VuZXJhbFByb2ZpbGVTcGFjZTw8NnxyLmdlbmVyYWxUaWVyRmxhZzw8NXxyLmdlbmVyYWxQcm9maWxlSWRjLHM+Pj4yNCxzPj4+MTYscz4+Pjgscyx1WzBdLHVbMV0sdVsyXSx1WzNdLHVbNF0sdVs1XSxyLmdlbmVyYWxMZXZlbElkYywyNDAsMCwyNTIsMjUyfHIuY2hyb21hRm9ybWF0SWRjLDI0OHxyLmJpdERlcHRoTHVtYU1pbnVzOCwyNDh8ci5iaXREZXB0aENocm9tYU1pbnVzOCwwLDAsci5udW1UZW1wb3JhbExheWVyczw8M3xyLnRlbXBvcmFsSWROZXN0ZWQ8PDJ8MyxjXTt2YXIgZj1mdW5jdGlvbih0KXt2YXIgZTtuLnB1c2godC5sZW5ndGg+PjgsdC5sZW5ndGgpLChlPW4pLnB1c2guYXBwbHkoZSxrKHQpKX07aS5sZW5ndGgmJihuLnB1c2goMTYwLDAsaS5sZW5ndGgpLGkuZm9yRWFjaChmKSksYS5sZW5ndGgmJihuLnB1c2goMTYxLDAsYS5sZW5ndGgpLGEuZm9yRWFjaChmKSksby5sZW5ndGgmJihuLnB1c2goMTYyLDAsby5sZW5ndGgpLG8uZm9yRWFjaChmKSl9ZWxzZSBuPVsxLDEsOTYsMCwwLDAsMTQ0LDAsMCwwLDAsMCw5MywyNDAsMCwyNTIsMjUzLDI0OCwyNDgsMCwwLDE1LDMsMTYwLDAsMSwwLDI0LDY0LDEsMTIsMSwyNTUsMjU1LDEsOTYsMCwwLDMsMCwxNDQsMCwwLDMsMCwwLDMsMCw5MywxNTMsMTUyLDksMTYxLDAsMSwwLDQ1LDY2LDEsMSwxLDk2LDAsMCwzLDAsMTQ0LDAsMCwzLDAsMCwzLDAsOTMsMTYwLDIsMTI4LDEyOCw0NSwyMiw4OSwxNTMsMTY0LDE0Nyw0MywxNTQsMTI4LDEyOCwxMjgsMTMwLDAsMCwzLDAsMiwwLDAsMywwLDUwLDE2LDE2MiwwLDEsMCw3LDY4LDEsMTkzLDExNCwxODAsOTgsNjRdO3JldHVybiB0LmJveCh0LnR5cGVzLmh2Y0MsbmV3IFVpbnQ4QXJyYXkobikpfX0se2tleToicGFzcCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9dyhlLDIpLG49clswXSxpPXJbMV07cmV0dXJuIHQuYm94KHQudHlwZXMucGFzcCxuZXcgVWludDhBcnJheShbbj4+MjQsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKX19LHtrZXk6Im1wNGEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1wNGEsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwwLDAsMCwwLDAsMCxlLmNoYW5uZWxDb3VudCwwLDE2LDAsMCwwLDAsZS5zYW1wbGVSYXRlPj44JjI1NSwyNTUmZS5zYW1wbGVSYXRlLDAsMF0pLGUuY29uZmlnLmxlbmd0aD90LmVzZHMoZS5jb25maWcpOnZvaWQgMCl9fSx7a2V5OiJlc2RzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aDtyZXR1cm4gdC5ib3godC50eXBlcy5lc2RzLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDMsMjMrciwwLDAsMCw0LDE1K3IsNjQsMjEsMCw2LDAsMCwwLDIxOCwxOTIsMCwwLDIxOCwxOTIsNV0uY29uY2F0KFtyXSkuY29uY2F0KGUpLmNvbmNhdChbNiwxLDJdKSkpfX0se2tleToibXZleCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubXZleF0uY29uY2F0KGsoZS5tYXAoKGZ1bmN0aW9uKGUpe3JldHVybiB0LnRyZXgoZS5pZCl9KSkpKSl9fSx7a2V5OiJ0cmV4Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmV4LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGU+PjI0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZSwwLDAsMCwxLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwxXSkpfX0se2tleToidHJleDEiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLnRyZXgsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLDAsMCwwLDEsMCwwLDIsMCwwLDAsMCwwLDAsMSwwLDBdKSl9fSx7a2V5OiJ0cmV4MiIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMudHJleCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmUsMCwwLDAsMSwwLDAsNCwwLDAsMCwwLDAsMiwwLDAsMF0pKX19LHtrZXk6Im1vb2YiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveC5hcHBseSh0LFt0LnR5cGVzLm1vb2YsdC5tZmhkKGVbMF0uc2FtcGxlcz9lWzBdLnNhbXBsZXNbMF0uZ29wSWQ6MCldLmNvbmNhdChrKGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC50cmFmKGUpfSkpKSkpfX0se2tleToibWZoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMubWZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdKSl9fSx7a2V5OiJ0cmFmIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj10LnRmaGQoZS5pZCksbj10LnRmZHQoZSxlLmJhc2VNZWRpYURlY29kZVRpbWUpO2lmKGUudXNlRU1FJiYoZS5pc1ZpZGVvRW5jcnlwdGlvbnx8ZS5pc0F1ZGlvRW5jcnlwdGlvbikpe2lmKGUuaXNWaWRlb0VuY3J5cHRpb24pe2lmKDE9PT1lLmlkKXt2YXIgaT10LnNhaXooZSksYT10LnNhaW8oZSksbz10LnRydW4xKGUpLHM9dC5zZW5jKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnRyYWYscixuLGksYSxvLHMpfWlmKGUuaXNBdWRpb0VuY3J5cHRpb24pe3ZhciB1PXQuc2JncCgpLGM9dC5zYWl6KGUpLGY9dC5zYWlvKGUpLGw9dC5zZW5jKGUpLGQ9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbix1LGMsZixsLGQpfXZhciBoPXQuc2JncCgpLHA9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbixoLHApfWlmKDE9PT1lLmlkKXt2YXIgdj10LnRydW4xKGUpO3JldHVybiB0LmJveCh0LnR5cGVzLnRyYWYscixuLHYpfXZhciB5PXQuc2JncCgpLGc9dC5zYWl6KGUpLG09dC5zYWlvKGUpLGI9dC5zZW5jKGUpLHc9dC50cnVuMShlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbix5LGcsbSxiLHcpfXZhciBrPXQuc2R0cChlKTtyZXR1cm4gdC5ib3godC50eXBlcy50cmFmLHIsbixrLHQudHJ1bihlLnNhbXBsZXMsay5ieXRlTGVuZ3RoKzc2KSl9fSx7a2V5OiJzZHRwIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1uZXcgZ3A7cmV0dXJuIGUuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKG5ldyBVaW50OEFycmF5KDE9PT1lLmlkP1t0LmtleWZyYW1lPzMyOjE2XTpbMTZdKSl9KSksdC5ib3godC50eXBlcy5zZHRwLHRoaXMuZXh0ZW5zaW9uKDAsMCksci5idWZmZXIpfX0se2tleToidHJ1bjEiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPW5ldyBncCxuPWdwLndyaXRlVWludDMyKGUuc2FtcGxlcy5sZW5ndGgpLGk9bnVsbDtpZigxPT09ZS5pZCl7dmFyIGE9ZS52aWRlb1NlbmNMZW5ndGg7aT1ncC53cml0ZVVpbnQzMigxNiplLnNhbXBsZXMubGVuZ3RoK2ErMTQ5KSwhZS5pc1ZpZGVvRW5jcnlwdGlvbiYmZS5pc0F1ZGlvRW5jcnlwdGlvbiYmKGk9Z3Aud3JpdGVVaW50MzIoMTYqZS5zYW1wbGVzLmxlbmd0aCs5MikpfWVsc2V7dmFyIG89MTIqZS5zYW1wbGVzLmxlbmd0aCsxMjQ7ZS5pc0F1ZGlvRW5jcnlwdGlvbiYmKG89MTIqZS5zYW1wbGVzLmxlbmd0aCs4KmUuYXVkaW9TZW5jLmxlbmd0aCsxNzcpLGk9Z3Aud3JpdGVVaW50MzIobyl9cmV0dXJuIGUuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKGdwLndyaXRlVWludDMyKHQuZHVyYXRpb24pKSxyLndyaXRlKGdwLndyaXRlVWludDMyKHQuc2l6ZSkpLHIud3JpdGUoZ3Aud3JpdGVVaW50MzIodC5rZXlmcmFtZT8zMzU1NDQzMjo2NTUzNikpLDE9PT1lLmlkJiZyLndyaXRlKGdwLndyaXRlVWludDMyKHQuY3RzP3QuY3RzOjApKX0pKSx0LmJveCh0LnR5cGVzLnRydW4sdGhpcy5leHRlbnNpb24oMCxlLmZsYWdzKSxuLGksci5idWZmZXIpfX0se2tleToic2VuYyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9bmV3IGdwLG49ZS5zYW1wbGVzLmxlbmd0aCxpPTE9PT1lLmlkPzE2OjgsYT0xPT09ZS5pZD8yOjAsbz1bXSxzPTA7cmV0dXJuIDE9PT1lLmlkPyhvPWUudmlkZW9TZW5jLHM9ZS52aWRlb1NlbmNMZW5ndGgpOm89ZS5hdWRpb1NlbmMscz1zfHxpKm4sci53cml0ZShncC53cml0ZVVpbnQzMigxNitzKSx0LnR5cGVzLnNlbmMsdGhpcy5leHRlbnNpb24oMCxhKSksci53cml0ZShncC53cml0ZVVpbnQzMihuKSksby5mb3JFYWNoKChmdW5jdGlvbih0KXtmb3IodmFyIGU9MDtlPHQuSW5pdGlhbGl6YXRpb25WZWN0b3IubGVuZ3RoO2UrKylyLndyaXRlKG5ldyBVaW50OEFycmF5KFt0LkluaXRpYWxpemF0aW9uVmVjdG9yW2VdXSkpO3Quc3Vic2FtcGxlcyYmdC5zdWJzYW1wbGVzLmxlbmd0aCYmKHIud3JpdGUoZ3Aud3JpdGVVaW50MTYodC5zdWJzYW1wbGVzLmxlbmd0aCkpLHQuc3Vic2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0KXtyLndyaXRlKGdwLndyaXRlVWludDE2KHQuQnl0ZXNPZkNsZWFyRGF0YSkpLHIud3JpdGUoZ3Aud3JpdGVVaW50MzIodC5CeXRlc09mUHJvdGVjdGVkRGF0YSkpfSkpKX0pKSxyLmJ1ZmZlcn19LHtrZXk6InNhaW8iLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPTEyKmUuc2FtcGxlcy5sZW5ndGgrMTQxOzI9PT1lLmlkJiZlLmlzQXVkaW9FbmNyeXB0aW9uJiYocj0xNDkpO3ZhciBuPW5ldyBVaW50OEFycmF5KFsxLDAsMCwwLDAsMCwwLDEsMCwwLDAsMCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2FpbyxuKX19LHtrZXk6InNhaXoiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUuc2FtcGxlcy5sZW5ndGgsbj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwxNixyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2FpeixuKX19LHtrZXk6InNiZ3AiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9bmV3IFVpbnQ4QXJyYXkoWzExNCwxMTEsMTA4LDEwOCwwLDAsMCwxLDAsMCwxLDI1LDAsMCwwLDFdKTtyZXR1cm4gdC5ib3godC50eXBlcy5zYmdwLHRoaXMuZXh0ZW5zaW9uKDAsMCksZSl9fSx7a2V5OiJleHRlbnNpb24iLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIG5ldyBVaW50OEFycmF5KFt0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0pfX0se2tleToidGZoZCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94KHQudHlwZXMudGZoZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCxlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdKSl9fSx7a2V5OiJ0ZmR0Iix2YWx1ZTpmdW5jdGlvbihlLHIpe3ZhciBuPU1hdGguZmxvb3Ioci8obXArMSkpLGk9TWF0aC5mbG9vcihyJShtcCsxKSk7cmV0dXJuIGUudXNlRU1FJiYoZS5pc1ZpZGVvRW5jcnlwdGlvbnx8ZS5pc0F1ZGlvRW5jcnlwdGlvbik/dC5ib3godC50eXBlcy50ZmR0LG5ldyBVaW50OEFycmF5KFswLDAsMCwwLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKTp0LmJveCh0LnR5cGVzLnRmZHQsbmV3IFVpbnQ4QXJyYXkoWzEsMCwwLDAsbj4+MjQsbj4+MTYmMjU1LG4+PjgmMjU1LDI1NSZuLGk+PjI0LGk+PjE2JjI1NSxpPj44JjI1NSwyNTUmaV0pKX19LHtrZXk6InRydW4iLHZhbHVlOmZ1bmN0aW9uKGUscil7dmFyIG49ZS5sZW5ndGgsaT0xMisxNipuO3IrPTgraTt2YXIgYT1uZXcgVWludDhBcnJheShpKTthLnNldChbMCwwLDE1LDEsbj4+PjI0JjI1NSxuPj4+MTYmMjU1LG4+Pj44JjI1NSwyNTUmbixyPj4+MjQmMjU1LHI+Pj4xNiYyNTUscj4+PjgmMjU1LDI1NSZyXSwwKTtmb3IodmFyIG89MDtvPG47bysrKXt2YXIgcz1lW29dLHU9cy5kdXJhdGlvbixjPXMuc2l6ZSxmPXMuZmxhZyxsPXZvaWQgMD09PWY/e306ZixkPXMuY3RzLGg9dm9pZCAwPT09ZD8wOmQ7YS5zZXQoW3U+Pj4yNCYyNTUsdT4+PjE2JjI1NSx1Pj4+OCYyNTUsMjU1JnUsYz4+PjI0JjI1NSxjPj4+MTYmMjU1LGM+Pj44JjI1NSwyNTUmYyxsLmlzTGVhZGluZzw8MnwobnVsbD09PWwuZGVwZW5kc09ufHx2b2lkIDA9PT1sLmRlcGVuZHNPbj8xOmwuZGVwZW5kc09uKSxsLmlzRGVwZW5kZWRPbjw8NnxsLmhhc1JlZHVuZGFuY3k8PDR8bC5wYWRkaW5nVmFsdWU8PDF8KG51bGw9PT1sLmlzTm9uU3luY1NhbXBsZXx8dm9pZCAwPT09bC5pc05vblN5bmNTYW1wbGU/MTpsLmlzTm9uU3luY1NhbXBsZSksNjE0NDAmbC5kZWdyYWRhdGlvblByaW9yaXR5LDE1JmwuZGVncmFkYXRpb25Qcmlvcml0eSxoPj4+MjQmMjU1LGg+Pj4xNiYyNTUsaD4+PjgmMjU1LDI1NSZoXSwxMisxNipvKX1yZXR1cm4gdC5ib3godC50eXBlcy50cnVuLGEpfX0se2tleToibW9vdk1QNCIsdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIHQuYm94LmFwcGx5KHQsW3QudHlwZXMubW9vdix0Lm12aGQoZVswXS5kdXJhdGlvbixlWzBdLnRpbWVzY2FsZSldLmNvbmNhdChrKGUubWFwKChmdW5jdGlvbihlKXtyZXR1cm4gdC50cmFja01QNChlKX0pKSkpKX19LHtrZXk6InRyYWNrTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy50cmFrLHQudGtoZChlLmlkLGUuZHVyYXRpb24sZS53aWR0aCxlLmhlaWdodCksdC5tZGlhTVA0KGUpKX19LHtrZXk6Im1kaWFNUDQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1kaWEsdC5tZGhkKGUuZHVyYXRpb24sZS50aW1lc2NhbGUpLHQuaGRscihlLnR5cGUpLHQubWluZk1QNChlKSl9fSx7a2V5OiJtaW5mTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXtyZXR1cm4gdC5ib3godC50eXBlcy5taW5mLGUudHlwZT09PUJpP3QuVk1IRDp0LlNNSEQsdC5ESU5GLHQuc3RibE1QNChlKSl9fSx7a2V5OiJzdGJsTVA0Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmV4dCxuPVt0LnN0c2QoZSksdC5zdHRzKHIuc3R0cyksdC5zdHNjKHIuc3RzYyksdC5zdHN6KHIuc3RzeiksdC5zdGNvKHIuc3RjbyldO3JldHVybiByLnN0c3MubGVuZ3RoJiZuLnB1c2godC5zdHNzKHIuc3RzcykpLHIuY3R0cy5sZW5ndGgmJm4ucHVzaCh0LmN0dHMoci5jdHRzKSksdC5ib3guYXBwbHkodCxbdC50eXBlcy5zdGJsXS5jb25jYXQobikpfX0se2tleToic3R0cyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSg4KnIpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZT10LnZhbHVlLHI9dC5jb3VudDtuLnNldChbcj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGU+PjI0LGU+PjE2JjI1NSxlPj44JjI1NSwyNTUmZV0saSksaSs9OH0pKSx0LmJveCh0LnR5cGVzLnN0dHMsdGgobmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAscj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSksbikpfX0se2tleToic3RzYyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSgxMipyKSxpPTA7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5maXJzdENodW5rLHI9dC5zYW1wbGVzUGVyQ2h1bmssYT10LnNhbXBsZURlc2NJbmRleDtuLnNldChbZT4+MjQsZT4+MTYmMjU1LGU+PjgmMjU1LDI1NSZlLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixhPj4yNCxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmFdLGkpLGkrPTEyfSkpLHQuYm94KHQudHlwZXMuc3RzYyx0aChuZXcgVWludDhBcnJheShbMCwwLDAsMCxyPj4yNCxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnJdKSxuKSl9fSx7a2V5OiJzdHN6Iix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KDQqciksaT0wO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe24uc2V0KFt0Pj4yNCx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdLGkpLGkrPTR9KSksdC5ib3godC50eXBlcy5zdHN6LHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDAscj4+MjQscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyXSksbikpfX0se2tleToic3RjbyIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHI9ZS5sZW5ndGgsbj1uZXcgVWludDhBcnJheSg0KnIpLGk9MDtyZXR1cm4gZS5mb3JFYWNoKChmdW5jdGlvbih0KXtuLnNldChbdD4+MjQsdD4+MTYmMjU1LHQ+PjgmMjU1LDI1NSZ0XSxpKSxpKz00fSkpLHQuYm94KHQudHlwZXMuc3Rjbyx0aChuZXcgVWludDhBcnJheShbMCwwLDAsMCxyPj4yNCxyPj4xNiYyNTUscj4+OCYyNTUsMjU1JnJdKSxuKSl9fSx7a2V5OiJzdHNzIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgcj1lLmxlbmd0aCxuPW5ldyBVaW50OEFycmF5KDQqciksaT0wO3JldHVybiBlLmZvckVhY2goKGZ1bmN0aW9uKHQpe24uc2V0KFt0Pj4yNCx0Pj4xNiYyNTUsdD4+OCYyNTUsMjU1JnRdLGkpLGkrPTR9KSksdC5ib3godC50eXBlcy5zdHNzLHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcl0pLG4pKX19LHtrZXk6ImN0dHMiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUubGVuZ3RoLG49bmV3IFVpbnQ4QXJyYXkoOCpyKSxpPTA7cmV0dXJuIGUuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC52YWx1ZSxyPXQuY291bnQ7bi5zZXQoW3I+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcixlPj4yNCxlPj4xNiYyNTUsZT4+OCYyNTUsMjU1JmVdLGkpLGkrPTh9KSksdC5ib3godC50eXBlcy5jdHRzLHRoKG5ldyBVaW50OEFycmF5KFswLDAsMCwwLHI+PjI0LHI+PjE2JjI1NSxyPj44JjI1NSwyNTUmcl0pLG4pKX19LHtrZXk6InN0eXAiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHQuYm94KHQudHlwZXMuc3R5cCxuZXcgVWludDhBcnJheShbMTA5LDExNSwxMDAsMTA0LDAsMCwwLDAsMTA5LDExNSwxMDAsMTA0LDEwOSwxMTUsMTA1LDEyMF0pKX19LHtrZXk6InNpZHgiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciByPWUudGltZXNjYWxlLG49ZS5zYW1wbGVzWzBdLmR1cmF0aW9uLGk9biplLnNhbXBsZXMubGVuZ3RoLGE9ZS5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCpuLG89ODtlLnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7bys9dC5zaXplfSkpO3ZhciBzPTA7aWYoMT09PWUuaWQpe3ZhciB1LGM9MDtlLnZpZGVvU2VuYyYmKHU9ZS52aWRlb1NlbmMpLDE9PT1lLmlkJiZ1LmZvckVhY2goKGZ1bmN0aW9uKHQpe2MrPTgsdC5zdWJzYW1wbGVzJiZ0LnN1YnNhbXBsZXMubGVuZ3RoJiYoYys9MixjKz02KnQuc3Vic2FtcGxlcy5sZW5ndGgpfSkpLGUudmlkZW9TZW5jTGVuZ3RoPWMscz1vKzE0MSsxNiplLnNhbXBsZXMubGVuZ3RoK2MsZS51c2VFTUUmJmUuaXNBdWRpb0VuY3J5cHRpb24mJiFlLmlzVmlkZW9FbmNyeXB0aW9uJiYocz1vKzE2KmUuc2FtcGxlcy5sZW5ndGgrODQpfWVsc2Ugcz1vKzExNisxMiplLnNhbXBsZXMubGVuZ3RoLGUudXNlRU1FJiZlLmlzQXVkaW9FbmNyeXB0aW9uJiYocz1vKzE2OSsxMiplLnNhbXBsZXMubGVuZ3RoKzgqZS5hdWRpb1NlbmMubGVuZ3RoKTt2YXIgZj1uZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwyNTUmZS5pZCxyPj4yNCYyNTUscj4+MTYmMjU1LHI+PjgmMjU1LDI1NSZyLGE+PjI0JjI1NSxhPj4xNiYyNTUsYT4+OCYyNTUsMjU1JmEsMCwwLDAsMCwwLDAsMCwxLDAscz4+MTYmMjU1LHM+PjgmMjU1LDI1NSZzLGk+PjI0JjI1NSxpPj4xNiYyNTUsaT4+OCYyNTUsMjU1JmksMTQ0LDAsMCwwXSk7cmV0dXJuIHQuYm94KHQudHlwZXMuc2lkeCxmKX19LHtrZXk6Im1kYXQiLHZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0LmJveCh0LnR5cGVzLm1kYXQsZSl9fV0pLHR9KCk7YihicCwidHlwZXMiLFsiYXZjMSIsImF2Y0MiLCJodmMxIiwiaHZjQyIsImRpbmYiLCJkcmVmIiwiZXNkcyIsImZ0eXAiLCJoZGxyIiwibWRhdCIsIm1kaGQiLCJtZGlhIiwibWZoZCIsIm1pbmYiLCJtb29mIiwibW9vdiIsIm1wNGEiLCJtdmV4IiwibXZoZCIsInBhc3AiLCJzdGJsIiwic3RjbyIsInN0c2MiLCJzdHNkIiwic3RzeiIsInN0dHMiLCJ0ZmR0IiwidGZoZCIsInRyYWYiLCJ0cmFrIiwidHJleCIsInRraGQiLCJ2bWhkIiwic21oZCIsImN0dHMiLCJzdHNzIiwic3R5cCIsInBzc2giLCJzaWR4Iiwic2JncCIsInNhaXoiLCJzYWlvIiwic2VuYyIsInRydW4iLCJlbmN2IiwiZW5jYSIsInNpbmYiLCJidHJ0IiwiZnJtYSIsInRlbmMiLCJzY2htIiwic2NoaSIsIm1laGQiLCJmaWVsIiwic2R0cCJdLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdFtlXT1bZS5jaGFyQ29kZUF0KDApLGUuY2hhckNvZGVBdCgxKSxlLmNoYXJDb2RlQXQoMiksZS5jaGFyQ29kZUF0KDMpXSx0fSksT2JqZWN0LmNyZWF0ZShudWxsKSkpLGIoYnAsIkhETFJfVFlQRVMiLHt2aWRlbzpuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwLDExOCwxMDUsMTAwLDEwMSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw4NiwxMDUsMTAwLDEwMSwxMTEsNzIsOTcsMTEwLDEwMCwxMDgsMTAxLDExNCwwXSksYXVkaW86bmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwxMTUsMTExLDExNywxMTAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsODMsMTExLDExNywxMTAsMTAwLDcyLDk3LDExMCwxMDAsMTA4LDEwMSwxMTQsMF0pfSksYihicCwiRlRZUEFWQzEiLGJwLmJveChicC50eXBlcy5mdHlwLG5ldyBVaW50OEFycmF5KFsxMDUsMTE1LDExMSwxMDksMCwwLDAsMSwxMDUsMTE1LDExMSwxMDksOTcsMTE4LDk5LDQ5XSkpKSxiKGJwLCJGVFlQSEVWMSIsYnAuYm94KGJwLnR5cGVzLmZ0eXAsbmV3IFVpbnQ4QXJyYXkoWzEwNSwxMTUsMTExLDEwOSwwLDAsMCwxLDEwNSwxMTUsMTExLDEwOSwxMDQsMTAxLDExOCw0OV0pKSksYihicCwiRElORiIsYnAuYm94KGJwLnR5cGVzLmRpbmYsYnAuYm94KGJwLnR5cGVzLmRyZWYsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxMiwxMTcsMTE0LDEwOCwzMiwwLDAsMCwxXSkpKSksYihicCwiVk1IRCIsYnAuYm94KGJwLnR5cGVzLnZtaGQsbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDEsMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTTUhEIixicC5ib3goYnAudHlwZXMuc21oZCxuZXcgVWludDhBcnJheShbMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTdGJsVGFibGUiLG5ldyBVaW50OEFycmF5KFswLDAsMCwwLDAsMCwwLDBdKSksYihicCwiU1RUUyIsYnAuYm94KGJwLnR5cGVzLnN0dHMsYnAuU3RibFRhYmxlKSksYihicCwiU1RTQyIsYnAuYm94KGJwLnR5cGVzLnN0c2MsYnAuU3RibFRhYmxlKSksYihicCwiU1RTWiIsYnAuYm94KGJwLnR5cGVzLnN0c3osbmV3IFVpbnQ4QXJyYXkoWzAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwXSkpKSxiKGJwLCJTVENPIixicC5ib3goYnAudHlwZXMuc3RjbyxicC5TdGJsVGFibGUpKTt2YXIgd3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscil7eSh0aGlzLHQpLHRoaXMubmFtZT1lfHwiIix0aGlzLl9wcmVmaXg9IlsiLmNvbmNhdCh0aGlzLm5hbWUsIl0iKSx0LmRpc2FibGVkPXJ9cmV0dXJuIG0odCxbe2tleToiZGVidWciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmRlYnVnLmFwcGx5KGUsW3RoaXMuX3ByZWZpeF0uY29uY2F0KG4pKX19fSx7a2V5OiJsb2ciLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmxvZy5hcHBseShlLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChuKSl9fX0se2tleToid2FybiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTtpZighdC5kaXNhYmxlZCl7Zm9yKHZhciByPWFyZ3VtZW50cy5sZW5ndGgsbj1uZXcgQXJyYXkociksaT0wO2k8cjtpKyspbltpXT1hcmd1bWVudHNbaV07KGU9Y29uc29sZSkud2Fybi5hcHBseShlLFt0aGlzLl9wcmVmaXhdLmNvbmNhdChuKSl9fX0se2tleToiZXJyb3IiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU7aWYoIXQuZGlzYWJsZWQpe2Zvcih2YXIgcj1hcmd1bWVudHMubGVuZ3RoLG49bmV3IEFycmF5KHIpLGk9MDtpPHI7aSsrKW5baV09YXJndW1lbnRzW2ldOyhlPWNvbnNvbGUpLmVycm9yLmFwcGx5KGUsW3RoaXMuX3ByZWZpeF0uY29uY2F0KG4pKX19fSx7a2V5OiJ0YWJsZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZTt0LmRpc2FibGVkfHwoY29uc29sZS5ncm91cCh0aGlzLl9wcmVmaXgpLChlPWNvbnNvbGUpLnRhYmxlLmFwcGx5KGUsYXJndW1lbnRzKSxjb25zb2xlLmdyb3VwRW5kKCkpfX1dLFt7a2V5OiJlbmFibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dC5kaXNhYmxlZD0hMX19LHtrZXk6ImRpc2FibGUiLHZhbHVlOmZ1bmN0aW9uKCl7dC5kaXNhYmxlZD0hMH19XSksdH0oKTtiKHdwLCJkaXNhYmxlZCIsITApO2Zvcih2YXIga3A9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KGUscixuKXt5KHRoaXMsdCksdGhpcy52aWRlb1RyYWNrPWUsdGhpcy5hdWRpb1RyYWNrPXI7dmFyIGk9L0Nocm9tZVwvKFteLl0rKS8uZXhlYyhuYXZpZ2F0b3IudXNlckFnZW50KTt0aGlzLmZvcmNlRmlyc3RJRFI9aSYmTnVtYmVyKGlbMV0pPDUwLHRoaXMubG9nPW5ldyB3cCgiRk1QNFJlbXV4ZXIiLCFufHwhbi5vcGVuTG9nfHwhbi5vcGVuTG9nKX1yZXR1cm4gbSh0LFt7a2V5OiJyZW11eCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxlLHIsbixpLGE9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0mJmFyZ3VtZW50c1swXSxvPWFyZ3VtZW50cy5sZW5ndGg+MSYmdm9pZCAwIT09YXJndW1lbnRzWzFdP2FyZ3VtZW50c1sxXTp7fSxzPXRoaXMudmlkZW9UcmFjayx1PXRoaXMuYXVkaW9UcmFjayxjPXMuZXhpc3QoKSxmPXUuZXhpc3QoKSxsPVtdO3JldHVybiBhJiYobyYmby5pbml0TWVyZ2U/KGMmJmwucHVzaCh0aGlzLnZpZGVvVHJhY2spLGYmJmwucHVzaCh0aGlzLmF1ZGlvVHJhY2spLHI9YnAuaW5pdFNlZ21lbnQobCkpOihjJiYodD1icC5pbml0U2VnbWVudChbdGhpcy52aWRlb1RyYWNrXSkpLGYmJihlPWJwLmluaXRTZWdtZW50KFt0aGlzLmF1ZGlvVHJhY2tdKSkpKSxjJiZzLmhhc1NhbXBsZSgpJiYobj10aGlzLl9yZW11eFZpZGVvKCkpLGYmJnUuaGFzU2FtcGxlKCkmJihpPXRoaXMuX3JlbXV4QXVkaW8oKSkscy5zYW1wbGVzPVtdLHUuc2FtcGxlcz1bXSx7aW5pdFNlZ21lbnQ6cix2aWRlb0luaXRTZWdtZW50OnQsYXVkaW9Jbml0U2VnbWVudDplLHZpZGVvU2VnbWVudDpuLGF1ZGlvU2VnbWVudDppfX19LHtrZXk6Il9yZW11eFZpZGVvIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMudmlkZW9UcmFjazt0aGlzLmZvcmNlRmlyc3RJRFImJih0LnNhbXBsZXNbMF0uZmxhZz17ZGVwZW5kc09uOjIsaXNOb25TeW5jU2FtcGxlOjB9KTt2YXIgZT10LnNhbXBsZXMscj0wO2UuZm9yRWFjaCgoZnVuY3Rpb24odCl7cis9dC51bml0cy5yZWR1Y2UoKGZ1bmN0aW9uKHQsZSl7cmV0dXJuIHQrZS5ieXRlTGVuZ3RofSksMCkscis9NCp0LnVuaXRzLmxlbmd0aH0pKTtmb3IodmFyIG4saT1uZXcgVWludDhBcnJheShyKSxhPW5ldyBEYXRhVmlldyhpLmJ1ZmZlciksbz1mdW5jdGlvbih0LHIsbyxzKXtzPWVbdF07dmFyIHU9MDtzLnVuaXRzLmZvckVhY2goKGZ1bmN0aW9uKHQpe2Euc2V0VWludDMyKG8sdC5ieXRlTGVuZ3RoKSxvKz00LGkuc2V0KHQsbyksbys9dC5ieXRlTGVuZ3RoLHUrPTQrdC5ieXRlTGVuZ3RofSkpLHMuc2l6ZT11LGM9byxuPXN9LHM9MCx1PWUubGVuZ3RoLGM9MDtzPHU7cysrKW8ocywwLGMsbik7dmFyIGY9YnAubWRhdChpKTtyZXR1cm4gdC5pc1ZpZGVvRW5jcnlwdGlvbnx8dC5pc0F1ZGlvRW5jcnlwdGlvbj90aChicC5zdHlwKCksYnAuc2lkeCh0KSxicC5tb29mKFt0XSksZik6dGgoYnAubW9vZihbdF0pLGYpfX0se2tleToiX3JlbXV4QXVkaW8iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hdWRpb1RyYWNrLGU9bmV3IFVpbnQ4QXJyYXkodC5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24odCxlKXtyZXR1cm4gdCtlLnNpemV9KSwwKSk7dC5zYW1wbGVzLnJlZHVjZSgoZnVuY3Rpb24odCxyKXtyZXR1cm4gZS5zZXQoci5kYXRhLHQpLHQrci5zaXplfSksMCk7dmFyIHI9YnAubWRhdChlKTtyZXR1cm4gdC5pc1ZpZGVvRW5jcnlwdGlvbnx8dC5pc0F1ZGlvRW5jcnlwdGlvbj90aChicC5zdHlwKCksYnAuc2lkeCh0KSxicC5tb29mKFt0XSkscik6dGgoYnAubW9vZihbdF0pLHIpfX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCl9fV0pLHR9KCkseHA9ZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7bih0aGlzLHQpfXJldHVybiBhKHQsW3trZXk6Im1peEluIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gT2JqZWN0LmFzc2lnbih0aGlzLHQpfX0se2tleToiY2xvbmUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9bmV3IHRoaXMuY29uc3RydWN0b3I7cmV0dXJuIE9iamVjdC5hc3NpZ24odCx0aGlzKSx0fX1dLFt7a2V5OiJjcmVhdGUiLHZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgsZT1uZXcgQXJyYXkodCkscj0wO3I8dDtyKyspZVtyXT1hcmd1bWVudHNbcl07cmV0dXJuIGwodGhpcyxlKX19XSksdH0oKSxBcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7dmFyIHQsaT1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06W10sYT1hcmd1bWVudHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06NCppLmxlbmd0aDtuKHRoaXMsciksdD1lLmNhbGwodGhpcyk7dmFyIG89aTtpZihvIGluc3RhbmNlb2YgQXJyYXlCdWZmZXImJihvPW5ldyBVaW50OEFycmF5KG8pKSwobyBpbnN0YW5jZW9mIEludDhBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQ4Q2xhbXBlZEFycmF5fHxvIGluc3RhbmNlb2YgSW50MTZBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQxNkFycmF5fHxvIGluc3RhbmNlb2YgSW50MzJBcnJheXx8byBpbnN0YW5jZW9mIFVpbnQzMkFycmF5fHxvIGluc3RhbmNlb2YgRmxvYXQzMkFycmF5fHxvIGluc3RhbmNlb2YgRmxvYXQ2NEFycmF5KSYmKG89bmV3IFVpbnQ4QXJyYXkoby5idWZmZXIsby5ieXRlT2Zmc2V0LG8uYnl0ZUxlbmd0aCkpLG8gaW5zdGFuY2VvZiBVaW50OEFycmF5KXtmb3IodmFyIHM9by5ieXRlTGVuZ3RoLHU9W10sYz0wO2M8cztjKz0xKXVbYz4+PjJdfD1vW2NdPDwyNC1jJTQqODt0LndvcmRzPXUsdC5zaWdCeXRlcz1zfWVsc2UgdC53b3Jkcz1pLHQuc2lnQnl0ZXM9YTtyZXR1cm4gdH1yZXR1cm4gYShyLFt7a2V5OiJ0b1N0cmluZyIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06U3A7cmV0dXJuIHQuc3RyaW5naWZ5KHRoaXMpfX0se2tleToiY29uY2F0Iix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT10aGlzLndvcmRzLHI9dC53b3JkcyxuPXRoaXMuc2lnQnl0ZXMsaT10LnNpZ0J5dGVzO2lmKHRoaXMuY2xhbXAoKSxuJTQpZm9yKHZhciBhPTA7YTxpO2ErPTEpe3ZhciBvPXJbYT4+PjJdPj4+MjQtYSU0KjgmMjU1O2VbbithPj4+Ml18PW88PDI0LShuK2EpJTQqOH1lbHNlIGZvcih2YXIgcz0wO3M8aTtzKz00KWVbbitzPj4+Ml09cltzPj4+Ml07cmV0dXJuIHRoaXMuc2lnQnl0ZXMrPWksdGhpc319LHtrZXk6ImNsYW1wIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMud29yZHMsZT10aGlzLnNpZ0J5dGVzO3RbZT4+PjJdJj00Mjk0OTY3Mjk1PDwzMi1lJTQqOCx0Lmxlbmd0aD1NYXRoLmNlaWwoZS80KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXYodShyLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0LndvcmRzPXRoaXMud29yZHMuc2xpY2UoMCksdH19XSxbe2tleToicmFuZG9tIix2YWx1ZTpmdW5jdGlvbih0KXtmb3IodmFyIGUsbj1bXSxpPWZ1bmN0aW9uKHQpe3ZhciBlPXQscj05ODc2NTQzMjEsbj00Mjk0OTY3Mjk1O3JldHVybiBmdW5jdGlvbigpe3ZhciB0PSgocj0zNjk2OSooNjU1MzUmcikrKHI+PjE2KSZuKTw8MTYpKyhlPTE4ZTMqKDY1NTM1JmUpKyhlPj4xNikmbikmbjtyZXR1cm4gdC89NDI5NDk2NzI5NiwodCs9LjUpKihNYXRoLnJhbmRvbSgpPi41PzE6LTEpfX0sYT0wO2E8dDthKz00KXt2YXIgbz1pKDQyOTQ5NjcyOTYqKGV8fE1hdGgucmFuZG9tKCkpKTtlPTk4NzY1NDA3MSpvKCksbi5wdXNoKDQyOTQ5NjcyOTYqbygpfDApfXJldHVybiBuZXcgcihuLHQpfX1dKSxyfSh4cCksU3A9e3N0cmluZ2lmeTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC53b3JkcyxyPXQuc2lnQnl0ZXMsbj1bXSxpPTA7aTxyO2krPTEpe3ZhciBhPWVbaT4+PjJdPj4+MjQtaSU0KjgmMjU1O24ucHVzaCgoYT4+PjQpLnRvU3RyaW5nKDE2KSksbi5wdXNoKCgxNSZhKS50b1N0cmluZygxNikpfXJldHVybiBuLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5sZW5ndGgscj1bXSxuPTA7bjxlO24rPTIpcltuPj4+M118PXBhcnNlSW50KHQuc3Vic3RyKG4sMiksMTYpPDwyNC1uJTgqNDtyZXR1cm4gbmV3IEFwKHIsZS8yKX19LF9wPWZ1bmN0aW9uKHQpe2Zvcih2YXIgZT10Lmxlbmd0aCxyPVtdLG49MDtuPGU7bis9MSlyW24+Pj4yXXw9KDI1NSZ0LmNoYXJDb2RlQXQobikpPDwyNC1uJTQqODtyZXR1cm4gbmV3IEFwKHIsZSl9LFRwPWZ1bmN0aW9uKHQpe3JldHVybiBfcCh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodCkpKX0sRXA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3ZhciB0O3JldHVybiBuKHRoaXMsciksKHQ9ZS5jYWxsKHRoaXMpKS5fbWluQnVmZmVyU2l6ZT0wLHR9cmV0dXJuIGEocixbe2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fZGF0YT1uZXcgQXAsdGhpcy5fbkRhdGFCeXRlcz0wfX0se2tleToiX2FwcGVuZCIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dDsic3RyaW5nIj09dHlwZW9mIGUmJihlPVRwKGUpKSx0aGlzLl9kYXRhLmNvbmNhdChlKSx0aGlzLl9uRGF0YUJ5dGVzKz1lLnNpZ0J5dGVzfX0se2tleToiX3Byb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3ZhciBlLHI9dGhpcy5fZGF0YSxuPXRoaXMuYmxvY2tTaXplLGk9ci53b3JkcyxhPXIuc2lnQnl0ZXMsbz1hLyg0Km4pLHM9KG89dD9NYXRoLmNlaWwobyk6TWF0aC5tYXgoKDB8byktdGhpcy5fbWluQnVmZmVyU2l6ZSwwKSkqbix1PU1hdGgubWluKDQqcyxhKTtpZihzKXtmb3IodmFyIGM9MDtjPHM7Yys9bil0aGlzLl9kb1Byb2Nlc3NCbG9jayhpLGMpO2U9aS5zcGxpY2UoMCxzKSxyLnNpZ0J5dGVzLT11fXJldHVybiBuZXcgQXAoZSx1KX19LHtrZXk6ImNsb25lIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXYodShyLnByb3RvdHlwZSksImNsb25lIix0aGlzKS5jYWxsKHRoaXMpO3JldHVybiB0Ll9kYXRhPXRoaXMuX2RhdGEuY2xvbmUoKSx0fX1dKSxyfSh4cCksSXA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0KXt2YXIgaTtyZXR1cm4gbih0aGlzLHIpLChpPWUuY2FsbCh0aGlzKSkuYmxvY2tTaXplPTE2LGkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLHQpLGkucmVzZXQoKSxpfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InVwZGF0ZSIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIHRoaXMuX2FwcGVuZCh0KSx0aGlzLl9wcm9jZXNzKCksdGhpc319LHtrZXk6ImZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gdCYmdGhpcy5fYXBwZW5kKHQpLHRoaXMuX2RvRmluYWxpemUoKX19XSxbe2tleToiX2NyZWF0ZUhlbHBlciIsdmFsdWU6ZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKGUscil7cmV0dXJuIG5ldyB0KHIpLmZpbmFsaXplKGUpfX19LHtrZXk6Il9jcmVhdGVIbWFjSGVscGVyIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4gZnVuY3Rpb24oZSxyKXtyZXR1cm4gbmV3IE9wKHQscikuZmluYWxpemUoZSl9fX1dKSxyfShFcCksT3A9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0LGkpe3ZhciBhO24odGhpcyxyKSxhPWUuY2FsbCh0aGlzKTt2YXIgbz1uZXcgdDthLl9oYXNoZXI9bzt2YXIgcz1pOyJzdHJpbmciPT10eXBlb2YgcyYmKHM9VHAocykpO3ZhciB1PW8uYmxvY2tTaXplLGM9NCp1O3Muc2lnQnl0ZXM+YyYmKHM9by5maW5hbGl6ZShpKSkscy5jbGFtcCgpO3ZhciBmPXMuY2xvbmUoKTthLl9vS2V5PWY7dmFyIGw9cy5jbG9uZSgpO2EuX2lLZXk9bDtmb3IodmFyIGQ9Zi53b3JkcyxoPWwud29yZHMscD0wO3A8dTtwKz0xKWRbcF1ePTE1NDk1NTY4MjgsaFtwXV49OTA5NTIyNDg2O3JldHVybiBmLnNpZ0J5dGVzPWMsbC5zaWdCeXRlcz1jLGEucmVzZXQoKSxhfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMuX2hhc2hlcjt0LnJlc2V0KCksdC51cGRhdGUodGhpcy5faUtleSl9fSx7a2V5OiJ1cGRhdGUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9oYXNoZXIudXBkYXRlKHQpLHRoaXN9fSx7a2V5OiJmaW5hbGl6ZSIsdmFsdWU6ZnVuY3Rpb24odCl7dmFyIGU9dGhpcy5faGFzaGVyLHI9ZS5maW5hbGl6ZSh0KTtyZXR1cm4gZS5yZXNldCgpLGUuZmluYWxpemUodGhpcy5fb0tleS5jbG9uZSgpLmNvbmNhdChyKSl9fV0pLHJ9KHhwKSxNcD17c3RyaW5naWZ5OmZ1bmN0aW9uKHQpe3ZhciBlPXQud29yZHMscj10LnNpZ0J5dGVzLG49dGhpcy5fbWFwO3QuY2xhbXAoKTtmb3IodmFyIGk9W10sYT0wO2E8cjthKz0zKWZvcih2YXIgbz0oZVthPj4+Ml0+Pj4yNC1hJTQqOCYyNTUpPDwxNnwoZVthKzE+Pj4yXT4+PjI0LShhKzEpJTQqOCYyNTUpPDw4fGVbYSsyPj4+Ml0+Pj4yNC0oYSsyKSU0KjgmMjU1LHM9MDtzPDQmJmErLjc1KnM8cjtzKz0xKWkucHVzaChuLmNoYXJBdChvPj4+NiooMy1zKSY2MykpO3ZhciB1PW4uY2hhckF0KDY0KTtpZih1KWZvcig7aS5sZW5ndGglNDspaS5wdXNoKHUpO3JldHVybiBpLmpvaW4oIiIpfSxwYXJzZTpmdW5jdGlvbih0KXt2YXIgZT10Lmxlbmd0aCxyPXRoaXMuX21hcCxuPXRoaXMuX3JldmVyc2VNYXA7aWYoIW4pe3RoaXMuX3JldmVyc2VNYXA9W10sbj10aGlzLl9yZXZlcnNlTWFwO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSs9MSluW3IuY2hhckNvZGVBdChpKV09aX12YXIgYT1yLmNoYXJBdCg2NCk7aWYoYSl7dmFyIG89dC5pbmRleE9mKGEpOy0xIT09byYmKGU9byl9cmV0dXJuIGZ1bmN0aW9uKHQsZSxyKXtmb3IodmFyIG49W10saT0wLGE9MDthPGU7YSs9MSlpZihhJTQpe3ZhciBvPXJbdC5jaGFyQ29kZUF0KGEtMSldPDxhJTQqMnxyW3QuY2hhckNvZGVBdChhKV0+Pj42LWElNCoyO25baT4+PjJdfD1vPDwyNC1pJTQqOCxpKz0xfXJldHVybiBBcC5jcmVhdGUobixpKX0odCxlLG4pfSxfbWFwOiJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSsvPSJ9LENwPVtdLFJwPTA7UnA8NjQ7UnArPTEpQ3BbUnBdPTQyOTQ5NjcyOTYqTWF0aC5hYnMoTWF0aC5zaW4oUnArMSkpfDA7dmFyIEJwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGUmcnx+ZSZuKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LFBwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGUmbnxyJn5uKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LFVwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKGVecl5uKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LERwPWZ1bmN0aW9uKHQsZSxyLG4saSxhLG8pe3ZhciBzPXQrKHJeKGV8fm4pKStpK287cmV0dXJuKHM8PGF8cz4+PjMyLWEpK2V9LHpwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbih0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBhKHIsW3trZXk6Il9kb1Jlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3RoaXMuX2hhc2g9bmV3IEFwKFsxNzMyNTg0MTkzLDQwMjMyMzM0MTcsMjU2MjM4MzEwMiwyNzE3MzM4NzhdKX19LHtrZXk6Il9kb1Byb2Nlc3NCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9dCxuPTA7bjwxNjtuKz0xKXt2YXIgaT1lK24sYT10W2ldO3JbaV09MTY3MTE5MzUmKGE8PDh8YT4+PjI0KXw0Mjc4MjU1MzYwJihhPDwyNHxhPj4+OCl9dmFyIG89dGhpcy5faGFzaC53b3JkcyxzPXJbZSswXSx1PXJbZSsxXSxjPXJbZSsyXSxmPXJbZSszXSxsPXJbZSs0XSxkPXJbZSs1XSxoPXJbZSs2XSxwPXJbZSs3XSx2PXJbZSs4XSx5PXJbZSs5XSxnPXJbZSsxMF0sbT1yW2UrMTFdLGI9cltlKzEyXSx3PXJbZSsxM10saz1yW2UrMTRdLHg9cltlKzE1XSxBPW9bMF0sUz1vWzFdLF89b1syXSxUPW9bM107QT1CcChBLFMsXyxULHMsNyxDcFswXSksVD1CcChULEEsUyxfLHUsMTIsQ3BbMV0pLF89QnAoXyxULEEsUyxjLDE3LENwWzJdKSxTPUJwKFMsXyxULEEsZiwyMixDcFszXSksQT1CcChBLFMsXyxULGwsNyxDcFs0XSksVD1CcChULEEsUyxfLGQsMTIsQ3BbNV0pLF89QnAoXyxULEEsUyxoLDE3LENwWzZdKSxTPUJwKFMsXyxULEEscCwyMixDcFs3XSksQT1CcChBLFMsXyxULHYsNyxDcFs4XSksVD1CcChULEEsUyxfLHksMTIsQ3BbOV0pLF89QnAoXyxULEEsUyxnLDE3LENwWzEwXSksUz1CcChTLF8sVCxBLG0sMjIsQ3BbMTFdKSxBPUJwKEEsUyxfLFQsYiw3LENwWzEyXSksVD1CcChULEEsUyxfLHcsMTIsQ3BbMTNdKSxfPUJwKF8sVCxBLFMsaywxNyxDcFsxNF0pLFM9QnAoUyxfLFQsQSx4LDIyLENwWzE1XSksQT1QcChBLFMsXyxULHUsNSxDcFsxNl0pLFQ9UHAoVCxBLFMsXyxoLDksQ3BbMTddKSxfPVBwKF8sVCxBLFMsbSwxNCxDcFsxOF0pLFM9UHAoUyxfLFQsQSxzLDIwLENwWzE5XSksQT1QcChBLFMsXyxULGQsNSxDcFsyMF0pLFQ9UHAoVCxBLFMsXyxnLDksQ3BbMjFdKSxfPVBwKF8sVCxBLFMseCwxNCxDcFsyMl0pLFM9UHAoUyxfLFQsQSxsLDIwLENwWzIzXSksQT1QcChBLFMsXyxULHksNSxDcFsyNF0pLFQ9UHAoVCxBLFMsXyxrLDksQ3BbMjVdKSxfPVBwKF8sVCxBLFMsZiwxNCxDcFsyNl0pLFM9UHAoUyxfLFQsQSx2LDIwLENwWzI3XSksQT1QcChBLFMsXyxULHcsNSxDcFsyOF0pLFQ9UHAoVCxBLFMsXyxjLDksQ3BbMjldKSxfPVBwKF8sVCxBLFMscCwxNCxDcFszMF0pLFM9UHAoUyxfLFQsQSxiLDIwLENwWzMxXSksQT1VcChBLFMsXyxULGQsNCxDcFszMl0pLFQ9VXAoVCxBLFMsXyx2LDExLENwWzMzXSksXz1VcChfLFQsQSxTLG0sMTYsQ3BbMzRdKSxTPVVwKFMsXyxULEEsaywyMyxDcFszNV0pLEE9VXAoQSxTLF8sVCx1LDQsQ3BbMzZdKSxUPVVwKFQsQSxTLF8sbCwxMSxDcFszN10pLF89VXAoXyxULEEsUyxwLDE2LENwWzM4XSksUz1VcChTLF8sVCxBLGcsMjMsQ3BbMzldKSxBPVVwKEEsUyxfLFQsdyw0LENwWzQwXSksVD1VcChULEEsUyxfLHMsMTEsQ3BbNDFdKSxfPVVwKF8sVCxBLFMsZiwxNixDcFs0Ml0pLFM9VXAoUyxfLFQsQSxoLDIzLENwWzQzXSksQT1VcChBLFMsXyxULHksNCxDcFs0NF0pLFQ9VXAoVCxBLFMsXyxiLDExLENwWzQ1XSksXz1VcChfLFQsQSxTLHgsMTYsQ3BbNDZdKSxTPVVwKFMsXyxULEEsYywyMyxDcFs0N10pLEE9RHAoQSxTLF8sVCxzLDYsQ3BbNDhdKSxUPURwKFQsQSxTLF8scCwxMCxDcFs0OV0pLF89RHAoXyxULEEsUyxrLDE1LENwWzUwXSksUz1EcChTLF8sVCxBLGQsMjEsQ3BbNTFdKSxBPURwKEEsUyxfLFQsYiw2LENwWzUyXSksVD1EcChULEEsUyxfLGYsMTAsQ3BbNTNdKSxfPURwKF8sVCxBLFMsZywxNSxDcFs1NF0pLFM9RHAoUyxfLFQsQSx1LDIxLENwWzU1XSksQT1EcChBLFMsXyxULHYsNixDcFs1Nl0pLFQ9RHAoVCxBLFMsXyx4LDEwLENwWzU3XSksXz1EcChfLFQsQSxTLGgsMTUsQ3BbNThdKSxTPURwKFMsXyxULEEsdywyMSxDcFs1OV0pLEE9RHAoQSxTLF8sVCxsLDYsQ3BbNjBdKSxUPURwKFQsQSxTLF8sbSwxMCxDcFs2MV0pLF89RHAoXyxULEEsUyxjLDE1LENwWzYyXSksUz1EcChTLF8sVCxBLHksMjEsQ3BbNjNdKSxvWzBdPW9bMF0rQXwwLG9bMV09b1sxXStTfDAsb1syXT1vWzJdK198MCxvWzNdPW9bM10rVHwwfX0se2tleToiX2RvRmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fZGF0YSxlPXQud29yZHMscj04KnRoaXMuX25EYXRhQnl0ZXMsbj04KnQuc2lnQnl0ZXM7ZVtuPj4+NV18PTEyODw8MjQtbiUzMjt2YXIgaT1NYXRoLmZsb29yKHIvNDI5NDk2NzI5NiksYT1yO2VbMTUrKG4rNjQ+Pj45PDw0KV09MTY3MTE5MzUmKGk8PDh8aT4+PjI0KXw0Mjc4MjU1MzYwJihpPDwyNHxpPj4+OCksZVsxNCsobis2ND4+Pjk8PDQpXT0xNjcxMTkzNSYoYTw8OHxhPj4+MjQpfDQyNzgyNTUzNjAmKGE8PDI0fGE+Pj44KSx0LnNpZ0J5dGVzPTQqKGUubGVuZ3RoKzEpLHRoaXMuX3Byb2Nlc3MoKTtmb3IodmFyIG89dGhpcy5faGFzaCxzPW8ud29yZHMsdT0wO3U8NDt1Kz0xKXt2YXIgYz1zW3VdO3NbdV09MTY3MTE5MzUmKGM8PDh8Yz4+PjI0KXw0Mjc4MjU1MzYwJihjPDwyNHxjPj4+OCl9cmV0dXJuIG99fSx7a2V5OiJjbG9uZSIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdD12KHUoci5wcm90b3R5cGUpLCJjbG9uZSIsdGhpcykuY2FsbCh0aGlzKTtyZXR1cm4gdC5faGFzaD10aGlzLl9oYXNoLmNsb25lKCksdH19XSkscn0oSXApO0lwLl9jcmVhdGVIZWxwZXIoenApLElwLl9jcmVhdGVIbWFjSGVscGVyKHpwKTt2YXIganA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcih0KXt2YXIgaTtyZXR1cm4gbih0aGlzLHIpLChpPWUuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLHtrZXlTaXplOjQsaGFzaGVyOnpwLGl0ZXJhdGlvbnM6MX0sdCksaX1yZXR1cm4gYShyLFt7a2V5OiJjb21wdXRlIix2YWx1ZTpmdW5jdGlvbih0LGUpe2Zvcih2YXIgcixuPXRoaXMuY2ZnLGk9bi5oYXNoZXIuY3JlYXRlKCksYT1BcC5jcmVhdGUoKSxvPWEud29yZHMscz1uLmtleVNpemUsdT1uLml0ZXJhdGlvbnM7by5sZW5ndGg8czspe3ImJmkudXBkYXRlKHIpLHI9aS51cGRhdGUodCkuZmluYWxpemUoZSksaS5yZXNldCgpO2Zvcih2YXIgYz0xO2M8dTtjKz0xKXI9aS5maW5hbGl6ZShyKSxpLnJlc2V0KCk7YS5jb25jYXQocil9cmV0dXJuIGEuc2lnQnl0ZXM9NCpzLGF9fV0pLHJ9KHhwKSxMcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKHQsaSxhKXt2YXIgbztyZXR1cm4gbih0aGlzLHIpLChvPWUuY2FsbCh0aGlzKSkuY2ZnPU9iamVjdC5hc3NpZ24obmV3IHhwLGEpLG8uX3hmb3JtTW9kZT10LG8uX2tleT1pLG8ucmVzZXQoKSxvfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpLHRoaXMuX2RvUmVzZXQoKX19LHtrZXk6InByb2Nlc3MiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0aGlzLl9hcHBlbmQodCksdGhpcy5fcHJvY2VzcygpfX0se2tleToiZmluYWxpemUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiB0JiZ0aGlzLl9hcHBlbmQodCksdGhpcy5fZG9GaW5hbGl6ZSgpfX1dLFt7a2V5OiJjcmVhdGVFbmNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0VOQ19YRk9STV9NT0RFLHQsZSl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuY3JlYXRlKHRoaXMuX0RFQ19YRk9STV9NT0RFLHQsZSl9fSx7a2V5OiJfY3JlYXRlSGVscGVyIix2YWx1ZTpmdW5jdGlvbih0KXt2YXIgZT1mdW5jdGlvbih0KXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/WHA6R3B9O3JldHVybntlbmNyeXB0OmZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZShuKS5lbmNyeXB0KHQscixuLGkpfSxkZWNyeXB0OmZ1bmN0aW9uKHIsbixpKXtyZXR1cm4gZShuKS5kZWNyeXB0KHQscixuLGkpfX19fV0pLHJ9KEVwKTtMcC5fRU5DX1hGT1JNX01PREU9MSxMcC5fREVDX1hGT1JNX01PREU9MixMcC5rZXlTaXplPTQsTHAuaXZTaXplPTQ7dmFyIEZwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIodCxpKXt2YXIgYTtyZXR1cm4gbih0aGlzLHIpLChhPWUuY2FsbCh0aGlzKSkuX2NpcGhlcj10LGEuX2l2PWksYX1yZXR1cm4gYShyLG51bGwsW3trZXk6ImNyZWF0ZUVuY3J5cHRvciIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4gdGhpcy5FbmNyeXB0b3IuY3JlYXRlKHQsZSl9fSx7a2V5OiJjcmVhdGVEZWNyeXB0b3IiLHZhbHVlOmZ1bmN0aW9uKHQsZSl7cmV0dXJuIHRoaXMuRGVjcnlwdG9yLmNyZWF0ZSh0LGUpfX1dKSxyfSh4cCk7ZnVuY3Rpb24gTnAodCxlLHIpe3ZhciBuLGk9dCxhPXRoaXMuX2l2O2E/KG49YSx0aGlzLl9pdj12b2lkIDApOm49dGhpcy5fcHJldkJsb2NrO2Zvcih2YXIgbz0wO288cjtvKz0xKWlbZStvXV49bltvXX12YXIgVnA9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocil9KEZwKTtWcC5FbmNyeXB0b3I9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2NpcGhlcixuPXIuYmxvY2tTaXplO05wLmNhbGwodGhpcyx0LGUsbiksci5lbmNyeXB0QmxvY2sodCxlKSx0aGlzLl9wcmV2QmxvY2s9dC5zbGljZShlLGUrbil9fV0pLHJ9KFZwKSxWcC5EZWNyeXB0b3I9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixbe2tleToicHJvY2Vzc0Jsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXRoaXMuX2NpcGhlcixuPXIuYmxvY2tTaXplLGk9dC5zbGljZShlLGUrbik7ci5kZWNyeXB0QmxvY2sodCxlKSxOcC5jYWxsKHRoaXMsdCxlLG4pLHRoaXMuX3ByZXZCbG9jaz1pfX1dKSxyfShWcCk7dmFyIEhwPXtwYWQ6ZnVuY3Rpb24odCxlKXtmb3IodmFyIHI9NCplLG49ci10LnNpZ0J5dGVzJXIsaT1uPDwyNHxuPDwxNnxuPDw4fG4sYT1bXSxvPTA7bzxuO28rPTQpYS5wdXNoKGkpO3ZhciBzPUFwLmNyZWF0ZShhLG4pO3QuY29uY2F0KHMpfSx1bnBhZDpmdW5jdGlvbih0KXt2YXIgZT10LHI9MjU1JmUud29yZHNbZS5zaWdCeXRlcy0xPj4+Ml07ZS5zaWdCeXRlcy09cn19LFlwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIodCxpLGEpe3ZhciBvO3JldHVybiBuKHRoaXMsciksKG89ZS5jYWxsKHRoaXMsdCxpLE9iamVjdC5hc3NpZ24oe21vZGU6VnAscGFkZGluZzpIcH0sYSkpKS5ibG9ja1NpemU9NCxvfXJldHVybiBhKHIsW3trZXk6InJlc2V0Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0O3YodShyLnByb3RvdHlwZSksInJlc2V0Iix0aGlzKS5jYWxsKHRoaXMpO3ZhciBlPXRoaXMuY2ZnLG49ZS5pdixpPWUubW9kZTt0aGlzLl94Zm9ybU1vZGU9PT10aGlzLmNvbnN0cnVjdG9yLl9FTkNfWEZPUk1fTU9ERT90PWkuY3JlYXRlRW5jcnlwdG9yOih0PWkuY3JlYXRlRGVjcnlwdG9yLHRoaXMuX21pbkJ1ZmZlclNpemU9MSksdGhpcy5fbW9kZT10LmNhbGwoaSx0aGlzLG4mJm4ud29yZHMpLHRoaXMuX21vZGUuX19jcmVhdG9yPXR9fSx7a2V5OiJfZG9Qcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dGhpcy5fbW9kZS5wcm9jZXNzQmxvY2sodCxlKX19LHtrZXk6Il9kb0ZpbmFsaXplIix2YWx1ZTpmdW5jdGlvbigpe3ZhciB0LGU9dGhpcy5jZmcucGFkZGluZztyZXR1cm4gdGhpcy5feGZvcm1Nb2RlPT09dGhpcy5jb25zdHJ1Y3Rvci5fRU5DX1hGT1JNX01PREU/KGUucGFkKHRoaXMuX2RhdGEsdGhpcy5ibG9ja1NpemUpLHQ9dGhpcy5fcHJvY2VzcyghMCkpOih0PXRoaXMuX3Byb2Nlc3MoITApLGUudW5wYWQodCkpLHR9fV0pLHJ9KExwKSxLcD1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKHQpe3ZhciBpO3JldHVybiBuKHRoaXMsciksKGk9ZS5jYWxsKHRoaXMpKS5taXhJbih0KSxpfXJldHVybiBhKHIsW3trZXk6InRvU3RyaW5nIix2YWx1ZTpmdW5jdGlvbih0KXtyZXR1cm4odHx8dGhpcy5mb3JtYXR0ZXIpLnN0cmluZ2lmeSh0aGlzKX19XSkscn0oeHApLFdwPXtzdHJpbmdpZnk6ZnVuY3Rpb24odCl7dmFyIGU9dC5jaXBoZXJ0ZXh0LHI9dC5zYWx0O3JldHVybihyP0FwLmNyZWF0ZShbMTM5ODg5MzY4NCwxNzAxMDc2ODMxXSkuY29uY2F0KHIpLmNvbmNhdChlKTplKS50b1N0cmluZyhNcCl9LHBhcnNlOmZ1bmN0aW9uKHQpe3ZhciBlLHI9TXAucGFyc2UodCksbj1yLndvcmRzO3JldHVybiAxMzk4ODkzNjg0PT09blswXSYmMTcwMTA3NjgzMT09PW5bMV0mJihlPUFwLmNyZWF0ZShuLnNsaWNlKDIsNCkpLG4uc3BsaWNlKDAsNCksci5zaWdCeXRlcy09MTYpLEtwLmNyZWF0ZSh7Y2lwaGVydGV4dDpyLHNhbHQ6ZX0pfX0sR3A9ZnVuY3Rpb24odCl7cyhyLHQpO3ZhciBlPWgocik7ZnVuY3Rpb24gcigpe3JldHVybiBuKHRoaXMsciksZS5hcHBseSh0aGlzLGFyZ3VtZW50cyl9cmV0dXJuIGEocixudWxsLFt7a2V5OiJlbmNyeXB0Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1PYmplY3QuYXNzaWduKG5ldyB4cCx0aGlzLmNmZyxuKSxhPXQuY3JlYXRlRW5jcnlwdG9yKHIsaSksbz1hLmZpbmFsaXplKGUpLHM9YS5jZmc7cmV0dXJuIEtwLmNyZWF0ZSh7Y2lwaGVydGV4dDpvLGtleTpyLGl2OnMuaXYsYWxnb3JpdGhtOnQsbW9kZTpzLm1vZGUscGFkZGluZzpzLnBhZGRpbmcsYmxvY2tTaXplOmEuYmxvY2tTaXplLGZvcm1hdHRlcjppLmZvcm1hdH0pfX0se2tleToiZGVjcnlwdCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9ZSxhPU9iamVjdC5hc3NpZ24obmV3IHhwLHRoaXMuY2ZnLG4pO3JldHVybiBpPXRoaXMuX3BhcnNlKGksYS5mb3JtYXQpLHQuY3JlYXRlRGVjcnlwdG9yKHIsYSkuZmluYWxpemUoaS5jaXBoZXJ0ZXh0KX19LHtrZXk6Il9wYXJzZSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/ZS5wYXJzZSh0LHRoaXMpOnR9fV0pLHJ9KHhwKTtHcC5jZmc9T2JqZWN0LmFzc2lnbihuZXcgeHAse2Zvcm1hdDpXcH0pO3ZhciBxcD17ZXhlY3V0ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1uO2l8fChpPUFwLnJhbmRvbSg4KSk7dmFyIGE9anAuY3JlYXRlKHtrZXlTaXplOmUrcn0pLmNvbXB1dGUodCxpKSxvPUFwLmNyZWF0ZShhLndvcmRzLnNsaWNlKGUpLDQqcik7cmV0dXJuIGEuc2lnQnl0ZXM9NCplLEtwLmNyZWF0ZSh7a2V5OmEsaXY6byxzYWx0Oml9KX19LFhwPWZ1bmN0aW9uKHQpe3Mocix0KTt2YXIgZT1oKHIpO2Z1bmN0aW9uIHIoKXtyZXR1cm4gbih0aGlzLHIpLGUuYXBwbHkodGhpcyxhcmd1bWVudHMpfXJldHVybiBhKHIsbnVsbCxbe2tleToiZW5jcnlwdCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbil7dmFyIGk9T2JqZWN0LmFzc2lnbihuZXcgeHAsdGhpcy5jZmcsbiksYT1pLmtkZi5leGVjdXRlKHIsdC5rZXlTaXplLHQuaXZTaXplKTtpLml2PWEuaXY7dmFyIG89R3AuZW5jcnlwdC5jYWxsKHRoaXMsdCxlLGEua2V5LGkpO3JldHVybiBvLm1peEluKGEpLG99fSx7a2V5OiJkZWNyeXB0Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuKXt2YXIgaT1lLGE9T2JqZWN0LmFzc2lnbihuZXcgeHAsdGhpcy5jZmcsbik7aT10aGlzLl9wYXJzZShpLGEuZm9ybWF0KTt2YXIgbz1hLmtkZi5leGVjdXRlKHIsdC5rZXlTaXplLHQuaXZTaXplLGkuc2FsdCk7cmV0dXJuIGEuaXY9by5pdixHcC5kZWNyeXB0LmNhbGwodGhpcyx0LGksby5rZXksYSl9fV0pLHJ9KEdwKTtYcC5jZmc9T2JqZWN0LmFzc2lnbihHcC5jZmcse2tkZjpxcH0pO2Zvcih2YXIgJHA9W10sUXA9W10sWnA9W10sSnA9W10sdHY9W10sZXY9W10scnY9W10sbnY9W10saXY9W10sYXY9W10sb3Y9W10sc3Y9MDtzdjwyNTY7c3YrPTEpb3Zbc3ZdPXN2PDEyOD9zdjw8MTpzdjw8MV4yODM7Zm9yKHZhciB1dj0wLGN2PTAsZnY9MDtmdjwyNTY7ZnYrPTEpe3ZhciBsdj1jdl5jdjw8MV5jdjw8Ml5jdjw8M15jdjw8NDtsdj1sdj4+PjheMjU1Jmx2Xjk5LCRwW3V2XT1sdixRcFtsdl09dXY7dmFyIGR2PW92W3V2XSxodj1vdltkdl0scHY9b3ZbaHZdLHZ2PTI1Nypvdltsdl1eMTY4NDMwMDgqbHY7WnBbdXZdPXZ2PDwyNHx2dj4+PjgsSnBbdXZdPXZ2PDwxNnx2dj4+PjE2LHR2W3V2XT12djw8OHx2dj4+PjI0LGV2W3V2XT12dix2dj0xNjg0MzAwOSpwdl42NTUzNypodl4yNTcqZHZeMTY4NDMwMDgqdXYscnZbbHZdPXZ2PDwyNHx2dj4+PjgsbnZbbHZdPXZ2PDwxNnx2dj4+PjE2LGl2W2x2XT12djw8OHx2dj4+PjI0LGF2W2x2XT12dix1dj8odXY9ZHZeb3Zbb3Zbb3ZbcHZeZHZdXV0sY3ZePW92W292W2N2XV0pOnV2PWN2PTF9dmFyIHl2PVswLDEsMiw0LDgsMTYsMzIsNjQsMTI4LDI3LDU0XSxndj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyLFt7a2V5OiJfZG9SZXNldCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgdDtpZighdGhpcy5fblJvdW5kc3x8dGhpcy5fa2V5UHJpb3JSZXNldCE9PXRoaXMuX2tleSl7dGhpcy5fa2V5UHJpb3JSZXNldD10aGlzLl9rZXk7dmFyIGU9dGhpcy5fa2V5UHJpb3JSZXNldCxyPWUud29yZHMsbj1lLnNpZ0J5dGVzLzQ7dGhpcy5fblJvdW5kcz1uKzY7dmFyIGk9NCoodGhpcy5fblJvdW5kcysxKTt0aGlzLl9rZXlTY2hlZHVsZT1bXTtmb3IodmFyIGE9dGhpcy5fa2V5U2NoZWR1bGUsbz0wO288aTtvKz0xKW88bj9hW29dPXJbb106KHQ9YVtvLTFdLG8lbj9uPjYmJm8lbj09NCYmKHQ9JHBbdD4+PjI0XTw8MjR8JHBbdD4+PjE2JjI1NV08PDE2fCRwW3Q+Pj44JjI1NV08PDh8JHBbMjU1JnRdKToodD0kcFsodD10PDw4fHQ+Pj4yNCk+Pj4yNF08PDI0fCRwW3Q+Pj4xNiYyNTVdPDwxNnwkcFt0Pj4+OCYyNTVdPDw4fCRwWzI1NSZ0XSx0Xj15dltvL258MF08PDI0KSxhW29dPWFbby1uXV50KTt0aGlzLl9pbnZLZXlTY2hlZHVsZT1bXTtmb3IodmFyIHM9dGhpcy5faW52S2V5U2NoZWR1bGUsdT0wO3U8aTt1Kz0xKXt2YXIgYz1pLXU7dD11JTQ/YVtjXTphW2MtNF0sc1t1XT11PDR8fGM8PTQ/dDpydlskcFt0Pj4+MjRdXV5udlskcFt0Pj4+MTYmMjU1XV1eaXZbJHBbdD4+PjgmMjU1XV1eYXZbJHBbMjU1JnRdXX19fX0se2tleToiZW5jcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3RoaXMuX2RvQ3J5cHRCbG9jayh0LGUsdGhpcy5fa2V5U2NoZWR1bGUsWnAsSnAsdHYsZXYsJHApfX0se2tleToiZGVjcnlwdEJsb2NrIix2YWx1ZTpmdW5jdGlvbih0LGUpe3ZhciByPXQsbj1yW2UrMV07cltlKzFdPXJbZSszXSxyW2UrM109bix0aGlzLl9kb0NyeXB0QmxvY2socixlLHRoaXMuX2ludktleVNjaGVkdWxlLHJ2LG52LGl2LGF2LFFwKSxuPXJbZSsxXSxyW2UrMV09cltlKzNdLHJbZSszXT1ufX0se2tleToiX2RvQ3J5cHRCbG9jayIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyxzKXtmb3IodmFyIHU9dCxjPXRoaXMuX25Sb3VuZHMsZj11W2VdXnJbMF0sbD11W2UrMV1eclsxXSxkPXVbZSsyXV5yWzJdLGg9dVtlKzNdXnJbM10scD00LHY9MTt2PGM7dis9MSl7dmFyIHk9bltmPj4+MjRdXmlbbD4+PjE2JjI1NV1eYVtkPj4+OCYyNTVdXm9bMjU1JmhdXnJbcF07cCs9MTt2YXIgZz1uW2w+Pj4yNF1eaVtkPj4+MTYmMjU1XV5hW2g+Pj44JjI1NV1eb1syNTUmZl1ecltwXTtwKz0xO3ZhciBtPW5bZD4+PjI0XV5pW2g+Pj4xNiYyNTVdXmFbZj4+PjgmMjU1XV5vWzI1NSZsXV5yW3BdO3ArPTE7dmFyIGI9bltoPj4+MjRdXmlbZj4+PjE2JjI1NV1eYVtsPj4+OCYyNTVdXm9bMjU1JmRdXnJbcF07cCs9MSxmPXksbD1nLGQ9bSxoPWJ9dmFyIHc9KHNbZj4+PjI0XTw8MjR8c1tsPj4+MTYmMjU1XTw8MTZ8c1tkPj4+OCYyNTVdPDw4fHNbMjU1JmhdKV5yW3BdO3ArPTE7dmFyIGs9KHNbbD4+PjI0XTw8MjR8c1tkPj4+MTYmMjU1XTw8MTZ8c1toPj4+OCYyNTVdPDw4fHNbMjU1JmZdKV5yW3BdO3ArPTE7dmFyIHg9KHNbZD4+PjI0XTw8MjR8c1toPj4+MTYmMjU1XTw8MTZ8c1tmPj4+OCYyNTVdPDw4fHNbMjU1JmxdKV5yW3BdO3ArPTE7dmFyIEE9KHNbaD4+PjI0XTw8MjR8c1tmPj4+MTYmMjU1XTw8MTZ8c1tsPj4+OCYyNTVdPDw4fHNbMjU1JmRdKV5yW3BdO3ArPTEsdVtlXT13LHVbZSsxXT1rLHVbZSsyXT14LHVbZSszXT1BfX1dKSxyfShZcCk7Z3Yua2V5U2l6ZT04O3ZhciBtdj1ZcC5fY3JlYXRlSGVscGVyKGd2KSxidj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyKX0oRnApO2J2LkVuY3J5cHRvcj1mdW5jdGlvbih0KXtzKHIsdCk7dmFyIGU9aChyKTtmdW5jdGlvbiByKCl7cmV0dXJuIG4odGhpcyxyKSxlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX1yZXR1cm4gYShyLFt7a2V5OiJwcm9jZXNzQmxvY2siLHZhbHVlOmZ1bmN0aW9uKHQsZSl7dmFyIHI9dCxuPXRoaXMuX2NpcGhlcixpPW4uYmxvY2tTaXplLGE9dGhpcy5faXYsbz10aGlzLl9jb3VudGVyO2EmJih0aGlzLl9jb3VudGVyPWEuc2xpY2UoMCksbz10aGlzLl9jb3VudGVyLHRoaXMuX2l2PXZvaWQgMCk7dmFyIHM9by5zbGljZSgwKTtuLmVuY3J5cHRCbG9jayhzLDApLG9baS0xXT1vW2ktMV0rMXwwO2Zvcih2YXIgdT0wO3U8aTt1Kz0xKXJbZSt1XV49c1t1XX19XSkscn0oYnYpLGJ2LkRlY3J5cHRvcj1idi5FbmNyeXB0b3I7dmFyIHd2PXtwYWQ6ZnVuY3Rpb24oKXt9LHVucGFkOmZ1bmN0aW9uKCl7fX0sa3Y9e2RlY3J5cHRXb3JkQXJyYXk6ZnVuY3Rpb24odCxlLHIpe3ZhciBuPVNwLnBhcnNlKGUpLGk9U3AucGFyc2UoYWgocikpLGE9QXAuY3JlYXRlKG5ldyBVaW50OEFycmF5KHQpKSxvPW12LmRlY3J5cHQoS3AuY3JlYXRlKHtjaXBoZXJ0ZXh0OmF9KSxuLHtpdjppLG1vZGU6YnYscGFkZGluZzp3dn0pO3JldHVybiBrdi53b3JkQXJyYXlUb1VpbnQ4QXJyYXkobyl9LHdvcmRBcnJheVRvVWludDhBcnJheTpmdW5jdGlvbih0KXtmb3IodmFyIGU9dC5zaWdCeXRlcyxyPXQud29yZHMsbj1uZXcgVWludDhBcnJheShlKSxpPTAsYT0wO2khPT1lOyl7dmFyIG89clthKytdO2lmKG5baSsrXT0oNDI3ODE5MDA4MCZvKT4+PjI0LGk9PT1lKWJyZWFrO2lmKG5baSsrXT0oMTY3MTE2ODAmbyk+Pj4xNixpPT09ZSlicmVhaztpZihuW2krK109KDY1MjgwJm8pPj4+OCxpPT09ZSlicmVhaztuW2krK109MjU1Jm99cmV0dXJuIG59fSx4dj1mdW5jdGlvbigpe2Z1bmN0aW9uIHQoZSxyLG4saSl7dmFyIGE9dGhpczt5KHRoaXMsdCksYih0aGlzLCJfdmlkZW9TYW1wbGVzIixbXSksYih0aGlzLCJfYXVkaW9TYW1wbGVzIixbXSksYih0aGlzLCJfbGFzdFJlbWFpbkJ1ZmZlciIsW10pLGIodGhpcywiX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyIsMCksdGhpcy52aWRlb1RyYWNrPW5ldyBOaSx0aGlzLmF1ZGlvVHJhY2s9bmV3IFZpLHRoaXMubWV0YWRhdGFUcmFjaz1ufHxuZXcgS2ksdGhpcy5sb2c9bmV3IHdwKCJNUDREZW11eGVyIiwhaXx8IWkub3BlbkxvZ3x8IWkub3BlbkxvZyksZSYmZS5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTsoZT1hLl92aWRlb1NhbXBsZXMpLnB1c2guYXBwbHkoZSxrKHQuZnJhbWVzKSl9KSksciYmci5mb3JFYWNoKChmdW5jdGlvbih0KXt2YXIgZTsoZT1hLl9hdWRpb1NhbXBsZXMpLnB1c2guYXBwbHkoZSxrKHQuZnJhbWVzKSl9KSl9cmV0dXJuIG0odCxbe2tleToicGFyc2VTYW1wbGVzIix2YWx1ZTpmdW5jdGlvbih0KXtpZighdCl0aHJvdyBuZXcgRXJyb3IoIm1vb3YgaXMgcmVxdWlyZWQiKTtpZih0aGlzLnZpZGVvVHJhY2suY29kZWN8fHRoaXMuYXVkaW9UcmFjay5jb2RlY3x8KGlwLm1vb3ZUb1RyYWNrKHQsdGhpcy52aWRlb1RyYWNrLHRoaXMuYXVkaW9UcmFjayksdGhpcy52aWRlb1NlbmM9dGhpcy52aWRlb1RyYWNrLnZpZGVvU2VuYyx0aGlzLmF1ZGlvU2VuYz10aGlzLmF1ZGlvVHJhY2suYXVkaW9TZW5jKSwhdGhpcy5fYXVkaW9TYW1wbGVzLmxlbmd0aCYmIXRoaXMuX3ZpZGVvU2FtcGxlcy5sZW5ndGgpe3ZhciBlPWlwLm1vb3ZUb1NhbXBsZXModCk7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgcGFyc2Ugc2FtcGxlcyBmcm9tIG1vb3YgYm94Iik7dGhpcy5fdmlkZW9TYW1wbGVzPWUudmlkZW9TYW1wbGVzfHxbXSx0aGlzLl9hdWRpb1NhbXBsZXM9ZS5hdWRpb1NhbXBsZXN8fFtdfX19LHtrZXk6ImRlbXV4Iix2YWx1ZTpmdW5jdGlvbih0LGUscixuLGkpe3RoaXMucGFyc2VTYW1wbGVzKGkpO3ZhciBhLG8scyx1PXRoaXMudmlkZW9UcmFjayxjPXRoaXMuYXVkaW9UcmFjaztpZih1LnNhbXBsZXM9W10sYy5zYW1wbGVzPVtdLHIpe2Zvcih2YXIgZixsPTAsZD1yWzBdLGg9clsxXTtkPD1oO2QrKyl7aWYoIShhPXRoaXMuX3ZpZGVvU2FtcGxlc1tkXSkpdGhyb3cgbmV3IEVycm9yKCJjYW5ub3QgZm91bmQgdmlkZW8gZnJhbWUgIyIuY29uY2F0KGQpKTtzPWEub2Zmc2V0LWUsbz10LnN1YmFycmF5KHMscythLnNpemUpLChmPW5ldyBIaShhLnB0c3x8YS5kdHMsYS5kdHMpKS5kdXJhdGlvbj1hLmR1cmF0aW9uLGYuZ29wSWQ9YS5nb3BJZCxhLmtleWZyYW1lJiZmLnNldFRvS2V5ZnJhbWUoKTtmb3IodmFyIHA9MCx2PW8ubGVuZ3RoLTE7cDx2OylsPW5oKG8scCkscCs9NCxmLnVuaXRzLnB1c2goby5zdWJhcnJheShwLHArbCkpLHArPWw7dS5zYW1wbGVzLnB1c2goZil9dS5iYXNlTWVkaWFEZWNvZGVUaW1lPXUuc2FtcGxlc1swXS5kdHN9aWYobil7Zm9yKHZhciB5PW5bMF0sZz1uWzFdO3k8PWc7eSsrKXtpZighKGE9dGhpcy5fYXVkaW9TYW1wbGVzW3ldKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoeSkpO3M9YS5vZmZzZXQtZSxvPXQuc3ViYXJyYXkocyxzK2Euc2l6ZSksYy5zYW1wbGVzLnB1c2gobmV3IFlpKGEuZHRzLG8sYS5kdXJhdGlvbikpfWMuYmFzZU1lZGlhRGVjb2RlVGltZT1jLnNhbXBsZXNbMF0uZHRzfXJldHVybnt2aWRlb1RyYWNrOnUsYXVkaW9UcmFjazpjLG1ldGFkYXRhVHJhY2s6dGhpcy5tZXRhZGF0YVRyYWNrfX19LHtrZXk6ImRlbXV4UGFydCIsdmFsdWU6ZnVuY3Rpb24odCxlLHIsbixpLGEsbyl7aWYodGhpcy5wYXJzZVNhbXBsZXMoaSksdGhpcy52aWRlb1RyYWNrLnVzZUVNRT1hLHRoaXMuYXVkaW9UcmFjay51c2VFTUU9YSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyJiZ0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg+MCYmZT50aGlzLl9sYXN0UmVtYWluQnVmZmVyU3RhcnRQb3MmJmU8PXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyt0aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGgpZm9yKHZhciBzPTA7czwyMDspdHJ5e3ZhciB1PXRoaXMuX2xhc3RSZW1haW5CdWZmZXIuc3ViYXJyYXkoMCxlLXRoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcyksYz1uZXcgVWludDhBcnJheSh0LmJ5dGVMZW5ndGgrdS5ieXRlTGVuZ3RoKTtjLnNldCh1LDApLGMuc2V0KG5ldyBVaW50OEFycmF5KHQpLHUuYnl0ZUxlbmd0aCksdD1jLGUtPXUuYnl0ZUxlbmd0aCx0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTA7YnJlYWt9Y2F0Y2goVCl7aWYoIShzPDIwKSl0aHJvdyBuZXcgRXJyb3IoIm5ldyBVaW50OEFycmF5IGVycm9yOiwiK1QuZXJyb3JNZXNzYWdlKTtzKyt9dmFyIGYsbCxkLGg9dGhpcy52aWRlb1RyYWNrLHA9dGhpcy5hdWRpb1RyYWNrO2guc2FtcGxlcz1bXSxwLnNhbXBsZXM9W10saC52aWRlb1NlbmM9bnVsbCxwLmF1ZGlvU2VuYz1udWxsO3ZhciB2PTAseT0wO2lmKHRoaXMuX3ZpZGVvU2FtcGxlcy5sZW5ndGg+MCYmci5sZW5ndGg+MCl7Zm9yKHZhciBnLG09dC5ieXRlTGVuZ3RoK2UsYj1yWzBdO2I8PXJbMV07YisrKXtpZighKGY9dGhpcy5fdmlkZW9TYW1wbGVzW2JdKSl0aHJvdyBuZXcgRXJyb3IoImNhbm5vdCBmb3VuZCB2aWRlbyBmcmFtZSAjIi5jb25jYXQoYikpO2Yub2Zmc2V0Pj1lJiZmLm9mZnNldCtmLnNpemU8PW0mJih2PShkPWYub2Zmc2V0LWUpK2Yuc2l6ZSxsPXQuc3ViYXJyYXkoZCx2KSwoZz1uZXcgSGkoZi5wdHN8fGYuZHRzLGYuZHRzKSkuZHVyYXRpb249Zi5kdXJhdGlvbixnLmdvcElkPWYuZ29wSWQsZy5zYW1wbGVPZmZzZXQ9Zi5pbmRleCxmLmtleWZyYW1lJiZnLnNldFRvS2V5ZnJhbWUoKSxnLmRhdGE9bCxnLnNpemU9Zi5zaXplLGguc2FtcGxlcy5wdXNoKGcpKX1oLnNhbXBsZXMubGVuZ3RoPjAmJihoLmdvcElkPWguc2FtcGxlc1swXS5nb3BJZCxoLmJhc2VNZWRpYURlY29kZVRpbWU9aC5zYW1wbGVzWzBdLmR0cyxoLnN0YXJ0UHRzPWguc2FtcGxlc1swXS5wdHMvaC50aW1lc2NhbGUsaC5lbmRQdHM9aC5zYW1wbGVzW2guc2FtcGxlcy5sZW5ndGgtMV0ucHRzL2gudGltZXNjYWxlLHRoaXMudmlkZW9TZW5jJiYoaC52aWRlb1NlbmM9dGhpcy52aWRlb1NlbmMuc2xpY2UoaC5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCxoLnNhbXBsZXNbMF0uc2FtcGxlT2Zmc2V0K2guc2FtcGxlcy5sZW5ndGgpLGgua2lkVmFsdWU9bykpfWlmKHRoaXMuX2F1ZGlvU2FtcGxlcy5sZW5ndGg+MCYmbi5sZW5ndGg+MCl7Zm9yKHZhciB3PW5bMF07dzw9blsxXTt3Kyspe2lmKCEoZj10aGlzLl9hdWRpb1NhbXBsZXNbd10pKXRocm93IG5ldyBFcnJvcigiY2Fubm90IGZvdW5kIHZpZGVvIGZyYW1lICMiLmNvbmNhdCh3KSk7Zi5vZmZzZXQ+PWUmJmYub2Zmc2V0K2Yuc2l6ZTw9dC5ieXRlTGVuZ3RoK2UmJih5PShkPWYub2Zmc2V0LWUpK2Yuc2l6ZSxsPXQuc3ViYXJyYXkoZCx5KSxwLnNhbXBsZXMucHVzaChuZXcgWWkoZi5kdHMsbCxmLmR1cmF0aW9uLGYuaW5kZXgpKSl9cC5zYW1wbGVzLmxlbmd0aD4wJiYocC5nb3BJZD1wLnNhbXBsZXNbMF0uZ29wSWR8fGguZ29wSWQscC5iYXNlTWVkaWFEZWNvZGVUaW1lPXAuc2FtcGxlc1swXS5kdHMscC5zdGFydFB0cz1wLnNhbXBsZXNbMF0ucHRzL3AudGltZXNjYWxlLHAuZW5kUHRzPXAuc2FtcGxlc1twLnNhbXBsZXMubGVuZ3RoLTFdLnB0cy9wLnRpbWVzY2FsZSx0aGlzLmF1ZGlvU2VuYyYmKHAuYXVkaW9TZW5jPXRoaXMuYXVkaW9TZW5jLnNsaWNlKHAuc2FtcGxlc1swXS5zYW1wbGVPZmZzZXQscC5zYW1wbGVzWzBdLnNhbXBsZU9mZnNldCtwLnNhbXBsZXMubGVuZ3RoKSxwLmtpZFZhbHVlPW8pKX10aGlzLmRlY29kZXJEYXRhKGgscCk7Zm9yKHZhciBrPTAseD0wO3g8aC5zYW1wbGVzLmxlbmd0aDt4KyspZm9yKHZhciBBPTAsUz1oLnNhbXBsZXNbeF0uZGF0YSxfPVMubGVuZ3RoLTE7QTxfOylrPW5oKFMsQSksQSs9NCxoLnNhbXBsZXNbeF0udW5pdHMucHVzaChTLnN1YmFycmF5KEEsQStrKSksQSs9aztyZXR1cm4gdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlcj10LnN1YmFycmF5KE1hdGgubWF4KHYseSkpLHRoaXMuX2xhc3RSZW1haW5CdWZmZXIuYnl0ZUxlbmd0aD4wP3RoaXMuX2xhc3RSZW1haW5CdWZmZXJTdGFydFBvcz1lK3QuYnl0ZUxlbmd0aC10aGlzLl9sYXN0UmVtYWluQnVmZmVyLmJ5dGVMZW5ndGg6dGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAse3ZpZGVvVHJhY2s6aCxhdWRpb1RyYWNrOnAsbWV0YWRhdGFUcmFjazp0aGlzLm1ldGFkYXRhVHJhY2t9fX0se2tleToicmVzZXQiLHZhbHVlOmZ1bmN0aW9uKCl7dGhpcy5fdmlkZW9TYW1wbGVzPVtdLHRoaXMuX2F1ZGlvU2FtcGxlcz1bXSx0aGlzLl9sYXN0UmVtYWluQnVmZmVyPW51bGwsdGhpcy5fbGFzdFJlbWFpbkJ1ZmZlclN0YXJ0UG9zPTAsdGhpcy52aWRlb1RyYWNrLnJlc2V0KCksdGhpcy5hdWRpb1RyYWNrLnJlc2V0KCksdGhpcy5tZXRhZGF0YVRyYWNrLnJlc2V0KCl9fSx7a2V5OiJkZWNvZGVyRGF0YSIsdmFsdWU6ZnVuY3Rpb24odCxlKXtpZighdC51c2VFTUUmJiFlLnVzZUVNRSl7aWYodC52aWRlb1NlbmMmJjE9PT10LmlkKXt2YXIgcj10LmtpZFZhbHVlLG49dC52aWRlb1NlbmM7dC5zYW1wbGVzLmZvckVhY2goKGZ1bmN0aW9uKGUsaSl7dmFyIGE9bltpXSxvPWUuZGF0YSxzPVtdLHU9W10sYz1hLkluaXRpYWxpemF0aW9uVmVjdG9yO2lmKGEuc3Vic2FtcGxlcyYmYS5zdWJzYW1wbGVzLmxlbmd0aClhLnN1YnNhbXBsZXMuZm9yRWFjaCgoZnVuY3Rpb24odCl7dmFyIGU9dC5CeXRlc09mQ2xlYXJEYXRhK3QuQnl0ZXNPZlByb3RlY3RlZERhdGEscj1vLnNsaWNlKDAsZSk7cy5wdXNoKHIuc2xpY2UoMCx0LkJ5dGVzT2ZDbGVhckRhdGEpKSx1LnB1c2goci5zbGljZSh0LkJ5dGVzT2ZDbGVhckRhdGEpKSxvPW8uc2xpY2UoZSl9KSk7ZWxzZXt2YXIgZj1lLnNpemU7cy5wdXNoKG8uc2xpY2UoMCwwKSksdS5wdXNoKG8uc2xpY2UoMCxmKSksbz1vLnNsaWNlKGYpfXZhciBsPW5ldyBncDtsLndyaXRlLmFwcGx5KGwsdSk7dmFyIGQ9a3YuZGVjcnlwdFdvcmRBcnJheShsLmJ1ZmZlcixyLGMpLGg9bmV3IGdwO3MuZm9yRWFjaCgoZnVuY3Rpb24odCxlKXt2YXIgcj11W2VdLmxlbmd0aCxuPWQuc2xpY2UoMCxyKTtoLndyaXRlKHQpLGgud3JpdGUobiksZD1kLnNsaWNlKHIpfSkpLHQuc2FtcGxlc1tpXS5kYXRhPWguYnVmZmVyfSkpfWlmKGUuYXVkaW9TZW5jJiYyPT09ZS5pZCl7dmFyIGk9ZS5raWRWYWx1ZSxhPWUuYXVkaW9TZW5jO2Uuc2FtcGxlcy5mb3JFYWNoKChmdW5jdGlvbih0LHIpe3ZhciBuPWFbcl0sbz1rdi5kZWNyeXB0V29yZEFycmF5KHQuZGF0YSxpLG4uSW5pdGlhbGl6YXRpb25WZWN0b3IpO2Uuc2FtcGxlc1tyXS5kYXRhPW99KSl9fX19XSxbe2tleToicHJvYmUiLHZhbHVlOmZ1bmN0aW9uKHQpe3JldHVybiBpcC5wcm9iZSh0KX19XSksdH0oKSxBdj17ZmluZEJveDpmdW5jdGlvbih0LGUpe3ZhciByPWFyZ3VtZW50cy5sZW5ndGg+MiYmdm9pZCAwIT09YXJndW1lbnRzWzJdP2FyZ3VtZW50c1syXTpbXTtpZih0LnR5cGUhPT1lKXtpZih0JiZ0LnN1YkJveCl7dmFyIG49dC5zdWJCb3guZmlsdGVyKChmdW5jdGlvbih0KXtyZXR1cm4gdC50eXBlPT09ZX0pKTtuLmxlbmd0aD9uLmZvckVhY2goKGZ1bmN0aW9uKHQpe3JldHVybiByLnB1c2godCl9KSk6dC5zdWJCb3guZm9yRWFjaCgoZnVuY3Rpb24odCl7cmV0dXJuIEF2LmZpbmRCb3godCxlLHIpfSkpfX1lbHNlIHIucHVzaCh0KTtyZXR1cm4ocj1bXS5jb25jYXQocikpLmxlbmd0aD4xP3I6clswXX0scGFkU3RhcnQ6ZnVuY3Rpb24odCxlLHIpe2Zvcih2YXIgbj1TdHJpbmcociksaT1lPj4wLGE9TWF0aC5jZWlsKGkvbi5sZW5ndGgpLG89W10scz1TdHJpbmcodCk7YS0tOylvLnB1c2gobik7cmV0dXJuIG8uam9pbigiIikuc3Vic3RyaW5nKDAsaS1zLmxlbmd0aCkrc30sdG9IZXg6ZnVuY3Rpb24oKXtmb3IodmFyIHQ9W10sZT1hcmd1bWVudHMubGVuZ3RoLHI9bmV3IEFycmF5KGUpLG49MDtuPGU7bisrKXJbbl09YXJndW1lbnRzW25dO3JldHVybiByLmZvckVhY2goKGZ1bmN0aW9uKGUpe3QucHVzaChBdi5wYWRTdGFydChOdW1iZXIoZSkudG9TdHJpbmcoMTYpLDIsMCkpfSkpLHR9LHN1bTpmdW5jdGlvbigpe2Zvcih2YXIgdD0wLGU9YXJndW1lbnRzLmxlbmd0aCxyPW5ldyBBcnJheShlKSxuPTA7bjxlO24rKylyW25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gci5mb3JFYWNoKChmdW5jdGlvbihlKXt0Kz1lfSkpLHR9LFN0cmluZ1RvQXJyYXlCdWZmZXI6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBBcnJheUJ1ZmZlcih0Lmxlbmd0aCkscj1uZXcgVWludDhBcnJheShlKSxuPTA7bjx0Lmxlbmd0aDtuKyspcltuXT10LmNoYXJDb2RlQXQobik7cmV0dXJuIGV9LGZyb21IZXg6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoLzIpLHI9MDtyPHQubGVuZ3RoO3IrPTIpZVtyLzJdPXdpbmRvdy5wYXJzZUludCh0LnN1YnN0cihyLDIpLDE2KTtyZXR1cm4gZX0sZnJvbUNoYXJDb2RlOmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT0iIixyPTA7cjx0Lmxlbmd0aDtyKz0xNmUzKXt2YXIgbj10LnN1YmFycmF5KHIscisxNmUzKTtlKz1TdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsbil9cmV0dXJuIGV9LEFycmF5QnVmZmVyVG9TdHJpbmc6ZnVuY3Rpb24odCl7Zm9yKHZhciBlPSIiLHI9bmV3IFVpbnQ4QXJyYXkodCksbj0wO248ci5sZW5ndGg7bisrKWUrPVN0cmluZy5mcm9tQ2hhckNvZGUocltuXSk7cmV0dXJuIGV9LEJhc2U2NFRvSGV4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT13aW5kb3cuYXRvYih0LnJlcGxhY2UoLy0vZywiKyIpLnJlcGxhY2UoL18vZywiLyIpKSxyPSIiLG49MDtuPGUubGVuZ3RoO24rKylyKz0oIjAiK2UuY2hhckNvZGVBdChuKS50b1N0cmluZygxNikpLnN1YnN0cigtMik7cmV0dXJuIHJ9LHRvQmFzZTY0OmZ1bmN0aW9uKHQsZSl7dmFyIHI9QXYuZnJvbUNoYXJDb2RlKHQpO2U9dm9pZCAwPT09ZXx8ZTt2YXIgbj13aW5kb3cuYnRvYShyKS5yZXBsYWNlKC9cKy9nLCItIikucmVwbGFjZSgvXC8vZywiXyIpO3JldHVybiBlP246bi5yZXBsYWNlKC89KiQvLCIiKX0sdG9VVEY4OmZ1bmN0aW9uKHQpe2Zvcih2YXIgZT1lbmNvZGVVUklDb21wb25lbnQodCkscj11bmVzY2FwZShlKSxuPW5ldyBVaW50OEFycmF5KHIubGVuZ3RoKSxpPTA7aTxyLmxlbmd0aDsrK2kpbltpXT1yLmNoYXJDb2RlQXQoaSk7cmV0dXJuIG4uYnVmZmVyfSxidWZmZXJUb1N0cmluZzpmdW5jdGlvbih0KXtyZXR1cm4oIjAiK051bWJlcih0KS50b1N0cmluZygxNikpLnNsaWNlKC0yKS50b1VwcGVyQ2FzZSgpfSxzdHJUb0J1ZjpmdW5jdGlvbih0KXtmb3IodmFyIGU9W10scj0wO3I8dC5sZW5ndGg7cis9MillLnB1c2gocGFyc2VJbnQodFtyXSt0W3IrMV0sMTYpKTtyZXR1cm4gbmV3IFVpbnQ4QXJyYXkoZSl9LGZvcm1hdElWOmZ1bmN0aW9uKHQpe3ZhciBlPSIiO2lmKHQuZm9yRWFjaCgoZnVuY3Rpb24odCl7ZSs9QXYuYnVmZmVyVG9TdHJpbmcodCl9KSksZS5sZW5ndGg8PTMyKWZvcih2YXIgcj0zMi1lLmxlbmd0aCxuPTA7bjxyO24rKyllKz0iMCI7cmV0dXJuIGV9LHN0cjJoZXg6ZnVuY3Rpb24odCl7aWYoIiI9PT10KXJldHVybiIiO2Zvcih2YXIgZT1bXSxyPTA7cjx0Lmxlbmd0aDtyKyspZS5wdXNoKHQuY2hhckNvZGVBdChyKSk7cmV0dXJuIGV9LHBhcnNlOmZ1bmN0aW9uKHQpe2lmKCFBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIGU9W10scj0iIixuPTA7bjx0Lmxlbmd0aDtuKyspbiUyJiYocj10W24tMV0rdFtuXSxlLnB1c2gocGFyc2VJbnQociwxNikpLHI9IiIpO3JldHVybiBlfXJldHVybiB0Lm1hcCgoZnVuY3Rpb24odCl7cmV0dXJuIHBhcnNlSW50KHQsMTYpfSkpfSxnZW5lcmF0ZVVuaXF1ZUtleTpmdW5jdGlvbih0KXt2YXIgZT10LnZpZDt0LnN0YXJ0LHQuZW5kO3ZhciByPXQubWVkaWFUeXBlLG49dC5kZWZpbml0aW9uO3JldHVybiB0LnByZWxvYWRUaW1lLHI9cnx8InZpZGVvIixuPW58fCIwIixlPyIiLmNvbmNhdChlLCIjIikuY29uY2F0KHIsIiMiKS5jb25jYXQobiwiI21wNCIpOm51bGx9LHZhbGlkYXRlRnJhZ21lbnQ6ZnVuY3Rpb24odCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/YXJndW1lbnRzWzFdOltdO2lmKHQgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcil7dHJ5e2lmKDI9PT1lLmxlbmd0aCl7dmFyIHI9ZVsxXS1lWzBdKzE7aWYoISh0LmJ5dGVMZW5ndGg9PT1yKSlyZXR1cm59fWNhdGNoKG4pe3JldHVybiBjb25zb2xlLmVycm9yKG4pLCExfXJldHVybiEwfXJldHVybiExfSx0eXBlT2Y6ZnVuY3Rpb24odCl7cmV0dXJuIE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbCh0KS5tYXRjaCgvKFteXHMuKl0rKSg/PV0kKS9nKVswXX0sZ2V0QnVmZmVyU3BsaXRzOmZ1bmN0aW9uKHQsZSl7dmFyIHI9YXJndW1lbnRzLmxlbmd0aD4yJiZ2b2lkIDAhPT1hcmd1bWVudHNbMl0/YXJndW1lbnRzWzJdOjVlNSxuPWUtdDtpZihuLXI8ci8yfHwhZSlyZXR1cm5bW3QsZV1dO2Zvcih2YXIgaT1bXTt0PGU7KXt2YXIgYT10K3I7KGE+ZXx8ZS1hPHIvMikmJihhPWUpLGkucHVzaChbdCxhXSksdD1hKzF9cmV0dXJuIGl9LG5vd1RpbWU6ZnVuY3Rpb24oKXt0cnl7cmV0dXJuIHBhcnNlSW50KHBlcmZvcm1hbmNlLm5vdygpLDEwKX1jYXRjaCh0KXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX19LGV4dFVybDpmdW5jdGlvbih0LGUpe3RyeXt2YXIgcj10LmluZGV4T2YoIj8iKTtyZXR1cm4gcjwwP09iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24ocixuKXt0Kz0wPT09bj8iPyIuY29uY2F0KHIsIj0iKS5jb25jYXQoZVtyXSk6IiYiLmNvbmNhdChyLCI9IikuY29uY2F0KGVbcl0pfSkpOk9iamVjdC5rZXlzKGUpLm1hcCgoZnVuY3Rpb24obixpKXtyPT09dC5sZW5ndGgtMT90Kz0iIi5jb25jYXQobiwiPSIpLmNvbmNhdChlW25dKTp0Kz0iJiIuY29uY2F0KG4sIj0iKS5jb25jYXQoZVtuXSl9KSksdH1jYXRjaChuKXtyZXR1cm4gdH19LGdldEZpbGVTaXplOmZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0JiZlP3BhcnNlSW50KGUqdC84LDEwKTowfWNhdGNoKHIpe3JldHVybiAwfX0saGFzaFZhbDpmdW5jdGlvbih0KXt2YXIgZSxyPTA7aWYoMD09PXQubGVuZ3RoKXJldHVybiByO2ZvcihlPTA7ZTx0Lmxlbmd0aDtlKyspcj0ocjw8NSktcit0LmNoYXJDb2RlQXQoZSkscnw9MDtyZXR1cm4gcn19O0F2LmdldEZpbGVTaXplPWZ1bmN0aW9uKHQsZSl7dHJ5e3JldHVybiB0JiZlP3BhcnNlSW50KGUqdC84LDEwKTowfWNhdGNoKHIpe3JldHVybiAwfX0sQXYuY29uY2F0RGF0YT1mdW5jdGlvbih0LGUpe3ZhciByPVtdLG49MDt0JiZyLnB1c2godCksZSYmci5wdXNoKGUpLHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYobis9dC5ieXRlTGVuZ3RoKSwhMH0pKTt2YXIgaT1uZXcgVWludDhBcnJheShuKSxhPTA7cmV0dXJuIHIuZXZlcnkoKGZ1bmN0aW9uKHQpe3JldHVybiB0JiYoaS5zZXQodCxhKSxhKz10LmJ5dGVMZW5ndGgpLCEwfSkpLGl9LEF2LmdldEZyYWdSYW5nZT1mdW5jdGlvbih0LGUscil7dmFyIG49dDxlLmxlbmd0aD9lW3RdOm51bGwsaT10PHIubGVuZ3RoP3JbdF06bnVsbCxhPTAsbz0wO3JldHVybiB0PT09ZS5sZW5ndGgtMSYmKGE9LTEpLHQ9PT1yLmxlbmd0aC0xJiYobz0tMSksW01hdGgubWluKChudWxsPT1uP3ZvaWQgMDpuLnJhbmdlWzBdKXx8MS8wLChudWxsPT1pP3ZvaWQgMDppLnJhbmdlWzBdKXx8MS8wKSxNYXRoLm1heCgobnVsbD09bj92b2lkIDA6bi5yYW5nZVsxXSkrYXx8MCwobnVsbD09aT92b2lkIDA6aS5yYW5nZVsxXSkrb3x8MCldfSxvbm1lc3NhZ2U9ZnVuY3Rpb24odCl7dmFyIHI9dC5kYXRhO3N3aXRjaChyLm1ldGhvZCl7Y2FzZSJpbml0Ijp0aGlzLmNvZGVjVHlwZT1yLmFyZ3MuY29kZWNUeXBlLHRoaXMub3BlbmxvZz1yLmFyZ3Mub3BlbkxvZyx0aGlzLk1QNERlbXV4ZXI9bnVsbCx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwLHRoaXMuc3VwcG9ydEhldmM9ci5hcmdzLnN1cHBvcnRIZXZjO2JyZWFrO2Nhc2UidHJhbnNtdXgiOnZhciBuPXQuZGF0YS5hcmdzLGk9bmV3IFVpbnQ4QXJyYXkodC5kYXRhLmJ1ZmZlcik7dGhpcy5NUDREZW11eGVyfHwodGhpcy5NUDREZW11eGVyPW5ldyB4dihudWxsLG51bGwsbnVsbCx7b3BlbmxvZzp0aGlzLm9wZW5sb2d9KSk7dmFyIGEsbz10aGlzLk1QNERlbXV4ZXIuZGVtdXhQYXJ0KGksbi5zdGFydCxuLnZpZGVvSWR4LG4uYXVkaW9JZHgsbi5tb292LG4udXNlRU1FLG4ua2lkVmFsdWUpO2lmKHRoaXMuRk1QNFJlbXV4ZXJ8fCJoMjY1Ij09PXRoaXMuY29kZWNUeXBlJiYhdGhpcy5zdXBwb3J0SGV2Y3x8KHRoaXMuRk1QNFJlbXV4ZXI9bmV3IGtwKHRoaXMuTVA0RGVtdXhlci52aWRlb1RyYWNrLHRoaXMuTVA0RGVtdXhlci5hdWRpb1RyYWNrLHtvcGVuTG9nOnRoaXMub3BlbmxvZ30pKSx0aGlzLkZNUDRSZW11eGVyKXt2YXIgcz10aGlzLkZNUDRSZW11eGVyLnJlbXV4KHRoaXMuX25lZWRJbml0U2VnbWVudCx7aW5pdE1lcmdlOiEwfSk7cy5pbml0U2VnbWVudCYmKHRoaXMuX25lZWRJbml0U2VnbWVudD0hMSksYT17YnVmZmVyOkF2LmNvbmNhdERhdGEocy5hdWRpb1NlZ21lbnQscy52aWRlb1NlZ21lbnQpLHJhbmdlOm4uY29udGV4dC5yYW5nZSxzdGF0ZTpuLmNvbnRleHQuc3RhdGUsY29udGV4dDp7cmFuZ2U6bi5jb250ZXh0LnJhbmdlLGZyYWdJbmRleDpuLmNvbnRleHQuZnJhZ0luZGV4LHN0YXJ0UHRzOk1hdGgubWluKG8udmlkZW9UcmFjay5zdGFydFB0cyxvLmF1ZGlvVHJhY2suc3RhcnRQdHMpLGVuZFB0czpNYXRoLm1heChvLnZpZGVvVHJhY2suZW5kUHRzLG8uYXVkaW9UcmFjay5lbmRQdHMpfSxpbml0U2VnOnMuaW5pdFNlZ21lbnR9fXRoaXMucG9zdE1lc3NhZ2Uoe21ldGhvZDoidHJhbnNtdXgiLGlkOnQuZGF0YS5pZCxhcmdzOmUoe30sYSl9KTticmVhaztjYXNlInJlc2V0Ijp0aGlzLkZNUDRSZW11eGVyJiZ0aGlzLkZNUDRSZW11eGVyLnJlc2V0KCksdGhpcy5NUDREZW11eGVyJiZ0aGlzLk1QNERlbXV4ZXIucmVzZXQoKSx0aGlzLkZNUDRSZW11eGVyPW51bGwsdGhpcy5NUDREZW11eGVyPW51bGwsdGhpcy5fbmVlZEluaXRTZWdtZW50PSEwfX19KCk7Cg==",blob="undefined"!=typeof window&&window.Blob&&new Blob([atob(encodedJs)],{type:"text/javascript;charset=utf-8"});function WorkerWrapper(){var e=blob&&(window.URL||window.webkitURL).createObjectURL(blob);try{return e?new Worker(e,{}):new Worker("data:application/javascript;base64,"+encodedJs,{type:"module"})}finally{e&&(window.URL||window.webkitURL).revokeObjectURL(e)}}var TransmuxerWorkerControl=function(e){_inherits$4(r,EventEmitter$1);var t=_createSuper$4(r);function r(e){var n;return _classCallCheck$6(this,r),(n=t.call(this)).openlog=e.openLog,n.codecType=e.codecType,n.supportHevc=e.supportHevc,n.worker=new WorkerWrapper,n.worker.onmessage=function(e){n.emit(e.data.method,e.data)},n.worker.postMessage({method:"init",id:e.id||0,args:{openlog:n.openlog,supportHevc:n.supportHevc,codecType:n.codecType}}),n}return _createClass$6(r,[{key:"transmux",value:function(e,t,r,n,i,o,a,s,c){var u=t.buffer;this.worker&&this.worker.postMessage({method:"transmux",id:e,buffer:u,args:{start:r,videoIdx:n,audioIdx:i,moov:o,useEME:a,kidValue:s,context:c}},[u])}},{key:"reset",value:function(){this.worker&&this.worker.postMessage({method:"reset"})}},{key:"destroy",value:function(){this.worker&&this.worker.terminate()}}]),r}(),MP4_EVENTS={ERROR:"error",META_READY:"metaReady",MOOV_READY:"moovReady",MOOV_REQ_PROGRESS:"moov_request_Progress",TASK_PROGRESS:"progress_event",REMOVE_URL:"remove_url",FRAGMENT:"fragment",UPDATEEME:"updateEME",CHANGE_URL:"chaneg_url"},MP4=function(e){_inherits$4(d,EventEmitter$1);var t,r,n,i,o,a,s,c,u,l=_createSuper$4(d);function d(e,t,r,n){var i,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:[],a=arguments.length>7?arguments[7]:void 0,s=arguments.length>8?arguments[8]:void 0;if(_classCallCheck$6(this,d),_defineProperty$4(_assertThisInitialized$4(i=l.call(this)),"onprogressDataArrive",function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var o;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:t&&t.byteLength>0&&((o=i.timeRange[n.index].range)&&n.range[1]>=o[1]&&!r&&(r=!0),i.log("[mp4.loadFragment onprogressDataArrive ] receive data, >>> index,",n.index,",range,",JSON.stringify(n.range),", dataLen,",t.byteLength),i._mux(t,n.range[0],n.index,r)),r&&(i.timeRange[n.index].downloaded=!0,i.bufferLoadedPos=-1,i.log("[FragLoadDowned],fragmentIdx,",n.index,",rangeEnd,",n.range[1]));case 2:case"end":return e.stop()}}),e)})));return function(t,r,n){return e.apply(this,arguments)}}()),i.timeRecord={startMuxTime:-1,startLoadTime:-1,newMP4Time:util.nowTime(),startLoadMetaTime:-1},i.url=e,i.backUrl=o||[],i._bitRate=t,i.options=d.getDefaultConfig(),Object.keys(r).map((function(e){void 0!==r[e]&&null!==r[e]&&(i.options[e]=r[e])})),i.timeRange=[],i.firstFrameTime=a||{},i._logTag=s||"",i.CHUNK_SIZE=getMetaSize(r.duration,i.options.chunkSize,r.fileSize),i.player=n,i.bufferLoaded=new Uint8Array(0),i.bufferLoadedPos=0,i.meta=null,i.preloadCache=null,i.videoTrak=null,i.audioTrak=null,i.canDownload=!0,i._loadSuccessCallBack=null,i._isPending=!1,i._metaLoading=!1,i.MP4Loader=new MP4Loader(_objectSpread2$2(_objectSpread2$2({segmentDuration:r.segmentDuration,url:e,vid:r.vid+"-"+t,retry:r.retryCount||2,retryDelay:r.retryDelay||1e3,timeout:3e3},r.reqOptions),{},{openLog:checkOpenLog()})),i.MP4Demuxer=null,i.FMP4Remuxer=null,i._needInitSegment=!0,i._bitRateInfoMap=new Map,i._switchBitRate=!1,i._segmentToBitRateMap=new Map,i.useEME=!1,i.kidValue=null,i.enableWorker=r.enableWorker&&("h265"!==r.codecType||r.supportHevc),i.enableWorker&&"undefined"!=typeof Worker)try{i.workerSequence=0,i.transmuxerWorkerControl=new TransmuxerWorkerControl({id:i.workerSequence,codecType:r.codecType,supportHevc:i.options.supportHevc,openLog:checkOpenLog()}),i.transmuxerWorkerControl.on("transmux",(function(e){var t=e.args;i.log("[transmuxerworker end] ,range, ",JSON.stringify(t.range),",dataLen,",t.buffer.byteLength,t.context),i.firstFrameTime.firstmux<0&&i.timeRecord.startMuxTime>0&&(i.firstFrameTime.firstmux=util.nowTime()-i.timeRecord.startMuxTime),i._loadSuccessCallBack&&i._loadSuccessCallBack(t)}))}catch(e){i.log("Error in worker:",e),i.enableWorker=!1,i.transmuxerWorkerControl=null}return i.enableWorker||(i.MP4Demuxer=null,i.FMP4Remuxer=null),i.seekTime=-1,i}return _createClass$6(d,[{key:"changeBitRate",value:(u=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t.bitrate===this._bitRate){e.next=9;break}return this.url=t.url,this._bitRate=t.bitrate,this.backUrl=t.backupURL,e.next=6,this.MP4Loader.changeUrl(this.url,this.options.vid+"-"+this._bitRate,this.CHUNK_SIZE);case 6:this.emit(MP4_EVENTS.CHANGE_URL,this.url),this._switchBitRate=!0,this.log("[switchBitrate] changeUrl, bitRate,",this._bitRate,this.url);case 9:case"end":return e.stop()}}),e,this)}))),function(e){return u.apply(this,arguments)})},{key:"_getByPreload",value:function(e,t,r,n){try{if(e&&e.byteLength>=t){var i={endTime:(new Date).getTime(),startTime:(new Date).getTime(),index:n,range:[],vid:this.options.vid,from:"local"};if(r<=e.byteLength){var o=e.slice(t,r);return i.range=[t,r],i.state=!0,{buffer:o,context:i,state:!0}}var a=e.byteLength-1,s=e.slice(t,a);return i.range=[t,a],{context:i,buffer:s,state:!1}}return null}catch(e){return console.error("[MP4] _getByPreload",t,r,e),null}}},{key:"log",value:function(e){for(var t=this.options,r=t&&t.vid?"[MP4]".concat(this._logTag," ").concat(t.vid," ").concat(e):"[MP4]".concat(this._logTag," ").concat(e),n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];log$2.apply(void 0,[r].concat(i))}},{key:"errorHandler",value:(c=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l,d,h=arguments;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(n=h.length>2&&void 0!==h[2]?h[2]:{},i=t.response,o=t.message,a=this.options?this.options.vid:"",s=null,this._isPending=!0,!i){e.next=33;break}if(c=transformHeaders(i.headers),s=new NetWorkError("network",i.status,{httpText:i.httpText,message:o,url:i.url,headers:c}),console.log("[MP4] [".concat(a,"] errorHandler error state:[").concat(r,"], _isPending:[").concat(this._isPending,"] "),s),!(this.backUrl&&this.backUrl.length>0)){e.next=29;break}if(console.log("[MP4] [".concat(a,"] errorHandler start backUpUrl retry"),this.backUrl.length,this.backUrl),u=this.backUrl.shift(),this.update(u),this._isPending=!1,!this.MP4Loader){e.next=18;break}return e.next=17,this.MP4Loader.changeUrl(this.url,this.url+"-"+this._bitRate,this.CHUNK_SIZE);case 17:this.emit(MP4_EVENTS.CHANGE_URL,this.url);case 18:if(this.emit(MP4_EVENTS.TASK_PROGRESS,{type:"error",error:t}),"getMetaInfo"!==r){e.next=24;break}return this.getMetaInfo(),e.abrupt("return");case 24:if("loadFragment"!==r){e.next=29;break}if(l=n.index,d=n.range,!l||!d){e.next=29;break}return this.loadFragment(l,d),e.abrupt("return");case 29:console.log("[MP4] [".concat(a,"] errorHandler backUpUrl is null emit error")),this.emit(MP4_EVENTS.ERROR,s),e.next=36;break;case 33:console.log("[MP4] [".concat(a,"] errorHandler,"),t),s=t,this.emit(MP4_EVENTS.ERROR,s);case 36:case"end":return e.stop()}}),e,this)}))),function(e,t){return c.apply(this,arguments)})},{key:"init",value:(s=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o,a,s,c,u;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.url){e.next=3;break}return e.next=3,this.MP4Loader.changeUrl(this.url,this.options.vid+"-"+this._bitRate,this.CHUNK_SIZE);case 3:if(this.emit(MP4_EVENTS.CHANGE_URL,this.url),this.meta=null,r=t.meta,n=t.mediaSegList,i=t.buffer,o=t.fileSize,a=t.initSeg,s=t.bitrate,!r||!r.ext){e.next=21;break}this.meta=r,this._bitRate=s,this.videoTrak=r.ext.videoTrak,this.audioTrak=r.ext.audioTrak,this.timeRange=this.getTimeRange(),n?this.preloadCache={segList:n||[],initSeg:a}:i&&(this.size=o,this.bufferLoaded=i),c={meta:r,videoSegments:r.ext.videoTrak,audioSegments:r.ext.audioTrak,bufferLoaded:i||null},this._bitRateInfoMap.set(this._bitRate,c),u=(new Date).getTime(),setTimeout((function(){console.log(">>>>metaReady setTimeout",(new Date).getTime()-u)})),console.log(">>>>metaReady",util.nowTime()),this.emit(MP4_EVENTS.META_READY,this.meta),e.next=23;break;case 21:return e.next=23,this.getMetaInfo();case 23:case"end":return e.stop()}}),e,this)}))),function(e){return s.apply(this,arguments)})},{key:"getTimeRange",value:function(){for(var e=[],t=null,r=0;this.videoTrak&&r<this.videoTrak.length;r++)t={startTime:this.videoTrak[r].startTime,endTime:this.videoTrak[r].endTime,downloaded:!1,isLoading:!1},e.push(t);if(this.audioTrak&&this.audioTrak.length>e.length)for(var n=e.length;n<this.audioTrak.length;n++)t={startTime:Math.max(this.audioTrak[n].startTime,t?t.endTime:0),endTime:Math.max(this.audioTrak[n].endTime,t?t.endTime:0),downloaded:!1,isLoading:!1},e.push(t);return e}},{key:"getMetaInfo",value:(a=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r,n,i,o=this,a=arguments;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return t=!(a.length>0&&void 0!==a[0])||a[0],e.prev=1,r=util.nowTime(),this._metaLoading=!0,this.log("getMetaInfo start, bitRate,",this._bitRate),this.bufferLoaded=new Uint8Array(0),n=0,i=function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(i,a,s,c){var u,l;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(o.log("getMetaInfo onProgressHandle, dataLen,",i?i.byteLength:-1,", state,",a,",range,",JSON.stringify(s.range)),!c){e.next=7;break}return e.next=4,o.cancelLoading();case 4:return u=new ParserError(ERROR_TYPES.demux,ERROR_CODES.metaError,{msg:JSON.stringify(c)}),o.errorHandler(u,"getMetaInfo"),e.abrupt("return");case 7:i&&s.range[0]===n&&(o.bufferLoaded=Concat(Uint8Array,o.bufferLoaded,new Uint8Array(i)),n+=i.byteLength),s.meta&&!o.meta&&(o.firstFrameTime.metaload=util.nowTime()-r,l=s.meta,o.videoTrak=l.videoSegments,o.audioTrak=l.audioSegments,o.timeRange=o.getTimeRange(),o.meta=_objectSpread2$2(_objectSpread2$2({},l.meta),{},{ext:{videoTrak:o.videoTrak,audioTrak:o.audioTrak}}),l.bufferLoaded=o.bufferLoaded,o._bitRateInfoMap.set(o._bitRate,l),o.log("meta reach, bitRate,",o._bitRate),t&&o.emit(MP4_EVENTS.META_READY,o.meta)),o.meta&&a&&(o.log("[getMetaInfo req end]"),o._metaLoading=!1),o.meta&&(i||a)&&(o.log("emit moov_req_progress"),o.emit(MP4_EVENTS.MOOV_REQ_PROGRESS));case 11:case"end":return e.stop()}}),e)})));return function(t,r,n,i){return e.apply(this,arguments)}}(),e.next=10,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,this.CHUNK_SIZE],i);case 10:e.next=16;break;case 12:e.prev=12,e.t0=e.catch(1),console.error("[MP4] trigger errorHandler getMetaInfo",e.t0),this.errorHandler(e.t0,"getMetaInfo");case 16:case"end":return e.stop()}}),e,this,[[1,12]])}))),function(){return a.apply(this,arguments)})},{key:"getFragmentIdx",value:function(e){var t,r;if(this.videoTrak.length){if(t=this.videoTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),r=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})),t&&r)return Math.min(t.index,r.index);if(t||r)return t?t.index:r.index;var n=Number.MAX_VALUE;return this.videoTrak&&this.videoTrak.length>0&&(n=this.videoTrak.length-1),this.audioTrak&&this.audioTrak.length>0&&(n=Math.min(this.audioTrak.length-1,n)),n}return(r=this.audioTrak.find((function(t){return t.startTime<=e&&t.endTime>e})))?r.index:0}},{key:"_checkHasMeta",value:(o=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this._bitRateInfoMap.get(this._bitRate)){e.next=19;break}return this.log("[ABR], need load InitSegment, bitRate, ",this._bitRate),this._metaLoading=!0,e.next=6,this.MP4Loader.loadMeta(this.MP4Loader.cache,Math.round(this.CHUNK_SIZE/2));case 6:return r=e.sent,this._metaLoading=!1,this.videoTrak=r.videoSegments,this.audioTrak=r.audioSegments,this.meta=_objectSpread2$2(_objectSpread2$2({},r.meta),{},{ext:{videoTrak:this.videoTrak,audioTrak:this.audioTrak}}),this.emit(MP4_EVENTS.UPDATEEME,this.meta),this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),r.bufferLoaded=this.bufferLoaded,this._bitRateInfoMap.set(this._bitRate,r),e.abrupt("return",!0);case 19:return this.log("[ABR], not need load InitSegment, bitRate, ",this._bitRate),this.videoTrak=t.videoSegments,this.audioTrak=t.audioSegments,this.meta=t.meta,this.emit(MP4_EVENTS.UPDATEEME,this.meta),this.timeRange=this.getTimeRange(),this.bufferLoaded=new Uint8Array(0),e.abrupt("return",!0);case 27:case"end":return e.stop()}}),e,this)}))),function(){return o.apply(this,arguments)})},{key:"resetFragmentLoadState",value:function(e){for(var t=0;t<this.timeRange.length;t++)t<e?(this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!0):(this.timeRange[t].downloaded=!1,this.timeRange[t].isLoading=!1)}},{key:"getFragRange",value:function(e){var t,r,n,i,o=null;this.videoTrak&&(o=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1]);var a=null;this.audioTrak&&(a=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1]);var s=0,c=0;this.videoTrak&&e>=this.videoTrak.length-1&&(s=-1),this.audioTrak&&e>=this.audioTrak.length-1&&(c=-1);var u=[Math.min((null===(t=o)||void 0===t?void 0:t.range[0])||1/0,(null===(r=a)||void 0===r?void 0:r.range[0])||1/0),Math.max((null===(n=o)||void 0===n?void 0:n.range[1])+s||0,(null===(i=a)||void 0===i?void 0:i.range[1])+c||0)];return e<this.timeRange.length&&(this.timeRange[e].range=u),u}},{key:"load",value:(i=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this._loadSuccessCallBack=r,!this._switchBitRate||this._metaLoading){e.next=11;break}return this.log("[switchBitrate], switch bitRate start load, bitRate,",this._bitRate,", time,",t>=this.videoTrak.length?this.audioTrak[t].startTime:this.videoTrak[t].startTime,", fragIndex,",t),e.next=5,this._checkHasMeta();case 5:n=e.sent,this.resetFragmentLoadState(t),this.log("[switchBitrate], reset timerange state,",t),this._needInitSegment=!0,this.resetTansmuxer(),n&&(this._switchBitRate=!1);case 11:if(!this._switchBitRate||!this._metaLoading){e.next=13;break}return e.abrupt("return");case 13:i=this.getFragRange(t),(o=this.getFragmentFromCache(t,i))?(this.log("[mp4.load], segment ,",t,"Data In Cache",JSON.stringify(i),", needInit,",this._needInitSegment),this.timeRange[t].downloaded=!0,this.timeRange[t].isLoading=!1,this._needInitSegment=!1,this._loadSuccessCallBack&&this._loadSuccessCallBack(o)):(this.log("loadFragment,",t,",bitRate,",this._bitRate,",range,",JSON.stringify(i)),this.seekTime>0?(a=this.getSubRange(t,this.seekTime,i),this.loadFragment(t,a),this.seekTime=-1):this.loadFragment(t,i));case 16:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"getSubRange",value:function(e,t,r){var n=r[0],i=r[0],o=1,a=!1;if(this.log(">>>>>getSubRange time,",t,JSON.stringify(r)),this.videoTrak){var s=e<this.videoTrak.length?this.videoTrak[e]:this.videoTrak[this.videoTrak.length-1],c=s.frames.filter(getKeyFrameList),u=this.meta.videoTimescale,l=c[0].startTime/u;this.log(">>>>>getSubRange video, startTime,",s.startTime,",endTime,",s.endTime);for(var d=0;d<c.length;d++)this.log(">>>>>getSubRange video keyFrameList, startTime,",c[d].startTime/u,",range,",c[d].offset);for(;o<c.length;o++){var h=c[o].startTime/u;if(l<=t&&t<h&&r[0]<c[o-1].offset){n=c[o-1].offset,a=!0,this.log(">>>>>getSubRange video end, startTime,",l,",endTime,",h,",startRange,",n,", keyFrameIndex,",o-1);break}l=h}!a&&l<=t&&t<s.endTime+.8&&(n=c[o-1].offset,this.log(">>>>>getSubRange video last, startTime,",l,",endTime,",s.endTime,",startRange,",n))}if(o=1,this.audioTrak){var f=e<this.audioTrak.length?this.audioTrak[e]:this.audioTrak[this.audioTrak.length-1],p=f.frames,y=this.meta.audioTimescale;o=Math.floor((t*y-p[0].startTime)/f.frames[0].duration);for(var m=(o=Math.min(p.length-1,o))>0?p[o-1].startTime/y:p[0].startTime/y;o>=0&&o<p.length;)if(o>0&&m>t)m=p[o-=1].startTime/y;else{var g=(p[o].startTime+p[o].duration)/y;if(m<=t&&t<g&&r[0]<p[o].offset){i=p[o].offset,a=!0,this.log(">>>>>getSubRange audio end, startTime,",m,",endTime,",g,",startRange,",i,", index,",o);break}m=g,o++}}var v=[Math.min(i,n),r[1]];return this.log(">>>>>getSubRange finalRange ",JSON.stringify(v),",oldRange,",JSON.stringify(r)),v}},{key:"getFragmentFromCache",value:function(e,t){var r=this.preloadCache;if(!r||!r.segList)return null;for(var n=-1,i=r.segList,o=r.initSeg,a=0;a<i.length;a++)if(i[a].index===e){n=a;break}if(n<0)return null;var s=i[n];if(console.log(">>>>preloadCache",n,s,s.range,t[1],s.range[1]>=t[1]),s.range[1]>=t[1]){var c=[this.timeRange[e].startTime,this.timeRange[e].endTime];return{buffer:s.buffer,range:t,context:{range:t,fragIndex:e,state:!0,timeRange:[c[0],c[1]]},state:!0,initSeg:this._needInitSegment?o:void 0}}return null}},{key:"_mux",value:function(e,t,r,n){this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime<0&&(this.timeRecord.startMuxTime=util.nowTime(),this.firstFrameTime.startMuxTime=util.nowTime()-this.timeRecord.startLoadTime);var i=this.getSamplesRange(r,"video"),o=this.getSamplesRange(r,"audio"),a=[t,t+e.byteLength];if(this.transmuxerWorkerControl){var s={range:a,state:n,fragIndex:r};this.log("[transmuxerworker start] ,range, ",JSON.stringify(a),",dataLen,",e.byteLength,s),this.transmuxerWorkerControl.transmux(this.workerSequence,e,t,i,o,this.meta.moov,this.useEME,this.kidValue,s)}else try{this.MP4Demuxer||(this.MP4Demuxer=new MP4Demuxer(this.videoTrak,this.audioTrak,null,{openLog:checkOpenLog()}));var c,u=this.MP4Demuxer.demuxPart(e,t,i,o,this.meta.moov,this.useEME,this.kidValue);this.FMP4Remuxer||this.checkCodecH265()&&!this.options.supportHevc||(this.FMP4Remuxer=new FMP4Remuxer(this.MP4Demuxer.videoTrack,this.MP4Demuxer.audioTrack,{openLog:checkOpenLog()})),this.log("[mux], videoTimeRange,",u.videoTrack?[u.videoTrack.startPts,u.videoTrack.endPts]:null,",audioTimeRange,",u.audioTrack?[u.audioTrack.startPts,u.audioTrack.endPts]:null);var l=[Math.min(u.videoTrack.startPts,u.audioTrack.startPts),Math.max(u.videoTrack.endPts,u.audioTrack.endPts)];if(this.FMP4Remuxer){var d=this.FMP4Remuxer.remux(this._needInitSegment,{initMerge:!0,range:a});d.initSegment&&(this._needInitSegment=!1),c={buffer:util.concatData(d.audioSegment,d.videoSegment),range:a,state:n,context:{range:a,fragIndex:r,timeRange:l},initSeg:d.initSegment}}else c={videoTrack:u.videoTrack,audioTrack:u.audioTrack,buffer:null,range:a,state:n,context:{range:a,fragIndex:r,timeRange:l}};this.firstFrameTime.firstmux<0&&this.timeRecord.startMuxTime>0&&(this.firstFrameTime.firstmux=util.nowTime()-this.timeRecord.startMuxTime),this._loadSuccessCallBack&&this._loadSuccessCallBack(c)}catch(n){console.error("mux err:",n);var h=new ParserError(ERROR_TYPES.remux,ERROR_CODES.muxError,{msg:JSON.stringify(n)});this.errorHandler(h,"mux",{fragIndex:r,range:[t,t+e.byteLength]})}}},{key:"getSamplesRange",value:function(e,t){var r=[];switch(t){case"video":if(this.videoTrak&&e<this.videoTrak.length){var n=this.videoTrak[e].frames;r.push(n[0].index),r.push(n[n.length-1].index)}break;case"audio":if(this.audioTrak&&e<this.audioTrak.length){var i=this.audioTrak[e].frames;r.push(i[0].index),r.push(i[i.length-1].index)}break;default:console.warn("[getSamplesRange] type ",t," is invalid")}return r}},{key:"loadFragment",value:(n=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this._isPending&&r!==[0,0]&&!this.timeRange[t].isLoading){e.next=2;break}return e.abrupt("return");case 2:if(this.log("[MP4.loadFragment] ,fragIndex,",t,",range ",r,",len ,",r[1]-r[0],", bufferLoaded_Len,",this.bufferLoaded.byteLength),this._segmentToBitRateMap.set(t,this._bitRate),this.timeRecord.startLoadTime<0&&(this.timeRecord.startLoadTime=util.nowTime()),!(r.length>=2&&r[1]&&r[1]>0&&r[1]<=this.bufferLoaded.byteLength)){e.next=15;break}this.timeRange[t].isLoading=!0,n=Math.max(r[0],this.bufferLoadedPos),i=new Uint8Array(this.bufferLoaded.slice(n,r[1])),this.log("[mp4.loadFragment] has all data: ",n,r[1]),this.timeRange[t].downloaded=!0,this.bufferLoadedPos=-1,this._mux(i,n,t,!0),e.next=38;break;case 15:if(!(r.length>=2&&r[0]&&r[0]<=this.bufferLoaded.byteLength)){e.next=27;break}if(this.timeRange[t].isLoading){e.next=25;break}if(o=Math.max(r[0],this.bufferLoadedPos),!((a=new Uint8Array(this.bufferLoaded.slice(o,r[1]))).byteLength>0)){e.next=24;break}return this.bufferLoadedPos=o+a.byteLength,this.log("[mp4.loadFragment] has part data: ",o,o+a.byteLength),this._mux(a,o,t,r[1]<=this.bufferLoadedPos),e.abrupt("return");case 24:if(!this._metaLoading&&!this.timeRange[t].isLoading)try{this.log("[mp4.loadFragment] ready to load part data >>> ",this.bufferLoaded.byteLength,r[1]),this.timeRange[t].isLoading=!0,this.MP4Loader.loadData([this.bufferLoaded.byteLength,r[1]],this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen})}catch(e){this.errorHandler(e,"MP4Loader.loadData",{range:[this.bufferLoaded.byteLength,r[1]],fragIndex:t})}case 25:e.next=38;break;case 27:if(this._metaLoading&&!(r[0]>=this.CHUNK_SIZE)||this.timeRange[t].isLoading){e.next=38;break}return this.timeRange[t].isLoading=!0,this.log("[mp4.loadFragment],ready to load all data ,segmentIdx, ",t,",range >>> ",JSON.stringify(r)),e.prev=30,e.next=33,this.MP4Loader.loadData(r,this.MP4Loader.cache,{index:t,onProgress:this.onprogressDataArrive,onProcessMinLen:this.options.onProcessMinLen});case 33:e.next=38;break;case 35:e.prev=35,e.t0=e.catch(30),this.errorHandler(e.t0,"MP4Loader.loadData",{range:r,fragIndex:t});case 38:case"end":return e.stop()}}),e,this,[[30,35]])}))),function(e,t){return n.apply(this,arguments)})},{key:"loadAllFragmentData",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var i,o,a;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!this.hasDestroyed){e.next=2;break}return e.abrupt("return");case 2:return i=this.getFragRange(t),e.prev=3,e.next=6,this.MP4Loader.loadData(i,this.MP4Loader.cache,{index:t});case 6:if(o=e.sent,this.log("loadAllFragmentData after",JSON.stringify(i),o),o&&o.data){e.next=11;break}return n(new Error("response null")),e.abrupt("return");case 11:a=o.data,this._loadSuccessCallBack=r,this._mux(a,i[0],t,!0),e.next=20;break;case 16:e.prev=16,e.t0=e.catch(3),console.error("[MP4] loadAllFragmentData error",e.t0),n(e.t0);case 20:case"end":return e.stop()}}),e,this,[[3,16]])}))),function(e,t,n){return r.apply(this,arguments)})},{key:"cancelLoading",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.MP4Loader;case 2:if(e.t0=e.sent,!e.t0){e.next=5;break}this.MP4Loader.cancel();case 5:case"end":return e.stop()}}),e,this)}))),function(){return t.apply(this,arguments)})},{key:"update",value:function(e){this.url=e}},{key:"getDataBitRate",value:function(e){return this._segmentToBitRateMap.get(e)}},{key:"checkCodecH265",value:function(){return this.meta&&(this.meta.videoCodec.indexOf("hvc1")>-1||this.meta.videoCodec.indexOf("hev1")>-1)}},{key:"destroy",value:function(){this.hasDestroyed||(this.resetTansmuxer(),this.transmuxerWorkerControl&&this.transmuxerWorkerControl.destroy(),this.size=0,this._isPending=!1,this._metaLoading=!1,this.bufferLoadedPos=0,this.bufferLoaded=new Uint8Array(0),this._bitRateInfoMap.clear(),this._segmentToBitRateMap.clear(),this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy()),this.hasDestroyed=!0)}},{key:"resetTansmuxer",value:function(){this.MP4Demuxer&&this.MP4Demuxer.reset(),this.MP4Demuxer=null,this.FMP4Remuxer&&this.FMP4Remuxer.reset(),this.FMP4Remuxer=null,this.transmuxerWorkerControl&&this.transmuxerWorkerControl.reset()}}],[{key:"getDefaultConfig",value:function(){return{onProcessMinLen:5120,xhrSetup:null,chunkSize:8e5,loadSize:800,isCache:!1,playerId:"",vid:"",ext:{}}}}]),d}();function getKeyFrameList(e){if(e.keyframe)return e}var ProxyPromise=function(){function e(){var t,r;_classCallCheck$6(this,e);var n=new Promise((function(e,n){t=e,r=n}));return n.resolve=function(e){t(e),n.state="fulfilled"},n.reject=function(e){r(e),n.state="rejected",n.isBreak="DESTROYED"===e},n.state="pending",n}return _createClass$6(e,[{key:"resolve",value:function(e){}},{key:"reject",value:function(e){}}]),e}(),XHR=_createClass$6((function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=t.url,n=t.method,i=void 0===n?"GET":n,o=t.type,a=void 0===o?"arraybuffer":o,s=t.data,c=void 0===s?{}:s;return _classCallCheck$6(this,e),new Promise((function(e,t){var n=new window.XMLHttpRequest,o=i.toUpperCase(),s=[];if(a&&(n.responseType=a),Object.keys(c).map((function(e){s.push("k=".concat(c[e]))})),"GET"===o)n.open(o,"".concat(r,"?").concat(s.join("&"))),n.send();else{if("POST"!==o)throw new Error("xhr ".concat(o," is not supported"));n.open(o,r,!0),n.setRequestHeader("Content-Type","application/json"),n.send(JSON.stringify(c))}n.onload=function(){200===n.status||206===n.status?e(n):t(n)},n.onerror=function(){t(n)}}))}));function getPlayLicenses(e,t,r){var n=new ProxyPromise;return new XHR({type:"json",method:"POST",url:r,data:{drm_type:"22",license_request:[{vid:e,kids:[].concat(t)}]}}).then((function(r){var i=r.response;if(i){var o=i.play_licenses[e][t];n.resolve(o)}else n.reject()})).catch((function(){n.reject()})),n}function getKeyValue(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,r=arguments.length>2?arguments[2]:void 0,n=arguments.length>3?arguments[3]:void 0,i=new ProxyPromise;if(r){log$2("[getKeyValue]>before openBox");var o=n.awManager.openBox(r);if(log$2("[getKeyValue]>after openBox: ",o),t){var a={clearKeys:{}};a.clearKeys[t]=o,i.resolve(a)}else i.resolve(o)}else{var s=getPlayLicenses(e,t,n.config.getLicenseUrl);s.id="requestPromise",n._addPendingPromise(s),s.then((function(e){if(n._removePendingPromise(s),n.awManager){log$2("[getKeyValue]>before openBox");var r=n.awManager.openBox(e);log$2("[getKeyValue]>after openBox: ",r);var o={clearKeys:{}};o.clearKeys[t]=r,i.resolve(o)}else i.reject({errDes:"awManager not exist, player destroyed"}),log$2("[getKeyValue]>awManager not exist, player destroyed")})).catch((function(e){i.reject(e),log$2("[getKeyValue]>requestPromise reject")}))}return i}var userGestureEventMiddleware={playBtnClick:function(e,t,r,n){e.paused||e.waitingMoreBuffer&&(e.waitingMoreBuffer=!1),n.call(e,t,r)}},videoEventMiddleware={waiting:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer=!0,t(n,e)},play:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer||t(n,e)},pause:function(e,t){var r=e.player,n=e.eventName;r.waitingMoreBuffer||t(n,e)},seeking:function(e,t){var r=e.player,n=e.eventName;r.isSeekingStart=!0,t(n,e)},progress:function(e,t){log$2(">>>>progress");var r=e.player,n=e.eventName;if(r.waitingMoreBuffer){var i=r.getBufferedRange(r.buffered2);0===i[0]&&0===i[1]||(void 0===r.inWaitingStart||r.isSeekingStart?(log$2("progress 起播或seek结束"),i[1]-r.currentTime>=(r.config.canplayWaterLevel||1)||i[1]>r.duration-1?(log$2("progress 出起播水位"),r.play()):(log$2("progress 未出起播水位"),r.emit("waiting"))):(log$2("progress video卡顿结束"),i[1]-r.currentTime>=(r.config.bufferWaterLevel||5)||i[1]>r.duration-1?(log$2("progress 出卡顿水位"),r.play()):(log$2("progress 未出卡顿水位"),r.emit("waiting"))))}t(n,e)},playing:function(e,t){var r=e.player,n=e.eventName;log$2("playing");var i=r.getBufferedRange(r.buffered2);if(0===i[0]&&0===i[1])return log$2("playing 当前播放时刻没有缓存 未出水位"),r.waitingMoreBuffer=!0,r.pause(),void t.call("waiting",e);void 0===r.inWaitingStart||r.isSeekingStart?(log$2("playing 起播或seek结束"),i[1]-r.currentTime>=(r.config.canplayWaterLevel||1)||i[1]>r.duration-1?(log$2("playing 出起播水位"),r.waitingMoreBuffer=!1,r.isSeekingStart=!1,t(n,e)):(log$2("playing 未出起播水位"),r.waitingMoreBuffer=!0,r.pause(),t.call("waiting",e))):(log$2("playing video卡顿结束"),i[1]-r.currentTime>=(r.config.bufferWaterLevel||5)||i[1]>r.duration-1?(log$2("playing 出卡顿水位"),r.waitingMoreBuffer=!1,t(n,e)):(log$2("playing 未出卡顿水位"),r.waitingMoreBuffer=!0,r.pause(),t.call("waiting",e)))}};function offInDestroy(e,t,r,n){e.once(n,(function i(){e.off(t,r),e.off(n,i)}))}function on(e,t,r,n){if(n)e.on(t,r),offInDestroy(e,t,r,n);else{e.on(t,(function(e){r(e)}))}}var EME=function(e){_inherits$4(r,EventEmitter$1);var t=_createSuper$4(r);function r(e){var n;return _classCallCheck$6(this,r),(n=t.call(this)).drm=e,n.KEYSYSTEM_TYPE="",n.keys={},n.drm.clearKeys&&(n.KEYSYSTEM_TYPE="org.w3.clearkey",n.keys=n.drm.clearKeys),n.options=[],n.ensurePromise=void 0,n}return _createClass$6(r,[{key:"updateDrm",value:function(e){this.drm=e,this.keys=this.drm.clearKeys}},{key:"setOptions",value:function(){var e=[{contentType:'video/mp4; codecs="avc1.42E01E"'},{contentType:'video/webm; codecs="vp8"'}],t={videoCapabilities:e},r={videoCapabilities:e,persistentState:"required",sessionTypes:["persistent-license"]};this.options=[r,t]}},{key:"bail",value:function(e){}},{key:"UpdateSessionFunc",value:function(e){var t=this;return function(r){var n=[],i=[];Object.keys(e).forEach((function(t){var r=e[t],o=util.fromHex(t),a=util.fromHex(r),s={kty:"oct",kid:util.toBase64(o,!1),k:util.toBase64(a,!1)};n.push(s),i.push(s.kid)}));var o={keys:n},a=JSON.stringify(o);r.target.update(util.StringToArrayBuffer(a)).then((function(){}),t.bail(" MediaKeySession update failed"))}}},{key:"KeysChange",value:function(e){}},{key:"EnsureMediaKeysCreated",value:function(e,t,r){return this.ensurePromise||(this.ensurePromise=navigator.requestMediaKeySystemAccess(t,r).then((function(e){return e.createMediaKeys()}),this.bail(" Failed to request key system access.")).then((function(t){return e.setMediaKeys(t)}),this.bail(" failed to create MediaKeys object"))),this.ensurePromise}},{key:"SetupEME",value:function(e,t){var r=this;e.sessions=[],on(this,"encrypted",(function(){var t=JSON.stringify({kids:["0123456789abcdef0123456789abcdef"]}),n=new Uint8Array(util.toUTF8(t));r.EnsureMediaKeysCreated(e,r.KEYSYSTEM_TYPE,r.options).then((function(){var t=e.mediaKeys.createSession();return e.sessions.push(t),t.addEventListener("message",r.UpdateSessionFunc(r.keys)),t.addEventListener("keystatuseschange",r.KeysChange),t.generateRequest("keyids",n.buffer)}),r.bail(" failed to ensure MediaKeys on HTMLMediaElement")).then((function(){}),r.bail(" Failed to generate request."))}))}}]),r}(),WasmManager=function(){function e(){_classCallCheck$6(this,e),this.queue=[]}return _createClass$6(e,[{key:"push",value:function(e){this.queue.push(e)}},{key:"startup",value:function(){return Promise.all(this.queue)}},{key:"destroy",value:function(){this.queue=[]}}]),e}(),$$r=_export$2,lastIndexOf5=arrayLastIndexOf$1;$$r({target:"Array",proto:!0,forced:arrayLastIndexOf$1!==[].lastIndexOf},{lastIndexOf:arrayLastIndexOf$1});var $$q=_export$2,fails$g=fails$1T,toIndexedObject$3=toIndexedObject$x,nativeGetOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor$2.f,DESCRIPTORS$5=descriptors$4,FAILS_ON_PRIMITIVES$2=fails$g((function(){nativeGetOwnPropertyDescriptor$1(1)})),FORCED$8=!DESCRIPTORS$5||FAILS_ON_PRIMITIVES$2;$$q({target:"Object",stat:!0,forced:FORCED$8,sham:!DESCRIPTORS$5},{getOwnPropertyDescriptor:function(e,t){return nativeGetOwnPropertyDescriptor$1(toIndexedObject$3(e),t)}});var $$p=_export$2,DESCRIPTORS$4=descriptors$4,defineProperty$4=objectDefineProperty$2.f;$$p({target:"Object",stat:!0,forced:Object.defineProperty!==defineProperty$4,sham:!DESCRIPTORS$4},{defineProperty:defineProperty$4});var createTypedArrayConstructor$6=typedArrayConstructorExports$1;createTypedArrayConstructor$6("Int8",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$5=typedArrayConstructorExports$1;createTypedArrayConstructor$5("Int16",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$4=typedArrayConstructorExports$1;createTypedArrayConstructor$4("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$3=typedArrayConstructorExports$1;createTypedArrayConstructor$3("Uint16",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$2=typedArrayConstructorExports$1;createTypedArrayConstructor$2("Uint32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var createTypedArrayConstructor$1=typedArrayConstructorExports$1;createTypedArrayConstructor$1("Float64",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var $$o=_export$2,fails$f=fails$1T,$imul=Math.imul,FORCED$7=fails$f((function(){return-5!=$imul(4294967295,5)||2!=$imul.length}));$$o({target:"Math",stat:!0,forced:FORCED$7},{imul:function(e,t){var r=65535,n=+e,i=+t,o=r&n,a=r&i;return 0|o*a+((r&n>>>16)*a+o*(r&i>>>16)<<16>>>0)}});var mathSign=Math.sign||function(e){var t=+e;return 0==t||t!=t?t:t<0?-1:1},sign2=mathSign,abs=Math.abs,pow$1=Math.pow,EPSILON=pow$1(2,-52),EPSILON32=pow$1(2,-23),MAX32=pow$1(2,127)*(2-EPSILON32),MIN32=pow$1(2,-126),roundTiesToEven=function(e){return e+1/EPSILON-1/EPSILON},mathFround=Math.fround||function(e){var t,r,n=+e,i=abs(n),o=sign2(n);return i<MIN32?o*roundTiesToEven(i/MIN32/EPSILON32)*MIN32*EPSILON32:(r=(t=(1+EPSILON32/EPSILON)*i)-(t-i))>MAX32||r!=r?o*(1/0):o*r},$$n=_export$2,fround2=mathFround;$$n({target:"Math",stat:!0},{fround:fround2});var $$m=_export$2,floor$1=Math.floor,log$1=Math.log,LOG2E=Math.LOG2E;$$m({target:"Math",stat:!0},{clz32:function(e){var t=e>>>0;return t?31-floor$1(log$1(t+.5)*LOG2E):32}});var $$l=_export$2,trunc4=mathTrunc$2;$$l({target:"Math",stat:!0},{trunc:trunc4});var $$k=_export$2,uncurryThis$a=functionUncurryThisClause$2,getOwnPropertyDescriptor$1=objectGetOwnPropertyDescriptor$2.f,toLength=toLength$k,toString$7=toString$E,notARegExp=notARegexp,requireObjectCoercible$1=requireObjectCoercible$m,correctIsRegExpLogic=correctIsRegexpLogic,nativeStartsWith=uncurryThis$a("".startsWith),stringSlice$3=uncurryThis$a("".slice),min=Math.min,CORRECT_IS_REGEXP_LOGIC=correctIsRegExpLogic("startsWith"),MDN_POLYFILL_BUG=!CORRECT_IS_REGEXP_LOGIC&&!!function(){var e=getOwnPropertyDescriptor$1(String.prototype,"startsWith");return e&&!e.writable}();$$k({target:"String",proto:!0,forced:!MDN_POLYFILL_BUG&&!CORRECT_IS_REGEXP_LOGIC},{startsWith:function(e){var t=toString$7(requireObjectCoercible$1(this));notARegExp(e);var r=toLength(min(arguments.length>1?arguments[1]:void 0,t.length)),n=toString$7(e);return nativeStartsWith?nativeStartsWith(t,n,r):stringSlice$3(t,r,r+n.length)===n}});var aw=function(){var e="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0;return function(t){var r,n=void 0!==(t=t||{})?t:{},i={};for(r in n)n.hasOwnProperty(r)&&(i[r]=n[r]);var o=!0;if(n.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -s ENVIRONMENT=web or -s ENVIRONMENT=node)");var a,s="";if(document.currentScript&&(s=document.currentScript.src),e&&(s=e),s=0!==s.indexOf("blob:")?s.substr(0,s.lastIndexOf("/")+1):"","object"!==("undefined"==typeof window?"undefined":_typeof$3(window))&&"function"!=typeof importScripts)throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");var c,u=n.print||console.log.bind(console),l=n.printErr||console.warn.bind(console);for(r in i)i.hasOwnProperty(r)&&(n[r]=i[r]);function d(e){d.shown||(d.shown={}),d.shown[e]||(d.shown[e]=1,l(e))}i=null,n.arguments&&n.arguments,Object.getOwnPropertyDescriptor(n,"arguments")||Object.defineProperty(n,"arguments",{configurable:!0,get:function(){F("Module.arguments has been replaced with plain arguments_")}}),n.thisProgram&&n.thisProgram,Object.getOwnPropertyDescriptor(n,"thisProgram")||Object.defineProperty(n,"thisProgram",{configurable:!0,get:function(){F("Module.thisProgram has been replaced with plain thisProgram")}}),n.quit&&n.quit,Object.getOwnPropertyDescriptor(n,"quit")||Object.defineProperty(n,"quit",{configurable:!0,get:function(){F("Module.quit has been replaced with plain quit_")}}),m(void 0===n.memoryInitializerPrefixURL,"Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.pthreadMainPrefixURL,"Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.cdInitializerPrefixURL,"Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.filePackagePrefixURL,"Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),m(void 0===n.read,"Module.read option was removed (modify read_ in JS)"),m(void 0===n.readAsync,"Module.readAsync option was removed (modify readAsync in JS)"),m(void 0===n.readBinary,"Module.readBinary option was removed (modify readBinary in JS)"),m(void 0===n.setWindowTitle,"Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),Object.getOwnPropertyDescriptor(n,"read")||Object.defineProperty(n,"read",{configurable:!0,get:function(){F("Module.read has been replaced with plain read_")}}),Object.getOwnPropertyDescriptor(n,"readAsync")||Object.defineProperty(n,"readAsync",{configurable:!0,get:function(){F("Module.readAsync has been replaced with plain readAsync")}}),Object.getOwnPropertyDescriptor(n,"readBinary")||Object.defineProperty(n,"readBinary",{configurable:!0,get:function(){F("Module.readBinary has been replaced with plain readBinary")}}),de=function(){F("cannot use the stack before compiled code is ready to run, and has provided stack access")},n.wasmBinary&&(c=n.wasmBinary),Object.getOwnPropertyDescriptor(n,"wasmBinary")||Object.defineProperty(n,"wasmBinary",{configurable:!0,get:function(){F("Module.wasmBinary has been replaced with plain wasmBinary")}}),n.noExitRuntime&&n.noExitRuntime,Object.getOwnPropertyDescriptor(n,"noExitRuntime")||Object.defineProperty(n,"noExitRuntime",{configurable:!0,get:function(){F("Module.noExitRuntime has been replaced with plain noExitRuntime")}});var h,f={Memory:function(e){return{buffer:new ArrayBuffer(65536*e.initial),grow:function(e){var t=this.buffer,r=fe(e);return m(this.buffer!==t),r}}},Table:function(e){var t=new Array(e.initial);return t.grow=function(e){t.length>=1&&F("Unable to grow wasm table. Use a higher value for RESERVED_FUNCTION_POINTERS or set ALLOW_TABLE_GROWTH."),t.push(null)},t.set=function(e,r){t[e]=r},t.get=function(e){return t[e]},t},Module:function(e){return{}},Instance:function(e,t){var r,n=(r=p,function(e,t,n){var i=t.memory,o=r,a=new e.Int8Array(n);new e.Int16Array(n);var s=new e.Int32Array(n),c=new e.Uint8Array(n);new e.Uint16Array(n);var u=new e.Uint32Array(n);new e.Float32Array(n),new e.Float64Array(n);var l=e.Math.imul;e.Math.fround,e.Math.abs,e.Math.clz32,e.Math.min,e.Math.max,e.Math.floor,e.Math.ceil,e.Math.sqrt,t.abort,e.NaN,e.Infinity;var d=t.emscripten_memcpy_big,h=t.emscripten_resize_heap,f=t.__unlock,p=t.__lock,y=9744;function m(e){var t,r=0;return t=A(),(e=(r=s[388])+e|0)>>>0<=t<<16>>>0||h(0|e)?(s[388]=e,r):(s[256]=48,-1)}function g(e){var t,r=0,n=0,i=0,o=0,a=0,l=0,d=0,h=0,f=0,p=0,g=0,v=0;y=t=y-16|0;e:{t:{r:{n:{i:{o:{a:{s:{c:{u:{l:{if((e|=0)>>>0<=244){if(3&(r=(a=s[261])>>>(e=(l=e>>>0<11?16:e+11&-8)>>>3))){e=(r=s[1092+(o=(n=e+(1&(-1^r))|0)<<3)>>2])+8|0,(0|(i=s[r+8>>2]))!=(0|(o=o+1084|0))?(s[i+12>>2]=o,s[o+8>>2]=i):(g=1044,v=$(n)&a,s[g>>2]=v),n<<=3,s[r+4>>2]=3|n,s[4+(r=r+n|0)>>2]=1|s[r+4>>2];break e}if(l>>>0<=(h=s[263])>>>0)break l;if(r){n=r=(e=(0-(e=(0-(n=2<<e)|n)&r<<e)&e)-1|0)>>>12&16,n|=r=(e>>>=r)>>>5&8,n|=r=(e>>>=r)>>>2&4,r=s[1092+(i=(n=((n|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)|0)<<3)>>2],(0|(e=s[r+8>>2]))!=(0|(i=i+1084|0))?(s[e+12>>2]=i,s[i+8>>2]=e):(a=$(n)&a,s[261]=a),e=r+8|0,s[r+4>>2]=3|l,o=(n<<=3)-l|0,s[4+(d=r+l|0)>>2]=1|o,s[r+n>>2]=o,h&&(r=1084+((n=h>>>3)<<3)|0,i=s[266],(n=1<<n)&a?n=s[r+8>>2]:(s[261]=n|a,n=r),s[r+8>>2]=i,s[n+12>>2]=i,s[i+12>>2]=r,s[i+8>>2]=n),s[266]=d,s[263]=o;break e}if(!(p=s[262]))break l;for(n=r=(e=(p&0-p)-1|0)>>>12&16,n|=r=(e>>>=r)>>>5&8,n|=r=(e>>>=r)>>>2&4,r=s[1348+(((n|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)<<2)>>2],i=(-8&s[r+4>>2])-l|0,n=r;(e=s[n+16>>2])||(e=s[n+20>>2]);)i=(n=(o=(-8&s[e+4>>2])-l|0)>>>0<i>>>0)?o:i,r=n?e:r,n=e;if(f=s[r+24>>2],(0|(o=s[r+12>>2]))!=(0|r)){e=s[r+8>>2],s[e+12>>2]=o,s[o+8>>2]=e;break t}if(!(e=s[(n=r+20|0)>>2])){if(!(e=s[r+16>>2]))break u;n=r+16|0}for(;d=n,o=e,(e=s[(n=e+20|0)>>2])||(n=o+16|0,e=s[o+16>>2]););s[d>>2]=0;break t}if(l=-1,!(e>>>0>4294967231)&&(l=-8&(r=e+11|0),h=s[262])){n=0-l|0,a=0,(r>>>=8)&&(a=31,l>>>0>16777215||(a=28+((e=((a=(r<<=i=r+1048320>>>16&8)<<(e=r+520192>>>16&4))<<(r=a+245760>>>16&2)>>>15)-(r|e|i)|0)<<1|l>>>e+21&1)|0));d:{h:{if(i=s[1348+(a<<2)>>2])for(r=l<<(31==(0|a)?0:25-(a>>>1)|0),e=0;;){if(!((d=(-8&s[i+4>>2])-l|0)>>>0>=n>>>0||(o=i,n=d))){n=0,e=i;break h}if(d=s[i+20>>2],i=s[16+((r>>>29&4)+i|0)>>2],e=d?(0|d)==(0|i)?e:d:e,r<<=0!=(0|i),!i)break}else e=0;if(!(e|o)){if(!(e=(0-(e=2<<a)|e)&h))break l;i=r=(e=(e&0-e)-1|0)>>>12&16,i|=r=(e>>>=r)>>>5&8,i|=r=(e>>>=r)>>>2&4,e=s[1348+(((i|=r=(e>>>=r)>>>1&2)|(r=(e>>>=r)>>>1&1))+(e>>>r)<<2)>>2]}if(!e)break d}for(;n=(r=(i=(-8&s[e+4>>2])-l|0)>>>0<n>>>0)?i:n,o=r?e:o,e=(r=s[e+16>>2])||s[e+20>>2];);}if(!(!o|n>>>0>=s[263]-l>>>0)){if(d=s[o+24>>2],(0|o)!=(0|(r=s[o+12>>2]))){e=s[o+8>>2],s[e+12>>2]=r,s[r+8>>2]=e;break r}if(!(e=s[(i=o+20|0)>>2])){if(!(e=s[o+16>>2]))break c;i=o+16|0}for(;a=i,r=e,(e=s[(i=e+20|0)>>2])||(i=r+16|0,e=s[r+16>>2]););s[a>>2]=0;break r}}}if((r=s[263])>>>0>=l>>>0){e=s[266],(n=r-l|0)>>>0>=16?(s[263]=n,i=e+l|0,s[266]=i,s[i+4>>2]=1|n,s[e+r>>2]=n,s[e+4>>2]=3|l):(s[266]=0,s[263]=0,s[e+4>>2]=3|r,s[4+(r=e+r|0)>>2]=1|s[r+4>>2]),e=e+8|0;break e}if((i=s[264])>>>0>l>>>0){r=i-l|0,s[264]=r,n=(e=s[267])+l|0,s[267]=n,s[n+4>>2]=1|r,s[e+4>>2]=3|l,e=e+8|0;break e}if(e=0,n=o=l+47|0,s[379]?r=s[381]:(s[382]=-1,s[383]=-1,s[380]=4096,s[381]=4096,s[379]=t+12&-16^1431655768,s[384]=0,s[372]=0,r=4096),(n=(a=n+r|0)&(d=0-r|0))>>>0<=l>>>0)break e;if((r=s[371])&&(f=(h=s[369])+n|0)>>>0<=h>>>0|f>>>0>r>>>0)break e;if(4&c[1488])break o;l:{d:{if(r=s[267])for(e=1492;;){if((h=s[e>>2])+s[e+4>>2]>>>0>r>>>0&&h>>>0<=r>>>0)break d;if(!(e=s[e+8>>2]))break}if(-1==(0|(r=m(0))))break a;if(a=n,(i=(e=s[380])+-1|0)&r&&(a=(n-r|0)+(r+i&0-e)|0),a>>>0<=l>>>0|a>>>0>2147483646)break a;if((e=s[371])&&(d=(i=s[369])+a|0)>>>0<=i>>>0|d>>>0>e>>>0)break a;if((0|r)!=(0|(e=m(a))))break l;break i}if((a=d&a-i)>>>0>2147483646)break a;if((0|(r=m(a)))==(s[e>>2]+s[e+4>>2]|0))break s;e=r}if(r=e,!(l+48>>>0<=a>>>0|a>>>0>2147483646|-1==(0|e))){if((e=(e=s[381])+(o-a|0)&0-e)>>>0>2147483646)break i;if(-1!=(0|m(e))){a=e+a|0;break i}m(0-a|0);break a}if(-1!=(0|r))break i;break a}o=0;break t}r=0;break r}if(-1!=(0|r))break i}s[372]=4|s[372]}if(n>>>0>2147483646)break n;if((r=m(n))>>>0>=(e=m(0))>>>0|-1==(0|r)|-1==(0|e))break n;if((a=e-r|0)>>>0<=l+40>>>0)break n}e=s[369]+a|0,s[369]=e,e>>>0>u[370]&&(s[370]=e);i:{o:{a:{if(n=s[267]){for(e=1492;;){if(((i=s[e>>2])+(o=s[e+4>>2])|0)==(0|r))break a;if(!(e=s[e+8>>2]))break}break o}for(r>>>0>=(e=s[265])>>>0&&e||(s[265]=r),e=0,s[374]=a,s[373]=r,s[269]=-1,s[270]=s[379],s[376]=0;i=1084+(n=e<<3)|0,s[n+1092>>2]=i,s[n+1096>>2]=i,32!=(0|(e=e+1|0)););i=(e=a+-40|0)-(n=r+8&7?-8-r&7:0)|0,s[264]=i,n=r+n|0,s[267]=n,s[n+4>>2]=1|i,s[4+(e+r|0)>>2]=40,s[268]=s[383];break i}if(!(8&c[e+12|0]|r>>>0<=n>>>0|i>>>0>n>>>0)){s[e+4>>2]=o+a,r=(e=n+8&7?-8-n&7:0)+n|0,s[267]=r,e=(i=s[264]+a|0)-e|0,s[264]=e,s[r+4>>2]=1|e,s[4+(n+i|0)>>2]=40,s[268]=s[383];break i}}r>>>0<(o=s[265])>>>0&&(s[265]=r,o=0),i=r+a|0,e=1492;o:{a:{s:{c:{u:{l:{for(;;){if((0|i)!=s[e>>2]){if(e=s[e+8>>2])continue;break l}break}if(!(8&c[e+12|0]))break u}for(e=1492;;){if((i=s[e>>2])>>>0<=n>>>0&&(o=i+s[e+4>>2]|0)>>>0>n>>>0)break c;e=s[e+8>>2]}}if(s[e>>2]=r,s[e+4>>2]=s[e+4>>2]+a,s[4+(f=(r+8&7?-8-r&7:0)+r|0)>>2]=3|l,e=((r=i+(i+8&7?-8-i&7:0)|0)-f|0)-l|0,d=l+f|0,(0|r)==(0|n)){s[267]=d,e=s[264]+e|0,s[264]=e,s[d+4>>2]=1|e;break a}if(s[266]==(0|r)){s[266]=d,e=s[263]+e|0,s[263]=e,s[d+4>>2]=1|e,s[e+d>>2]=e;break a}if(1==(3&(n=s[r+4>>2]))){p=-8&n;u:if(n>>>0<=255){if(o=n>>>3,n=s[r+8>>2],(0|(i=s[r+12>>2]))==(0|n)){g=1044,v=s[261]&$(o),s[g>>2]=v;break u}s[n+12>>2]=i,s[i+8>>2]=n}else{if(h=s[r+24>>2],(0|(a=s[r+12>>2]))==(0|r))if((l=s[(i=r+20|0)>>2])||(l=s[(i=r+16|0)>>2])){for(;n=i,a=l,(l=s[(i=l+20|0)>>2])||(i=a+16|0,l=s[a+16>>2]););s[n>>2]=0}else a=0;else n=s[r+8>>2],s[n+12>>2]=a,s[a+8>>2]=n;if(h){n=s[r+28>>2];l:{if(s[(i=1348+(n<<2)|0)>>2]==(0|r)){if(s[i>>2]=a,a)break l;g=1048,v=s[262]&$(n),s[g>>2]=v;break u}if(s[h+(s[h+16>>2]==(0|r)?16:20)>>2]=a,!a)break u}s[a+24>>2]=h,(n=s[r+16>>2])&&(s[a+16>>2]=n,s[n+24>>2]=a),(n=s[r+20>>2])&&(s[a+20>>2]=n,s[n+24>>2]=a)}}r=r+p|0,e=e+p|0}if(s[r+4>>2]=-2&s[r+4>>2],s[d+4>>2]=1|e,s[e+d>>2]=e,e>>>0<=255){e=1084+((r=e>>>3)<<3)|0,(n=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|n,r=e),s[e+8>>2]=d,s[r+12>>2]=d,s[d+12>>2]=e,s[d+8>>2]=r;break a}if(r=0,(i=e>>>8)&&(r=31,e>>>0>16777215||(r=28+((r=((l=(i<<=o=i+1048320>>>16&8)<<(r=i+520192>>>16&4))<<(i=l+245760>>>16&2)>>>15)-(i|r|o)|0)<<1|e>>>r+21&1)|0)),s[(n=d)+28>>2]=r,s[d+16>>2]=0,s[d+20>>2]=0,n=1348+(r<<2)|0,(i=s[262])&(o=1<<r)){for(i=e<<(31==(0|r)?0:25-(r>>>1)|0),r=s[n>>2];;){if(n=r,(-8&s[r+4>>2])==(0|e))break s;if(r=i>>>29,i<<=1,!(r=s[16+(o=(4&r)+n|0)>>2]))break}s[o+16>>2]=d}else s[262]=i|o,s[n>>2]=d;s[d+24>>2]=n,s[d+12>>2]=d,s[d+8>>2]=d;break a}for(d=(e=a+-40|0)-(i=r+8&7?-8-r&7:0)|0,s[264]=d,i=r+i|0,s[267]=i,s[i+4>>2]=1|d,s[4+(e+r|0)>>2]=40,s[268]=s[383],s[(i=(e=(o+(o+-39&7?39-o&7:0)|0)-47|0)>>>0<n+16>>>0?n:e)+4>>2]=27,e=s[376],s[i+16>>2]=s[375],s[i+20>>2]=e,e=s[374],s[i+8>>2]=s[373],s[i+12>>2]=e,s[375]=i+8,s[374]=a,s[373]=r,s[376]=0,e=i+24|0;s[e+4>>2]=7,r=e+8|0,e=e+4|0,r>>>0<o>>>0;);if((0|n)==(0|i))break i;if(s[i+4>>2]=-2&s[i+4>>2],o=i-n|0,s[n+4>>2]=1|o,s[i>>2]=o,o>>>0<=255){e=1084+((r=o>>>3)<<3)|0,(i=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|i,r=e),s[e+8>>2]=n,s[r+12>>2]=n,s[n+12>>2]=e,s[n+8>>2]=r;break i}if(s[n+16>>2]=0,s[n+20>>2]=0,e=0,(i=o>>>8)&&(e=31,o>>>0>16777215||(e=28+((e=((d=(i<<=a=i+1048320>>>16&8)<<(e=i+520192>>>16&4))<<(i=d+245760>>>16&2)>>>15)-(i|e|a)|0)<<1|o>>>e+21&1)|0)),s[(r=n)+28>>2]=e,r=1348+(e<<2)|0,(i=s[262])&(a=1<<e)){for(e=o<<(31==(0|e)?0:25-(e>>>1)|0),r=s[r>>2];;){if(i=r,(0|o)==(-8&s[r+4>>2]))break o;if(r=e>>>29,e<<=1,!(r=s[16+(a=i+(4&r)|0)>>2]))break}s[a+16>>2]=n,s[n+24>>2]=i}else s[262]=i|a,s[r>>2]=n,s[n+24>>2]=r;s[n+12>>2]=n,s[n+8>>2]=n;break i}e=s[n+8>>2],s[e+12>>2]=d,s[n+8>>2]=d,s[d+24>>2]=0,s[d+12>>2]=n,s[d+8>>2]=e}e=f+8|0;break e}e=s[i+8>>2],s[e+12>>2]=n,s[i+8>>2]=n,s[n+24>>2]=0,s[n+12>>2]=i,s[n+8>>2]=e}if(!((e=s[264])>>>0<=l>>>0)){r=e-l|0,s[264]=r,n=(e=s[267])+l|0,s[267]=n,s[n+4>>2]=1|r,s[e+4>>2]=3|l,e=e+8|0;break e}}s[256]=48,e=0;break e}r:if(d){e=s[o+28>>2];n:{if(s[(i=1348+(e<<2)|0)>>2]==(0|o)){if(s[i>>2]=r,r)break n;h=$(e)&h,s[262]=h;break r}if(s[d+(s[d+16>>2]==(0|o)?16:20)>>2]=r,!r)break r}s[r+24>>2]=d,(e=s[o+16>>2])&&(s[r+16>>2]=e,s[e+24>>2]=r),(e=s[o+20>>2])&&(s[r+20>>2]=e,s[e+24>>2]=r)}r:if(n>>>0<=15)e=n+l|0,s[o+4>>2]=3|e,s[4+(e=e+o|0)>>2]=1|s[e+4>>2];else if(s[o+4>>2]=3|l,s[4+(i=o+l|0)>>2]=1|n,s[n+i>>2]=n,n>>>0<=255)e=1084+((r=n>>>3)<<3)|0,(n=s[261])&(r=1<<r)?r=s[e+8>>2]:(s[261]=r|n,r=e),s[e+8>>2]=i,s[r+12>>2]=i,s[i+12>>2]=e,s[i+8>>2]=r;else{e=0,(l=n>>>8)&&(e=31,n>>>0>16777215||(e=28+((e=((d=(l<<=a=l+1048320>>>16&8)<<(e=l+520192>>>16&4))<<(l=d+245760>>>16&2)>>>15)-(l|e|a)|0)<<1|n>>>e+21&1)|0)),s[(r=i)+28>>2]=e,s[i+16>>2]=0,s[i+20>>2]=0,r=1348+(e<<2)|0;n:{if((l=1<<e)&h){for(e=n<<(31==(0|e)?0:25-(e>>>1)|0),l=s[r>>2];;){if((-8&s[(r=l)+4>>2])==(0|n))break n;if(l=e>>>29,e<<=1,!(l=s[16+(a=(4&l)+r|0)>>2]))break}s[a+16>>2]=i}else s[262]=l|h,s[r>>2]=i;s[i+24>>2]=r,s[i+12>>2]=i,s[i+8>>2]=i;break r}e=s[r+8>>2],s[e+12>>2]=i,s[r+8>>2]=i,s[i+24>>2]=0,s[i+12>>2]=r,s[i+8>>2]=e}e=o+8|0;break e}t:if(f){e=s[r+28>>2];r:{if(s[(n=1348+(e<<2)|0)>>2]==(0|r)){if(s[n>>2]=o,o)break r;g=1048,v=$(e)&p,s[g>>2]=v;break t}if(s[f+(s[f+16>>2]==(0|r)?16:20)>>2]=o,!o)break t}s[o+24>>2]=f,(e=s[r+16>>2])&&(s[o+16>>2]=e,s[e+24>>2]=o),(e=s[r+20>>2])&&(s[o+20>>2]=e,s[e+24>>2]=o)}i>>>0<=15?(e=i+l|0,s[r+4>>2]=3|e,s[4+(e=e+r|0)>>2]=1|s[e+4>>2]):(s[r+4>>2]=3|l,s[4+(l=r+l|0)>>2]=1|i,s[i+l>>2]=i,h&&(e=1084+((n=h>>>3)<<3)|0,o=s[266],(n=1<<n)&a?n=s[e+8>>2]:(s[261]=n|a,n=e),s[e+8>>2]=o,s[n+12>>2]=o,s[o+12>>2]=e,s[o+8>>2]=n),s[266]=l,s[263]=i),e=r+8|0}return y=t+16|0,0|e}function v(e){var t=0,r=0,n=0,i=0,o=0,a=0,c=0,l=0,d=0;e:if(e|=0){o=(n=e+-8|0)+(e=-8&(r=s[e+-4>>2]))|0;t:if(!(1&r)){if(!(3&r))break e;if((n=n-(r=s[n>>2])|0)>>>0<u[265])break e;if(e=e+r|0,s[266]==(0|n)){if(3==(3&(r=s[o+4>>2])))return s[263]=e,s[o+4>>2]=-2&r,s[n+4>>2]=1|e,void(s[e+n>>2]=e)}else{if(r>>>0<=255){if(i=s[n+8>>2],r>>>=3,(0|(t=s[n+12>>2]))==(0|i)){l=1044,d=s[261]&$(r),s[l>>2]=d;break t}s[i+12>>2]=t,s[t+8>>2]=i;break t}if(c=s[n+24>>2],(0|n)==(0|(r=s[n+12>>2])))if((t=s[(i=n+20|0)>>2])||(t=s[(i=n+16|0)>>2])){for(;a=i,(t=s[(i=(r=t)+20|0)>>2])||(i=r+16|0,t=s[r+16>>2]););s[a>>2]=0}else r=0;else t=s[n+8>>2],s[t+12>>2]=r,s[r+8>>2]=t;if(!c)break t;i=s[n+28>>2];r:{if(s[(t=1348+(i<<2)|0)>>2]==(0|n)){if(s[t>>2]=r,r)break r;l=1048,d=s[262]&$(i),s[l>>2]=d;break t}if(s[c+(s[c+16>>2]==(0|n)?16:20)>>2]=r,!r)break t}if(s[r+24>>2]=c,(t=s[n+16>>2])&&(s[r+16>>2]=t,s[t+24>>2]=r),!(t=s[n+20>>2]))break t;s[r+20>>2]=t,s[t+24>>2]=r}}if(!(o>>>0<=n>>>0)&&1&(r=s[o+4>>2])){t:{if(!(2&r)){if(s[267]==(0|o)){if(s[267]=n,e=s[264]+e|0,s[264]=e,s[n+4>>2]=1|e,s[266]!=(0|n))break e;return s[263]=0,void(s[266]=0)}if(s[266]==(0|o))return s[266]=n,e=s[263]+e|0,s[263]=e,s[n+4>>2]=1|e,void(s[e+n>>2]=e);e=(-8&r)+e|0;r:if(r>>>0<=255){if(r>>>=3,(0|(t=s[o+8>>2]))==(0|(i=s[o+12>>2]))){l=1044,d=s[261]&$(r),s[l>>2]=d;break r}s[t+12>>2]=i,s[i+8>>2]=t}else{if(c=s[o+24>>2],(0|o)==(0|(r=s[o+12>>2])))if((t=s[(i=o+20|0)>>2])||(t=s[(i=o+16|0)>>2])){for(;a=i,(t=s[(i=(r=t)+20|0)>>2])||(i=r+16|0,t=s[r+16>>2]););s[a>>2]=0}else r=0;else t=s[o+8>>2],s[t+12>>2]=r,s[r+8>>2]=t;if(c){i=s[o+28>>2];n:{if(s[(t=1348+(i<<2)|0)>>2]==(0|o)){if(s[t>>2]=r,r)break n;l=1048,d=s[262]&$(i),s[l>>2]=d;break r}if(s[c+(s[c+16>>2]==(0|o)?16:20)>>2]=r,!r)break r}s[r+24>>2]=c,(t=s[o+16>>2])&&(s[r+16>>2]=t,s[t+24>>2]=r),(t=s[o+20>>2])&&(s[r+20>>2]=t,s[t+24>>2]=r)}}if(s[n+4>>2]=1|e,s[e+n>>2]=e,s[266]!=(0|n))break t;return void(s[263]=e)}s[o+4>>2]=-2&r,s[n+4>>2]=1|e,s[e+n>>2]=e}if(e>>>0<=255)return r=1084+((e>>>=3)<<3)|0,(t=s[261])&(e=1<<e)?e=s[r+8>>2]:(s[261]=e|t,e=r),s[r+8>>2]=n,s[e+12>>2]=n,s[n+12>>2]=r,void(s[n+8>>2]=e);s[n+16>>2]=0,s[n+20>>2]=0,t=0,(i=e>>>8)&&(t=31,e>>>0>16777215||(t=i,t<<=i=i+1048320>>>16&8,t=28+((t=((t<<=c=t+520192>>>16&4)<<(a=t+245760>>>16&2)>>>15)-(a|i|c)|0)<<1|e>>>t+21&1)|0)),s[(r=n)+28>>2]=t,a=1348+(t<<2)|0;t:if((i=s[262])&(r=1<<t)){i=e<<(31==(0|t)?0:25-(t>>>1)|0),r=s[a>>2];r:{for(;;){if(t=r,(-8&s[r+4>>2])==(0|e))break r;if(r=i>>>29,i<<=1,!(r=s[16+(a=t+(4&r)|0)>>2]))break}s[a+16>>2]=n,s[n+12>>2]=n,s[n+24>>2]=t,s[n+8>>2]=n;break t}e=s[t+8>>2],s[e+12>>2]=n,s[t+8>>2]=n,s[n+24>>2]=0,s[n+12>>2]=t,s[n+8>>2]=e}else s[262]=r|i,s[a>>2]=n,s[n+12>>2]=n,s[n+24>>2]=a,s[n+8>>2]=n;if(e=s[269]+-1|0,s[269]=e,!e){for(n=1500;n=(e=s[n>>2])+8|0,e;);s[269]=-1}}}}function b(e){var t,r=0;return u[e+20>>2]<=u[e+28>>2]||(o[s[e+36>>2]](e,0,0),s[e+20>>2])?((r=s[e+4>>2])>>>0<(t=s[e+8>>2])>>>0&&(r=r-t|0,o[s[e+40>>2]](e,r,r>>31,1)),s[e+28>>2]=0,s[e+16>>2]=0,s[e+20>>2]=0,s[e+4>>2]=0,s[e+8>>2]=0,0):-1}function _(e){for(var t=0,r=0;r=t,e;)e&=e-1,t=t+1|0;return r}function $(e){var t;return(-1>>>(t=31&e)&-2)<<t|(-1<<(e=0-e&31)&-2)>>>e}function A(){return n.byteLength/65536|0}return{__wasm_call_ctors:function(){},malloc:g,openBox:function(e,t){e|=0,t|=0;var r,n,i,o=0;return y=r=y-16|0,s[r+12>>2]=0,s[r+8>>2]=0,s[r+4>>2]=0,s[r>>2]=0,function(e,t,r,n,i,o){var u=0,l=0,d=0,h=0,f=0,p=0;if(u=(c[e+2|0]^c[e+1|0]^c[0|e])<<24>>24,s[o>>2]=u+-48,u=47+(t-u|0)|0,s[n>>2]=u,f=r,p=g(u),s[f>>2]=p,l=s[o>>2],d=g(l),s[i>>2]=d,(0|l)>0)for(u=l;;){if(d=(l-u|0)+d|0,l=(t-l|0)+e|0,a[0|d]=c[(t-u|0)+e|0]^c[l+-1|0]^c[l+-2|0],(0|(u=u+-1|0))<1){u=s[n>>2];break}d=s[i>>2],l=s[o>>2]}if((0|u)>0)for(;t=s[r>>2]+h|0,h=h+1|0,a[0|t]=c[h+e|0],(0|h)<s[n>>2];);}(e,t,r+12|0,r+4|0,r+8|0,r),function(e,t){var r=0,n=0,i=0,o=0,s=0,u=0,l=0;if((0|t)>=1)for(i=85,o=250;n=_(r),s=c[0|(u=e+r|0)],l=n,n=1&r,a[0|u]=l+(21+((s^(n?i:o))<<24>>24)|0),o=n?o:s,i=n?s:i,(0|(r=r+1|0))!=(0|t););}(e=s[r+12>>2],t=s[r+4>>2]),n=function(e){var t=0;return(255&(t=e+-48|0))>>>0<=9?t<<24>>24:((e+-97&255)>>>0<26?e+-87|0:-1)<<24>>24}(a[0|e]),s[r>>2]=n,i=g(o=t-n|0),a[i+(o=o+-1|0)|0]=0,(0|o)>=1&&function(e,t,r){var n,i=0;if(r>>>0>=8192)d(0|e,0|t,0|r);else{n=e+r|0;e:if(3&(e^t))if(n>>>0<4)r=e;else if((i=n+-4|0)>>>0<e>>>0)r=e;else for(r=e;a[0|r]=c[0|t],a[r+1|0]=c[t+1|0],a[r+2|0]=c[t+2|0],a[r+3|0]=c[t+3|0],t=t+4|0,(r=r+4|0)>>>0<=i>>>0;);else{t:if((0|r)<1)r=e;else if(3&e)for(r=e;;){if(a[0|r]=c[0|t],t=t+1|0,(r=r+1|0)>>>0>=n>>>0)break t;if(!(3&r))break}else r=e;if(!((e=-4&n)>>>0<64||r>>>0>(i=e+-64|0)>>>0))for(;s[r>>2]=s[t>>2],s[r+4>>2]=s[t+4>>2],s[r+8>>2]=s[t+8>>2],s[r+12>>2]=s[t+12>>2],s[r+16>>2]=s[t+16>>2],s[r+20>>2]=s[t+20>>2],s[r+24>>2]=s[t+24>>2],s[r+28>>2]=s[t+28>>2],s[r+32>>2]=s[t+32>>2],s[r+36>>2]=s[t+36>>2],s[r+40>>2]=s[t+40>>2],s[r+44>>2]=s[t+44>>2],s[r+48>>2]=s[t+48>>2],s[r+52>>2]=s[t+52>>2],s[r+56>>2]=s[t+56>>2],s[r+60>>2]=s[t+60>>2],t=t- -64|0,(r=r- -64|0)>>>0<=i>>>0;);if(r>>>0>=e>>>0)break e;for(;s[r>>2]=s[t>>2],t=t+4|0,(r=r+4|0)>>>0<e>>>0;);}if(r>>>0<n>>>0)for(;a[0|r]=c[0|t],t=t+1|0,(0|n)!=(0|(r=r+1|0)););}}(i,e+1|0,t+(-1^n)|0),v(e),v(s[r+8>>2]),y=r+16|0,0|i},free:v,__errno_location:function(){return 1024},fflush:function e(t){var r=0;if(t|=0)return s[t+76>>2],0|b(t);if(s[260]&&(r=e(s[260])),p(1028),t=s[259])for(;u[t+20>>2]>u[t+28>>2]&&(r=b(t)|r),t=s[t+56>>2];);return f(1028),0|r},setThrew:function(e,t){e|=0,t|=0,s[385]||(s[386]=t,s[385]=e)},stackSave:function(){return 0|y},stackAlloc:function(e){return y=e=y-(e|=0)&-16,0|e},stackRestore:function(e){y=e|=0},__growWasmMemory:function(t){return 0|function(t){t|=0;var r=0|A(),o=r+t|0;if(r<o&&o<65536){var d=new ArrayBuffer(l(o,65536)),h=new e.Int8Array(d);h.set(a),a=h,a=new e.Int8Array(d),new e.Int16Array(d),s=new e.Int32Array(d),c=new e.Uint8Array(d),new e.Uint16Array(d),u=new e.Uint32Array(d),new e.Float32Array(d),new e.Float64Array(d),n=d,i.buffer=d}return r}(0|(t|=0))}}}({Int8Array:Int8Array,Int16Array:Int16Array,Int32Array:Int32Array,Uint8Array:Uint8Array,Uint16Array:Uint16Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array,NaN:NaN,Infinity:1/0,Math:Math},z,h.buffer));return{exports:n}},instantiate:function(e,t){return{then:function(r,n){r({instance:new f.Instance(new f.Module(e,t))})}}},RuntimeError:Error};c=[],"object"!==_typeof$3(f)&&F("No WebAssembly support found. Build with -s WASM=0 to target JavaScript instead.");var p=new f.Table({initial:1,maximum:1,element:"anyfunc"}),y=!1;function m(e,t){e||F("Assertion failed: "+t)}var g="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function v(e,t,r,n){if(!(n>0))return 0;for(var i=r,o=r+n-1,a=0;a<e.length;++a){var s=e.charCodeAt(a);if(s>=55296&&s<=57343)s=65536+((1023&s)<<10)|1023&e.charCodeAt(++a);if(s<=127){if(r>=o)break;t[r++]=s}else if(s<=2047){if(r+1>=o)break;t[r++]=192|s>>6,t[r++]=128|63&s}else if(s<=65535){if(r+2>=o)break;t[r++]=224|s>>12,t[r++]=128|s>>6&63,t[r++]=128|63&s}else{if(r+3>=o)break;s>=2097152&&d("Invalid Unicode code point 0x"+s.toString(16)+" encountered when serializing a JS string to an UTF-8 string on the asm.js/wasm heap! (Valid unicode code points should be in range 0-0x1FFFFF)."),t[r++]=240|s>>18,t[r++]=128|s>>12&63,t[r++]=128|s>>6&63,t[r++]=128|63&s}}return t[r]=0,r-i}function b(e){for(var t=0,r=0;r<e.length;++r){var n=e.charCodeAt(r);n>=55296&&n<=57343&&(n=65536+((1023&n)<<10)|1023&e.charCodeAt(++r)),n<=127?++t:t+=n<=2047?2:n<=65535?3:4}return t}"undefined"!=typeof TextDecoder&&new TextDecoder("utf-16le");var _,$,A,E,T;function S(e,t){return e%t>0&&(e+=t-e%t),e}function I(e){_=e,n.HEAP8=$=new Int8Array(e),n.HEAP16=new Int16Array(e),n.HEAP32=E=new Int32Array(e),n.HEAPU8=A=new Uint8Array(e),n.HEAPU16=new Uint16Array(e),n.HEAPU32=T=new Uint32Array(e),n.HEAPF32=new Float32Array(e),n.HEAPF64=new Float64Array(e)}var w=1712;m(!0,"stack must start aligned"),m(!0,"heap must start aligned");var R=8192;n.TOTAL_STACK&&m(R===n.TOTAL_STACK,"the stack size can no longer be determined at runtime");var P=n.TOTAL_MEMORY||65536;function O(){m(0==(3&w)),T[1+(w>>2)]=34821223,T[2+(w>>2)]=2310721022,E[0]=1668509029}function C(){var e=T[1+(w>>2)],t=T[2+(w>>2)];34821223==e&&2310721022==t||F("Stack overflow! Stack cookie has been overwritten, expected hex dwords 0x89BACDFE and 0x02135467, but received 0x"+t.toString(16)+" "+e.toString(16)),1668509029!==E[0]&&F("Runtime error: The application has corrupted its heap memory area (address zero)!")}function k(e){for(;e.length>0;){var t=e.shift();if("function"!=typeof t){var r=t.func;"number"==typeof r?void 0===t.arg?n.dynCall_v(r):n.dynCall_vi(r,t.arg):r(void 0===t.arg?null:t.arg)}else t()}}Object.getOwnPropertyDescriptor(n,"TOTAL_MEMORY")||Object.defineProperty(n,"TOTAL_MEMORY",{configurable:!0,get:function(){F("Module.TOTAL_MEMORY has been replaced with plain INITIAL_TOTAL_MEMORY")}}),m(P>=R,"TOTAL_MEMORY should be larger than TOTAL_STACK, was "+P+"! (TOTAL_STACK="+R+")"),m("undefined"!=typeof Int32Array&&"undefined"!=typeof Float64Array&&void 0!==Int32Array.prototype.subarray&&void 0!==Int32Array.prototype.set,"JS engine does not provide full typed array support"),(h=n.wasmMemory?n.wasmMemory:new f.Memory({initial:P/65536}))&&(_=h.buffer),m((P=_.byteLength)%65536==0),I(_),E[388]=9904,function(){var e=new Int16Array(1),t=new Int8Array(e.buffer);if(e[0]=25459,115!==t[0]||99!==t[1])throw"Runtime error: expected the system to be little-endian!"}();var x=[],L=[],D=[],M=[],N=!1;m(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),m(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var G=0,V=null,U=null,Z={};function F(e){throw n.onAbort&&n.onAbort(e),u(e+=""),l(e),y=!0,e="abort("+e+") at "+function(){var e=function(){var e=new Error;if(!e.stack){try{throw new Error(0)}catch(t){e=t}if(!e.stack)return"(no stack trace available)"}return e.stack.toString()}();n.extraStackTrace&&(e+="\n"+n.extraStackTrace());return t=e,r=/\b_Z[\w\d_]+/g,t.replace(r,(function(e){var t,r=(t=e,d("warning: build with -s DEMANGLE_SUPPORT=1 to link in libcxxabi demangling"),t);return e===r?e:r+" ["+e+"]"}));var t,r}(),new f.RuntimeError(e)}n.preloadedImages={},n.preloadedAudios={};var B={error:function(){F("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -s FORCE_FILESYSTEM=1")},init:function(){B.error()},createDataFile:function(){B.error()},createPreloadedFile:function(){B.error()},createLazyFile:function(){B.error()},open:function(){B.error()},mkdev:function(){B.error()},registerDevice:function(){B.error()},analyzePath:function(){B.error()},loadFilesFromDB:function(){B.error()},ErrnoError:function(){B.error()}};n.FS_createDataFile=B.createDataFile,n.FS_createPreloadedFile=B.createPreloadedFile;var j="data:application/octet-stream;base64,";function X(e){return String.prototype.startsWith?e.startsWith(j):0===e.indexOf(j)}var W,H="aw.wasm";function K(){try{if(c)return new Uint8Array(c);var e=function(e){if(!X(e))return;return function(e){try{for(var t=Y(e),r=new Uint8Array(t.length),n=0;n<t.length;++n)r[n]=t.charCodeAt(n);return r}catch(e){throw new Error("Converting base64 string to bytes failed.")}}(e.slice(j.length))}(H);if(e)return e;if(!a)throw"both async and sync fetching of the wasm failed"}catch(e){F(e)}}X(H)||(W=H,H=n.locateFile?n.locateFile(W,s):s+W),L.push({func:function(){ue()}});var Y="function"==typeof atob?atob:function(e){var t,r,n,i,o,a,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",u=0;e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{t=s.indexOf(e.charAt(u++))<<2|(i=s.indexOf(e.charAt(u++)))>>4,r=(15&i)<<4|(o=s.indexOf(e.charAt(u++)))>>2,n=(3&o)<<6|(a=s.indexOf(e.charAt(u++))),c+=String.fromCharCode(t),64!==o&&(c+=String.fromCharCode(r)),64!==a&&(c+=String.fromCharCode(n))}while(u<e.length);return c};var z={__lock:function(){},__unlock:function(){},emscripten_memcpy_big:function(e,t,r){A.set(A.subarray(t,t+r),e)},emscripten_resize_heap:function(e){var t=$.length;m(e>t);var r=65536,n=2147418112;if(e>n)return l("Cannot enlarge memory, asked to go up to "+e+" bytes, but the limit is "+n+" bytes!"),!1;for(var i=Math.max(t,16777216);i<e;)(i=i<=536870912?S(2*i,r):Math.min(S((3*i+2147483648)/4,r),n))===t&&d("Cannot ask for more memory since we reached the practical limit in browsers (which is just below 2GB), so the request would have failed. Requesting only "+$.length);return function(e){try{return h.grow(e-_.byteLength+65535>>16),I(h.buffer),1}catch(t){console.error("emscripten_realloc_buffer: Attempted to grow heap from "+_.byteLength+" bytes to "+e+" bytes, but got error: "+t)}}(i)?(l("Warning: Enlarging memory arrays, this is not fast! "+[t,i]),!0):(l("Failed to grow the heap from "+t+" bytes to "+i+" bytes, not enough memory!"),!1)},memory:h,table:p},J=function(){var e,t={env:z,wasi_unstable:z};function r(e,t){var r=e.exports;n.asm=r,function(e){if(G--,n.monitorRunDependencies&&n.monitorRunDependencies(G),e?(m(Z[e]),delete Z[e]):l("warning: run dependency removed without ID"),0==G&&(null!==V&&(clearInterval(V),V=null),U)){var t=U;U=null,t()}}("wasm-instantiate")}e="wasm-instantiate",G++,n.monitorRunDependencies&&n.monitorRunDependencies(G),e?(m(!Z[e]),Z[e]=1,null===V&&"undefined"!=typeof setInterval&&(V=setInterval((function(){if(y)return clearInterval(V),void(V=null);var e=!1;for(var t in Z)e||(e=!0,l("still waiting on run dependencies:")),l("dependency: "+t);e&&l("(end of list)")}),1e4))):l("warning: run dependency added without ID");var i=n;function a(e){m(n===i,"the Module object should not be replaced during async compilation - perhaps the order of HTML elements is wrong?"),i=null,r(e.instance)}function s(e){return(!c&&o&&"function"==typeof fetch?fetch(H,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+H+"'";return e.arrayBuffer()})).catch((function(){return K()})):new Promise((function(e,t){e(K())}))).then((function(e){return f.instantiate(e,t)})).then(e,(function(e){l("failed to asynchronously prepare wasm: "+e),F(e)}))}if(n.instantiateWasm)try{return n.instantiateWasm(t,r)}catch(e){return l("Module.instantiateWasm callback failed with error: "+e),!1}return function(){if(c||"function"!=typeof f.instantiateStreaming||X(H)||"function"!=typeof fetch)return s(a);fetch(H,{credentials:"same-origin"}).then((function(e){return f.instantiateStreaming(e,t).then(a,(function(e){l("wasm streaming compile failed: "+e),l("falling back to ArrayBuffer instantiation"),s(a)}))}))}(),{}}(),Q=J.__wasm_call_ctors;J.__wasm_call_ctors=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),Q.apply(null,arguments)};var q=J.malloc;J.malloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),q.apply(null,arguments)};var ee=J.openBox;J.openBox=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ee.apply(null,arguments)};var te=J.free;J.free=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),te.apply(null,arguments)};var re=J.__errno_location;J.__errno_location=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),re.apply(null,arguments)};var ne=J.fflush;J.fflush=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ne.apply(null,arguments)};var ie=J.setThrew;J.setThrew=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ie.apply(null,arguments)};var oe=J.stackSave;J.stackSave=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),oe.apply(null,arguments)};var ae=J.stackAlloc;J.stackAlloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ae.apply(null,arguments)};var se=J.stackRestore;J.stackRestore=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),se.apply(null,arguments)};var ce=J.__growWasmMemory;J.__growWasmMemory=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),ce.apply(null,arguments)},n.asm=J;var ue=n.___wasm_call_ctors=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__wasm_call_ctors.apply(null,arguments)},le=n._malloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.malloc.apply(null,arguments)};n._openBox=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.openBox.apply(null,arguments)},n._free=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.free.apply(null,arguments)},n.___errno_location=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__errno_location.apply(null,arguments)},n._fflush=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.fflush.apply(null,arguments)},n._setThrew=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.setThrew.apply(null,arguments)};var de=n.stackSave=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackSave.apply(null,arguments)};n.stackAlloc=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackAlloc.apply(null,arguments)},n.stackRestore=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.stackRestore.apply(null,arguments)};var he,fe=n.__growWasmMemory=function(){return m(N,"you need to wait for the runtime to be ready (e.g. wait for main() to be called)"),m(!0,"the runtime was exited (use NO_EXIT_RUNTIME to keep it alive after main() exits)"),n.asm.__growWasmMemory.apply(null,arguments)};function pe(e){function t(){he||(he=!0,y||(C(),m(!N),N=!0,k(L),C(),k(D),n.onRuntimeInitialized&&n.onRuntimeInitialized(),m(!n._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),function(){if(C(),n.postRun)for("function"==typeof n.postRun&&(n.postRun=[n.postRun]);n.postRun.length;)e=n.postRun.shift(),M.unshift(e);var e;k(M)}()))}G>0||(O(),function(){if(n.preRun)for("function"==typeof n.preRun&&(n.preRun=[n.preRun]);n.preRun.length;)e=n.preRun.shift(),x.unshift(e);var e;k(x)}(),G>0||(n.setStatus?(n.setStatus("Running..."),setTimeout((function(){setTimeout((function(){n.setStatus("")}),1),t()}),1)):t(),C()))}if(n.asm=J,n.intArrayFromString=function(e,t,r){var n=r>0?r:b(e)+1,i=new Array(n),o=v(e,i,0,i.length);return t&&(i.length=o),i},Object.getOwnPropertyDescriptor(n,"intArrayToString")||(n.intArrayToString=function(){F("'intArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"ccall")||(n.ccall=function(){F("'ccall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"cwrap")||(n.cwrap=function(){F("'cwrap' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"setValue")||(n.setValue=function(){F("'setValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getValue")||(n.getValue=function(){F("'getValue' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"allocate")||(n.allocate=function(){F("'allocate' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getMemory")||(n.getMemory=function(){F("'getMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"AsciiToString")||(n.AsciiToString=function(){F("'AsciiToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToAscii")||(n.stringToAscii=function(){F("'stringToAscii' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF8ArrayToString")||(n.UTF8ArrayToString=function(){F("'UTF8ArrayToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.UTF8ToString=function(e,t){return e?function(e,t,r){for(var n=t+r,i=t;e[i]&&!(i>=n);)++i;if(i-t>16&&e.subarray&&g)return g.decode(e.subarray(t,i));for(var o="";t<i;){var a=e[t++];if(128&a){var s=63&e[t++];if(192!=(224&a)){var c=63&e[t++];if(224==(240&a)?a=(15&a)<<12|s<<6|c:(240!=(248&a)&&d("Invalid UTF-8 leading byte 0x"+a.toString(16)+" encountered when deserializing a UTF-8 string on the asm.js/wasm heap to a JS string!"),a=(7&a)<<18|s<<12|c<<6|63&e[t++]),a<65536)o+=String.fromCharCode(a);else{var u=a-65536;o+=String.fromCharCode(55296|u>>10,56320|1023&u)}}else o+=String.fromCharCode((31&a)<<6|s)}else o+=String.fromCharCode(a)}return o}(A,e,t):""},Object.getOwnPropertyDescriptor(n,"stringToUTF8Array")||(n.stringToUTF8Array=function(){F("'stringToUTF8Array' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF8")||(n.stringToUTF8=function(){F("'stringToUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF8")||(n.lengthBytesUTF8=function(){F("'lengthBytesUTF8' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF16ToString")||(n.UTF16ToString=function(){F("'UTF16ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF16")||(n.stringToUTF16=function(){F("'stringToUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF16")||(n.lengthBytesUTF16=function(){F("'lengthBytesUTF16' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"UTF32ToString")||(n.UTF32ToString=function(){F("'UTF32ToString' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stringToUTF32")||(n.stringToUTF32=function(){F("'stringToUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"lengthBytesUTF32")||(n.lengthBytesUTF32=function(){F("'lengthBytesUTF32' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.allocateUTF8=function(e){var t=b(e)+1,r=le(t);return r&&v(e,$,r,t),r},Object.getOwnPropertyDescriptor(n,"stackTrace")||(n.stackTrace=function(){F("'stackTrace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPreRun")||(n.addOnPreRun=function(){F("'addOnPreRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnInit")||(n.addOnInit=function(){F("'addOnInit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPreMain")||(n.addOnPreMain=function(){F("'addOnPreMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnExit")||(n.addOnExit=function(){F("'addOnExit' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addOnPostRun")||(n.addOnPostRun=function(){F("'addOnPostRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeStringToMemory")||(n.writeStringToMemory=function(){F("'writeStringToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeArrayToMemory")||(n.writeArrayToMemory=function(){F("'writeArrayToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"writeAsciiToMemory")||(n.writeAsciiToMemory=function(){F("'writeAsciiToMemory' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addRunDependency")||(n.addRunDependency=function(){F("'addRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"removeRunDependency")||(n.removeRunDependency=function(){F("'removeRunDependency' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"ENV")||(n.ENV=function(){F("'ENV' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"FS")||(n.FS=function(){F("'FS' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"FS_createFolder")||(n.FS_createFolder=function(){F("'FS_createFolder' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createPath")||(n.FS_createPath=function(){F("'FS_createPath' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createDataFile")||(n.FS_createDataFile=function(){F("'FS_createDataFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createPreloadedFile")||(n.FS_createPreloadedFile=function(){F("'FS_createPreloadedFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createLazyFile")||(n.FS_createLazyFile=function(){F("'FS_createLazyFile' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createLink")||(n.FS_createLink=function(){F("'FS_createLink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_createDevice")||(n.FS_createDevice=function(){F("'FS_createDevice' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"FS_unlink")||(n.FS_unlink=function(){F("'FS_unlink' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}),Object.getOwnPropertyDescriptor(n,"GL")||(n.GL=function(){F("'GL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"dynamicAlloc")||(n.dynamicAlloc=function(){F("'dynamicAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"loadDynamicLibrary")||(n.loadDynamicLibrary=function(){F("'loadDynamicLibrary' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"loadWebAssemblyModule")||(n.loadWebAssemblyModule=function(){F("'loadWebAssemblyModule' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getLEB")||(n.getLEB=function(){F("'getLEB' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getFunctionTables")||(n.getFunctionTables=function(){F("'getFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"alignFunctionTables")||(n.alignFunctionTables=function(){F("'alignFunctionTables' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"registerFunctions")||(n.registerFunctions=function(){F("'registerFunctions' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"addFunction")||(n.addFunction=function(){F("'addFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"removeFunction")||(n.removeFunction=function(){F("'removeFunction' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getFuncWrapper")||(n.getFuncWrapper=function(){F("'getFuncWrapper' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"prettyPrint")||(n.prettyPrint=function(){F("'prettyPrint' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"makeBigInt")||(n.makeBigInt=function(){F("'makeBigInt' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"dynCall")||(n.dynCall=function(){F("'dynCall' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getCompilerSetting")||(n.getCompilerSetting=function(){F("'getCompilerSetting' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackSave")||(n.stackSave=function(){F("'stackSave' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackRestore")||(n.stackRestore=function(){F("'stackRestore' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"stackAlloc")||(n.stackAlloc=function(){F("'stackAlloc' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"establishStackSpace")||(n.establishStackSpace=function(){F("'establishStackSpace' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"print")||(n.print=function(){F("'print' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"printErr")||(n.printErr=function(){F("'printErr' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"getTempRet0")||(n.getTempRet0=function(){F("'getTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"setTempRet0")||(n.setTempRet0=function(){F("'setTempRet0' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"callMain")||(n.callMain=function(){F("'callMain' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"abort")||(n.abort=function(){F("'abort' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.Pointer_stringify=function(e,t){F("this function has been removed - you should use UTF8ToString(ptr, maxBytesToRead) instead!")},Object.getOwnPropertyDescriptor(n,"warnOnce")||(n.warnOnce=function(){F("'warnOnce' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),n.writeStackCookie=O,n.checkStackCookie=C,n.abortStackOverflow=function(e){F("Stack overflow! Attempted to allocate "+e+" bytes on the stack, but stack has only "+(w-de()+e)+" bytes available!")},Object.getOwnPropertyDescriptor(n,"intArrayFromBase64")||(n.intArrayFromBase64=function(){F("'intArrayFromBase64' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"tryParseAsDataURI")||(n.tryParseAsDataURI=function(){F("'tryParseAsDataURI' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}),Object.getOwnPropertyDescriptor(n,"ALLOC_NORMAL")||Object.defineProperty(n,"ALLOC_NORMAL",{configurable:!0,get:function(){F("'ALLOC_NORMAL' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_STACK")||Object.defineProperty(n,"ALLOC_STACK",{configurable:!0,get:function(){F("'ALLOC_STACK' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_DYNAMIC")||Object.defineProperty(n,"ALLOC_DYNAMIC",{configurable:!0,get:function(){F("'ALLOC_DYNAMIC' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"ALLOC_NONE")||Object.defineProperty(n,"ALLOC_NONE",{configurable:!0,get:function(){F("'ALLOC_NONE' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ)")}}),Object.getOwnPropertyDescriptor(n,"calledRun")||Object.defineProperty(n,"calledRun",{configurable:!0,get:function(){F("'calledRun' was not exported. add it to EXTRA_EXPORTED_RUNTIME_METHODS (see the FAQ). Alternatively, forcing filesystem support (-s FORCE_FILESYSTEM=1) can export this for you")}}),n.then=function(e){if(he)e(n);else{var t=n.onRuntimeInitialized;n.onRuntimeInitialized=function(){t&&t(),e(n)}}return n},U=function e(){he||pe(),he||(U=e)},n.run=pe,n.preInit)for("function"==typeof n.preInit&&(n.preInit=[n.preInit]);n.preInit.length>0;)n.preInit.pop()();return pe(),t}}(),AwManager=function(){function e(t,r){_classCallCheck$6(this,e),this.cdnHost=t,this.cdnBucket=r}return _createClass$6(e,[{key:"init",value:function(){var e=new ProxyPromise;this.module={onRuntimeInitialized:function(){e.resolve()},onAbort:function(t){e.reject(t)}},this.cdnHost&&(this.module.cdnHost=this.cdnHost);var t=this.cdnBucket?"-".concat(this.cdnBucket):"";return this.module.cdnBucket="media-fe".concat(t),aw(this.module),e}},{key:"openBox",value:function(e){try{var t=window.atob(e),r=util.str2hex(t),n=this.module._malloc(Number(r.length));this.module.HEAP8.set(r,n);var i=this.module._openBox(Number(n),r.length),o=this.module.UTF8ToString(i);return this.module._free(n),o}catch(e){}}},{key:"destroy",value:function(){this.module=null}}]),e}(),$$j=_export$2,$some=arrayIteration$2.some,arrayMethodIsStrict$2=arrayMethodIsStrict$h,STRICT_METHOD$2=arrayMethodIsStrict$2("some");$$j({target:"Array",proto:!0,forced:!STRICT_METHOD$2},{some:function(e){return $some(this,e,arguments.length>1?arguments[1]:void 0)}});var wellKnownSymbolWrapped={},wellKnownSymbol$5=wellKnownSymbol$15;wellKnownSymbolWrapped.f=wellKnownSymbol$5;var global$9=global$1y,path$3=global$9,path$2=path$3,hasOwn$7=hasOwnProperty_1$2,wrappedWellKnownSymbolModule$1=wellKnownSymbolWrapped,defineProperty$3=objectDefineProperty$2.f,wellKnownSymbolDefine=function(e){var t=path$2.Symbol||(path$2.Symbol={});hasOwn$7(t,e)||defineProperty$3(t,e,{value:wrappedWellKnownSymbolModule$1.f(e)})},call$2=functionCall$2,getBuiltIn$2=getBuiltIn$y,wellKnownSymbol$4=wellKnownSymbol$15,defineBuiltIn$3=defineBuiltIn$A,symbolDefineToPrimitive=function(){var e=getBuiltIn$2("Symbol"),t=e&&e.prototype,r=t&&t.valueOf,n=wellKnownSymbol$4("toPrimitive");t&&!t[n]&&defineBuiltIn$3(t,n,(function(e){return call$2(r,this)}),{arity:1})},$$i=_export$2,global$8=global$1y,call$1=functionCall$2,uncurryThis$9=functionUncurryThis$2,DESCRIPTORS$3=descriptors$4,NATIVE_SYMBOL$3=symbolConstructorDetection$2,fails$e=fails$1T,hasOwn$6=hasOwnProperty_1$2,isPrototypeOf$3=objectIsPrototypeOf$2,anObject$2=anObject$N,toIndexedObject$2=toIndexedObject$x,toPropertyKey=toPropertyKey$f,$toString$1=toString$E,createPropertyDescriptor=createPropertyDescriptor$j,nativeObjectCreate=objectCreate$2,objectKeys=objectKeys$9,getOwnPropertyNamesModule$1=objectGetOwnPropertyNames$2,getOwnPropertyNamesExternal=objectGetOwnPropertyNamesExternal$2,getOwnPropertySymbolsModule$1=objectGetOwnPropertySymbols$2,getOwnPropertyDescriptorModule=objectGetOwnPropertyDescriptor$2,definePropertyModule=objectDefineProperty$2,definePropertiesModule=objectDefineProperties$2,propertyIsEnumerableModule=objectPropertyIsEnumerable$2,defineBuiltIn$2=defineBuiltIn$A,shared$2=sharedExports$2,sharedKey=sharedKey$d,hiddenKeys$1=hiddenKeys$j,uid$1=uid$f,wellKnownSymbol$3=wellKnownSymbol$15,wrappedWellKnownSymbolModule=wellKnownSymbolWrapped,defineWellKnownSymbol=wellKnownSymbolDefine,defineSymbolToPrimitive=symbolDefineToPrimitive,setToStringTag$1=setToStringTag$l,InternalStateModule$2=internalState$2,$forEach=arrayIteration$2.forEach,HIDDEN=sharedKey("hidden"),SYMBOL="Symbol",PROTOTYPE="prototype",setInternalState$2=InternalStateModule$2.set,getInternalState$1=InternalStateModule$2.getterFor(SYMBOL),ObjectPrototype$1=Object[PROTOTYPE],$Symbol=global$8.Symbol,SymbolPrototype$1=$Symbol&&$Symbol[PROTOTYPE],TypeError$2=global$8.TypeError,QObject=global$8.QObject,nativeGetOwnPropertyDescriptor=getOwnPropertyDescriptorModule.f,nativeDefineProperty=definePropertyModule.f,nativeGetOwnPropertyNames=getOwnPropertyNamesExternal.f,nativePropertyIsEnumerable=propertyIsEnumerableModule.f,push$2=uncurryThis$9([].push),AllSymbols=shared$2("symbols"),ObjectPrototypeSymbols=shared$2("op-symbols"),WellKnownSymbolsStore=shared$2("wks"),USE_SETTER=!QObject||!QObject[PROTOTYPE]||!QObject[PROTOTYPE].findChild,setSymbolDescriptor=DESCRIPTORS$3&&fails$e((function(){return 7!=nativeObjectCreate(nativeDefineProperty({},"a",{get:function(){return nativeDefineProperty(this,"a",{value:7}).a}})).a}))?function(e,t,r){var n=nativeGetOwnPropertyDescriptor(ObjectPrototype$1,t);n&&delete ObjectPrototype$1[t],nativeDefineProperty(e,t,r),n&&e!==ObjectPrototype$1&&nativeDefineProperty(ObjectPrototype$1,t,n)}:nativeDefineProperty,wrap=function(e,t){var r=AllSymbols[e]=nativeObjectCreate(SymbolPrototype$1);return setInternalState$2(r,{type:SYMBOL,tag:e,description:t}),DESCRIPTORS$3||(r.description=t),r},$defineProperty=function(e,t,r){e===ObjectPrototype$1&&$defineProperty(ObjectPrototypeSymbols,t,r),anObject$2(e);var n=toPropertyKey(t);return anObject$2(r),hasOwn$6(AllSymbols,n)?(r.enumerable?(hasOwn$6(e,HIDDEN)&&e[HIDDEN][n]&&(e[HIDDEN][n]=!1),r=nativeObjectCreate(r,{enumerable:createPropertyDescriptor(0,!1)})):(hasOwn$6(e,HIDDEN)||nativeDefineProperty(e,HIDDEN,createPropertyDescriptor(1,{})),e[HIDDEN][n]=!0),setSymbolDescriptor(e,n,r)):nativeDefineProperty(e,n,r)},$defineProperties=function(e,t){anObject$2(e);var r=toIndexedObject$2(t),n=objectKeys(r).concat($getOwnPropertySymbols(r));return $forEach(n,(function(t){DESCRIPTORS$3&&!call$1($propertyIsEnumerable,r,t)||$defineProperty(e,t,r[t])})),e},$create=function(e,t){return void 0===t?nativeObjectCreate(e):$defineProperties(nativeObjectCreate(e),t)},$propertyIsEnumerable=function(e){var t=toPropertyKey(e),r=call$1(nativePropertyIsEnumerable,this,t);return!(this===ObjectPrototype$1&&hasOwn$6(AllSymbols,t)&&!hasOwn$6(ObjectPrototypeSymbols,t))&&(!(r||!hasOwn$6(this,t)||!hasOwn$6(AllSymbols,t)||hasOwn$6(this,HIDDEN)&&this[HIDDEN][t])||r)},$getOwnPropertyDescriptor=function(e,t){var r=toIndexedObject$2(e),n=toPropertyKey(t);if(r!==ObjectPrototype$1||!hasOwn$6(AllSymbols,n)||hasOwn$6(ObjectPrototypeSymbols,n)){var i=nativeGetOwnPropertyDescriptor(r,n);return!i||!hasOwn$6(AllSymbols,n)||hasOwn$6(r,HIDDEN)&&r[HIDDEN][n]||(i.enumerable=!0),i}},$getOwnPropertyNames$1=function(e){var t=nativeGetOwnPropertyNames(toIndexedObject$2(e)),r=[];return $forEach(t,(function(e){hasOwn$6(AllSymbols,e)||hasOwn$6(hiddenKeys$1,e)||push$2(r,e)})),r},$getOwnPropertySymbols=function(e){var t=e===ObjectPrototype$1,r=nativeGetOwnPropertyNames(t?ObjectPrototypeSymbols:toIndexedObject$2(e)),n=[];return $forEach(r,(function(e){!hasOwn$6(AllSymbols,e)||t&&!hasOwn$6(ObjectPrototype$1,e)||push$2(n,AllSymbols[e])})),n};NATIVE_SYMBOL$3||(defineBuiltIn$2(SymbolPrototype$1=($Symbol=function(){if(isPrototypeOf$3(SymbolPrototype$1,this))throw TypeError$2("Symbol is not a constructor");var e=arguments.length&&void 0!==arguments[0]?$toString$1(arguments[0]):void 0,t=uid$1(e),r=function(e){this===ObjectPrototype$1&&call$1(r,ObjectPrototypeSymbols,e),hasOwn$6(this,HIDDEN)&&hasOwn$6(this[HIDDEN],t)&&(this[HIDDEN][t]=!1),setSymbolDescriptor(this,t,createPropertyDescriptor(1,e))};return DESCRIPTORS$3&&USE_SETTER&&setSymbolDescriptor(ObjectPrototype$1,t,{configurable:!0,set:r}),wrap(t,e)})[PROTOTYPE],"toString",(function(){return getInternalState$1(this).tag})),defineBuiltIn$2($Symbol,"withoutSetter",(function(e){return wrap(uid$1(e),e)})),propertyIsEnumerableModule.f=$propertyIsEnumerable,definePropertyModule.f=$defineProperty,definePropertiesModule.f=$defineProperties,getOwnPropertyDescriptorModule.f=$getOwnPropertyDescriptor,getOwnPropertyNamesModule$1.f=getOwnPropertyNamesExternal.f=$getOwnPropertyNames$1,getOwnPropertySymbolsModule$1.f=$getOwnPropertySymbols,wrappedWellKnownSymbolModule.f=function(e){return wrap(wellKnownSymbol$3(e),e)},DESCRIPTORS$3&&(nativeDefineProperty(SymbolPrototype$1,"description",{configurable:!0,get:function(){return getInternalState$1(this).description}}),defineBuiltIn$2(ObjectPrototype$1,"propertyIsEnumerable",$propertyIsEnumerable,{unsafe:!0}))),$$i({global:!0,constructor:!0,wrap:!0,forced:!NATIVE_SYMBOL$3,sham:!NATIVE_SYMBOL$3},{Symbol:$Symbol}),$forEach(objectKeys(WellKnownSymbolsStore),(function(e){defineWellKnownSymbol(e)})),$$i({target:SYMBOL,stat:!0,forced:!NATIVE_SYMBOL$3},{useSetter:function(){USE_SETTER=!0},useSimple:function(){USE_SETTER=!1}}),$$i({target:"Object",stat:!0,forced:!NATIVE_SYMBOL$3,sham:!DESCRIPTORS$3},{create:$create,defineProperty:$defineProperty,defineProperties:$defineProperties,getOwnPropertyDescriptor:$getOwnPropertyDescriptor}),$$i({target:"Object",stat:!0,forced:!NATIVE_SYMBOL$3},{getOwnPropertyNames:$getOwnPropertyNames$1}),defineSymbolToPrimitive(),setToStringTag$1($Symbol,SYMBOL),hiddenKeys$1[HIDDEN]=!0;var NATIVE_SYMBOL$2=symbolConstructorDetection$2,symbolRegistryDetection=NATIVE_SYMBOL$2&&!!Symbol.for&&!!Symbol.keyFor,$$h=_export$2,getBuiltIn$1=getBuiltIn$y,hasOwn$5=hasOwnProperty_1$2,toString$6=toString$E,shared$1=sharedExports$2,NATIVE_SYMBOL_REGISTRY$1=symbolRegistryDetection,StringToSymbolRegistry=shared$1("string-to-symbol-registry"),SymbolToStringRegistry$1=shared$1("symbol-to-string-registry");$$h({target:"Symbol",stat:!0,forced:!NATIVE_SYMBOL_REGISTRY$1},{for:function(e){var t=toString$6(e);if(hasOwn$5(StringToSymbolRegistry,t))return StringToSymbolRegistry[t];var r=getBuiltIn$1("Symbol")(t);return StringToSymbolRegistry[t]=r,SymbolToStringRegistry$1[r]=t,r}});var $$g=_export$2,hasOwn$4=hasOwnProperty_1$2,isSymbol$1=isSymbol$h,tryToString=tryToString$m,shared=sharedExports$2,NATIVE_SYMBOL_REGISTRY=symbolRegistryDetection,SymbolToStringRegistry=shared("symbol-to-string-registry");$$g({target:"Symbol",stat:!0,forced:!NATIVE_SYMBOL_REGISTRY},{keyFor:function(e){if(!isSymbol$1(e))throw TypeError(tryToString(e)+" is not a symbol");if(hasOwn$4(SymbolToStringRegistry,e))return SymbolToStringRegistry[e]}});var $$f=_export$2,NATIVE_SYMBOL$1=symbolConstructorDetection$2,fails$d=fails$1T,getOwnPropertySymbolsModule=objectGetOwnPropertySymbols$2,toObject$2=toObject$C,FORCED$6=!NATIVE_SYMBOL$1||fails$d((function(){getOwnPropertySymbolsModule.f(1)}));$$f({target:"Object",stat:!0,forced:FORCED$6},{getOwnPropertySymbols:function(e){var t=getOwnPropertySymbolsModule.f;return t?t(toObject$2(e)):[]}});var $$e=_export$2,DESCRIPTORS$2=descriptors$4,global$7=global$1y,uncurryThis$8=functionUncurryThis$2,hasOwn$3=hasOwnProperty_1$2,isCallable$1=isCallable$1d,isPrototypeOf$2=objectIsPrototypeOf$2,toString$5=toString$E,defineProperty$2=objectDefineProperty$2.f,copyConstructorProperties$1=copyConstructorProperties$5,NativeSymbol=global$7.Symbol,SymbolPrototype=NativeSymbol&&NativeSymbol.prototype;if(DESCRIPTORS$2&&isCallable$1(NativeSymbol)&&(!("description"in SymbolPrototype)||void 0!==NativeSymbol().description)){var EmptyStringDescriptionStore={},SymbolWrapper=function(){var e=arguments.length<1||void 0===arguments[0]?void 0:toString$5(arguments[0]),t=isPrototypeOf$2(SymbolPrototype,this)?new NativeSymbol(e):void 0===e?NativeSymbol():NativeSymbol(e);return""===e&&(EmptyStringDescriptionStore[t]=!0),t};copyConstructorProperties$1(SymbolWrapper,NativeSymbol),SymbolWrapper.prototype=SymbolPrototype,SymbolPrototype.constructor=SymbolWrapper;var NATIVE_SYMBOL="Symbol(test)"==String(NativeSymbol("test")),thisSymbolValue=uncurryThis$8(SymbolPrototype.valueOf),symbolDescriptiveString=uncurryThis$8(SymbolPrototype.toString),regexp=/^Symbol\((.*)\)[^)]+$/,replace=uncurryThis$8("".replace),stringSlice$2=uncurryThis$8("".slice);defineProperty$2(SymbolPrototype,"description",{configurable:!0,get:function(){var e=thisSymbolValue(this);if(hasOwn$3(EmptyStringDescriptionStore,e))return"";var t=symbolDescriptiveString(e),r=NATIVE_SYMBOL?stringSlice$2(t,7,-1):replace(t,regexp,"$1");return""===r?void 0:r}}),$$e({global:!0,constructor:!0,forced:!0},{Symbol:SymbolWrapper})}var ArrayBufferViewCore=arrayBufferViewCore$1,TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS=typedArrayConstructorsRequireWrappers$1,aTypedArrayConstructor=ArrayBufferViewCore.aTypedArrayConstructor,exportTypedArrayStaticMethod=ArrayBufferViewCore.exportTypedArrayStaticMethod;function isMSBrowser(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),r=e.indexOf("Trident/");return t>0||r>0}function checkIsQihuBrowser(){var e=navigator.mimeTypes,t=navigator.userAgent,r=!1;return e&&t.indexOf("Chrome")>1&&(r=Object.keys(e).some((function(t){return!!(e[t].type&&e[t].type.indexOf("360")>-1)||(!!(e[t].type&&e[t].type.indexOf("application/vnd.chromium.remoting-viewer")>-1)||!!(e[t].description&&e[t].description.indexOf("360")>-1))}))),r}function isEMESupported(){var e,t,r,n,i;return!(!navigator.requestMediaKeySystemAccess||(e=/^((?!chrome|android).)*safari/i.test(navigator.userAgent),t=isMSBrowser(),r=checkIsQihuBrowser(),n=navigator.userAgent.indexOf("Firefox")>0,i=navigator.userAgent.indexOf("Edge")>0,e||t||r||n||i))}function isWebAssemblySupported(){try{if("object"===("undefined"==typeof WebAssembly?"undefined":_typeof$3(WebAssembly))&&"function"==typeof WebAssembly.instantiate){var e=new WebAssembly.Module(Uint8Array.of(0,97,115,109,1,0,0,0));if(e instanceof WebAssembly.Module)return new WebAssembly.Instance(e)instanceof WebAssembly.Instance}}catch(e){console.log(e)}return!1}function isMediaSourceSupported(){var e=window.MediaSource=window.MediaSource||window.WebKitMediaSource;return e&&"function"==typeof e.isTypeSupported}function isSupported(){return isMediaSourceSupported()&&isWebAssemblySupported()&&!isMSBrowser()}function isSupportedWithXgmse(){return isWebAssemblySupported()&&!isMSBrowser()}exportTypedArrayStaticMethod("of",(function(){for(var e=0,t=arguments.length,r=new(aTypedArrayConstructor(this))(t);t>e;)r[e]=arguments[e++];return r}),TYPED_ARRAYS_CONSTRUCTORS_REQUIRES_WRAPPERS);var Timer=function(){function e(t){_classCallCheck$6(this,e),this.onTick_=t,this.cancelPending_=null}return _createClass$6(e,[{key:"tickAfter",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null;this.stop();var n=!0,i=null;this.cancelPending_=function(){window.clearTimeout(i),n=!1};return i=window.setTimeout((function(){n&&(t.onTick_(),r&&r())}),1e3*e),this}},{key:"tickEvery",value:function(e){var t=this;this.tickAfter(e,(function(){t.tickEvery(e)}))}},{key:"stop",value:function(){this.cancelPending_&&(this.cancelPending_(),this.cancelPending_=null)}}]),e}(),$$d=_export$2,$parseFloat$2=numberParseFloat$2;$$d({global:!0,forced:parseFloat!=numberParseFloat$2},{parseFloat:numberParseFloat$2});var PRELOAD_NEXT="PRELOAD_NEXT",PRELOAD_SEG_DONE="PRELOAD_SEG_DONE",STATES={PREPARE:"PREPARE",IDLE:"IDLE",PRELOADING:"PRELOADING",FINISH:"FINISH"},ONE_STEP_DONE="ONE_STEP_DONE",PRELOAD_TYPES$1={DURATION:0,SIZE:1},CACHE_TYPES={INDEXDB:0,MEMORY:1},DOWN_STATES={FAIL:-1,SUCCESS:0,DOWNLOADING:1},VTYPES$1={MP4:"MP4",DASH:"DASH",HLS:"HLS"};function _typeof$1(e){return(_typeof$1="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var r=0;r<t.length;r++){var n=t[r];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function _createClass(e,t,r){return t&&_defineProperties(e.prototype,t),r&&_defineProperties(e,r),Object.defineProperty(e,"prototype",{writable:!1}),e}var isImplemented$1,hasRequiredIsImplemented,eventEmitter={exports:{}},d$1={exports:{}},_undefined$1=void 0,is$4=function(e){return e!==_undefined$1&&null!==e},isValue$4=is$4,possibleTypes={object:!0,function:!0,undefined:!0},is$3=function(e){return!!isValue$4(e)&&hasOwnProperty.call(possibleTypes,typeof e)},isObject$7=is$3,is$2=function(e){if(!isObject$7(e))return!1;try{return!!e.constructor&&e.constructor.prototype===e}catch(e){return!1}},isPrototype=is$2,is$1=function(e){if("function"!=typeof e)return!1;if(!hasOwnProperty.call(e,"length"))return!1;try{if("number"!=typeof e.length)return!1;if("function"!=typeof e.call)return!1;if("function"!=typeof e.apply)return!1}catch(e){return!1}return!isPrototype(e)},isFunction=is$1,classRe=/^\s*class[\s{/}]/,functionToString=Function.prototype.toString,is=function(e){return!!isFunction(e)&&!classRe.test(functionToString.call(e))},isImplemented$2=function(){var e,t=Object.assign;return"function"==typeof t&&(t(e={foo:"raz"},{bar:"dwa"},{trzy:"trzy"}),e.foo+e.bar+e.trzy==="razdwatrzy")};function requireIsImplemented(){return hasRequiredIsImplemented?isImplemented$1:(hasRequiredIsImplemented=1,isImplemented$1=function(){try{return Object.keys("primitive"),!0}catch(e){return!1}})}var shim$2,hasRequiredShim$2,keys9,hasRequiredKeys,validValue,hasRequiredValidValue,shim$1,hasRequiredShim$1,noop=function(){},_undefined=noop(),isValue$3=function(e){return e!==_undefined&&null!==e};function requireShim$2(){if(hasRequiredShim$2)return shim$2;hasRequiredShim$2=1;var e=isValue$3,t=Object.keys;return shim$2=function(r){return t(e(r)?Object(r):r)}}function requireKeys(){return hasRequiredKeys?keys9:(hasRequiredKeys=1,keys9=requireIsImplemented()()?Object.keys:requireShim$2())}function requireValidValue(){if(hasRequiredValidValue)return validValue;hasRequiredValidValue=1;var e=isValue$3;return validValue=function(t){if(!e(t))throw new TypeError("Cannot use null or undefined");return t}}function requireShim$1(){if(hasRequiredShim$1)return shim$1;hasRequiredShim$1=1;var e=requireKeys(),t=requireValidValue(),r=Math.max;return shim$1=function(n,i){var o,a,s,c=r(arguments.length,2);for(n=Object(t(n)),s=function(e){try{n[e]=i[e]}catch(e){o||(o=e)}},a=1;a<c;++a)e(i=arguments[a]).forEach(s);if(void 0!==o)throw o;return n},shim$1}var shim,hasRequiredShim,assign$1=isImplemented$2()?Object.assign:requireShim$1(),isValue$2=isValue$3,forEach7=Array.prototype.forEach,create$2=Object.create,process$1=function(e,t){var r;for(r in e)t[r]=e[r]},normalizeOptions=function(e){var t=create$2(null);return forEach7.call(arguments,(function(e){isValue$2(e)&&process$1(Object(e),t)})),t},str="razdwatrzy",isImplemented=function(){return"function"==typeof str.contains&&(!0===str.contains("dwa")&&!1===str.contains("foo"))};function requireShim(){if(hasRequiredShim)return shim;hasRequiredShim=1;var e=String.prototype.indexOf;return shim=function(t){return e.call(this,t,arguments[1])>-1},shim}var contains$1=isImplemented()?String.prototype.contains:requireShim(),isValue$1=is$4,isPlainFunction=is,assign2=assign$1,normalizeOpts=normalizeOptions,contains=contains$1,d=d$1.exports=function(e,t){var r,n,i,o,a;return arguments.length<2||"string"!=typeof e?(o=t,t=e,e=null):o=arguments[2],isValue$1(e)?(r=contains.call(e,"c"),n=contains.call(e,"e"),i=contains.call(e,"w")):(r=i=!0,n=!1),a={value:t,configurable:r,enumerable:n,writable:i},o?assign2(normalizeOpts(o),a):a};d.gs=function(e,t,r){var n,i,o,a;return"string"!=typeof e?(o=r,r=t,t=e,e=null):o=arguments[3],isValue$1(t)?isPlainFunction(t)?isValue$1(r)?isPlainFunction(r)||(o=r,r=void 0):r=void 0:(o=t,t=r=void 0):t=void 0,isValue$1(e)?(n=contains.call(e,"c"),i=contains.call(e,"e")):(n=!0,i=!1),a={get:t,set:r,configurable:n,enumerable:i},o?assign2(normalizeOpts(o),a):a};var dExports=d$1.exports,validCallable=function(e){if("function"!=typeof e)throw new TypeError(e+" is not a function");return e};!function(e,t){var r,n,i,o,a,s,c,u=dExports,l=validCallable,d=Function.prototype.apply,h=Function.prototype.call,f=Object.create,p=Object.defineProperty,y=Object.defineProperties,m=Object.prototype.hasOwnProperty,g={configurable:!0,enumerable:!1,writable:!0};n=function(e,t){var n,o;return l(t),o=this,r.call(this,e,n=function(){i.call(o,e,n),d.call(t,this,arguments)}),n.__eeOnceListener__=t,this},i=function(e,t){var r,n,i,o;if(l(t),!m.call(this,"__ee__"))return this;if(!(r=this.__ee__)[e])return this;if("object"==typeof(n=r[e]))for(o=0;i=n[o];++o)i!==t&&i.__eeOnceListener__!==t||(2===n.length?r[e]=n[o?0:1]:n.splice(o,1));else n!==t&&n.__eeOnceListener__!==t||delete r[e];return this},o=function(e){var t,r,n,i,o;if(m.call(this,"__ee__")&&(i=this.__ee__[e]))if("object"==typeof i){for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];for(i=i.slice(),t=0;n=i[t];++t)d.call(n,this,o)}else switch(arguments.length){case 1:h.call(i,this);break;case 2:h.call(i,this,arguments[1]);break;case 3:h.call(i,this,arguments[1],arguments[2]);break;default:for(r=arguments.length,o=new Array(r-1),t=1;t<r;++t)o[t-1]=arguments[t];d.call(i,this,o)}},a={on:r=function(e,t){var r;return l(t),m.call(this,"__ee__")?r=this.__ee__:(r=g.value=f(null),p(this,"__ee__",g),g.value=null),r[e]?"object"==typeof r[e]?r[e].push(t):r[e]=[r[e],t]:r[e]=t,this},once:n,off:i,emit:o},s={on:u(r),once:u(n),off:u(i),emit:u(o)},c=y({},s),e.exports=t=function(e){return null==e?f(c):y(Object(e),s)},t.methods=a}(eventEmitter,eventEmitter.exports);var eventEmitterExports=eventEmitter.exports,EventEmitter=getDefaultExportFromCjs(eventEmitterExports),$$c=_export$2,$values=objectToArray.values;$$c({target:"Object",stat:!0},{values:function(e){return $values(e)}});var isValue=isValue$3,map4={function:!0,object:!0},isObject$6=function(e){return isValue(e)&&map4[typeof e]||!1},isObject$5=isObject$6,validObject=function(e){if(!isObject$5(e))throw new TypeError(e+" is not an Object");return e},value=validObject,hasOwnProperty$1=Object.prototype.hasOwnProperty,allOff=function(e){var t,r=arguments[1];if(value(e),void 0===r)hasOwnProperty$1.call(e,"__ee__")&&delete e.__ee__;else{if(!(t=hasOwnProperty$1.call(e,"__ee__")&&e.__ee__))return;t[r]&&delete t[r]}},allOff$1=getDefaultExportFromCjs(allOff),RETRY_MAX=10,PRELOADER=function(){function e(t,r,n,i,o){_classCallCheck(this,e),EventEmitter(this),this.state=STATES.PREPARE,this.options=t||{},this.logger=t.logger||function(){},this._preloadManager=r,this.player=r.player;var a=n.handlers,s=n.predictInst,c=n.readyPromise;this._predictInst=s,this._handlers=a,this._predictInstReadyPromise=c,this._toLoadList=[],this.retryCount=0,this._cachedHandler=i,this._cachedDataHanlder=o,this.cnt=0}return _createClass(e,[{key:"start",value:function(){var e=this,t=new ProxyPromise$1;return this._handlers.start(this.options).then((function(r){r.onObtain().then((function(n){e._predictInstReadyPromise.then((function(){e._predictInst.updateMediaInfos(n);var i=e._predictInst.preloadPredict(e.options),o=e._predictInst.cachedData;e._cachedDataHanlder(Object.assign({vid:e.options.vid},{data:o}));var a=Object.assign(i,e.options);r.onTransform(a).then((function(r){e._toLoadList=r,t.resolve(r)}))}))}))})).catch((function(e){t.reject(new Error("preload unit start error"))})),t}},{key:"preloadSeg",value:function(){var e=this;if(0===this._toLoadList.length)return this.state=STATES.FINISH,void this.emit(PRELOAD_SEG_DONE,!0);this.state="PRELOADING";var t=this._toLoadList.shift();this._handlers.onRequest(t,(function(r){var n=Object.assign({},t.extData,r);e._cachedHandler(n)})).then((function(){e.state=STATES.IDLE,e.emit(PRELOAD_SEG_DONE)})).catch((function(t){e.requestError(),e.emit(PRELOAD_SEG_DONE,!1)}))}},{key:"requestError",value:function(){this.retryCount++,this.state=STATES.IDLE,this.retryCount>=RETRY_MAX&&(this.state=STATES.FINISH),this.emit(ONE_STEP_DONE),this.logger("preload request error")}},{key:"cancelLoading",value:function(){this._toLoadList=[]}},{key:"destroy",value:function(){allOff$1(this)}}]),e}();function getIDB(){try{if("undefined"!=typeof indexedDB)return indexedDB;if("undefined"!=typeof webkitIndexedDB)return webkitIndexedDB;if("undefined"!=typeof mozIndexedDB)return mozIndexedDB;if("undefined"!=typeof OIndexedDB)return OIndexedDB;if("undefined"!=typeof msIndexedDB)return msIndexedDB}catch(e){}}var idb=getIDB();function isIndexedDBValid(){try{if(!idb||!idb.open)return!1;var e="undefined"!=typeof openDatabase&&/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),t="function"==typeof fetch&&-1!==fetch.toString().indexOf("[native code");return(!e||t)&&"undefined"!=typeof indexedDB&&"undefined"!=typeof IDBKeyRange}catch(e){return!1}}function executeCallback(e,t){t&&e.then((function(e){t(null,e)}),(function(e){t(e)}))}function executeTwoCallbacks(e,t,r){"function"==typeof t&&e.then(t),"function"==typeof r&&e.catch(r)}function normalizeKey(e){return"string"!=typeof e&&(console.warn("".concat(e," used as a key, but it is not a string.")),e=String(e)),e}var dbContexts={},READ_ONLY="readonly",READ_WRITE="readwrite";function _deferReadiness(e){var t=dbContexts[e.name],r={};r.promise=new Promise((function(e,t){r.resolve=e,r.reject=t})),t.deferredOperations.push(r),t.dbReady?t.dbReady=t.dbReady.then((function(){return r.promise})):t.dbReady=r.promise}function _advanceReadiness(e){var t=dbContexts[e.name].deferredOperations.pop();if(t)return t.resolve(),t.promise}function _rejectReadiness(e,t){var r=dbContexts[e.name].deferredOperations.pop();if(r)return r.reject(t),r.promise}function _getConnection(e,t){return new Promise((function(r,n){if(dbContexts[e.name]=dbContexts[e.name]||createDbContext(),e.db){if(!t)return r(e.db);_deferReadiness(e),e.db.close()}var i=[e.name];t&&i.push(e.version);var o=idb.open.apply(idb,i);t&&(o.onupgradeneeded=function(t){var r=o.result;try{r.createObjectStore(e.storeName)}catch(r){if("ConstraintError"!==r.name)throw r;console.warn('The database "'+e.name+'" has been upgraded from version '+t.oldVersion+" to version "+t.newVersion+', but the storage "'+e.storeName+'" already exists.')}}),o.onerror=function(e){e.preventDefault(),n(o.error)},o.onsuccess=function(){r(o.result),_advanceReadiness(e)}}))}function _getOriginalConnection(e){return _getConnection(e,!1)}function _getUpgradedConnection(e){return _getConnection(e,!0)}function _isUpgradeNeeded(e,t){if(!e.db)return!0;var r=!e.db.objectStoreNames.contains(e.storeName),n=e.version<e.db.version,i=e.version>e.db.version;if(n&&(e.version!==t&&console.warn('The database "'+e.name+"\" can't be downgraded from version "+e.db.version+" to version "+e.version+"."),e.version=e.db.version),i||r){if(r){var o=e.db.version+1;o>e.version&&(e.version=o)}return!0}return!1}function _tryReconnect(e){_deferReadiness(e);for(var t=dbContexts[e.name],r=t.forages,n=0;n<r.length;n++){var i=r[n];i._dbInfo.db&&(i._dbInfo.db.close(),i._dbInfo.db=null)}return e.db=null,_getOriginalConnection(e).then((function(t){return e.db=t,_isUpgradeNeeded(e)?_getUpgradedConnection(e):t})).then((function(n){e.db=t.db=n;for(var i=0;i<r.length;i++)r[i]._dbInfo.db=n})).catch((function(t){throw _rejectReadiness(e,t),t}))}function createTransaction(e,t,r,n){void 0===n&&(n=1);try{var i=e.db.transaction(e.storeName,t);r(null,i)}catch(i){if(n>0&&(!e.db||"InvalidStateError"===i.name||"NotFoundError"===i.name))return Promise.resolve().then((function(){if(!e.db||"NotFoundError"===i.name&&!e.db.objectStoreNames.contains(e.storeName)&&e.version<=e.db.version)return e.db&&(e.version=e.db.version+1),_getUpgradedConnection(e)})).then((function(){return _tryReconnect(e).then((function(){createTransaction(e,t,r,n-1)}))})).catch(r);r(i)}}function createDbContext(){return{forages:[],db:null,dbReady:null,deferredOperations:[]}}var AsyncStorage=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"ready",value:function(){return this._ready}},{key:"_initStorage",value:function(e){var t=this;t._defaultConfig=e;var r={db:null};if(e)for(var n in e)r[n]=e[n];var i=dbContexts[r.name];i||(i=createDbContext(),dbContexts[r.name]=i),i.forages.push(t),t._initReady||(t._initReady=t.ready,t.ready=t._fullyReady);var o=[];function a(){return Promise.resolve()}for(var s=0;s<i.forages.length;s++){var c=i.forages[s];c!==t&&o.push(c._initReady().catch(a))}var u=i.forages.slice(0);return t._ready=Promise.all(o).then((function(){return r.db=i.db,_getOriginalConnection(r)})).then((function(e){return r.db=e,_isUpgradeNeeded(r,t._defaultConfig.version)?_getUpgradedConnection(r):e})).then((function(e){r.db=i.db=e,t._dbInfo=r;for(var n=0;n<u.length;n++){var o=u[n];o!==t&&(o._dbInfo.db=r.db,o._dbInfo.version=r.version)}})),t._ready}},{key:"probeSupport",get:function(){return isIndexedDBValid()}},{key:"getItem",value:function(e,t){var r=this;e=normalizeKey(e);var n=new Promise((function(t,n){r.ready().then((function(){createTransaction(r._dbInfo,READ_ONLY,(function(i,o){if(i)return n(i);try{var a=o.objectStore(r._dbInfo.storeName).get(e);a.onsuccess=function(){var e=a.result;void 0===e&&(e=null),t(e)},a.onerror=function(){n(a.error)}}catch(e){n(e)}}))})).catch(n)}));return executeCallback(n,t),n}},{key:"setItem",value:function(e,t,r){var n=this;e=normalizeKey(e);var i=new Promise((function(r,i){n.ready().then((function(){return n._dbInfo,t})).then((function(t){createTransaction(n._dbInfo,READ_WRITE,(function(o,a){if(o)return i(o);try{var s=a.objectStore(n._dbInfo.storeName);null===t&&(t=void 0);var c=s.put(t,e);a.oncomplete=function(){void 0===t&&(t=null),r(t)},a.onabort=a.onerror=function(){var e=c.error?c.error:c.transaction.error;i(e)}}catch(e){i(e)}}))})).catch(i)}));return executeCallback(i,r),i}},{key:"removeItem",value:function(e,t){var r=this;e=normalizeKey(e);var n=new Promise((function(t,n){r.ready().then((function(){createTransaction(r._dbInfo,READ_WRITE,(function(i,o){if(i)return n(i);try{var a=o.objectStore(r._dbInfo.storeName).delete(e);o.oncomplete=function(){t()},o.onerror=function(){n(a.error)},o.onabort=function(){var e=a.error?a.error:a.transaction.error;n(e)}}catch(e){n(e)}}))})).catch(n)}));return executeCallback(n,t),n}},{key:"clear",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_WRITE,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).clear();i.oncomplete=function(){e()},i.onabort=i.onerror=function(){var e=o.error?o.error:o.transaction.error;r(e)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"length",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_ONLY,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).count();o.onsuccess=function(){e(o.result)},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"all",value:function(e){var t=this,r=new Promise((function(e,r){t.ready().then((function(){createTransaction(t._dbInfo,READ_ONLY,(function(n,i){if(n)return r(n);try{var o=i.objectStore(t._dbInfo.storeName).openCursor(),a=[];o.onsuccess=function(){var t=o.result;t?(a.push({key:t.key,value:t.value}),t.continue()):e(a)},o.onerror=function(){r(o.error)}}catch(e){r(e)}}))})).catch(r)}));return executeCallback(r,e),r}},{key:"_fullyReady",value:function(e){var t=this,r=t._initReady().then((function(){var e=dbContexts[t._dbInfo.name];if(e&&e.dbReady)return e.dbReady}));return executeTwoCallbacks(r,e,e),r}}]),e}(),MemoryCache=function(){function e(){_classCallCheck(this,e)}return _createClass(e,[{key:"_initStorage",value:function(e){var t=e.name+"_"+e.storeName;return this.key=t,window[t]&&"object"===_typeof$1(window[t])||(window[t]={}),this.store=window[t],Promise.resolve()}},{key:"getItem",value:function(e,t){var r=this.store[e];return void 0===r&&(r=null),this._internalPromise(t,r)}},{key:"setItem",value:function(e,t,r){return this.store[e]=t,this._internalPromise(r)}},{key:"removeItem",value:function(e,t){return delete this.store[e],this._internalPromise(t)}},{key:"clear",value:function(e){return this.store={},window[this.key]={},this._internalPromise(e)}},{key:"length",value:function(e){var t=Object.keys(this.store).length;return this._internalPromise(e,t)}},{key:"_internalPromise",value:function(e,t){var r=t?Promise.resolve(t):Promise.resolve();return executeCallback(r,e),r}},{key:"all",value:function(e){for(var t=[],r=Object.keys(this.store),n=0;n<r.length;n++){var i=r[n];t.push({key:i,value:this.store[i]})}return this._internalPromise(e,t)}},{key:"probeSupport",value:function(){return!0}}]),e}(),DefaultConfig={description:"",name:"__PRE_CACHE__",storeName:"keyvaluepairs",version:1},SPLIT="|",SESSION_KEY="__PRE_CACHE__KEYS",TIMESPLIT="$",MAX_CACHE=200,PreloadCache=function(){function e(t,r){_classCallCheck(this,e);var n=r===CACHE_TYPES.MEMORY?MemoryCache:AsyncStorage;this._driver=new n,this._driver._initStorage(DefaultConfig).catch((function(){})),this._hasIdbForbidden=!1,this._maxCache=!t||t<=0?MAX_CACHE:t,this.setMaxCache(this._maxCache),this._allCachedKeys={},this._allCachedTimeKeys={},this.getCachedKeysFromLocal(),this._readyPromise=new ProxyPromise$1,this.init()}return _createClass(e,[{key:"getCachedKeysFromLocal",value:function(){var e=proxyLocalStorage$1.getItem(SESSION_KEY);if(e)for(var t=e.split(SPLIT),r=0;r<t.length;r++){var n=t[r],i=this._getCacheKeyInfos(n),o=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=o}}},{key:"_getCacheKeyInfos",value:function(e){var t,r=e.split(TIMESPLIT);return 2===r.length&&(t=r[0],e=r[1]),{time:t,cachedKey:e}}},{key:"writeCachedKeysToLocal",value:function(e){var t=[];this._allCachedKeys={},this._allCachedTimeKeys={};for(var r=0;r<e.length;r++){var n=e[r].key,i=this._getCacheKeyInfos(n),o=i.time,a=i.cachedKey;this._allCachedKeys[a]=1,this._allCachedTimeKeys[a]=o,t.push(n)}var s=t.join(SPLIT);proxyLocalStorage$1.setItem(SESSION_KEY,s)}},{key:"init",value:function(){var e=this;this._driver.setItem("test","test").then((function(){})).catch((function(){e._hasIdbForbidden=!0})).finally((function(){e._driver.removeItem("test").catch((function(){})),e._hasIdbForbidden&&(e._driver=new MemoryCache,e._driver._initStorage(DefaultConfig)),e._getAll(),e._readyPromise.resolve()}))}},{key:"_getAll",value:function(){var e=this;this._driver.all().then((function(t){e._cachedLength=t.length;var r=t.length-e._maxCache,n=t;if(r>0){var i=t.slice(0,r);n=t.slice(r);for(var o=0;o<i.length;o++)e.removeItem(i[o].key).then((function(){}))}e.writeCachedKeysToLocal(n)})).catch((function(){}))}},{key:"getItem",value:function(e,t){if(!this.hasItem(e))return Promise.resolve(!1);var r=this._getTimeKey(e).timeKey;return this._driver.getItem(r,t)}},{key:"setItem",value:function(e,t,r){var n=this;this._getTimeKey(e).timeKey&&this.removeItem(e);var i=(new Date).getTime();this._allCachedKeys[e]=1,this._allCachedTimeKeys[e]=i;var o=this._genTimeKey(e,i);return r=r?function(){n._getAll(),r()}:function(){n._getAll()},this._driver.setItem(o,t,r)}},{key:"_getTimeKey",value:function(e){var t=this._allCachedTimeKeys[e],r=e;return t&&(r=this._genTimeKey(e,t)),{timeKey:r,time:t}}},{key:"_genTimeKey",value:function(e,t){return"".concat(t).concat(TIMESPLIT).concat(e)}},{key:"removeItem",value:function(e,t){var r=this._getTimeKey(e).timeKey,n=this._driver.removeItem(r,t);return delete this._allCachedKeys[e],delete this._allCachedTimeKeys[e],n}},{key:"hasItem",value:function(e){return!!this._allCachedKeys[e]}},{key:"clear",value:function(e){return this._driver.clear(e)}},{key:"length",value:function(e){return this._driver.length(e)}},{key:"setMaxCache",value:function(e){"number"==typeof e&&e>0&&(this._maxCache=e)}}]),e}(),PRELOADER_KEY="DEFAULT",PreloaderManager=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;_classCallCheck(this,e),EventEmitter(this),this._preloadDataList=[],this._currentPreloadInst=null,this._dashPreloadList=[],this.autoPreload=t.autoPreload||!1,this._onPreloadNext=this.onPreloadNextReady.bind(this),this.on(PRELOAD_NEXT,this._onPreloadNext),this._preloaderConfigs={},this.update(t,r,n),this._cacheInst=new PreloadCache(t.preloadMaxCacheCount,t.preloadCacheType),this._preloadCacheProgress={},this._ptag_=!0,this._cachedDatas={}}return _createClass(e,[{key:"_getProloaderKey",value:function(e){return e.vtype?e.vtype:PRELOADER_KEY}},{key:"update",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(!r)throw new Error("PreloaderManager predictInst is null");var n=this._getProloaderKey(e);this._preloaderConfigs[n]={predictInst:r,readyPromise:r.init(e),handlers:t}}},{key:"cachedDatas",get:function(){return this._cachedDatas}},{key:"onCacheSegment",value:function(e){var t=e.vid,r=e.format,n=e.cacheKey,i=e.total,o=e.loaded,a=e.isInitSegment,s=e.mediaType,c=this.getProgressCacheKey(t,r,s),u=this._preloadCacheProgress[c];u||(u=this._preloadCacheProgress[c]={}),u[n]={total:i,loaded:o,isInitSegment:a}}},{key:"onCachePredict",value:function(e){var t=e.vid,r=e.data;t&&r&&(this._cachedDatas[t]=r)}},{key:"getProgressCacheKey",value:function(e,t,r){return"".concat(e,"-").concat(t,"-").concat(r)}},{key:"onPreloadNextReady",value:function(){this.onPreloadNext()}},{key:"onPreloadSegDone",value:function(){this.autoPreload&&this.emit(PRELOAD_NEXT)}},{key:"onPreloadNext",value:function(){var e=this;if(null==this._currentPreloadInst&&this._preloadDataList.length>0){if(this._preloadDataList.length>0){var t=this._preloadDataList.shift().data;if(t.payload){var r=this._getProloaderKey(t),n=this._preloaderConfigs[r];if(!n)return void console.warn("need to set vtype, no preloader",t);this._currentPreloadInst=new PRELOADER(t,this,n,(function(t){e.onCacheSegment(t)}),(function(t){e.onCachePredict(t)})),this._currentPreloadInst.on(PRELOAD_SEG_DONE,this.onPreloadSegDone.bind(this)),this._currentPreloadInst.start().then((function(){e._currentPreloadInst.preloadSeg()})).catch((function(){e._currentPreloadInst=null}))}}}else null!=this._currentPreloadInst&&(this._currentPreloadInst.state===STATES.IDLE?this._currentPreloadInst.preloadSeg():this._currentPreloadInst.state===STATES.FINISH?(this._currentPreloadInst.destroy(),this._currentPreloadInst=null):this._currentPreloadInst.state===STATES.PREPARE&&(this._currentPreloadInst.cnt++,this._currentPreloadInst.cnt>2&&(this._currentPreloadInst.destroy(),this._currentPreloadInst=null)))}},{key:"addDashPreloader",value:function(e){e&&e.data&&(this._preloadDataList.push(e),this.sort(this._preloadDataList),this.autoPreload&&this.emit(PRELOAD_NEXT))}},{key:"_addDashPreloader",value:function(e){e&&e.data&&this._preloadDataList.push(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.sort(e);for(var t=0;t<e.length;t++)this._addDashPreloader(e[t])}},{key:"sort",value:function(e){e.sort((function(e,t){return void 0===e.order&&void 0===e.order||e.order<t.order?-1:1}))}},{key:"destroy",value:function(){this.off(PRELOAD_NEXT,this._onPreloadNext)}},{key:"cancelLoading",value:function(){this._currentPreloadInst&&(this._currentPreloadInst.cancelLoading(),this._currentPreloadInst=null),this._preloadDataList=[]}},{key:"preloadCacheProgress",value:function(e){var t=e.vid,r=e.format,n=e.mediaType,i=e.prelaodType,o=e.bitrate,a=e.set_duration,s=e.set_size,c=e.media_type,u=e.start_time,l=this.getProgressCacheKey(t,r,n),d=this._preloadCacheProgress[l];if(d){for(var h=Object.values(d),f=0,p=0,y=0,m=0,g=0,v=0;v<h.length;v++){var b=h[v];b.isInitSegment&&(f=b.total,y=b.loaded,m=b.loaded===b.total?DOWN_STATES.SUCCESS:DOWN_STATES.DOWNLOADING),p+=b.total,g+=b.loaded}return{media_type:c,preload_type:i,stream_bitrate:o,header_size:f,content_total_size:p,start_time:u||-1,state_info:{set_duration:a,set_size:s,current_header_download_size:y,current_content_download_size:g,header_download_state:m,content_download_state:g===p?DOWN_STATES.SUCCESS:DOWN_STATES.DOWNLOADING}}}return null}},{key:"getPreloadTaskInfos",value:function(){}},{key:"getItem",value:function(e,t){return this._cacheInst.getItem(e,t)}},{key:"setItem",value:function(e,t,r){return this._cacheInst.setItem(e,t,r)}},{key:"removeItem",value:function(e,t){return this.removeItem(e,t)}}],[{key:"getInstance",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,i=e.GLOBAL_KEY+(t.globalKey?t.globalKey:""),o=window[i];if(o&&o._ptag_)return o.update(t,r,n),o;var a=new e(t,r,n);return window[i]=a,a}}]),e}();PreloaderManager.GLOBAL_KEY="__preloadcontext__";var PreloaderBase=function(){function e(t){_classCallCheck(this,e),EventEmitter(this),this.options=t,this.promisePolyfill(),this.before(),this.check(),this._preloadManager=PreloaderManager.getInstance(t,this.handlers,this.predictInst),this.loadingTasks=[]}return _createClass(e,[{key:"promisePolyfill",value:function(){Promise.prototype.finally||(Promise.prototype.finally={finally:function(e){var t=function(t){return Promise.resolve(e()).then(t)};return this.then((function(e){return t((function(){return e}))}),(function(e){return t((function(){return Promise.reject(e)}))}))}}.finally)}},{key:"before",value:function(){throw new Error("need")}},{key:"check",value:function(){if(!this.handlers)throw new Error("handlers null");if(!this.handlers.start||!this.handlers.onRequest)throw new Error("handlers callback null");if(!this.predictInst)throw new Error("predictInst null");if(!this.predictInst.__p__)throw new Error("predictInst need extends predictbase")}},{key:"preloadNext",value:function(){this._preloadManager.emit(PRELOAD_NEXT)}},{key:"preloadManager",get:function(){return this._preloadManager}},{key:"start",value:function(e){throw new Error("start need implment, return Promise")}},{key:"cancelLoading",value:function(){for(var e=0;e<this.loadingTasks.length;e++)try{var t=this.loadingTasks[e];"function"==typeof t.cancel&&t.cancel()}catch(e){}this.loadingTasks=[],this._preloadManager.cancelLoading()}},{key:"addTasker",value:function(e){this.loadingTasks.push(e)}},{key:"removeTasker",value:function(e){var t=this;setTimeout((function(){for(var r=t.loadingTasks.length-1;r>-1;r--)if(t.loadingTasks[r]===e){t.loadingTasks.splice(r,1);break}}))}},{key:"addDashPreloader",value:function(e){this._preloadManager.addDashPreloader(e)}},{key:"addDashPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this._preloadManager.addDashPreloaderList(e)}}]),e}(),PredictBase=function(){function e(){_classCallCheck(this,e),this.bandwidth2item={},this._mediaInfos=null,this.__p__=!0}return _createClass(e,[{key:"init",value:function(){throw new Error("init func not implement, return promise")}},{key:"preloadPredict",value:function(e){throw new Error("preloadPredict error",e)}},{key:"updateMediaInfos",value:function(e){if(this._mediaInfos=e,this.bandwidth2item={},this.dynamic_video=e&&e.dynamic_video_list,this.dynamic_video&&this.dynamic_video.length>0)for(var t=0;t<this.dynamic_video.length;t++){var r=this.dynamic_video[t];this.bandwidth2item[r.bitrate||r.bandwidth]=r}}},{key:"getIdx",value:function(e,t){var r=0;return e.forEach((function(e,n){e.definition===t&&(r=n)})),r}},{key:"cachedData",get:function(){return null}}]),e}(),VTYPES=VTYPES$1,CODEC_TYPE$1={H264:"h264",H265:"h265"},MAX_LOADING_COUNT=1,PRELOAD_TYPES=PRELOAD_TYPES$1,DEFAULT_TRUNK=8e5,_BITRATE_SELECTOR=null,Predict=function(e){_inherits$4(r,PredictBase);var t=_createSuper$4(r);function r(){return _classCallCheck$6(this,r),t.apply(this,arguments)}return _createClass$6(r,[{key:"init",value:function(){return Promise.resolve()}},{key:"preloadPredict",value:function(e){return e}}]),r}(),Mp4Preloader=function(e){_inherits$4(a,PreloaderBase);var t,r,n,i,o=_createSuper$4(a);function a(e,t){var r;return _classCallCheck$6(this,a),e.vtype=VTYPES.MP4,(r=o.call(this,e)).player=t,r.loadingCount=0,r._mp4=null,r._loader=null,r._pendingPromise=null,r.playerId=t.playerId,r}return _createClass$6(a,[{key:"log",value:function(e){for(var t="[Preloader] ".concat(e),r=arguments.length,n=new Array(r>1?r-1:0),i=1;i<r;i++)n[i-1]=arguments[i];log$2.apply(void 0,[t].concat(n))}},{key:"before",value:function(){var e=this;this.handlers={start:function(t){var r=t.payload||[];if(0===r.length)return Promise.reject();var n=t.vid,i=t.vtype||VTYPES.MP4,o=t.codecType||CODEC_TYPE$1.H264,s=e.getUserSelectDefinition(),c=e.checkCacheKey(n,r,s,i,o);if(console.log("[Preloader] ".concat(n," codecType:").concat(o," vtype:").concat(i," hasCache:").concat(c)),c||"MP3"===i)return Promise.reject();var u=e.getInitDefinition(r,e.options.definition,s);if(console.log("[Preloader] ".concat(n," getInitDefinition"),u),!u)return Promise.reject();var l=u.definition,d=t.preloadTime||e.options.preloadTime,h=t.preloadSize||e.options.preloadSize||Math.pow(25,4)-1,f=a.generateUniqueKey({vid:n,definition:l,vtype:i,codecType:o});log$2("[Preloader] ".concat(n," start duration:").concat(u.duration," cacheKey:").concat(f));var p=_objectSpread2$2({vid:n,definition:l,preloadTime:d,preloadSize:h,cacheKey:f,codecType:o,vtype:i},u);return e.loadingCount++,e.start(p)},onRequest:function(t,r){var n=t.url,i=t.range,o=t.extData;return e.getData(n,i,o,r)}},this.loggerConfig={logger:function(){},openLog:!1},this.predictInst=new Predict(this.loggerConfig)}},{key:"start",value:function(e){var t=this,r={mediaInfos:{dynamic_video_list:[],dynamic_audio_list:[]},onObtain:function(){var e=new ProxyPromise;return e.resolve(r.mediaInfos),e},onTransform:function(r){var n=new ProxyPromise;t._pendingPromise=n;var i=e.preloadTime,o=e.codecType;return i&&(o!==CODEC_TYPE$1.H265||t.options.supportHevc)?t.loadByPreloadTime(e,n):t.loadByChunkSize(e,n),n}};return Promise.resolve(r)}},{key:"getInitDefinition",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=null;if(a.BitRateAdapter)n=a.BitRateAdapter.getSuitableBitrate(e,r),this.log("Mp4Preloader.BitRateAdapter",n);else{for(var i=0,o=0;o<e.length;o++){if(e[o].definition===t){i=o;break}}n=e[i]}return n||(n=e[0]),n}},{key:"getPreLoadData",value:function(e){var t=this,r=new ProxyPromise;return this.getItemSameVid(e).then((function(e){if(t.log("getPreLoadData",e.value),e.value){var n=e.value,i=n.mediaSegList,o=n.meta,a=n.type,s=n.buffer,c=n.preloadTime,u=n.vid,l=n.cacheKey,d=n.definition,h=n.byteLength,f=n.duration,p=n.fileSize,y=n.from,m=n.vtype,g=n.codecType,v=n.initSeg,b={vid:u,type:a,vtype:m,codecType:g,definition:d,bitrate:n.bitrate,cacheKey:l,duration:f||0,byteLength:h,from:y,meta:o};a===PRELOAD_TYPES.SIZE?(b.buffer=s,b.fileSize=p||0):(b.mediaSegList=i,b.preloadTime=c,b.initSeg=v),r.resolve(b)}else r.resolve(null)})).catch((function(e){r.reject(e)})),r}},{key:"setPreLoadData",value:(i=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l,d,h,f,p,y,m,g,v,b,_,$=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=new ProxyPromise,i=r.mediaSegList,o=r.meta,a=r.vid,s=r.definition,c=r.type,u=r.buffer,l=r.duration,d=r.byteLength,h=r.preloadTime,f=r.preloadSize,p=r.fileSize,y=r.from,m=r.vtype,g=r.codecType,v=r.initSeg,b=r.bitrate,_={codecType:g,vtype:m,vid:a,definition:s,cacheKey:t,type:c,from:y,meta:o,fileSize:p,bitrate:b},c===PRELOAD_TYPES.SIZE?(_.buffer=u,_.byteLength=d||0,_.preloadSize=f||0,_.fileSize=p,_.buffer&&_.buffer.byteLength>0&&(this.setItem(t,_),n.resolve(!0))):(_.mediaSegList=i||[],_.duration=l,_.byteLength=d||0,_.preloadTime=h||0,_.initSeg=v,o&&0===i.length?(this.setItem(t,_),n.resolve(!0)):(i.every((function(e){return!!e.buffer&&e.state}))||n.resolve(!1),this.setItem(t,_).then((function(){$.log("setPreLoadData1 success",t,(new Date).getTime())})),n.resolve(!0))),e.abrupt("return",n);case 5:case"end":return e.stop()}}),e,this)}))),function(e,t){return i.apply(this,arguments)})},{key:"getInitCacheData",value:function(e,t){var r={type:e,meta:null,byteLength:0,fileSize:0,bitrate:0};return e===PRELOAD_TYPES.DURATION?(r.mediaSegList=[],r.initSeg=null,r.duration=0):r.buffer=null,Object.keys(t).map((function(e){r[e]=t[e]})),r}},{key:"updatePreCacheData",value:function(e,t,r,n,i,o,a){var s=e.mediaSegList;if(e.type===PRELOAD_TYPES.SIZE||-1===i)return e.buffer=Concat(Uint8Array,e.buffer.buffer||[],new Uint8Array(t)),e;for(var c=-1,u=0;u<s.length;u++)if(s[u].index===i){c=u;break}var l=o||[0,0];return c>-1?(t&&(s[c].buffer=Concat(Uint8Array,s[c].buffer||[],new Uint8Array(t))),r.length>1&&(s[c].range.length>1?s[c].range[1]=r[1]:s[c].range=r),-1!==a[1]&&(n=s[c].range[1]>=a[1]),s[c].state=n):(e.duration=l[1],s.push({buffer:t,range:r||[],index:i,totalRange:a||[],timeRange:[l[0],l[1]],state:n})),n&&(e.byteLength=r[1]),n}},{key:"checkCacheKey",value:function(e,t,r){var n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:VTYPES.MP4,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:CODEC_TYPE$1.H264;if(r){var o=a.generateUniqueKey({vid:e,definition:r,vtype:n,codecType:i});return this.hasItemSameVid(o)?o:null}for(var s=0;s<t.length;s++){var c=a.generateUniqueKey({vid:e,definition:t[s].definition,vtype:n,codecType:i});if(this.hasItemSameVid(c))return c}return null}},{key:"checkCanPreloadNext",value:function(){var e=!0;return this.loadingCount>=MAX_LOADING_COUNT&&(e=!1),e&&this.preloadNext(),e}},{key:"loadByPreloadTime",value:function(e,t){var r=this,n=e.vid,i=e.cacheKey,o=e.preloadTime,a=e.definition,s=e.duration,c=e.bitrate,u=e.codecType,l=e.vtype,d=null;if(d="Array"===util.typeOf(e.url)?e.url.length>1?e.url[1].src:e.url[0].src:e.url){d=util.extUrl(d,{__vid:n});var h=o>=this.options.segmentMinDuration?this.options.segmentMinDuration:o;this.log("loadByPreloadTime","".concat(e.cacheKey,", definition:").concat(e.definition,",segmentMinDuration:").concat(h),e);var f=util.getFileSize(c,s);this._mp4=new MP4(d,c,_objectSpread2$2({segmentDuration:h,codecType:this.codecType,chunkSize:this.options.preloadSize,duration:s,fileSize:f,playerId:this.playerId,vid:n,useUrlRange:!1,retryCount:1,retryDelay:1e3,supportHevc:this.options.supportHevc},this.options.reqOptions),null,null,{},[],this.firstFrameTime,"");var p=this.getInitCacheData(PRELOAD_TYPES.DURATION,{vid:n,preloadTime:o,definition:a,cacheKey:i,codecType:u,vtype:l,bitrate:c||0});this._mp4.once("metaReady",(function(i){r.log("".concat(n," metaReady this._pendingPromise"),r._pendingPromise.state),p.meta=i,p.from=2,r._mp4.cancelLoading(),r.startLoadByFragments(p,e,t)})),this._mp4.on("error",(function(e){console.error("[Preloader] ".concat(n," loadByPreloadTime error"),e),r._endLoadFragments()})),this._mp4.init({})}else this._endLoadFragments()}},{key:"loadByChunkSize",value:(n=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o,a,s,c,u,l,d,h,f,p,y,m,g,v,b=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(r=t.vid,n=t.cacheKey,i=t.definition,o=t.duration,a=t.bitrate,s=t.codecType,c=t.vtype,u=this.options,l="Array"===util.typeOf(t.url)?t.url[0].src:t.url){e.next=6;break}return this._endLoadChunk(),e.abrupt("return");case 6:return l=util.extUrl(l,{__vid:r}),d=util.getFileSize(a,o),h=getMetaSize(o,DEFAULT_TRUNK,d),this.log("".concat(r,"loadByChunkSize"),t.cacheKey,t.definition,h,t),f=this.getInitCacheData(PRELOAD_TYPES.SIZE,{vid:r,definition:i,cacheKey:n,codecType:s,vtype:c,fileSize:d,bitrate:a||0}),this.MP4Loader=new MP4Loader(_objectSpread2$2(_objectSpread2$2({url:l,retry:u.retry||2,retryDelay:u.retryDelay||1e3,timeout:3e3},u.reqOptions),{},{segmentDuration:u.segmentDuration})),e.prev=12,p=new Uint8Array(0),y=0,m=null,g=null,v=function(e,t,r){if(e&&r.range[0]===y&&(p=Concat(Uint8Array,p,new Uint8Array(e)),y+=e.byteLength),r.meta){b.MP4Loader.cancel();var i=r.meta,o=i.videoSegments,a=i.audioSegments;g=_objectSpread2$2(_objectSpread2$2({},i.meta),{},{ext:{videoTrak:o,audioTrak:a}}),f.meta=g,f.buffer=p,f.byteLength=p.byteLength,b.setPreLoadData(n,f),m=util.getFragRange(0,o,a),b.log("".concat(n," onProgressHandle4 meta"),t,m,y,p.byteLength),m[0]<y&&(m[0]=y),b._loadOneChunk(f,m)}},e.next=20,this.MP4Loader.loadMetaProcess(this.MP4Loader.cache,[0,h],v);case 20:e.next=26;break;case 22:e.prev=22,e.t0=e.catch(12),console.error("[Preloader] ".concat(n," loadByChunkSize error"),e.t0),this._endLoadChunk();case 26:case"end":return e.stop()}}),e,this,[[12,22]])}))),function(e){return n.apply(this,arguments)})},{key:"_loadOneChunk",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r){var n,i,o,a,s,c,u,l;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return n=t.vid,i=t.cacheKey,o=t.buffer,e.prev=1,e.next=4,this.MP4Loader.loadData(r,this.MP4Loader.cache,{});case 4:a=e.sent,this.log("".concat(n," _loadOneChunk"),r,a),s=a.response,(c=a.data)?(this._endLoadChunk(),s&&s.headers&&(u=util.getFileSize(s.headers))&&(t.fileSize=u),l=Concat(Uint8Array,o,new Uint8Array(c)),t.buffer=l,t.byteLength=l.byteLength,this.log("".concat(n," _loadOneChunk ret"),i,l.byteLength,t),t.from=4,this.setPreLoadData(i,t)):this._endLoadChunk(),e.next=14;break;case 10:e.prev=10,e.t0=e.catch(1),console.error("[Preloader] ".concat(n," loadByChunkSize error"),e.t0),this._endLoadChunk();case 14:case"end":return e.stop()}}),e,this,[[1,10]])}))),function(e,t){return r.apply(this,arguments)})},{key:"_endLoadChunk",value:function(){this.log("_endLoadChunk loadingCount:".concat(this.loadingCount),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this.MP4Loader&&(this.MP4Loader.cancel(),this.MP4Loader.destroy(),this.MP4Loader=null)}},{key:"startLoadByFragments",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t,r,n){var i,o,a,s,c,u,l=this;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:for(i=r.preloadTime,o=r.vid,console.log("[Preloader] ".concat(o," startLoadByFragments")),a=[],s=0;s<this._mp4.timeRange.length;s++)this._mp4.timeRange[s].startTime<=i&&a.push(s);return c=function(e){l.log("[Preloader] _failedCallback",e),l._endLoadFragments()},u=function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(r){var n,i,o,s,d,h,f,p,y;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(l._mp4){e.next=2;break}return e.abrupt("return");case 2:if(n=r.buffer,i=r.context,o=r.state,s=r.initSeg,d=i.fragIndex,h=i.range,f=i.timeRange,p=l._mp4.getFragRange(d),!t.initSeg&&s&&(t.initSeg=s),y=l.updatePreCacheData(t,n,h,o,d,f,p),console.log("[Preloader] ".concat(t.cacheKey," _successCallback"),d,o,y,h,f,p,r),t.from=3,!y){e.next=20;break}return e.next=12,l.setPreLoadData(t.cacheKey,t);case 12:if(!(d>=a.length-1)){e.next=17;break}l.log("".concat(t.cacheKey," mp4.load end"),d),l._endLoadFragments(),e.next=20;break;case 17:return l.log("".concat(t.cacheKey," mp4.load start"),d+1),e.next=20,l._mp4.loadAllFragmentData(d+1,u,c);case 20:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}(),e.next=8,this._mp4.loadAllFragmentData(0,u,c);case 8:case"end":return e.stop()}}),e,this)}))),function(e,r,n){return t.apply(this,arguments)})},{key:"_endLoadFragments",value:function(){this.log("_endLoadFragments loadingCount:".concat(this.loadingCount),this._pendingPromise?this._pendingPromise.state:null),this._pendingPromise&&(this._pendingPromise.resolve(),this._pendingPromise=null),this.loadingCount>0&&this.loadingCount--,this._mp4&&(this._mp4.destroy(),this._mp4=null)}},{key:"getFragment",value:function(e,t,r,n,i){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{},a=new ProxyPromise;return this.getData(e,t,o,!1).then((function(e){n.createFragment(new Uint8Array(e.res),t[0]-n.mdatStart,r,{range:t,context:e.context}).then((function(e){a.resolve(e)}))})),a}},{key:"getPreloadUrl",value:function(e){var t=e.url,r=e.range,n=e.definition,i=e.vid;return[{url:t,range:r,extData:{cacheKey:a.generateUniqueKey({vid:i,start:r[0],end:r[1],definition:n}),vid:i,format:"mp4"}}]}},{key:"getRangeList",value:function(e){var t=this.allCachedKeys,r={timeRange:[],contentRange:[]};for(var n in t)if(t.hasOwnProperty(n)&&n.indexOf(e)>-1){var i=n.split("#");0===i[2].indexOf("pretime")?r.timeRange.push([0,parseFloat(i[2].slice(7))]):r.contentRange.push([parseInt(i[2]),parseInt(i[3])])}return r}},{key:"hasItemSameVid",value:function(e){if(!e)return!1;var t=this.allCachedKeys;for(var r in t)if(t.hasOwnProperty(r)){if(r===e)return r;var n=r.split("#"),i=e.split("#");if(n.length>=4&&i.length>=4&&n[0]===i[0]){if(0===n[2].indexOf("pretime")&&0===i[2].indexOf("pretime"))return r;var o=[parseInt(n[2]),parseInt(n[3])],a=[parseInt(i[2]),parseInt(i[3])];if(a[0]>=o[0]&&a[1]>a[0]&&a[1]<=o[1])return r}}return!1}},{key:"removeOthers",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],r=this.allCachedKeys;for(var n in r)r.hasOwnProperty(n)&&n.split("#").length>=1&&function(){var r=n.split("#")[0];t.every((function(e){return e.split("#").length>=1&&e.split("#")[0]!==r}))&&(e.log("remove cache:".concat(n)),e.cacheInst.removeItem(n))}()}},{key:"getItemSameVid",value:function(e,t){var r=this.hasItemSameVid(e);return this.log("getItemSameVid: key:".concat(e," checkResult:").concat(r)),r?this.cacheInst.getItem(r,t).then((function(e){return{value:e,key:r}})):Promise.resolve({})}},{key:"setItem",value:function(e,t){return this.cacheInst.setItem(e,t)}},{key:"allCachedKeys",get:function(){return this.cacheInst._allCachedKeys}},{key:"cacheInst",get:function(){return this._preloadManager._cacheInst}},{key:"cancelPreloadByVid",value:function(e){if(e){for(var t=this._preloadManager._preloadDataList,r=[],n=0;n<t.length;n++){t[n].data.vid!==e?r.push(t[n]):(console.log("[Preloader] cancelPreloadByVid",e),this.log("cancelPreloadByVid",e))}this._preloadManager._preloadDataList=r}}},{key:"cancelLoading",value:function(e){this._endLoadFragments(),this._endLoadChunk();var t=this._preloadManager;if(t._currentPreloadInst){var r=t._currentPreloadInst._toLoadList,n=[];r.map((function(t){return t.playerId!==e&&n.push(t),t})),t._currentPreloadInst._toLoadList=n}var i=[],o=[];t._preloadDataList.map((function(t){return t.playerId!==e?i.push(t):o.push(t.data.vid),t})),this.log("cancelLoading",e,o.join(",")),t._preloadDataList=i}},{key:"checkIfExistInList",value:function(e){for(var t=this._preloadManager._preloadDataList,r=0;r<t.length;r++)if(e===t[r].data.vid)return!0;return!1}},{key:"addPreloader",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"";if(e.data){e.data.vtype||(e.data.vtype=VTYPES.MP4);var n=e.data.vid,i=this.checkIfExistInList(n);console.log("[Preloader] addPreloader checkIfExistInList",n,i),r&&n===r||i||(e.playerId=t,this.addDashPreloader(e))}}},{key:"addPreloaderList",value:function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=[],n=0;n<e.length;n++){var i=e[n].data,o=i.vid,a=i.vtype,s=this.checkIfExistInList(o);console.log("[Preloader] addPreloaderList checkIfExistInList",o,o===t,s),t&&o===t||s||(a||(e[n].data.vtype=VTYPES.MP4),r.push(e[n]))}console.log("[Preloader] addPreloaderList length is ".concat(r.length)),this.addDashPreloaderList(r)}},{key:"setUserSelectDefinition",value:function(e){this._preloadManager&&(this._preloadManager.userDefinition=e)}},{key:"getUserSelectDefinition",value:function(){return this._preloadManager.userDefinition||null}},{key:"destroy",value:function(){this._endLoadFragments(),this._endLoadChunk(),this.cancelLoading(this.playerId)}}],[{key:"PRELOAD_TYPES",get:function(){return PRELOAD_TYPES}},{key:"BitRateAdapter",get:function(){return _BITRATE_SELECTOR},set:function(e){_BITRATE_SELECTOR=e}},{key:"generateUniqueKey",value:function(e){var t=e.vid,r=e.mediaType,n=e.definition,i=e.codecType,o=e.vtype;return r=r||"video",n=n||"-1",i=i||CODEC_TYPE$1.H264,o=o||VTYPES.MP4,t?"".concat(t,"#").concat(r,"#").concat(i,"#").concat(o,"#").concat(n):null}}]),a}(),CUSTOM_EVENTS={MEDIA_EXPIRED:"MEDIA_EXPIRED",INIT_FAIL:"INIT_FAIL",PARSE_ERROR:"PARSE_ERROR",PLAYER_LOG:"PLAYER_LOG",BUFFERED_RESET:"BUFFERED_RESET"},BUFFER_BREAK=1e4,$$b=_export$2,$reduce=arrayReduce$2.left,arrayMethodIsStrict$1=arrayMethodIsStrict$h,CHROME_VERSION=engineV8Version$2,IS_NODE=engineIsNode$2,STRICT_METHOD$1=arrayMethodIsStrict$1("reduce"),CHROME_BUG=!IS_NODE&&CHROME_VERSION>79&&CHROME_VERSION<83;$$b({target:"Array",proto:!0,forced:!STRICT_METHOD$1||CHROME_BUG},{reduce:function(e){var t=arguments.length;return $reduce(this,e,t,t>1?arguments[1]:void 0)}});var GapJump=function(){function e(t,r){_classCallCheck$6(this,e),this.player=t,this.mediaElem=t.video,this.config=r,this.timer=new IntervalTimer$1,this.prevReadyState=this.mediaElem.readyState,this.didFireLargeGap=!1,this.seekingEventReceived=!1,this.onWaitFunc=this._onWaiting.bind(this),this.onPlayFunc=this._onPlay.bind(this),this.isSafari=/(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent)&&!/Chrome/.test(navigator.userAgent)&&!/BlackBerry/.test(navigator.platform),!1!==this.config.useGapJump&&this._start(),this.hasPlayed=!1}return _createClass$6(e,[{key:"_onWaiting",value:function(){this.onGapJump()}},{key:"_onPlay",value:function(){this.hasPlayed=!0}},{key:"_start",value:function(){this.mediaElem.addEventListener("waiting",this.onWaitFunc),this.mediaElem.addEventListener("play",this.onPlayFunc)}},{key:"onSegmentAppend",value:function(e){if(this.config.enableCheckBufferDiff&&this.mediaElem){var t=e.reduce((function(e,t){return e+t.downloaded?t[1]-t[0]:0}),0);this._getBuffered(this.mediaElem.buffered).reduce((function(e,t){return e+(t.end-t.start)}),0)/t<.8&&(log$2("onSegmentAppend detectGap"),this.player&&this.player.emit("detectGap"))}this.onGapJump()}},{key:"onSeeking",value:function(){this.seekingEventReceived=!0,this.didFireLargeGap=!1}},{key:"onGapJump",value:function(){if(this.mediaElem.readyState!==HTMLMediaElement.HAVE_NOTHING){if(this.mediaElem.seeking){if(!this.seekingEventReceived)return}else this.seekingEventReceived=!1;if(!this.mediaElem.paused||0===this.mediaElem.currentTime||!this.hasPlayed){this.mediaElem.readyState!==this.prevReadyState&&(this.didFireLargeGap=!1,this.prevReadyState=this.mediaElem.readyState);var t=this.mediaElem.buffered,r=this.config.smallGapLimit||.5,n=this.config.gapDetectionThreshold||.1,i=this.mediaElem.currentTime,o=this._getIndex(t,i,n);if(null!==o&&(0!==o||t&&t.length)){var a=t.start(o)+.1;if(!(a>this.mediaElem.duration)){var s=a-i,c=s<=r;s<e.BROWSER_GAP_TOLERANCE||c&&(!0!==this.config.disableGapSetPosition&&(log$2("onGapJump this.mediaElem.currentTime"),this.mediaElem.currentTime=this.isSafari?a+.1:a),this.player&&this.player.emit("detectGap"),log$2("gapJump gapIndex",o,"isGapSamll",c,"jumpLargeGap",!1,"currentTime",this.mediaElem.currentTime),.08!==a&&this.player&&this.player.emit("log",{type:"oneevent",end_type:"gap",vid:this.player.config.vid,ext:{video_postion:Math.floor(1e3*a)}}))}}}}}},{key:"_getIndex",value:function(e,t,r){if(!e||!e.length)return null;if(1===e.length&&e.end(0)-e.start(0)<1e-6)return null;for(var n=this._getBuffered(e),i=null,o=0;o<n.length;o++){if(n[o].start>t&&(0===o||n[o-1].end-t<=r)){i=o;break}}return i}},{key:"_getBuffered",value:function(e){if(!e)return[];for(var t=[],r=0;r<e.length;r++)t.push({start:e.start(r),end:e.end(r)});return t}},{key:"destroy",value:function(){this.mediaElem.removeEventListener("waiting",this.onWaitFunc),this.mediaElem.removeEventListener("play",this.onPlayFunc),this.timer.clear(),this.timer=null}}]),e}();GapJump.BROWSER_GAP_TOLERANCE=.001;var call=functionCall,hasOwn$2=hasOwnProperty_1,isPrototypeOf$1=objectIsPrototypeOf,regExpFlags=regexpFlags,RegExpPrototype$1=RegExp.prototype,regexpGetFlags=function(e){var t=e.flags;return void 0!==t||"flags"in RegExpPrototype$1||hasOwn$2(e,"flags")||!isPrototypeOf$1(RegExpPrototype$1,e)?t:call(regExpFlags,e)},PROPER_FUNCTION_NAME=functionName.PROPER,defineBuiltIn$1=defineBuiltIn$d,anObject$1=anObject$i,$toString=toString$d,fails$c=fails$G,getRegExpFlags=regexpGetFlags,TO_STRING="toString",RegExpPrototype=RegExp.prototype,nativeToString=RegExpPrototype[TO_STRING],NOT_GENERIC=fails$c((function(){return"/a/b"!=nativeToString.call({source:"a",flags:"b"})})),INCORRECT_NAME=PROPER_FUNCTION_NAME&&nativeToString.name!=TO_STRING;(NOT_GENERIC||INCORRECT_NAME)&&defineBuiltIn$1(RegExp.prototype,TO_STRING,(function(){var e=anObject$1(this);return"/"+$toString(e.source)+"/"+$toString(getRegExpFlags(e))}),{unsafe:!0});var global$6=global$C,fails$b=fails$G,uncurryThis$7=functionUncurryThis,toString$4=toString$d,trim$2=stringTrim.trim,whitespaces$1=whitespaces$3,$parseInt$1=global$6.parseInt,Symbol$2=global$6.Symbol,ITERATOR$2=Symbol$2&&Symbol$2.iterator,hex=/^[+-]?0x/i,exec=uncurryThis$7(hex.exec),FORCED$5=8!==$parseInt$1(whitespaces$1+"08")||22!==$parseInt$1(whitespaces$1+"0x16")||ITERATOR$2&&!fails$b((function(){$parseInt$1(Object(ITERATOR$2))})),numberParseInt=FORCED$5?function(e,t){var r=trim$2(toString$4(e));return $parseInt$1(r,t>>>0||(exec(hex,r)?16:10))}:$parseInt$1,$$a=_export,$parseInt=numberParseInt;$$a({global:!0,forced:parseInt!=numberParseInt},{parseInt:numberParseInt});var internalMetadata={exports:{}},objectGetOwnPropertyNamesExternal={},classof$1=classofRaw$2,toIndexedObject$1=toIndexedObject$b,$getOwnPropertyNames=objectGetOwnPropertyNames.f,arraySlice=arraySliceSimple,windowNames="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],getWindowNames=function(e){try{return $getOwnPropertyNames(e)}catch(e){return arraySlice(windowNames)}};objectGetOwnPropertyNamesExternal.f=function(e){return windowNames&&"Window"==classof$1(e)?getWindowNames(e):$getOwnPropertyNames(toIndexedObject$1(e))};var fails$a=fails$G,arrayBufferNonExtensible=fails$a((function(){if("function"==typeof ArrayBuffer){var e=new ArrayBuffer(8);Object.isExtensible(e)&&Object.defineProperty(e,"a",{value:8})}})),fails$9=fails$G,isObject$4=isObject$n,classof=classofRaw$2,ARRAY_BUFFER_NON_EXTENSIBLE=arrayBufferNonExtensible,$isExtensible=Object.isExtensible,FAILS_ON_PRIMITIVES$1=fails$9((function(){$isExtensible(1)})),objectIsExtensible=FAILS_ON_PRIMITIVES$1||ARRAY_BUFFER_NON_EXTENSIBLE?function(e){return!!isObject$4(e)&&((!ARRAY_BUFFER_NON_EXTENSIBLE||"ArrayBuffer"!=classof(e))&&(!$isExtensible||$isExtensible(e)))}:$isExtensible,fails$8=fails$G,freezing=!fails$8((function(){return Object.isExtensible(Object.preventExtensions({}))})),$$9=_export,uncurryThis$6=functionUncurryThis,hiddenKeys=hiddenKeys$6,isObject$3=isObject$n,hasOwn$1=hasOwnProperty_1,defineProperty$1=objectDefineProperty.f,getOwnPropertyNamesModule=objectGetOwnPropertyNames,getOwnPropertyNamesExternalModule=objectGetOwnPropertyNamesExternal,isExtensible4=objectIsExtensible,uid=uid$5,FREEZING=freezing,REQUIRED=!1,METADATA=uid("meta"),id=0,setMetadata=function(e){defineProperty$1(e,METADATA,{value:{objectID:"O"+id++,weakData:{}}})},fastKey$1=function(e,t){if(!isObject$3(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!hasOwn$1(e,METADATA)){if(!isExtensible4(e))return"F";if(!t)return"E";setMetadata(e)}return e[METADATA].objectID},getWeakData=function(e,t){if(!hasOwn$1(e,METADATA)){if(!isExtensible4(e))return!0;if(!t)return!1;setMetadata(e)}return e[METADATA].weakData},onFreeze=function(e){return FREEZING&&REQUIRED&&isExtensible4(e)&&!hasOwn$1(e,METADATA)&&setMetadata(e),e},enable=function(){meta.enable=function(){},REQUIRED=!0;var e=getOwnPropertyNamesModule.f,t=uncurryThis$6([].splice),r={};r[METADATA]=1,e(r).length&&(getOwnPropertyNamesModule.f=function(r){for(var n=e(r),i=0,o=n.length;i<o;i++)if(n[i]===METADATA){t(n,i,1);break}return n},$$9({target:"Object",stat:!0,forced:!0},{getOwnPropertyNames:getOwnPropertyNamesExternalModule.f}))},meta=internalMetadata.exports={enable:enable,fastKey:fastKey$1,getWeakData:getWeakData,onFreeze:onFreeze};hiddenKeys[METADATA]=!0;var internalMetadataExports=internalMetadata.exports,$$8=_export,global$5=global$C,uncurryThis$5=functionUncurryThis,isForced$1=isForced_1,defineBuiltIn=defineBuiltIn$d,InternalMetadataModule=internalMetadataExports,iterate$1=iterate$4,anInstance$1=anInstance$5,isCallable=isCallable$p,isNullOrUndefined$1=isNullOrUndefined$8,isObject$2=isObject$n,fails$7=fails$G,checkCorrectnessOfIteration=checkCorrectnessOfIteration$3,setToStringTag=setToStringTag$6,inheritIfRequired$1=inheritIfRequired$3,collection$1=function(e,t,r){var n=-1!==e.indexOf("Map"),i=-1!==e.indexOf("Weak"),o=n?"set":"add",a=global$5[e],s=a&&a.prototype,c=a,u={},l=function(e){var t=uncurryThis$5(s[e]);defineBuiltIn(s,e,"add"==e?function(e){return t(this,0===e?0:e),this}:"delete"==e?function(e){return!(i&&!isObject$2(e))&&t(this,0===e?0:e)}:"get"==e?function(e){return i&&!isObject$2(e)?void 0:t(this,0===e?0:e)}:"has"==e?function(e){return!(i&&!isObject$2(e))&&t(this,0===e?0:e)}:function(e,r){return t(this,0===e?0:e,r),this})};if(isForced$1(e,!isCallable(a)||!(i||s.forEach&&!fails$7((function(){(new a).entries().next()})))))c=r.getConstructor(t,e,n,o),InternalMetadataModule.enable();else if(isForced$1(e,!0)){var d=new c,h=d[o](i?{}:-0,1)!=d,f=fails$7((function(){d.has(1)})),p=checkCorrectnessOfIteration((function(e){new a(e)})),y=!i&&fails$7((function(){for(var e=new a,t=5;t--;)e[o](t,t);return!e.has(-0)}));p||((c=t((function(e,t){anInstance$1(e,s);var r=inheritIfRequired$1(new a,e,c);return isNullOrUndefined$1(t)||iterate$1(t,r[o],{that:r,AS_ENTRIES:n}),r}))).prototype=s,s.constructor=c),(f||y)&&(l("delete"),l("has"),n&&l("get")),(y||h)&&l(o),i&&s.clear&&delete s.clear}return u[e]=c,$$8({global:!0,constructor:!0,forced:c!=a},u),setToStringTag(c,e),i||r.setStrong(c,e,n),c},create$1=objectCreate,defineBuiltInAccessor=defineBuiltInAccessor$5,defineBuiltIns=defineBuiltIns$2,bind$1=functionBindContext,anInstance=anInstance$5,isNullOrUndefined=isNullOrUndefined$8,iterate=iterate$4,defineIterator$1=iteratorDefine,createIterResultObject$1=createIterResultObject$3,setSpecies=setSpecies$3,DESCRIPTORS$1=descriptors,fastKey=internalMetadataExports.fastKey,InternalStateModule$1=internalState,setInternalState$1=InternalStateModule$1.set,internalStateGetterFor=InternalStateModule$1.getterFor,collectionStrong$1={getConstructor:function(e,t,r,n){var i=e((function(e,i){anInstance(e,o),setInternalState$1(e,{type:t,index:create$1(null),first:void 0,last:void 0,size:0}),DESCRIPTORS$1||(e.size=0),isNullOrUndefined(i)||iterate(i,e[n],{that:e,AS_ENTRIES:r})})),o=i.prototype,a=internalStateGetterFor(t),s=function(e,t,r){var n,i,o=a(e),s=c(e,t);return s?s.value=r:(o.last=s={index:i=fastKey(t,!0),key:t,value:r,previous:n=o.last,next:void 0,removed:!1},o.first||(o.first=s),n&&(n.next=s),DESCRIPTORS$1?o.size++:e.size++,"F"!==i&&(o.index[i]=s)),e},c=function(e,t){var r,n=a(e),i=fastKey(t);if("F"!==i)return n.index[i];for(r=n.first;r;r=r.next)if(r.key==t)return r};return defineBuiltIns(o,{clear:function(){for(var e=a(this),t=e.index,r=e.first;r;)r.removed=!0,r.previous&&(r.previous=r.previous.next=void 0),delete t[r.index],r=r.next;e.first=e.last=void 0,DESCRIPTORS$1?e.size=0:this.size=0},delete:function(e){var t=this,r=a(t),n=c(t,e);if(n){var i=n.next,o=n.previous;delete r.index[n.index],n.removed=!0,o&&(o.next=i),i&&(i.previous=o),r.first==n&&(r.first=i),r.last==n&&(r.last=o),DESCRIPTORS$1?r.size--:t.size--}return!!n},forEach:function(e){for(var t,r=a(this),n=bind$1(e,arguments.length>1?arguments[1]:void 0);t=t?t.next:r.first;)for(n(t.value,t.key,this);t&&t.removed;)t=t.previous},has:function(e){return!!c(this,e)}}),defineBuiltIns(o,r?{get:function(e){var t=c(this,e);return t&&t.value},set:function(e,t){return s(this,0===e?0:e,t)}}:{add:function(e){return s(this,e=0===e?0:e,e)}}),DESCRIPTORS$1&&defineBuiltInAccessor(o,"size",{configurable:!0,get:function(){return a(this).size}}),i},setStrong:function(e,t,r){var n=t+" Iterator",i=internalStateGetterFor(t),o=internalStateGetterFor(n);defineIterator$1(e,t,(function(e,t){setInternalState$1(this,{type:n,target:e,state:i(e),kind:t,last:void 0})}),(function(){for(var e=o(this),t=e.kind,r=e.last;r&&r.removed;)r=r.previous;return e.target&&(e.last=r=r?r.next:e.state.first)?createIterResultObject$1("keys"==t?r.key:"values"==t?r.value:[r.key,r.value],!1):(e.target=void 0,createIterResultObject$1(void 0,!0))}),r?"entries":"values",!r,!0),setSpecies(t)}},collection=collection$1,collectionStrong=collectionStrong$1;collection("Map",(function(e){return function(){return e(this,arguments.length?arguments[0]:void 0)}}),collectionStrong);var charAt$1=stringMultibyte.charAt,toString$3=toString$d,InternalStateModule=internalState,defineIterator=iteratorDefine,createIterResultObject=createIterResultObject$3,STRING_ITERATOR="String Iterator",setInternalState=InternalStateModule.set,getInternalState=InternalStateModule.getterFor(STRING_ITERATOR);defineIterator(String,"String",(function(e){setInternalState(this,{type:STRING_ITERATOR,string:toString$3(e),index:0})}),(function(){var e,t=getInternalState(this),r=t.string,n=t.index;return n>=r.length?createIterResultObject(void 0,!0):(e=charAt$1(r,n),t.index+=e.length,createIterResultObject(e,!1))}));var global$4=global$C,DOMIterables=domIterables,DOMTokenListPrototype=domTokenListPrototype,ArrayIteratorMethods=es_array_iterator,createNonEnumerableProperty=createNonEnumerableProperty$8,wellKnownSymbol$2=wellKnownSymbol$m,ITERATOR$1=wellKnownSymbol$2("iterator"),TO_STRING_TAG=wellKnownSymbol$2("toStringTag"),ArrayValues=ArrayIteratorMethods.values,handlePrototype=function(e,t){if(e){if(e[ITERATOR$1]!==ArrayValues)try{createNonEnumerableProperty(e,ITERATOR$1,ArrayValues)}catch(t){e[ITERATOR$1]=ArrayValues}if(e[TO_STRING_TAG]||createNonEnumerableProperty(e,TO_STRING_TAG,t),DOMIterables[t])for(var r in ArrayIteratorMethods)if(e[r]!==ArrayIteratorMethods[r])try{createNonEnumerableProperty(e,r,ArrayIteratorMethods[r])}catch(t){e[r]=ArrayIteratorMethods[r]}}};for(var COLLECTION_NAME in DOMIterables)handlePrototype(global$4[COLLECTION_NAME]&&global$4[COLLECTION_NAME].prototype,COLLECTION_NAME);handlePrototype(DOMTokenListPrototype,"DOMTokenList");var global$3=global$C,path$1=global$3,uncurryThis$4=functionUncurryThis,thisNumberValue$2=uncurryThis$4(1..valueOf),$$7=_export,IS_PURE=isPure,DESCRIPTORS=descriptors,global$2=global$C,path=path$1,uncurryThis$3=functionUncurryThis,isForced=isForced_1,hasOwn4=hasOwnProperty_1,inheritIfRequired=inheritIfRequired$3,isPrototypeOf=objectIsPrototypeOf,isSymbol=isSymbol$5,toPrimitive=toPrimitive$3,fails$6=fails$G,getOwnPropertyNames9=objectGetOwnPropertyNames.f,getOwnPropertyDescriptor11=objectGetOwnPropertyDescriptor.f,defineProperty12=objectDefineProperty.f,thisNumberValue$1=thisNumberValue$2,trim$1=stringTrim.trim,NUMBER="Number",NativeNumber=global$2[NUMBER];path[NUMBER];var NumberPrototype=NativeNumber.prototype,TypeError$1=global$2.TypeError,stringSlice$1=uncurryThis$3("".slice),charCodeAt=uncurryThis$3("".charCodeAt),toNumeric=function(e){var t=toPrimitive(e,"number");return"bigint"==typeof t?t:toNumber(t)},toNumber=function(e){var t,r,n,i,o,a,s,c,u=toPrimitive(e,"number");if(isSymbol(u))throw TypeError$1("Cannot convert a Symbol value to a number");if("string"==typeof u&&u.length>2)if(u=trim$1(u),43===(t=charCodeAt(u,0))||45===t){if(88===(r=charCodeAt(u,2))||120===r)return NaN}else if(48===t){switch(charCodeAt(u,1)){case 66:case 98:n=2,i=49;break;case 79:case 111:n=8,i=55;break;default:return+u}for(a=(o=stringSlice$1(u,2)).length,s=0;s<a;s++)if((c=charCodeAt(o,s))<48||c>i)return NaN;return parseInt(o,n)}return+u},FORCED$4=isForced(NUMBER,!NativeNumber(" 0o1")||!NativeNumber("0b1")||NativeNumber("+0x1")),calledWithNew=function(e){return isPrototypeOf(NumberPrototype,e)&&fails$6((function(){thisNumberValue$1(e)}))},NumberWrapper=function(e){var t=arguments.length<1?0:NativeNumber(toNumeric(e));return calledWithNew(this)?inheritIfRequired(Object(t),this,NumberWrapper):t};NumberWrapper.prototype=NumberPrototype,FORCED$4&&!IS_PURE&&(NumberPrototype.constructor=NumberWrapper),$$7({global:!0,constructor:!0,wrap:!0,forced:FORCED$4},{Number:NumberWrapper});var copyConstructorProperties=function(e,t){for(var r,n=DESCRIPTORS?getOwnPropertyNames9(t):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),i=0;n.length>i;i++)hasOwn4(t,r=n[i])&&!hasOwn4(e,r)&&defineProperty12(e,r,getOwnPropertyDescriptor11(t,r))};(FORCED$4||IS_PURE)&&copyConstructorProperties(path[NUMBER],NativeNumber);var global$1=global$C,fails$5=fails$G,uncurryThis$2=functionUncurryThis,toString$2=toString$d,trim2=stringTrim.trim,whitespaces=whitespaces$3,charAt=uncurryThis$2("".charAt),$parseFloat$1=global$1.parseFloat,Symbol$1=global$1.Symbol,ITERATOR=Symbol$1&&Symbol$1.iterator,FORCED$3=1/$parseFloat$1(whitespaces+"-0")!=-1/0||ITERATOR&&!fails$5((function(){$parseFloat$1(Object(ITERATOR))})),numberParseFloat=FORCED$3?function(e){var t=trim2(toString$2(e)),r=$parseFloat$1(t);return 0===r&&"-"==charAt(t,0)?-0:r}:$parseFloat$1,$$6=_export,$parseFloat=numberParseFloat;$$6({global:!0,forced:parseFloat!=numberParseFloat},{parseFloat:numberParseFloat});var createTypedArrayConstructor=typedArrayConstructorExports;createTypedArrayConstructor("Int32",(function(e){return function(t,r,n){return e(this,t,r,n)}}));var SPPED_CACHE="danger_d_speed";function convert32ToC64(e){var t=e.toString(16);return t.length<=8?{high:0,low:e}:{high:parseInt(t.substr(0,t.length-8),16),low:parseInt(t.substr(t.length-8),16)}}var BaseAbr=function(){function e(t,r,n,i){var o=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{logger:function(){},openLog:!1};_classCallCheck$4(this,e),this.bitrate=r,this.segment_duration=i||5e3,this.logger=o.logger,this.openLog=o.openLog,this.cdnHost=t.cdnHost,this._loadedPromise=new ProxyPromise$1,this._wasmPromise=new ProxyPromise$1,this.config=t,this.autoBitrateOpts=t.autoBitrateOpts||{},this.stall_penalty=this.autoBitrateOpts.stall_penalty||11,this.switch_penalty=this.autoBitrateOpts.switch_penalty||4,this.interval=this.autoBitrateOpts.interval||1e3;var a=t.progressTimer||1e3,s=this.autoBitrateOpts.startInterval||a;this.initInterval=.8*s,this._prealodMethod=t.preloadmethod||0,this._videoWidth=0,this._videoHeight=0,this._hasDeviceInfoChanged=!0,this.updateMediaInfos(n,!1)}return _createClass$4(e,[{key:"onLoadWasm",value:function(){var e=this,t=this.module={onRuntimeInitialized:function(){e._wasmPromise.resolve()}};return(0,this.autoBitrateOpts.module)(t),this._wasmPromise}},{key:"updateMediaInfos",value:function(e){var t=this,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];this._heightToDefitionConfig=new Map,this._bitrateToDefitionConfig=new Map,e?(this.mediaInfos=e,this.mediaInfos.dynamic_video_list.forEach((function(e){t._heightToDefitionConfig.set(e.vheight,e),t._bitrateToDefitionConfig.set(e.bitrate,e)}))):r&&console.error("baseAbr mediaInfos null")}},{key:"parseMPD",value:function(){if(this.setDebugModel(this.openLog),this.mediaInfos){this.logger("mediaInfos",this.mediaInfos);try{for(var e=[],t=this.mediaInfos.dynamic_video_list,r=0;r<t.length;r++){var n=t[r];e.push({stream_id:"s".concat(r),bandwidth:n.bitrate||n.bandwidth,width:n.vwidth||n.width,height:n.vheight||n.height,codec:n.codecs||n.codec_type||"h264",frame_rate:Number(n.fps)||-1,segment_duration:this.segment_duration})}var i={v_adaptation:e},o=JSON.stringify(i);this.module.ccall("parseMPD","null",["string"],[o])}catch(e){}}else console.warn("mediaInfos is null")}},{key:"_getDefautSpeed",value:function(e){var t=0,r=window.navigator.connection;if(r&&r.downlink)t=1024*navigator.connection.downlink/8,this.logger("initSpeed connect",t);else try{t=parseFloat(proxyLocalStorage$1.getItem(SPPED_CACHE))||0,this.logger("initSpeed connect",t)}catch(e){}return 0===t&&(t=e&&e.historyAvspeed||0,this.logger("initSpeed history",t)),t}},{key:"setDebugModel",value:function(e){this.module._setDebugModel(e)}},{key:"updateBitrate",value:function(e){this.bitrate=e}},{key:"_updatePreloadSupplier",value:function(e,t){this.module._updatePreloadSupplier(e,t)}},{key:"updatePreloadSupplier",value:function(e){var t=this._getDefautSpeed();this._updatePreloadSupplier(t,e)}},{key:"getPreloadBitrate",value:function(){var e,t=null,r=[];try{this.logger("preloadMethod",this._prealodMethod),e=this.module._getPreloadBitrate(this._prealodMethod);for(var n=0;n<5;n++)r.push(this.module.HEAP32[e/Int32Array.BYTES_PER_ELEMENT+n]);var i={bitrate:r[0],pduration:r[1],preloadType:r[2],size:r[3],mediaType:r[4]};return this.logger("getPreloadBitrate",i),i}catch(e){t=null,console.log("getPreloadBitrate",e)}finally{this.module._free(e)}return t}},{key:"_updateDeviceInfo",value:function(e){try{if(this._hasDeviceInfoChanged){var t=window.devicePixelRatio||1;this.module._updateDeviceInfo(this._videoWidth||Number(this.config.width),this._videoHeight||Number(this.config.height),t,e||-1)}this._hasDeviceInfoChanged=!1}catch(e){console.log("_updateDeviceInfo")}}},{key:"preload",value:function(e){this.parseMPD(),this.updatePreloadSupplier(e),this._updateDeviceInfo(-1);var t=window.devicePixelRatio||1;return this.logger("baseAbr updateDeviceInfo width",this._videoWidth||Number(this.config.width),"height",this._videoHeight||Number(this.config.height),"dpr",t),this.getPreloadBitrate()}}]),e}();BaseAbr.SPPED_CACHE=SPPED_CACHE;var $$5=_export,getBuiltIn=getBuiltIn$a,apply=functionApply,bind4=functionBind,aConstructor=aConstructor$3,anObject=anObject$i,isObject$1=isObject$n,create7=objectCreate,fails$4=fails$G,nativeConstruct=getBuiltIn("Reflect","construct"),ObjectPrototype=Object.prototype,push$1=[].push,NEW_TARGET_BUG=fails$4((function(){function e(){}return!(nativeConstruct((function(){}),[],e)instanceof e)})),ARGS_BUG=!fails$4((function(){nativeConstruct((function(){}))})),FORCED$2=NEW_TARGET_BUG||ARGS_BUG;function _arrayLikeToArray(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new Array(t);r<t;r++)n[r]=e[r];return n}function _arrayWithoutHoles(e){if(Array.isArray(e))return _arrayLikeToArray(e)}function _iterableToArray(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function _unsupportedIterableToArray(e,t){if(e){if("string"==typeof e)return _arrayLikeToArray(e,t);var r=Object.prototype.toString.call(e).slice(8,-1);return"Object"===r&&e.constructor&&(r=e.constructor.name),"Map"===r||"Set"===r?Array.from(e):"Arguments"===r||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?_arrayLikeToArray(e,t):void 0}}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _toConsumableArray(e){return _arrayWithoutHoles(e)||_iterableToArray(e)||_unsupportedIterableToArray(e)||_nonIterableSpread()}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _setPrototypeOf(e,t){return(_setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e})(e,t)}function _inherits(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&_setPrototypeOf(e,t)}function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _possibleConstructorReturn(e,t){if(t&&("object"===_typeof(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(e)}function _getPrototypeOf(e){return(_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}$$5({target:"Reflect",stat:!0,forced:FORCED$2,sham:FORCED$2},{construct:function(e,t){aConstructor(e),anObject(t);var r=arguments.length<3?e:aConstructor(arguments[2]);if(ARGS_BUG&&!NEW_TARGET_BUG)return nativeConstruct(e,t,r);if(e==r){switch(t.length){case 0:return new e;case 1:return new e(t[0]);case 2:return new e(t[0],t[1]);case 3:return new e(t[0],t[1],t[2]);case 4:return new e(t[0],t[1],t[2],t[3])}var n=[null];return apply(push$1,n,t),new(apply(bind4,e,n))}var i=r.prototype,o=create7(isObject$1(i)?i:ObjectPrototype),a=apply(e,o,t);return isObject$1(a)?a:o}});var $$4=_export,toObject$1=toObject$a,nativeKeys=objectKeys$2,fails$3=fails$G,FAILS_ON_PRIMITIVES=fails$3((function(){nativeKeys(1)}));$$4({target:"Object",stat:!0,forced:FAILS_ON_PRIMITIVES},{keys:function(e){return nativeKeys(toObject$1(e))}});var $$3=_export,uncurryThis$1=functionUncurryThis,aCallable=aCallable$c,toObject=toObject$a,lengthOfArrayLike$1=lengthOfArrayLike$d,deletePropertyOrThrow=deletePropertyOrThrow$2,toString$1=toString$d,fails$2=fails$G,internalSort=arraySort,arrayMethodIsStrict=arrayMethodIsStrict$6,FF=engineFfVersion,IE_OR_EDGE=engineIsIeOrEdge,V8=engineV8Version,WEBKIT=engineWebkitVersion,test=[],nativeSort=uncurryThis$1(test.sort),push=uncurryThis$1(test.push),FAILS_ON_UNDEFINED=fails$2((function(){test.sort(void 0)})),FAILS_ON_NULL=fails$2((function(){test.sort(null)})),STRICT_METHOD=arrayMethodIsStrict("sort"),STABLE_SORT=!fails$2((function(){if(V8)return V8<70;if(!(FF&&FF>3)){if(IE_OR_EDGE)return!0;if(WEBKIT)return WEBKIT<603;var e,t,r,n,i="";for(e=65;e<76;e++){switch(t=String.fromCharCode(e),e){case 66:case 69:case 70:case 72:r=3;break;case 68:case 71:r=4;break;default:r=2}for(n=0;n<47;n++)test.push({k:t+n,v:r})}for(test.sort((function(e,t){return t.v-e.v})),n=0;n<test.length;n++)t=test[n].k.charAt(0),i.charAt(i.length-1)!==t&&(i+=t);return"DGBEFHACIJK"!==i}})),FORCED$1=FAILS_ON_UNDEFINED||!FAILS_ON_NULL||!STRICT_METHOD||!STABLE_SORT,getSortCompare=function(e){return function(t,r){return void 0===r?-1:void 0===t?1:void 0!==e?+e(t,r)||0:toString$1(t)>toString$1(r)?1:-1}};$$3({target:"Array",proto:!0,forced:FORCED$1},{sort:function(e){void 0!==e&&aCallable(e);var t=toObject(this);if(STABLE_SORT)return void 0===e?nativeSort(t):nativeSort(t,e);var r,n,i=[],o=lengthOfArrayLike$1(t);for(n=0;n<o;n++)n in t&&push(i,t[n]);for(internalSort(i,getSortCompare(e)),r=lengthOfArrayLike$1(i),n=0;n<r;)t[n]=i[n++];for(;n<o;)deletePropertyOrThrow(t,n++);return t}});var fails$1=fails$G,wellKnownSymbol$1=wellKnownSymbol$m,V8_VERSION=engineV8Version,SPECIES$1=wellKnownSymbol$1("species"),arrayMethodHasSpeciesSupport$2=function(e){return V8_VERSION>=51||!fails$1((function(){var t=[];return(t.constructor={})[SPECIES$1]=function(){return{foo:1}},1!==t[e](Boolean).foo}))},$$2=_export,$map=arrayIteration.map,arrayMethodHasSpeciesSupport$1=arrayMethodHasSpeciesSupport$2,HAS_SPECIES_SUPPORT$1=arrayMethodHasSpeciesSupport$1("map");$$2({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT$1},{map:function(e){return $map(this,e,arguments.length>1?arguments[1]:void 0)}});var $$1=_export,isArray4=isArray$3,isConstructor7=isConstructor$3,isObject=isObject$n,toAbsoluteIndex=toAbsoluteIndex$8,lengthOfArrayLike=lengthOfArrayLike$d,toIndexedObject=toIndexedObject$b,createProperty=createProperty$2,wellKnownSymbol=wellKnownSymbol$m,arrayMethodHasSpeciesSupport=arrayMethodHasSpeciesSupport$2,nativeSlice=arraySlice$9,HAS_SPECIES_SUPPORT=arrayMethodHasSpeciesSupport("slice"),SPECIES=wellKnownSymbol("species"),$Array=Array,max=Math.max;$$1({target:"Array",proto:!0,forced:!HAS_SPECIES_SUPPORT},{slice:function(e,t){var r,n,i,o=toIndexedObject(this),a=lengthOfArrayLike(o),s=toAbsoluteIndex(e,a),c=toAbsoluteIndex(void 0===t?a:t,a);if(isArray4(o)&&(r=o.constructor,(isConstructor7(r)&&(r===$Array||isArray4(r.prototype))||isObject(r)&&null===(r=r[SPECIES]))&&(r=void 0),r===$Array||void 0===r))return nativeSlice(o,s,c);for(n=new(void 0===r?$Array:r)(max(c-s,0)),i=0;s<c;s++,i++)s in o&&createProperty(n,i,o[s]);return n.length=i,n}});var toIntegerOrInfinity$1=toIntegerOrInfinity$9,toString8=toString$d,requireObjectCoercible=requireObjectCoercible$8,$RangeError$1=RangeError,stringRepeat=function(e){var t=toString8(requireObjectCoercible(this)),r="",n=toIntegerOrInfinity$1(e);if(n<0||n==1/0)throw $RangeError$1("Wrong number of repetitions");for(;n>0;(n>>>=1)&&(t+=t))1&n&&(r+=t);return r},$=_export,uncurryThis=functionUncurryThis,toIntegerOrInfinity=toIntegerOrInfinity$9,thisNumberValue=thisNumberValue$2,$repeat=stringRepeat,fails=fails$G,$RangeError=RangeError,$String=String,floor=Math.floor,repeat3=uncurryThis($repeat),stringSlice=uncurryThis("".slice),nativeToFixed=uncurryThis(1..toFixed),pow=function(e,t,r){return 0===t?r:t%2==1?pow(e,t-1,r*e):pow(e*e,t/2,r)},log=function(e){for(var t=0,r=e;r>=4096;)t+=12,r/=4096;for(;r>=2;)t+=1,r/=2;return t},multiply=function(e,t,r){for(var n=-1,i=r;++n<6;)i+=t*e[n],e[n]=i%1e7,i=floor(i/1e7)},divide=function(e,t){for(var r=6,n=0;--r>=0;)n+=e[r],e[r]=floor(n/t),n=n%t*1e7},dataToString=function(e){for(var t=6,r="";--t>=0;)if(""!==r||0===t||0!==e[t]){var n=$String(e[t]);r=""===r?n:r+repeat3("0",7-n.length)+n}return r},FORCED=fails((function(){return"0.000"!==nativeToFixed(8e-5,3)||"1"!==nativeToFixed(.9,0)||"1.25"!==nativeToFixed(1.255,2)||"1000000000000000128"!==nativeToFixed(0xde0b6b3a7640080,0)}))||!fails((function(){nativeToFixed({})}));function _createSuper(e){var t=_isNativeReflectConstruct();return function(){var r,n=_getPrototypeOf(e);if(t){var i=_getPrototypeOf(this).constructor;r=Reflect.construct(n,arguments,i)}else r=n.apply(this,arguments);return _possibleConstructorReturn(this,r)}}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}$({target:"Number",proto:!0,forced:FORCED},{toFixed:function(e){var t,r,n,i,o=thisNumberValue(this),a=toIntegerOrInfinity(e),s=[0,0,0,0,0,0],c="",u="0";if(a<0||a>20)throw $RangeError("Incorrect fraction digits");if(o!=o)return"NaN";if(o<=-1e21||o>=1e21)return $String(o);if(o<0&&(c="-",o=-o),o>1e-21)if(r=(t=log(o*pow(2,69,1))-69)<0?o*pow(2,-t,1):o/pow(2,t,1),r*=4503599627370496,(t=52-t)>0){for(multiply(s,0,r),n=a;n>=7;)multiply(s,1e7,0),n-=7;for(multiply(s,pow(10,n,1),0),n=t-1;n>=23;)divide(s,1<<23),n-=23;divide(s,1<<n),multiply(s,1,1),divide(s,2),u=dataToString(s)}else multiply(s,0,r),multiply(s,1<<-t,0),u=dataToString(s)+repeat3("0",a);return u=a>0?c+((i=u.length)<=a?"0."+repeat3("0",a-i)+u:stringSlice(u,0,i-a)+"."+stringSlice(u,i-a)):c+u}});var ABR_EVENTS={ABR_CHANGE:"ABR_CHANGE_A",ABR_UPDATE_SPEC:"ABR_UPDATE_SPEC",START_ABR:"START_ABR",UPDATE_AUTO_DESC:"UPDATE_AUTO_DESC",ABR_START_PROGRESS:"ABR_START_PROGRESS",MAX_BUFFER_CHANGE:"MAX_BUFFER_CHANGE"},INIT_BIRTATE=0,MIN_WAITIONG=200,SEEKING_STATE={SEEK_NO:0,SEEK_FORWARD:1,SEEK_BACKWORD:-1},STALL_STATE={STALL_NO:0,STALL:1},AVG_ARGS={PLAYBACK_BITRATE:"avg_play_bitrate",DOWNLOAD_BITRATE:"avg_download_bitrate",DOWNLOAD_NETWORK_SPEED:"avg_download_speed",PREDICT_NETWORK_SPEED:"avg_predict_speed",BUFFER_LENGTH:"avg_buffer_length",QOE:"avg_qoe"},ABR=function(e){_inherits(r,BaseAbr);var t=_createSuper(r);function r(e,n,i,o,a){var s,c=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{logger:function(){},openLog:!1};_classCallCheck$4(this,r),(s=t.call(this,n,i,o,a,c)).player=e,s.timerId=0,s.isOpenAutoDefi=!!s.autoBitrateOpts.isOpenAutoDefi,s.onPlayrateChange=s._onPlayrateChange.bind(_assertThisInitialized(s)),s.onPlay=s._onPlay.bind(_assertThisInitialized(s)),s._stop=s.stop.bind(_assertThisInitialized(s)),s._bufferRange=new Map,s._sortedBufferRange=[],s._lastCheckResolutionStamp=0,s._currentDefinition=null,s._isSeeking=!1,s._waitingStartTime=0,s._stallCount=0,s._seekState=SEEKING_STATE.SEEK_NO,s._stallState=STALL_STATE.STALL_NO,s._videoCurrentTime=0,s.listeners=[{evt:"playbackrateChange",handler:s.onPlayrateChange},{evt:"ended",handler:s._stop},{evt:"error",handler:s._stop},{evt:"timeupdate",handler:s._onTimeUpdate.bind(_assertThisInitialized(s))},{evt:"addVideoBufferEnd",handler:s._bufferRangeUpdate.bind(_assertThisInitialized(s))},{evt:"canplay",handler:s._updateAutoDesc.bind(_assertThisInitialized(s))},{evt:"play",handler:s._onplayStart.bind(_assertThisInitialized(s))},{evt:ABR_EVENTS.MAX_BUFFER_CHANGE,handler:s._onMaxBufferChange.bind(_assertThisInitialized(s))},{evt:"seeking",handler:s._onSeeking.bind(_assertThisInitialized(s))},{evt:"seeked",handler:s._onSeekEnd.bind(_assertThisInitialized(s))},{evt:"waiting",handler:s._onWaiting.bind(_assertThisInitialized(s))},{evt:"playing",handler:s._onPlaying.bind(_assertThisInitialized(s))}],s._hasStart=!1,s.listeners.forEach((function(e){var t=e.evt,r=e.handler;s.player.on(t,r)})),s._isPaused=!1,s._hasAddFrament=!1,s._eventInfo={local_time_ms:0,internet_speed:0,buffer_length:0,last_bitrate:0,now_bitrate:0,play_speed:1},s._bitrateSet=[],s._generalInfo={},s._currentInAbr=!1,s._hasCalcTimelineLog=!1,s._abr_play_info={start_play_time_ms:0,is_hint:0,playback_info:{internet_speed_record:[],play_bitrate_record:[],buffer_length_record:[],play_speed_record:[],qoe_record:[],qoe_a_record:[],qoe_b_record:[],qoe_c_record:[]}},s._abrMethod=s.autoBitrateOpts.method||0,s.logger("abr: constructor"),s._loopInterval=s.initInterval,s._tickCount=0,s._fps=30,FpsDetection.install(),s.startTime=performance.now(),s.logger("time abr",(new Date).getTime()),s._maxCacheTimeVideo=s.config.maxBufferLength||s.config.preloadTime||50,s._maxCacheTimeAudio=s._maxCacheTimeVideo,s._prevDefinitionItem=null,s._currentItem=null,s._switchCount=0,s._switchBitrate=0,s._avgStatItems={};for(var u=Object.keys(AVG_ARGS),l=0;l<u.length;l++){var d=u[l],h=AVG_ARGS[d];s._avgStatItems[h]=new AvgStat}return s._qoeArgs=[0,0,0,0],s._abrUsed=-1,s._abrAlwaysOn=1,s._prelaodInfo=null,s._hasLogStartInfo=!1,s._hasExecuteAbrAlgo=!1,s._lastExecuteTimeInMs=0,s}return _createClass$4(r,[{key:"init",value:function(e){return this._mediaList=e,this.isOpenAutoDefi?this.onLoadWasm():this._wasmPromise.resolve(),this._wasmPromise}},{key:"execute",value:function(){return this.listenSize(),this.initFps(),this.onWinElemSizeChange(),this.onPlay()}},{key:"_onSeeking",value:function(){this._isSeeking=!0,this.player.currentTime<this._videoCurrentTime?this._seekState=SEEKING_STATE.SEEK_BACKWORD:this._seekState=SEEKING_STATE.SEEK_FORWARD,this.logger("seekState",this._seekState)}},{key:"_onSeekEnd",value:function(){this._isSeeking=!1}},{key:"_onWaiting",value:function(){var e=this;this._isSeeking||this._waitingStartTime>0||(this._waitingStartTime=(new Date).getTime(),this._stallId=setTimeout((function(){clearTimeout(e._stallId),e._stallCount++,e._stallState=STALL_STATE.STALL}),MIN_WAITIONG))}},{key:"_onPlaying",value:function(){this._waitingStartTime=0,this._stallState=STALL_STATE.STALL_NO,clearTimeout(this._stallId)}},{key:"initFps",value:function(){this.fpsDetection=new FpsDetection,this.fpsDetection.start(),this._fps=this.fpsDetection.fps,this._hasDeviceInfoChanged=!0}},{key:"listenSize",value:function(){this.mediaElem=this.player.video,this._onWinSizeChange=debounce(this.onWinElemSizeChange.bind(this),1e3,!1),window.addEventListener("resize",this._onWinSizeChange)}},{key:"onWinElemSizeChange",value:function(){if(this.mediaElem){var e=this.mediaElem.getBoundingClientRect();this._videoWidth=Math.floor(e.width),this._videoHeight=Math.floor(e.height),this._hasDeviceInfoChanged=!0}}},{key:"_onMaxBufferChange",value:function(e){var t=e.videoCacheTime,r=e.audioCacheTime;this._maxCacheTimeAudio=r,this._maxCacheTimeVideo=t}},{key:"_onTimeUpdate",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this._sortedBufferRange&&0!==this._sortedBufferRange.length&&this._currentInAbr){this._videoCurrentTime=this.player.currentTime;var r=Date.now();if(!(r-this._lastCheckResolutionStamp<1e3&&0!==this._lastCheckResolutionStamp)||t){this._lastCheckResolutionStamp=r;for(var n=this.player.currentTime,i=0,o=this._sortedBufferRange.length-1,a=null;i<=o;){var s=Math.floor(i+(o-i)/2),c=this._sortedBufferRange[s];if(n<c.start)o=s-1;else{if(!(n>=c.end)){a=c;break}i=s+1}}if(a){var u=this._bitrateToDefitionConfig.get(a.bandwidth),l=u&&u.definition;if(this._currentDefinition===l&&!t||!l)return void(l||this.logger("error defintion, mpd配置与接口配置不一致"));this._currentDefinition=l,this._prevDefinitionItem=this._currentItem,this._currentFps=u.fps,this._currentItem=u,this._emitAutoDescChange(l,!1,this._currentFps,u)}}}}},{key:"_emitAutoDescChange",value:function(e,t,r,n){console.log("[ABR],emitAutoDescChange, definition, ",e,",item,",n,",pre_item,",this._prevDefinitionItem),this.player.emit(ABR_EVENTS.UPDATE_AUTO_DESC,{definition:e,reset:t,fps:r,item:n,pre_item:this._prevDefinitionItem})}},{key:"_onplayStart",value:function(){this._hasStart=!0,this.logger("onplaystart")}},{key:"_updateAutoDesc",value:function(){var e=this;this._currentInAbr&&this._currentDefinition&&(this._updateId=setTimeout((function(){clearTimeout(e._updateId),e._emitAutoDescChange(e._currentDefinition,!1,e._currentFps,e._currentItem)}),0))}},{key:"_bufferRangeUpdate",value:function(e){if(void 0!==e.start){null===this._currentItem&&this._onTimeUpdate(null,!0);var t=e.start;this._hasAddFrament=!0,this._bufferRange.set(t,e);var r=_toConsumableArray(this._bufferRange.values());this._sortedBufferRange=r.sort((function(e,t){return e.start-t.start})),this.avgStat(AVG_ARGS.DOWNLOAD_BITRATE,e.bandwidth)}}},{key:"_onPlayrateChange",value:function(){this.module&&this.updateBufferInfo()}},{key:"_onPlay",value:function(){var e=this;if(!this.isOpenAutoDefi)return this.logger("onPlay"),INIT_BIRTATE;var t=INIT_BIRTATE;try{this.logger("abr: loadeddata"),this.updateSwitchInfo(),this.parseMPD(),this.updateDeviceInfo();var n=r.getIsPlayAutoDefi(this.autoBitrateOpts);if(this.isOpenAutoDefi&&n){this._abrUsed=1;var i=this._getDefautSpeed(this.player);t=this._loopAbr(i),this.start(),this.logger("time abr start prgress",(new Date).getTime()),this.logger("time abr costTime",performance.now()-this.startTime),this.logger("abr onplay"),this.startTimer=setTimeout((function(){e._loopInterval=e.interval,clearTimeout(e.startTimer),e.logger("interval change")}),5e3)}}catch(e){this.logger("abr: loadeddata error",e),this.logger("time abr costTime err",performance.now()-this.startTime)}return t}},{key:"start",value:function(){if(this.logger("abr: start"),this._isPaused=!1,!this._hasCalcTimelineLog){var e=1===Math.floor(100*Math.random());this._abr_play_info.is_hint=e?1:0}this._hasCalcTimelineLog=!0,this._loop()}},{key:"_loop",value:function(){var e=this;this._isPaused||(clearTimeout(this.timerId),this.timerId=setTimeout((function(){if(!e.player.paused||!e.player.config.autoplay&&!e._hasStart){var t=e._hasAddFrament?void 0:e._getDefautSpeed(e.player);e._loopAbr(t)}e._loop()}),this._loopInterval))}},{key:"updateDeviceInfo",value:function(){try{if(this.fpsDetection){var e=this.fpsDetection.fps;e!==this._fps&&(this._fps=e,this._hasDeviceInfoChanged=!0)}this._updateDeviceInfo(this._fps)}catch(e){}}},{key:"updateBufferInfo",value:function(e){var t=this.player.playbackRate,r=this.bufferLength,n=e||Math.floor(this.player.downloadSpeed);return this._tickCount<5&&0===n&&(n=this._getDefautSpeed(this.player),this.logger("initSpeed fix")),this.logger("maxCacheTimeAudio:",this._maxCacheTimeAudio,"maxCacheVideoTime",this._maxCacheTimeVideo,"seekState",this._seekState,"stallState",this._stallState),this.module._updateBufferInfo(t,this._maxCacheTimeAudio,this._maxCacheTimeVideo,r,r,n,this._seekState,this.player.currentTime,this._stallState),this._seekState=SEEKING_STATE.SEEK_NO,this._eventInfo={internet_speed:n,buffer_length:r,last_bitrate:this.bitrate,play_speed:t},this.logger("playRate:",t,"buff:",r,"downloadSpeed:",n),{buffer:r,downloadSpeed:n}}},{key:"updateSwitchInfo",value:function(){var e=(new Date).getTime();this._openTimeMs=e,this._abr_play_info.start_play_time_ms=e;var t=this.player.config.preloadTime||50,r=convert32ToC64(e),n=this.autoBitrateOpts.noStallCheckTime||5,i=this.openLog;this.logger("openTime:",e,"this.logger",i),this.module._updateSwitchInfo(r.low,r.high,n,i,this.stall_penalty,this.switch_penalty);var o=this._mediaList.video,a=o.map((function(e){var t=e.bandwidth,r=e.bitrate;return t||r}));this._bitrateSet=a.map((function(e,t){return{bitrate:e,codecs:o[t].codecs||o[t].codec_type}})),this._generalInfo={max_cache_time:t,bitrate_set:this._bitrateSet,segment_duration:this.segment_duration,preload_info:{},startup_info:{}}}},{key:"updatePreloadCacheInfo",value:function(e){try{this._prelaodInfo=e,this.logger("update preloadInfo",e),e&&e.item_num!==e.items.length&&(this.logger("preloadInfo invalid"),this._prelaodInfo=null)}catch(e){this.logger("updatePreloadCacheInfo",e),this._prelaodInfo=null}}},{key:"updatePreloadLogInfo",value:function(e){this._generalInfo.preload_info=e||{}}},{key:"_updatePreloadInfo",value:function(){try{var e=this.player.getPreloadInfos();if(e){var t=e.preloadInfo,r=e.abr;this.updatePreloadLogInfo(t),r&&this.updatePreloadCacheInfo(t)}if(this.logger("_updatePreloadInfo preloadinfos",e),null!=this._prelaodInfo){var n=JSON.stringify(this._prelaodInfo);this.module.ccall("updatePreloadInfo","null",["string"],[n])}else this.logger("_updatePreloadInfo preloadinfo null, no preload")}catch(e){this.logger("_updatePreloadInfo err",e)}}},{key:"_loopAbr",value:function(e){var t;this._tickCount++;var r=[];try{this.updateDeviceInfo();var n=this.updateBufferInfo(e),i=n.downloadSpeed,o=n.buffer;t=this.module._getPredictedBitrate(this.bitrate,this._abrMethod);for(var a=0;a<7;a++)r.push(this.module.HEAP32[t/Int32Array.BYTES_PER_ELEMENT+a]);var s=r[0],c=1===r[1];this._eventInfo.now_bitrate=s,this._eventInfo.local_time_ms=(new Date).getTime();var u=0;if(s!==this.bitrate&&0!==s){var l=this.bitrate;u=Math.abs(l-s);for(var d=[],h=this.player.video.buffered,f=0;f<h.length;f++)d.push({start:h.start(f),end:h.end(f)});var p=this._videoWidth||Number(this.config.width),y=this._videoHeight||Number(this.config.height),m=(new Date).getTime(),g={speed:"".concat(i," KB/s"),buffer_length:"".concat(o," s"),video_pos:this.player.currentTime,all_buffers:d,seek_state:this._seekState,stall_state:this._stallState,screen_width:p,screen_height:y,dpr:window&&window.devicePixelRatio,playbackRate:this.player.playbackRate,bitrateSet:this._bitrateSet,abrMethod:this._abrMethod,delta:this._hasExecuteAbrAlgo?m-this._lastExecuteTimeInMs:0};this._lastExecuteTimeInMs=m,this._hasExecuteAbrAlgo=!0,this.player.emit(ABR_EVENTS.ABR_CHANGE,this.bitrate,s,c,JSON.stringify(g)),this.logger("abr loop predicte:",s,"willStall:",c,"switchBitrate",u,"cur",l),this.bitrate=s}this._hasLogStartInfo||(this._hasLogStartInfo=!0,this._generalInfo.startup_info={predict_bitrate:s,download_speed:i,screen_width:this._videoWidth||Number(this.config.width),screen_height:this._videoHeight||Number(this.config.height),device_pixel_ratio:window&&window.devicePixelRatio,screen_fps:this._fps,startup_method:this._abrMethod}),this.player.emit("ABR_LOOP"),this.onAbrLoop(i,r[2],u,r.slice(3))}catch(e){this.logger("abr error",e),console.log("error",e)}finally{this.module._free(t)}return this.bitrate}},{key:"stop",value:function(){!0===(arguments.length>0&&void 0!==arguments[0]&&arguments[0])&&(this._abrAlwaysOn=-1),clearTimeout(this.timerId),this._isPaused=!0,this.logger("abr: stop")}},{key:"destroy",value:function(){var e=this;this._stop(),this.listeners.forEach((function(t){var r=t.evt,n=t.handler;e.player.off(r,n)})),this.player=null,this._heightToDefitionConfig=null,this._bitrateToDefitionConfig=null,this._bufferRange=null,this._sortedBufferRange=null,this.module=null,clearTimeout(this._stallId),clearTimeout(this._updateId),clearTimeout(this.startTimer),window.removeEventListener("resize",this._onWinSizeChange),this.fpsDetection&&this.fpsDetection.stop(),this.player=null}},{key:"eventInfo",get:function(){return this._eventInfo}},{key:"generalInfo",get:function(){return this._generalInfo}},{key:"bufferLength",get:function(){var e=this.player.getBufferedRange(),t=this.player.video.currentTime,r=e[1]-Math.max(e[0],t);return r=Math.max(0,r).toFixed(2),parseFloat(r)}},{key:"downloadSpeed",get:function(){return Math.floor(this.player.downloadSpeed)}},{key:"nowBitrate",get:function(){return this.bitrate}},{key:"openTimeMs",get:function(){return this._openTimeMs}},{key:"isCurrentInAbr",get:function(){return this._currentInAbr},set:function(e){this._currentInAbr=e}},{key:"onAbrLoop",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:[];if(this._qoeArgs=n,this._currentItem&&this.avgStat(AVG_ARGS.PLAYBACK_BITRATE,this._currentItem.bitrate),this.avgStat(AVG_ARGS.DOWNLOAD_NETWORK_SPEED,1e3*e*8),this.avgStat(AVG_ARGS.PREDICT_NETWORK_SPEED,t),this.avgStat(AVG_ARGS.BUFFER_LENGTH,this.bufferLength),this.avgStat(AVG_ARGS.QOE,this.getQoeRelValue(0)),r>0&&(this._switchCount++,this._switchBitrate+=r),this._abr_play_info.is_hint){var i=this,o=((new Date).getTime()-this.openTimeMs)/1e3;o=parseFloat(o.toFixed(2)),this._abr_play_info.playback_info.internet_speed_record.push([o,i.downloadSpeed]),this._abr_play_info.playback_info.play_bitrate_record.push([o,i.nowBitrate]),this._abr_play_info.playback_info.buffer_length_record.push([o,i.bufferLength]),this._abr_play_info.playback_info.play_speed_record.push([o,this.player.playbackRate]),this._abr_play_info.playback_info.qoe_record.push([o,this.getQoeRelValue(0)]),this._abr_play_info.playback_info.qoe_a_record.push([o,this.getQoeRelValue(1)]),this._abr_play_info.playback_info.qoe_b_record.push([o,this.getQoeRelValue(2)]),this._abr_play_info.playback_info.qoe_c_record.push([o,this.getQoeRelValue(3)])}}},{key:"getQoeRelValue",value:function(e){return this._qoeArgs[e]/100}},{key:"avgStat",value:function(e,t){var r=this._avgStatItems[e];r&&r.add(t)}},{key:"getAbrPlayInfo",value:function(){return this._abr_play_info}},{key:"updateAbrMethod",value:function(e){this._abrMethod=e}},{key:"getAbrMethod",value:function(){return this._abrMethod}},{key:"getAbrVVStats",value:function(){for(var e={},t=Object.keys(AVG_ARGS),r=0;r<t.length;r++){var n=t[r],i=AVG_ARGS[n],o=this._avgStatItems[i];e[i]=o.avg()}return e.switch_counts=this._switchCount,e.avg_switch_bitrate=0===this._switchCount?0:this._switchBitrate/this._switchCount,e.abr_qoe=this.getQoeRelValue(0),e.abr_qoe_a=this.getQoeRelValue(1),e.abr_qoe_b=this.getQoeRelValue(2),e.abr_qoe_c=this.getQoeRelValue(3),e.abr_method=this._abrMethod,e.abr_used=this._abrUsed,e.abr_always_on=this._abrAlwaysOn,this.logger("abrVVStats",e),e}}],[{key:"getIsPlayAutoDefi",value:function(e){return!!e.isPlayAutoDefi}}]),r}(),AvgStat=function(){function e(){_classCallCheck$4(this,e),this.total=0,this.count=0}return _createClass$4(e,[{key:"add",value:function(e){this.total+=e,this.count++}},{key:"avg",value:function(){if(0===this.count)return 0;var e=this.total/this.count;return Math.floor(e)}}]),e}(),START_TYPES={FIXED:"FIXED",AUTO:"AUTO"},AbrService=function(){function e(t,r){var n=this;_classCallCheck$6(this,e),_defineProperty$4(this,"_onAbrChange",(function(e,t,r,i){var o=n._pluginInst.player,a=n.bitrateMap[e],s=n.bitrateMap[t],c=a.definition,u=s&&s.definition?s.definition:c;console.log("[ABR] _onAbrChange ",c,u),c!==u&&(n._abrSwitchHandler(s),o.emit("ABR_CHANGE",{prev:c,cur:u,prevName:a.definitionName,curName:s.definitionName,abrInfo:i}))})),_defineProperty$4(this,"_onAutoDescChange",(function(e){var t=e.definition,r=e.reset,i=e.fps,o=e.item;n.updateAutoDefiDesc(t,r,i,o)})),this._pluginInst=t;var i=this._pluginInst.config.autoBitrateOpts||{};this.isPlayAutoDefi=ABR.getIsPlayAutoDefi(i),this.isOpenAutoDefi=!!i.isOpenAutoDefi,this.isCurrentAutoDefi=this.isOpenAutoDefi&&this.isPlayAutoDefi,this.bitrateMap={},this.defiIdMap={},this._abrSwitchHandler=r}var t;return _createClass$6(e,[{key:"_destroyAbr",value:function(){var e=this._pluginInst.player;this.abrInstance&&(e&&e.off(ABR_EVENTS.UPDATE_AUTO_DESC,this._onAutoDescChange),this.abrInstance.destroy(),this.abrInstance=null)}},{key:"init",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(t){var r,n,i,o;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(this.isOpenAutoDefi){e.next=2;break}return e.abrupt("return",{type:START_TYPES.FIXED});case 2:return r=this._pluginInst,n=r.player,i=r.playerConfig,o=r.config,n.on(ABR_EVENTS.UPDATE_AUTO_DESC,this._onAutoDescChange),this.bitrateMap={},this.defiIdMap={},this.abrInstance=new ABR(n,o,0,{dynamic_video_list:i.definition.list.concat()},5e3,{logger:log$2,openLog:openLog}),e.next=9,this.abrInstance.init(t);case 9:n.on(ABR_EVENTS.ABR_CHANGE,this._onAbrChange),this.abrInstance.isCurrentInAbr=this.isCurrentAutoDefi;case 11:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"execute",value:function(){var e=this.abrInstance.execute();return{bitrate:e,type:-1===e?START_TYPES.FIXED:START_TYPES.AUTO}}},{key:"updateBitrate",value:function(e){this.abrInstance&&this.abrInstance.updateBitrate(e)}},{key:"enable",value:function(){this.abrInstance.start(),this.isCurrentAutoDefi=!0,this.abrInstance.isCurrentInAbr=!0,this.abrInstance._onTimeUpdate(null,!0)}},{key:"disable",value:function(){this.abrInstance&&(this.updateAutoDefiDesc("",!0),this.isCurrentAutoDefi=!1,this.abrInstance.isCurrentInAbr=!1,this.abrInstance.stop(!0))}},{key:"isCurrentInAbr",value:function(){return!!this.abrInstance&&this.abrInstance.isCurrentInAbr}},{key:"updateAutoDefiDesc",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]&&arguments[1],r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,i=this._pluginInst,o=i.player,a=(i.config.autoBitrateOpts||{}).autoDefiText||"auto";o.emit("ABR_AUTO_DESC_CHANGE",a,t?void 0:e,r,n)}},{key:"updateAbrCacheData",value:function(){var e=this,t=this._pluginInst,r=t.player,n=t.config,i=t.playerConfig,o=n.autoBitrateOpts||{},a=i.definition.list,s=!1;if(a.forEach((function(t){e.bitrateMap[t.bitrate]={url:t.url,definition:t.definition,definitionName:t.text},e.defiIdMap[t.definition]={bitrate:t.bitrate,definition:t.definition},"auto"!==t.definition&&"自动"!==t.definition||(s=!0)})),this.isOpenAutoDefi,this.isOpenAutoDefi&&!s){var c=o.autoDefiText||"auto",u={definition:"自动",bitrate:r.curDefinition.bitrate,text:c,url:"__auto__",selected:this.isPlayAutoDefi,name:"自动",vwidth:r.curDefinition.vwidth,vheight:r.curDefinition.vheight};i.definition.list.push(u)}}},{key:"destroy",value:function(){this._pluginInst.player.off(ABR_EVENTS.ABR_CHANGE,this._onAbrChange),this._destroyAbr()}}]),e}(),DESTROYED="DESTROYED",REAL_TIME_SPEED_EVENT="real_time_speed",_playerPlayNext=null,_playerStartInit=null,_playerChangeDefinition=null,_playerSwitchUrl=null,CODEC_TYPE={H264:"h264",H265:"h265"},_realTimeSpeed=0,Mp4EncryptPlayer=function(e){_inherits$4(i,BasePlugin);var t,r,n=_createSuper$4(i);function i(e){var t;return _classCallCheck$6(this,i),_defineProperty$4(_assertThisInitialized$4(t=n.call(this,e)),"_replayHook",(function(e){"xgmse-video"===t.player.config.mediaType?t._onReplay():t.useVideoLoad||(t._defInited=!1,t.log("replayHook ",t.playerConfig.url),t.player.video.load(),t.playerStartInit(t.playerConfig.url))})),_defineProperty$4(_assertThisInitialized$4(t),"_retryHook",(function(){var e=_assertThisInitialized$4(t),r=e.player,n=e.playerConfig,i=e.config,o=r.currentTime;if(t.codecType!==CODEC_TYPE.H265||i.supportHevc){t._defInited=!1;var a=t.config,s=a.drm,c=a.kid,u=a.secretKey,l=a.keyValue;if(s||c||u||l)t.initAwManager(),t.playerStartInit(n.url);else{if(t.useVideoLoad=!0,"Array"===util$5.typeOf(n.url)){var d=n.url.length;r.video.src=n.url[d-1].src}else r.video.src=n.url;r.currentTime=o,r.play()}}else t.log("h265 retryHook ",n.vid),t._onDegrade("retry");return!1})),_defineProperty$4(_assertThisInitialized$4(t),"_playHook",(function(e){t._usePaused=!1})),_defineProperty$4(_assertThisInitialized$4(t),"_pauseHook",(function(e){t._usePaused=!0})),_defineProperty$4(_assertThisInitialized$4(t),"abrSwitchURL",function(){var e=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(r){var n,i,o,a,s,c;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:n=_assertThisInitialized$4(t),i=n.playerConfig,o=i.definition.list,a=0,s=0;case 4:if(!(s<o.length)){e.next=11;break}if(r.definition!==o[s].definition){e.next=8;break}return a=s,e.abrupt("break",11);case 8:s++,e.next=4;break;case 11:c=t.player.curDefinition,t.changeDefinition(o[a],c,!0);case 13:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),_defineProperty$4(_assertThisInitialized$4(t),"changeDefineCanPlay",(function(e,r,n,i){var o=_assertThisInitialized$4(t).player;o.ended?o.currentTime=0:(t.log("[oldChangeDefinition],this._changeDefState,",t._changeDefState),o.currentTime=t._changeDefState?t._changeDefState.currentTime:e,(t._changeDefState?t._changeDefState.paused:r)?o.pause():o.play(),t._changeDefState=null,o.emit(AFTER_DEFINITION_CHANGE,{from:n,to:i}))})),_defineProperty$4(_assertThisInitialized$4(t),"changeDefinition",(function(e,r,n){var i=_assertThisInitialized$4(t),o=i.player,a=i.playerConfig,s=i.mp4;if(r||(r=o.curDefinition),t.useVideoLoad)return"__auto__"===e.url&&(e.url=o.config.definition.list[0].url),void _playerChangeDefinition.call(t.player,e,r);if(t._switchBitRateWay&&!n)return t.log("changeDefinition old"),void t.oldChangeDefinition(e,r);var c="自动"===e.definition||"auto"===e.definition;if(n)t.log("[switchBitrate:ABR], ready to switch bitRate, ",e.bitrate);else{var u=!1;if(c)t._abrService&&t._abrService.enable(),u=!0;else if(t._abrService&&t._abrService.disable(),!e.bitrate||e.bitrate<=0)for(var l=0;l<a.definition.list.length;l++)e.definition===a.definition.list[l].definition&&(e.bitrate=a.definition.list[l].bitrate);o.emit(DEFINITION_CHANGE,{from:r,to:e}),setTimeout((function(){t._abrService&&t._abrService.updateAutoDefiDesc(o.curDefinition.definition,!c)})),u&&(e=o.curDefinition),t.log("[switchBitrate:CBS],switch bitRate, ",e.bitrate)}o.curDefinition=e;var d=o.definitionList.filter((function(e){return e.definition===o.curDefinition.definition}));d.length>0&&(e=d[0]),s&&(t.config.keyValue=e.keyValue,t.config.kid=e.kid,t.config.secretKey=e.secretKey,t.config.drm=e.drm,t.config.getLicenseUrl=e.getLicenseUrl,t._getLicense().then(_asyncToGenerator$2(_regeneratorRuntime$2().mark((function r(){var i,c,u,l,d,h;return _regeneratorRuntime$2().wrap((function(r){for(;;)switch(r.prev=r.next){case 0:if(a.url=e.url,a.backupURL=e.backupURL,i=0,c=!1,t._abrService&&t._abrService.isCurrentInAbr()?(u=o.getBufferedRange(o.buffered2),(i=u[1])<o.currentTime&&(i=o.currentTime,t.log("bufferRange is invaild,adjust",u,",timeStart,",i)),t.log("[switchBitrate:ABR],switch bufferedList, ",t.player.buffered2?t.player.buffered2.bufferedList:null,",curtime,",o.currentTime,",bufferRange,",u)):(i=o.currentTime,c=!0),(l=s.getFragmentIdx(i))<0&&(l=t._curLoadSegmentIdx),t.log("switchBitrate:point,",l,",startTime,",s.timeRange[l].startTime,",currentTime,",o.currentTime),c&&o.emit("definitionSwitchTime",s.timeRange[l].startTime+1),t.changeState("changeDefinition",{abr:n,fragIndex:l,startTime:s.timeRange[l].startTime,currentTime:o.currentTime}),!s){r.next=14;break}return r.next=13,s.cancelLoading();case 13:s._metaLoading&&(s._metaLoading=!1);case 14:return!((d=o.getBufferedRange(o.buffered))[1]>0&&d[1]-o.currentTime>5)||t._abrService&&t._abrService.isCurrentInAbr()||(t.mse.clearOpqueues(CONTENT_TYPES.VIDEO),t.mse.reuse(o.currentTime+5,d[1])),s.resetFragmentLoadState(l),t._curLoadSegmentIdx=l,r.next=20,t.mp4.changeBitRate(e);case 20:h={width:e.width||e.vwidth,height:e.height||e.vheight},o.emit("RESOLUTION_UPDATE",h);case 22:case"end":return r.stop()}}),r)})))).catch((function(r){console.error(r),r.errorType="GET_LICENSE_ERROR",t.emit("error",r),t.changeState("LICENSE_ERROR",{d:e.definition})})))})),_defineProperty$4(_assertThisInitialized$4(t),"_onVideoError",(function(e){t.log("video err,",e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onPlaying",(function(){t._waitAdjustTimeCnt>0&&t._waitInBufferTimer&&(t._waitAdjustTimeCnt-=1,t.log("[waitInBuffer resume play], waitAdjustTimeCnt,",t._waitAdjustTimeCnt)),clearTimeout(t._waitInBufferTimer),t._waitInBufferTimer=null,t.log("[Index] onPlaying, timeNow,",util.nowTime());var e=_assertThisInitialized$4(t),r=e.mp4,n=e.player,i=t.config.resumePlayWaterLevel;if(r){if(!t.playFlag||n.currentTime<1)t.playFlag=!0;else if(!(r&&r.meta&&r.meta.duration-n.currentTime<=i)&&i>0&&t.playFlag){var o=n.getBufferedRange(n.buffered2);o[1]-n.currentTime<i?(n.paused||(n.pause(),t.log("[!!!!!buffer not rich, pause],time,",util.nowTime(),", currentTime, ",n.currentTime,", bufferEnd,",o[1])),clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=setTimeout(t._onPlaying,i/2*1e3)):n.paused&&(t.log("[!!!!!buffer rich, play],time,",util.nowTime(),", currentTime, ",n.currentTime,", bufferEnd,",o[1]),clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=null,n.play())}}else t.checkResumePlayTimer>0&&(clearTimeout(t.checkResumePlayTimer),t.checkResumePlayTimer=null,n.paused&&n.play())})),_defineProperty$4(_assertThisInitialized$4(t),"_lowDecoder",(function(){var e="function"==typeof t.player.video.getStats?t.player.video.getStats():null;t.log("H265 lowdecode: ".concat(t.playerConfig.vid," "),e,", h265Degrade, ",t.config.h265Degrade),t.config.h265Degrade&&t._onDegrade()})),_defineProperty$4(_assertThisInitialized$4(t),"_onError",(function(e){console.log("H265 onError: ".concat(t.playerConfig.vid," "),e,", h265Degrade, ",t.config.h265Degrade),t._onDegrade(e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onDegrade",(function(e){var r,n,i=_assertThisInitialized$4(t),o=i.player,a=i.playerConfig,s=i.config;o.video.removeEventListener("lowdecode",t._onDegrade),o.video.removeEventListener("error",t._onError),null===(r=t.mp4)||void 0===r||r.destroy();var c=o.currentTime;if(console.log("[h265 degrade], vid,",a.vid,",currtime,",c),t.emit("H265_DEGRADE",{reason:e?"error":"lowdecode",currentTime:c}),null!=s&&s.H264Config){var u=s.H264Config;s.drm=(null==u?void 0:u.drm)||null,s.getLicenseUrl=(null==u?void 0:u.getLicenseUrl)||null,s.kid=(null==u?void 0:u.kid)||null,s.keyValue=(null==u?void 0:u.keyValue)||null,s.secretKey=(null==u?void 0:u.secretKey)||null,s.isEncrypt=(null==u?void 0:u.isEncrypt)||null,s.useEME=(null==u?void 0:u.useEME)||null}var l={mp4encryptplayer:s,mediaType:"video",codecType:CODEC_TYPE.H264};(null==a||null===(n=a.H264DefinitionList)||void 0===n?void 0:n.length)>0?(o.config.definition.list=a.H264DefinitionList,o.config.url=a.H264DefinitionList[0].url,o.config.defaultBitrate=a.H264DefinitionList[0].bitrate,o.config.defaultDefinition=a.H264DefinitionList[0].definition,o.playNext(l),o.once("canplay",(function(){o.currentTime=c}))):(console.error("H265 error,degrade h264 but no h264 url"),t.emit("error",e))})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4MetaReady",(function(e){console.log(">>>>_onMp4MetaReady",util.nowTime()),t.firstFrameTime.metaload=t.mp4.firstFrameTime.metaload,t.firstFrameTime.bitrate=t.player.curDefinition.bitrate;var r=t.playerConfig.vid,n=t._checkMetaInfo(e),i=t.mp4.checkCodecH265();if(t.changeState("MP4_META_READY",{is265:i?1:0}),n)return t.removeAndRejectInitPromise(n),void t._errorHandler(n);try{if(t._initEME(t.mp4,e),t.codecType!==CODEC_TYPE.H265||t.config.supportHevc){if(!(t.player.video instanceof HTMLVideoElement))return void console.error("".concat(t.player.config.mediaType," is not match"));t._initMse(e)}else{if(!i||t.player.video instanceof HTMLVideoElement)return void console.error("[Index] ".concat(r," config_codec ").concat(t.codecType," and meta_codec ").concat(e.videoCodec," is not match or supportHevc is ").concat(t.config.supportHevc));t._initH265MseProxy()}t._initPromise.resolve()}catch(e){t.removeAndRejectInitPromise(e),console.error("[Index] ".concat(r," _initEME error"),e);var o=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.other1,errorMessage:null==e?void 0:e.message,vid:r,mediaError:{code:ERROR_CODES.other1,message:null==e?void 0:e.message}});t._errorHandler(o)}if(t.mp4&&t.mp4.timeRange){var a=[];t.mp4.timeRange.every((function(e){return a.push({startTime:e.startTime,endTime:e.endTime}),!0})),t.emit("KEYFRAMETIME",a)}t._loadData()})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4Error",(function(e){var r=t.playerConfig.vid;console.error("[Index] _onMp4Error",r,e),t.changeState("MP4_ERROR",e),t._initPromise&&"pending"===t._initPromise.state&&t.removeAndRejectInitPromise(e),t._errorHandler(e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4Progress",(function(e){t.emit("progress_event",e)})),_defineProperty$4(_assertThisInitialized$4(t),"_onMp4DataCallBack",(function(){t.mse&&!t.mse.ready&&t.openMSE(),t._isMseInit&&t._onTimeUpdate()})),_defineProperty$4(_assertThisInitialized$4(t),"_updateDrmConfig",(function(e){var r=_assertThisInitialized$4(t),n=r.config,i=r.mp4;e.kid&&n.keyValue?n.drm={clearKeys:_defineProperty$4({},e.kid,n.keyValue)}:!e.kid&&n.keyValue&&(n.useEME=!1),i.useEME=n.useEME;var o=n.drm;n.useEME||(i.kidValue=n.keyValue||(o&&o.clearKeys?o.clearKeys[Object.keys(o.clearKeys)[0]]:null)),t.eme&&o&&o.clearKeys&&n.useEME&&t.eme.updateDrm(o)})),_defineProperty$4(_assertThisInitialized$4(t),"_onVideoTimeUpdate",(function(){t.useVideoLoad||null!==t._requestTimer||!t._offineLine&&t._startProgress(),t.useVideoLoad&&t.checkIfCanPreload()})),_defineProperty$4(_assertThisInitialized$4(t),"_onBufferedReset",(function(e){t.mp4&&t.mp4.videoTrak&&t.mp4.resetFragmentLoadState(0)})),_defineProperty$4(_assertThisInitialized$4(t),"_onOnlineHandler",(function(){t._offineLine=!1;var e=_assertThisInitialized$4(t).config;t.log("online useVideoLoad:",t.useVideoLoad,t._hasStartProgressBack),t.useVideoLoad?t.player.src=e._mainURL:(t._hasStartProgressBack&&t._startProgress(),t._hasStartProgressBack=!1)})),_defineProperty$4(_assertThisInitialized$4(t),"_onOfflineHandler",(function(){t._offineLine=!0,t.log("offline, ",t._hasStartProgress),t._hasStartProgress&&(t._stopProgress(),t._hasStartProgressBack=!0)})),_defineProperty$4(_assertThisInitialized$4(t),"_loadDataSuccess",(function(e){if(!t.isDestroy&&(t.mse||t.mseProxy)){e.state&&t._firstSegState<0&&(t._firstSegState=1),t.log("[loadFragment] _loadDataSuccess ",JSON.stringify(e.context.range),",dataLen,",e.buffer?e.buffer.byteLength:0,e.state),t.firstFrameTime.startload_stmux<0&&(t.firstFrameTime.startload_stmux=t.mp4.firstFrameTime.startMuxTime,t.firstFrameTime.firstmux=t.mp4.firstFrameTime.firstmux),t.firstFrameTime.loadst_loadeddata<0&&(t.firstFrameTime.loaddata=util.nowTime()-t.loadstart);try{e.initSeg&&(t._appendInitSeg(e.initSeg),(!e.buffer||e.buffer.byteLength<1)&&(t.log("no data, must load data"),t._onTimeUpdate()));var r=e.buffer,n=e.state,i=e.context,o=e.videoTrack,a=e.audioTrack;if(t.debugInfo.loadIndx=i?i.fragIndex:-1,t.mse&&n&&(!r||r.byteLength<=0)&&i.fragIndex===t.mp4.timeRange.length-1){var s=t.player.buffered;t.bufferEndTime=s.end(s.length-1),t._isEnded(),t.log("loaded ended !!!==>>>",JSON.stringify(i.range),", fragIndex,",i.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}if(t.mse&&n&&i.fragIndex===t.mp4.timeRange.length-1&&(!r||r.byteLength<=0)){var c=t.player.buffered;t.bufferEndTime=c.end(c.length-1),t._isEnded(),t.log("load ended !!!==>>>",t.playerConfig.vid,JSON.stringify(i.range),", fragIndex,",i.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}if(r&&t.mse){if(r&&r.byteLength>0){t._appendBuffer(CONTENT_TYPES.VIDEO,r,i,n);var u=t.getDataBitRate(i.fragIndex);t.player.emit("addVideoBufferEnd",{start:Math.floor(i.startPts),end:i.endPts,bandwidth:u.bitrate})}}else if(t.mseProxy&&(o&&o.samples.length>0||a&&a.samples.length>0)){var l=o.samples.length>0?o.samples[0].sampleOffset:-1,d=o.samples.length>0?o.samples[o.samples.length-1].sampleOffset:-1,h=a.samples.length>0?a.samples[0].sampleOffset:-1,f=a.samples.length>0?a.samples[a.samples.length-1].sampleOffset:-1;t.log("[livevideo] appendBuffer,index,",i.fragIndex,",range,",JSON.stringify(e.context.range),",videoIdxRange,",l,"-",d,",audioIdxRange,",h,"-",f,", timeRange,",i.timeRange),t.mseProxy.appendBuffer(o,a)}}catch(e){t.changeState("APPEND_DATA_ERROR"),t.log("appendBuffer error",e);var p=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.mse,vid:t.player.config.vid,errorMessage:e.message,mediaError:{code:ERROR_CODES.mse,message:e.message}});t._errorHandler(p)}}})),_defineProperty$4(_assertThisInitialized$4(t),"_onWaiting",(function(){var e=_assertThisInitialized$4(t),r=e.player,n=e.config,i=e.playerConfig;clearTimeout(t._waitInBufferTimer),t._waitInBufferTimer=null;var o=r.currentTime;console.log("[>>>>onWaiting],currentTime, ",o,util.nowTime());var a=r.bufferedPoint;a.end>0&&a.end-r.currentTime>=2&&(t._waitAdjustTimeCnt<n.waitJampBufferMaxCnt?t._waitInBufferTimer=setTimeout((function(){t._waitAdjustTimeCnt++,r.currentTime=r.currentTime+.5,t.log("[waitInBufferTimeout], waitAdjustTimeCnt,",t._waitAdjustTimeCnt,",curtime,",o,util.nowTime())}),n.waitingInBufferTimeOut):t._errorHandler(new Errors(t.player,{errorType:"waitInBuffer",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.onWaitInBufferRange,errorMessage:"onWait_in_buffer",vid:i.vid})))})),_defineProperty$4(_assertThisInitialized$4(t),"_onEnded",(function(){t.log("[player.onEnded], stopProgress"),t.player&&t.off("waiting",t._onWaiting),t._stopProgress()})),_defineProperty$4(_assertThisInitialized$4(t),"_onReplay",(function(){var e=_assertThisInitialized$4(t),r=e.playerConfig,n=e.player;t._reset(),t._init(r.url).then((function(e){var r=e[0],i=e[1];n.video.src=i.url,t._startProgress(),t.mp4=r,t.mse=i,t.log("_replay play"),t.once("canplay",(function(){n.play(),t.on("waiting",t._onWaiting)}))}),(function(e){t.log("_errorHandler6",e),t._errorHandler(e)}))})),_defineProperty$4(_assertThisInitialized$4(t),"_onSeeking",_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var r,n,i,o,a,s,c,u,l,d,h;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(!t.useVideoLoad){e.next=2;break}return e.abrupt("return");case 2:if(r=_assertThisInitialized$4(t),n=r.player,i=r.mp4,o=n.currentTime,t.changeState("seeking",{curTime:o}),t.log("[seekTime], curTime,",o,",buffer,",n.buffered2.bufferedList),i&&i.meta){e.next=8;break}return e.abrupt("return");case 8:if(t.endofstream=!1,i.bufferLoadedPos=-1,i._metaLoading=!1,a=n.bufferedPoint,s=!1,c=0,!(a.end>0)){e.next=23;break}if(s=!0,c=i.getFragmentIdx(a.end),t._curLoadSegmentIdx!==c){e.next=20;break}return t.log("[seeking in buffered range], seek fragIndex is current load segmentIdx",c),e.abrupt("return");case 20:i.seekTime=a.end,c<0&&(c=t._curLoadSegmentIdx),t.log("[seeking in buffered range], seekTime ",o,",bufferRange,",a.start,"-",a.end,", fragIndex,",c);case 23:return s||(i.seekTime=o,(c=i.getFragmentIdx(o))<0&&(c=t._curLoadSegmentIdx),t.log("[seekTime out buffer range], curTime,",o,", Idx,",c),u=_assertThisInitialized$4(t),(l=u.mse)&&l.isFull()&&(d=n.buffered2.bufferedList,h=d[d.length-1],l.clearOpqueues(CONTENT_TYPES.VIDEO),t._checkRemoveSourceBuffer([h.start,h.end],n.currentTime,!0,!0))),e.next=26,i.cancelLoading();case 26:i.resetFragmentLoadState(c),t._curLoadSegmentIdx=c,t._onTimeUpdate(),t._isEnded();case 30:case"end":return e.stop()}}),e)})))),t._pendingPromises=[],t._allInitPromise=new ProxyPromise,t._isInit=!1,t._isEventInit=!1,t.playerId=t.player._pluginInfoId,t.preloader=null,t.gapJumpInst=null,t.log("playerId",t.playerId),t._tickInSeconds=t.config.tickInSeconds,t.awManager=null,t._useVideoLoad=!1,t.mse=null,t.mp4=null,t.eme=null,t._isMseInit=!1,t._awPromise=null,t._corePromise=null,t._initPromise=null,t._hasStartProgress=!1,t._hasStartProgressBack=!1,t._maxBufferLength=t.config.maxBufferLength,t._minBufferLength=t.config.minBufferLength,t._switchBitRateWay=t.config.switchBitRateWay,t._curLoadSegmentIdx=0,t._abrService=null,t._checkRemoveBufferLastTime=util.nowTime(),t.playFlag=!1,t.config.resumePlayWaterLevel=Math.min(t.config.minBufferLength,t.config.resumePlayWaterLevel),t.checkResumePlayTimer=null,t.loadstart=-1,t._loadStartEventTime=-1,t._waitAdjustTimeCnt=0,t._waitInBufferTimer=null,t._firstSegState=-1,t.codecType=t.playerConfig.codecType?t.playerConfig.codecType.toLowerCase():CODEC_TYPE.H264,t.playerConfig.vtype&&(t._vtype=t.playerConfig.vtype.toUpperCase()),t.firstFrameTime={newplayer:util.nowTime(),newplayer_initkernel:-1,initkernel_initmp4:-1,initmse_sbopen:-1,mseopen:-1,initmse_sbopendone:-1,metaload:-1,metaready_mseisopen:-1,metaready_initsegend:-1,startload_stmux:-1,firstmux:-1,apcnt:0,aplen:0,data_ap:-1,loadst_loadeddata:-1,loaddata:-1,new_loadeddata:-1,bitrate:-1},t.debugInfo={},t.states=[],t.removeVideo=null,t._lastCheckTime=util.nowTime(),t._changeDefState=null,t._defInited=!1,t.states=[],t.preLoadData=null,t.forPreloadTimeCache=null,t._usePaused=!1,t.endofstream=!1,t.bufferEndTime=-1,t.hitpreload=!1,window&&window.location.href.indexOf("playerInstance=true")>-1&&(void 0===window.mp4PlayerInstanceList&&(window.mp4PlayerInstanceList=[]),window.mp4PlayerInstanceList.push(t.player)),t}return _createClass$6(i,[{key:"afterCreate",value:function(){var e=this,t=this.playerConfig,r=this.config,n=this.player;r.width=t.width||0,r.height=t.height||0,t.vid=t.vid||r.vid,MSE.isSupported('video/mp4; codecs="avc1.64001E, mp4a.40.5"')&&(void 0===r.supportHevc&&null!=sniffer&&sniffer.isHevcSupported&&null!=sniffer&&sniffer.isHevcSupported()&&this.player.video instanceof HTMLVideoElement&&(r.supportHevc=!0),isEMESupported()||(r.useEME=!1),this.checkConfig(),r.onlyInit&&(t.autoplay=!1,t.videoInit=!1,this._hasStartProgress=!1,this._hasStartProgressBack=!1),t.useWaterLevel&&(!t.userGestureEventMiddleware&&(t.userGestureEventMiddleware=userGestureEventMiddleware),!t.videoEventMiddleware&&n.setEventsMiddleware(videoEventMiddleware)),this.gapJumpInst=new GapJump(this.player,this.playerConfig),this.preloader=r.isOpenPreload?new Mp4Preloader(this.config,this,this.bitRateAdapter):null,n.preloader=this.preloader,this._proxyPlayer(),this.initAwManager(),n.useHooks("replay",this._replayHook),n.useHooks("play",this._playHook),n.useHooks("pause",this._pauseHook),n.useHooks("retry",this._retryHook),n.video.addEventListener(CUSTOM_EVENTS.BUFFERED_RESET,this._onBufferedReset),this._bindNetworkStateChange(),this.on(TIME_UPDATE,this._onVideoTimeUpdate),this.on(LOADED_DATA,(function(){e.changeState("LOADED_DATA"),e.deleteVideo(),e._firstSegState=2,e._onTimeUpdate(),e._firstFrameTime()})),this.on(LOAD_START,(function(){e.changeState("LOAD_START"),e._loadStartEventTime=util.nowTime(),e.codecType!==CODEC_TYPE.H265||e.config.supportHevc||(e._isMseInit=!0,e._onTimeUpdate())})),this.on("xglog",(function(t){if("firstFrame"===t.eventType){var r=e.preLoadData&&e.preLoadData.definition?e.preLoadData.definition:-1;e.codecType===CODEC_TYPE.H264?console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ",e.playerConfig.vid,t.fvt,", codectype: ",e.codecType,", hitpreload: ",e.hitpreload,", video: ",e._useVideoLoad,",curPlayBitrate: ",e.player.curDefinition.definition,", preloadBitrate: ",r,",metaLoad, ",e.firstFrameTime.metaload,", mseOpen: ",e.firstFrameTime.mseopen,",appendInit: ",e.firstFrameTime.metaready_initsegend):console.log("[xgplayer-encrypt-mp4]>>>>firstFrame ",e.playerConfig.vid,t.fvt,", codectype: ",e.codecType,", hitpreload: ",e.hitpreload,",curPlayBitrate: ",e.player.curDefinition.definition,", preloadBitrate: ",r,",metaLoad, ",e.firstFrameTime.metaload)}})),n.mp4MseFlag=!0)}},{key:"_startBufferCheck",value:function(){var e=this.player;if(e.video){var t=[];if(e.video.buffered){for(var r=0,n=e.video.buffered.length;r<n;r++)t.push([e.video.buffered.start(r),e.video.buffered.end(r)]);t.toString()!==this.lastBuffer&&(this.lastBuffer=t.toString(),this._onBufferReachThreshold())}}}},{key:"_onBufferReachThreshold",value:function(){var e=this.player,t=this.config;if(e.video){for(var r=e.video.buffered,n=0,i=0,o=0;o<r.length&&(n=r.start(o),i=r.end(o),!(n<=e.video.currentTime&&e.video.currentTime<=i));o++);i-e.video.currentTime>=t.bufferThreshold&&!this._hasTriggerBufferThreshold&&(this._hasTriggerBufferThreshold=!0,e.emit("BUFFER_THRESHOLD",i-e.video.currentTime))}}},{key:"_startUrlExpiredCheck",value:function(){var e=this.player.config;e.definition&&e.definition.list&&e.definition.list.length>0&&(this.urlExpireTimestamp=e.definition.list[0].url_expire||0,this._handleUrlExpire())}},{key:"checkConfig",value:function(){var e=this.playerConfig,t=this.config,r=e.defaultDefinition,n=e.defaultBitrate;if(!r){var i=this.playerConfig.definition;r=i&&i.defaultDefinition?i.defaultDefinition:t.definition}!n&&t.bitrate&&(n=t.bitrate),e.defaultDefinition=r,e.defaultBitrate=n}},{key:"beforePlayerInit",value:function(){var e=this.player,t=this;this._isInit||(BasePlugin.defineGetterOrSetter(e,{__url:{get:function(){return t.mse?t.mse.url:e.config.url},configurable:!0},downloadSpeed:{get:function(){return _realTimeSpeed/8},configurable:!0},playerVersion:{get:function(){return version},configurable:!0},menuCodeType:{get:function(){return t.mp4&&t.mp4.meta?t.mp4.meta.videoCodec:"avc"},configurable:!0},playerType:{get:function(){return"MP4"},configurable:!0},supportMenus:{get:function(){return{speed:e.mp4MseFlag,cdn:e.mp4MseFlag,resolution:e.mp4MseFlag}},configurable:!0},CDNUrl:{get:function(){return t.CDNUrl},configurable:!0},abrInstance:{get:function(){return t.abrInstance},configurable:!0},ext:{get:function(){var e,r,n,i,o,a,s=[];if(null!==(e=t.player)&&void 0!==e&&null!==(r=e.video)&&void 0!==r&&r.buffered)for(var c=t.player.video.buffered,u=0,l=c.length;u<l;u++)s.push([c.start(u),c.end(u)]);var d=[];if(t.mse)for(var h=Math.min(t.opQueueLen,5),f=0;f<h;f++)d.push(t.mse.opQueues.video[f].context);return{type:"MP4",usevideo:t.useVideoLoad,duration:null===(n=t.mp4)||void 0===n||null===(i=n.meta)||void 0===i?void 0:i.duration,loadseg:{loadIdx:t._curLoadSegmentIdx,loadTimeRange:null!==(o=t.mp4)&&void 0!==o&&o.timeRange?t.mp4.timeRange[t._curLoadSegmentIdx]:{},waitIdx:t.debugInfo.loadIndx,waitTimeRange:null!==(a=t.mp4)&&void 0!==a&&a.timeRange&&void 0!==t.debugInfo.loadIndx?t.mp4.timeRange[t.debugInfo.loadIndx]:{}},bufffer:s,speed:t.debugInfo.speed,states:t.states,mseque:d,url:t.playerConfig.url}},configurable:!0}}),this._isInit=!0)}},{key:"destroy",value:function(){var e=this.player;console.log("[Index] destroy",this.playerId),this.preloader&&this.preloader.destroy(this.playerId),e.preloader=null,e.removeHooks("replay",this._replayHook),e.removeHooks("play",this._playHook),e.removeHooks("pause",this._pauseHook),e.removeHooks("retry",this._retryHook),this._reset(),this._onDestroyWasm(),this.player.playNext=_playerPlayNext,this.player._startInit=_playerStartInit,this.player.changeDefinition=_playerChangeDefinition,this.player.switchURL=_playerSwitchUrl,this._unbindNetworkStateChange(),e.video&&e.video.removeEventListener(CUSTOM_EVENTS.BUFFERED_RESET,this._onBufferedReset),this._bufferCheckTimer&&clearInterval(this._bufferCheckTimer),this._removeBufferTimer&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null)}},{key:"initAwManager",value:function(){var e=this,t=this.config;this.awManager||(this.awManager=new AwManager(t.cdnHost,t.cdnBucket));var r=new ProxyPromise;if(r.id="aw",this._awPromise=r,t.isEncrypt){var n=new WasmManager;n.push(this.awManager.init()),n.startup().then((function(){n.destroy(),r.resolve()})).catch((function(t){n.destroy(),e._emitInitFail(t),r.reject()}))}else r.resolve()}},{key:"_proxyPlayer",value:function(){var e=this;"function"==typeof this.player.playNext&&(_playerPlayNext=this.player.playNext),this.player.playNext=function(){e.playNext.apply(e,arguments)},_playerStartInit=this.player._startInit,_playerSwitchUrl=this.player.switchURL,_playerChangeDefinition=this.player.changeDefinition,this.player._startInit=this.playerStartInit.bind(this),this.player.switchURL=this.switchURL.bind(this),this.player.changeDefinition=this.changeDefinition.bind(this)}},{key:"getInitBitrate",value:function(){var e=this,t=this.player,r=this.config,n=this.playerConfig,i=null,o=t.definitionList;return o&&o.length>0&&(o.map((function(t){var r=Mp4Preloader.generateUniqueKey({vid:n.vid,definition:t.definition||"",vtype:n.vtype,codecType:n.codecType});t.cacheKey=r,r&&!i&&e.preloader&&e.preloader.hasItemSameVid(r)&&((i=t).type="preload")})),i&&n.userSelectDefinition&&r.focusUserDefinition&&(console.log("[Index] getInitBitrate","preloadDefinition: ".concat(i.definition," userSelectDefinition:").concat(n.userSelectDefinition)),n.userSelectDefinition!==i.definition&&(i=null)),!i&&this.bitRateAdapter&&(this.bitRateAdapter.speed=MP4.speed,(i=this.getDefinitonFromAdapter(o,n.userSelectDefinition))&&(i.type="bitRateAdapter"))),i&&i.url||(i="Array"===util$5.typeOf(n.url)&&n.url.length>0||"String"===util$5.typeOf(n.url)&&n.url?{url:n.url,definition:n.defaultDefinition,duration:n.duration||this.config.duration||0,bitrate:n.defaultBitrate||this._getBitrateByDefition(n.defaultDefinition),type:"default"}:o[o.length-1]),this.playerConfig.url=i.url,i.networkSpeed=MP4.speed,i.fileSize=util.getFileSize(i.bitrate,n.duration),t.curDefinition=i,i}},{key:"_setPlayerSrc",value:function(e){var t=this.player;this._removeVideoSource(),"Array"===util$5.typeOf(e)?(t.video.removeAttribute("src"),!t._detachSourceEvents&&e.forEach((function(e){t.video.appendChild(util$5.createDom("source","",{src:"".concat(e.src),type:"".concat(e.type||"")}))})),t._attachSourceEvents(t.video,e),t.play()):(t.video.src=e,t.play()),t.mp4MseFlag=!1,t.emit("playertypechange")}},{key:"_removeVideoSource",value:function(e){var t=this.player,r=(e=e||t.video).children;if(r.length>0)for(t._detachSourceEvents(e);r.length>0;)e.removeChild(r[0])}},{key:"_getBitrateByDefition",value:function(e){var t=this.playerConfig,r=0;if(!t.definition||!t.definition.list)return r;for(var n=0;n<t.definition.list.length;n++){var i=t.definition.list[n];i.definition===e&&(r=i.bitrate)}return r}},{key:"_getDefinitionItem",value:function(e){for(var t=this.playerConfig,r=0;r<t.definition.list.length;r++){var n=t.definition.list[r];if(n.definition===e)return n}return null}},{key:"_initAbrDefinition",value:function(){var e=this.player,t=this.playerConfig;if(t.definition.list.length>0&&(e.curDefinition||(e.curDefinition=t.definition.list[0]),e.curDefinition.vwidth||Object.assign(e.curDefinition,this._getDefinitionItem(e.curDefinition.definition)),this._abrService.updateAbrCacheData()),this._abrService&&this._abrService.isCurrentAutoDefi){var r=t.definition.list.length;e.curDefinition=t.definition.list[r-1]}for(var n=0;n<t.definition.list.length;n++){var i=t.definition.list[n];e.curDefinition.definition===i.definition?i.selected=!0:i.selected=!1}console.log("resourceReady",t.definition.list.concat()),this.player.emit("resourceReady",t.definition.list);var o=e.curDefinition.bitrate;if(!o)for(var a=0;a<t.definition.list.length;a++){var s=t.definition.list[a];s.definition===e.curDefinition.definition&&(o=s.bitrate)}this._abrService.updateBitrate(o)}},{key:"_initAbrService",value:(r=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){var t,r;return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(t=this.playerConfig,(r=this.config).autoBitrateOpts&&r.autoBitrateOpts.isOpenAutoDefi){e.next=3;break}return e.abrupt("return");case 3:return this._abrService=new AbrService(this,this.abrSwitchURL),e.next=6,this._abrService.init({video:t.definition.list.concat()});case 6:this._initAbrDefinition();case 7:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"_initMp4Kernel",value:function(){var e=this;this.firstFrameTime.newplayer_initkernel=util.nowTime()-this.firstFrameTime.newplayer,this.log("[===========], initMp4Kernel,",util.nowTime());var t=this.playerConfig,r=this.config,n=new ProxyPromise;try{var i=this._defInited?null:this.getInitBitrate();if(this._defInited=!0,this.log("curDefinition",i),this.log("[_initMp4Kernel] ".concat(t.vid," curDefinition"),i),!this._handlerUrl(t.url))return n.reject(new Error("emptyUrl")),n;if(r.forceVideoPlay&&(this.codecType===CODEC_TYPE.H264||r.supportHevc))return this.useVideoLoad=!0,n.reject("forceVideoPlay"),n;var o=[];o.push(this._getLicense()),o.push(this._checkPreloader()),Promise.all(o).then((function(t){e.isDestroy&&n.reject(new Error("destroy"));var o=null;if(t&&t.length>0&&t[1]&&(o=t[1].data),o||!r.needPreloadCheck||e.codecType===CODEC_TYPE.H265&&!r.supportHevc)if(e._vtype&&"MP3"===e._vtype)e.useVideoLoad=!0,n.reject(new Error("vtype_not_MP4"));else{var a=r._mainURL;e._initMp4(a,o,{fileSize:i?i.fileSize:0}),e._initAbrService()}else e.useVideoLoad=!0,n.reject(new Error("no_preload"))})).catch((function(t){console.error(t),t.errorType="GET_LICENSE_ERROR",e.emit("error",t),e.changeState("LICENSE_ERROR",{d:i?i.definition:0}),n.reject(t)}))}catch(e){n.reject(e)}return n}},{key:"playerStartInit",value:function(e){var t=this;if(this.log("playerStartInit",this.player.hasStart),!this.isDestroy){if(!e||"__auto__"===e||"anytext"===e){var r=this.playerConfig,n=r.definition;if(n&&n.list&&n.list.length>0&&n.defaultDefinition&&(n.list.map((function(e){e.definition===n.defaultDefinition&&(r.url=e.url,t.player.curDefinition=e)})),!r.url||"__auto__"===e||"anytext"===e)){var i=n.list[0];e=i.url,r.url=i.url,this.player.curDefinition=i}}if(this.useVideoLoad)_playerStartInit.call(this.player,e);else{this.player.mp4MseFlag=!0,this.bufferEndTime=-1,this._tm=(new Date).getTime(),this._reset();var o=this.playerConfig.vid;this.preloader&&this.preloader.cancelPreloadByVid(o),this.changeState("PLAYER_START_INIT"),this._awPromise.then((function(){if(!t.isDestroy){t.changeState("AW_OK INIT_MP4_KERNEL");var r=t._initMp4Kernel();t._initPromise=r,t._addPendingPromise(t._initPromise),r.then((function(r){t.isDestroy||(t.log("[Index] _initMp4Kernel.then vid:".concat(o," isDestroy").concat(t.isDestroy),r,t.mse?t.mse.url:""),t.mse&&(e=t.mse.url),t.changeState("PLAY_INIT_OK"),t._bindEvents(),t._startProgress())})).catch((function(r){var n=!!t._initPromise&&t._initPromise.isBreak;if(!t.isDestroy&&!n)if(console.error("_initMp4Kernel.catch: ".concat(o," isDestroy:").concat(t.isDestroy," _initPromise.isBreak:").concat(n),r),-499897!==r.errorCode){var i=r;i.errorCode||((i=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.other,vid:t.playerConfig.vid,errorMessage:null==r?void 0:r.message,mediaError:{code:ERROR_CODES.other,message:null==r?void 0:r.message}})).url=e),t.changeState("PLAY_INIT_CATCH",{c:i.errorCode,m:i.message}),t.player.vtype="MP4_1",t.player.emit("playCatch",t.player.vtype,i)}else t._emitExpireEvent(r)})).finally((function(){if(t._initPromise){var r=t._initPromise.isBreak;t._initPromise&&t._removePendingPromise(t._initPromise),t._initPromise=null,t._usePaused&&(t.playerConfig.autoplay=!1),t.codecType===CODEC_TYPE.H265&&"Array"===util$5.typeOf(e)&&(e=e[0].src),t.log("_initMp4Kernel.finally:isDestroy".concat(t.isDestroy," _initPromise.isBreak:").concat(r)),t.log("[===========], playerStartInit,",util.nowTime()),t.changeState("PLAY_INIT_FINALLY"),!t.isDestroy&&!r&&_playerStartInit.call(t.player,e)}}))}})).catch((function(r){t.log("_awPromise.error",r),t.changeState("PLAY_INIT_CATCH"),!t.isDestroy&&_playerStartInit.call(t.player,e)})),this._abrService&&this._abrService.isCurrentInAbr()&&(this._abrService.enable(),this._abrService.execute())}}}},{key:"playNext",value:function(e){var t=this.player;this._defInited=!1,t.resetState(),t._currentTime=0,t._duration=0,t.isPlaying=!1,this._useVideoLoad=!1,t.pause(),this._reset(),e.vtype&&(this._vtype=e.vtype.toUpperCase()),t.setConfig(e);var r=this.codecType;this.codecType=e.codecType?e.codecType.toLowerCase():CODEC_TYPE.H264;var n=e[this.pluginName];n&&(this.config=Object.assign(this.config,n)),r!==this.codecType&&this.h265_h264_switch(this.playerConfig.mediaType||"video"),this.checkConfig(),this.initAwManager(),this.log("[Index] playNext",e),t.play(),this.emit("playnext")}},{key:"h265_h264_switch",value:function(e){this.log("h265_switch_h264");var t=this.player,r=util$5.createDom(e,"",this.getVideoConfig(this.playerConfig),"xgplayer-".concat(e,"-img"));this.removeVideo=t.video,r.muted=t.video.muted,r.volume=t.video.volume,t.video=r,t.attachVideoEvents(t.video)}},{key:"getVideoConfig",value:function(e){var t=Object.assign({},{controls:!1,autoplay:e.autoplay,playsinline:e.playsinline,"x5-playsinline":e.playsinline,"webkit-playsinline":e.playsinline,"x5-video-player-fullscreen":e["x5-video-player-fullscreen"]||e.x5VideoPlayerFullscreen,"x5-video-orientation":e["x5-video-orientation"]||e.x5VideoOrientation,airplay:e.airplay,"webkit-airplay":e.airplay,tabindex:2,mediaType:e.mediaType||"video"},e.videoConfig,e.videoAttributes);return e.loop&&(t.loop="loop"),t}},{key:"next",value:function(e){this.playNext(e)}},{key:"oldChangeDefinition",value:function(e,t){var r=this,n=this.config,i=this.player,o=this.playerConfig;i.emit(DEFINITION_CHANGE,{from:t,to:e}),i.emit(WAITING);var a=i.definitionList.filter((function(t){return t.definition===e.definition||t.definition===Number(e.definition)})),s=i.definitionList.filter((function(e){return e.definition===t.definition||e.definition===Number(t.definition)}));if(s.length>0&&(s[0].selected=!1),a.length>0){(e=a[0]).selected=!0,i.curDefinition=e,this.log("[oldChangeDefinition],currentTime,",i.currentTime,",from,",t,",to,",e);var c=i.currentTime,u=i.paused;this._changeDefState||(this._changeDefState={currentTime:c,paused:u},this.log("[oldChangeDefinition],currentTime,",i.currentTime,",pause,",u)),n.definition=e.definition,this.config.keyValue=e.keyValue,this.config.kid=e.kid,this.config.secretKey=e.secretKey,this.config.drm=e.drm,this.config.getLicenseUrl=e.getLicenseUrl,o.url=e.url,o.backupURL=e.backupURL,o.userSelectDefinition=e.definition,o.defaultDefinition=e.definition,n.focusUserDefinition=!0,i.currentTime=0,i.pause(),this._reset(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),this._changeDefineCanPlay&&i.off("canplay",this._changeDefineCanPlay),this._changeDefineCanPlay=function(){r.changeDefineCanPlay(c,u,t,e),r._changeDefineCanPlay=null},i.once("canplay",this._changeDefineCanPlay),this.player.video.load(),this.playerStartInit(o.url)}}},{key:"switchURL",value:function(e){if(this.useVideoLoad)_playerSwitchUrl.call(this.player,e);else{var t=this.player,r=this.playerConfig;this.config.keyValue=e.keyValue,r.url=e.url,r.backupURL=e.backupURL,t.currentTime=0,t.pause(),this.reset(),this._isMseInit=!1,this.eme=null,this._handlerUrl(e.url),t.video.removeAttribute("src"),this._removeVideoSource(),t.resetState()}}},{key:"_handlerUrl",value:function(e){var t,r=this.config,n=this.playerConfig;if(!e)return!1;var i=[];if("String"===util$5.typeOf(e))t=e,n.backupURL&&i.push(n.backupURL);else if("Array"===util$5.typeOf(e)&&e.length>0&&(t=e[0].src,e.length>1))for(var o=1;o<e.length;o++)i.push(util.extUrl(e[o].src,{__vid:n.vid}));return!(!t&&0===i.length)&&(r._mainURL=util.extUrl(t,{__vid:n.vid}),r._backupURL=i,!0)}},{key:"_firstFrameTime",value:function(){if(this.codecType===CODEC_TYPE.H264||this.config.supportHevc){if(this.firstFrameTime.new_loadeddata<0){this.firstFrameTime.loadst_loadeddata=util.nowTime()-this.loadstart,this.firstFrameTime.new_loadeddata=util.nowTime()-this.firstFrameTime.newplayer;var e={};for(var t in this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,t)&&(this.log("======this.firstFrameTime======",t,", ",this.firstFrameTime[t]),e[t]=this.firstFrameTime[t])}}else if(this.codecType===CODEC_TYPE.H265){var r=this.player.video.getStats(),n=this.firstFrameTime.metaload,i=this.firstFrameTime.startMuxTime;this.firstFrameTime=r,this.firstFrameTime.metaload=n,this.firstFrameTime.startload_stmux=i,this.firstFrameTime.firstmux=this.mp4?this.mp4.firstFrameTime.firstmux:-1;for(var o=0;o<r.bootStats.length;o++)this.firstFrameTime[r.bootStats[o].action]=r.bootStats[o].dot;delete this.firstFrameTime.bootStats,this.log("======this.firstFrameTime===>>",JSON.stringify(this.firstFrameTime))}}},{key:"_bindEvents",value:function(){var e=this,t=this.config,r=this.player;this._isEventInit||(this.on("seeking",this._onSeeking),this.on("waiting",this._onWaiting),this.on("ended",this._onEnded),this.on("error",this._onVideoError),this.on("playing",this._onPlaying),this.on("detectGap",(function(){t.gapDegrade&&t.useEME&&(t.useEME=!1,e._replay())})),this.on("error",(function(t){e.changeState("video_error",{code:t.code,message:t.message,videoType:e.useVideoLoad})})),r.setEventsMiddleware({error:function(t,r){var n=t.originalEvent;e.changeState("video_error",{code:n.code,message:n.message,videoType:e.useVideoLoad}),e.log("error middleware",t,",useVideoLoad,",e.useVideoLoad),e.useVideoLoad&&r(t.eventName,n)}})),this._isEventInit=!0}},{key:"deleteVideo",value:function(){if(this.removeVideo){var e=this.removeVideo.parentNode;e&&e.removeChild(this.removeVideo),this.removeVideo=null,this.log("[_removeVideoSource]")}}},{key:"_unbindEvents",value:function(){this.off("seeking",this._onSeeking),this.off("waiting",this._onWaiting),this.off("ended",this._onEnded),this.off("playing",this._onPlaying),this._isEventInit=!1}},{key:"changeState",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};this._pTime||(this._pTime=util.nowTime());var r=util.nowTime()-this._pTime,n=util.nowTime()-this._sTime;this.log(">>>changeState[".concat(e,"]"),r,n,t),this.states.push({state:e,t1:r,t2:n,data:t}),this._pTime=util.nowTime();var i=util.nowTime()-this._pTime;t.state=e,i&&(t.t=i)}},{key:"checkIfCanPreload",value:function(){var e=this.player,t=this.useVideoLoad,r=this.config;if(r.isOpenPreload){var n=t?5:r.minBufferLength,i=e.currentTime+n;i=i>e.duration?e.duration:i;var o=(t?e.getBufferedRange(e.buffered):e.getBufferedRange(e.buffered2))[1]-i;e.currentTime>=n&&(o>0||Math.abs(o)<1)&&this.preloader&&this.preloader.checkCanPreloadNext()&&this.emit("PRELOAD_NEXT")}}},{key:"_getLicense",value:function(){var e=this,t=this.config,r=t.vid,n=t.kid,i=t.secretKey,o=new ProxyPromise,a={method:"getLicense",success:0};if(n||i){var s=getKeyValue(r,n,i,this);s.id="licensePromise",this._addPendingPromise(s),s.then((function(t){e._removePendingPromise(s),t.clearKeys?e.config.drm=t:e.config.keyValue=t,a.success=1,o.resolve(a)})).catch((function(t){e.log("licensePromise reject"),a.success=0,a.error=t,o.reject(a)}))}else a.success=0,o.resolve(a);return o}},{key:"softDecode",get:function(){var e,t;return"xg-video"===(null===(e=this.player)||void 0===e||null===(t=e.config)||void 0===t?void 0:t.mediaType)}},{key:"_initH265MseProxy",value:function(){this.player.video instanceof HTMLVideoElement&&this.h265_h264_switch(this.playerConfig.mediaType);var e=this.player.video;this.softDecode&&e.setPlayMode&&e.setPlayMode("VOD"),this.mseProxy=e,this.softDecode&&(this.player.forceDegradeToVideo=function(){},this.player.video.addEventListener("lowdecode",this._lowDecoder),this.player.video.addEventListener("error",this._onError))}},{key:"removeAndRejectInitPromise",value:function(e){this._initPromise&&(this._removePendingPromise(this._initPromise),this._initPromise.reject(e))}},{key:"_initMp4",value:function(e){var t=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};this.firstFrameTime.initkernel_initmp4=util.nowTime()-this.firstFrameTime.newplayer-this.firstFrameTime.newplayer_initkernel;var i=this.config,o=this.player,a=this.playerConfig;this.mp4&&(this.mp4.off(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.off(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.off(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.off(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.off(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.changeState("MP4_NEW",{}),this.mp4=new MP4(e,o.curDefinition.bitrate,{segmentDuration:i.segmentMinDuration,enableWorker:i.enableWorker,codecType:this.codecType,chunkSize:i.preloadSize,loadSize:800,duration:a.duration||0,fileSize:n.fileSize||0,playerId:this.playerId,vid:a.vid,useUrlRange:i.useUrlRange,retryCount:i.retryCount,retryDelay:i.retryDelay,onProcessMinLen:i.onProcessMinLen,supportHevc:i.supportHevc,reqOptions:i.reqOptions},this,null,r,this.config._backupURL,this.firstFrameTime,""),this.mp4.once(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.on(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.on(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.on(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.on(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.on(MP4_EVENTS.CHANGE_URL,(function(e){t.player&&t.player.emit("initialUrl",{url:e})})),this.mp4.MP4Loader.on(REAL_TIME_SPEED_EVENT,(function(e){_realTimeSpeed=e.speed,t.debugInfo.speed||(t.debugInfo.speed=[]),t.debugInfo.speed.push(_realTimeSpeed),t.debugInfo.speed.length>10&&t.debugInfo.speed.shift(),t.emit(REAL_TIME_SPEED_EVENT,e)})),this.changeState("MP4_INIT",{}),this.mp4.init(r)}},{key:"_checkPreloader",value:function(){var e=this,t=this.playerConfig,r=new ProxyPromise,n={method:"checkPreloader",success:0,type:"error",cacheKey:""};this.changeState("CHECK_PRELOAD");var i=this.player.curDefinition,o=i.cacheKey?i.cacheKey:Mp4Preloader.generateUniqueKey({vid:t.vid,definition:i.definition||"",vtype:t.vtype,codecType:t.codecType});return n.cacheKey=o,this.preloader&&o?this.preloader.getPreLoadData(o).then((function(t){console.log(">>>>check Preloader result",o,t),t?(e.preLoadData=t,e.emit("PRELOAD_INFO",e.preLoadData),n.success=1,n.data=t,e.changeState("PRELOAD_OK",{l:e.preLoadData.byteLength,ck:o}),t.mediaSegList&&t.mediaSegList.length>0||t.buffer&&t.buffer.byteLength>0?e.hitpreload=!0:e.hitpreload=!1,r.resolve(n)):(e.preLoadData=null,e.changeState("PRELOAD_ERROR",{t:0}),n.success=0,n.error=new Error("none_preload"),r.resolve(n))})):(this.changeState("PRELOAD_ERROR",{t:2}),n.success=0,n.error=new Error("no_preloader"),r.resolve(n)),r}},{key:"_initEME",value:function(e,t){var r=this.player,n=this.config,i=e.checkCodecH265();n.useEME=!(!1===n.useEME||i),this._updateDrmConfig(t),this.log("config.useEME: ",n.useEME);var o=n.drm;!this.eme&&o&&o.clearKeys&&n.useEME&&(this.eme=new EME(o)),n.useEME&&this.eme&&(this.eme.setOptions('video/mp4; codecs="avc1.64001E"','audio/mp4; codecs="mp4a.40.2"'),this.eme.SetupEME(r.video))}},{key:"_initMse",value:function(e){var t=this,r=this.playerConfig;this.mse&&(this.mse.destroy(),this.mse=null);var n,i=this.mp4&&this.mp4.checkCodecH265(),o=!!e.videoCodec,a=!!e.audioCodec;n=o&&a?i?'video/mp4; codecs="hev1.1.6.L93.B0, mp4a.40.5"':'video/mp4; codecs="avc1.64001E, mp4a.40.5"':o?i?'video/mp4; codecs="hev1.1.6.L93.B0"':'video/mp4; codecs="avc1.64001E"':'video/mp4; codecs="mp4a.40.5"';var s=_defineProperty$4({},CONTENT_TYPES.VIDEO,{mimeType:"video/mp4",codec:n});this.mse=new MSE(r.mediaType,this.log.bind(this)),this.mse.on(MSE_EVENTS.MSE_OPEN,(function(e){t.firstFrameTime.initmse_sbopen=e.costtime,t._loadStartEventTime>0&&(t.firstFrameTime.mseopen=util.nowTime()-t._loadStartEventTime),t.changeState("MSE_OPEN")})),this.mse.on(MSE_EVENTS.MSE_OPEN_DONE,(function(e){t.firstFrameTime.initmse_sbopendone=e.costtime,t.changeState("MSE_OPEN_DONE"),t._isMseInit=!0,t._onTimeUpdate()})),this.mse.on(MSE_EVENTS.MSE_ERROR,(function(e){if(console.log("[MSE error]",e),e&&t.mse&&t.mse.isFull()){var n=t.player.getBufferedRange(t.player.buffered2);t._checkRemoveSourceBuffer(n,t.player.currentTime,!0)}else{var i=new Errors(t.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.mseAppend,errorMessage:e.message,vid:r.vid,mediaError:{code:ERROR_CODES.mseAppend,message:e.message}});t._errorHandler(i)}})),this.mse.on(MSE_EVENTS.UPDATE_END,(function(e){var r=e.context,n=e.costtime;if(r&&r.isinit)t.firstFrameTime.metaready_initsegend=n,t.log("player appendBuffer end ==>>>",r||null,", costTime,",n),t.changeState("MSE_INITSEG_OK");else if(t.log("player appendBuffer end ==>>>",r||null,", costTime,",n,", opt,",e.name,",bufferRange,",t.player.getBufferedRange()),t.firstFrameTime.loadst_loadeddata<0&&(t._firstSegState<0&&t._onTimeUpdate(),t.firstFrameTime.apcnt++,t.firstFrameTime.aplen+=r?r.dataLen:0,t.firstFrameTime.data_ap+=n,t.changeState("APPEND_DATA_OK",{costime:n,dataLen:r?r.dataLen:0})),t.mse&&r.state&&r.fragIndex===t.mp4.timeRange.length-1){var i=t.player.buffered;t.bufferEndTime=i.end(i.length-1),t._isEnded(),t.log("loaded ended !!!==>>>",r.range,", fragIndex,",r.fragIndex,", bufferEndTime,",t.bufferEndTime,",meta_duration,",t.mp4.meta.duration)}})),this.changeState("MSE_INIT"),this.mse.init(s)}},{key:"_appendInitSeg",value:function(e){this.mp4&&this.mse&&(this.changeState("MSE_INITSEG"),this.log("[=======ready_append_init]",util.nowTime(),",mseDone,",!!this.mse&&this.mse.ready,",isopen,",!!this.mse&&this.mse.isMediaSourceOpen()),!this.mse.ready&&this.openMSE(),this.firstFrameTime.metaready_mseisopen=this.mse&&this.mse.ready?1:0,this.mse.appendBuffer(CONTENT_TYPES.VIDEO,e,{vid:this.playerConfig.vid,range:null,dataLen:e.byteLength,isinit:!0}),this.mp4.useEME&&this.eme&&this.eme.emit("encrypted"))}},{key:"_checkMetaInfo",value:function(e){var t=null;return e?null:(t={errorCode:ERROR_CODES.metaError,errorMessage:"meta is null",errorType:"demux",errorTypeCode:ERROR_TYPES.demux},new Errors(this.player,_objectSpread2$2(_objectSpread2$2({},t),{},{vid:this.playerConfig.vid,mediaError:{code:t.errorCode,message:t.errorMessage}})))}},{key:"_stopProgress",value:function(){this._hasStartProgress=!1,this._requestTimer&&(this._requestTimer.stop(),this._requestTimer=null),this._bufferBreakTimer&&(clearTimeout(this._bufferBreakTimer),this._bufferBreakTimer=null,this._bufferBreakFlag=void 0)}},{key:"_bindNetworkStateChange",value:function(){window.addEventListener("online",this._onOnlineHandler),window.addEventListener("offline",this._onOfflineHandler)}},{key:"_unbindNetworkStateChange",value:function(){window.removeEventListener("online",this._onOnlineHandler),window.removeEventListener("offline",this._onOfflineHandler)}},{key:"_onSuperStart",value:function(e){var t=this,r=this.player;log$2("_onSuperStart:".concat(e),this.mse),r.video.src=e,this.once("canplay",(function(){r.play(),t.on("waiting",t._onWaiting)}))}},{key:"openMSE",value:function(){var e=this.mse;!e.ready&&e.isMediaSourceOpen()&&(this.log("[=======主动调用_onSourceOpen start]",util.nowTime()),e._onSourceOpen(),this.log("[=======主动调用_onSourceOpen, end ]",util.nowTime(),"mseDone,",e.ready))}},{key:"_appendBuffer",value:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},n=arguments.length>3?arguments[3]:void 0,i=this.mse,o=this.playerConfig.vid;this.log("player appendBuffer start ==>>>",o,r.range,t.byteLength,", queueLen,",i&&i.opQueues[e]?i.opQueues[e].length:null),i.ready||(this.openMSE(),this.firstFrameTime.metaready_mseisopen=this.mse&&this.mse.ready?2:-1),i.appendBuffer(e,t,{vid:o,fragIndex:r.fragIndex,range:r.range,dataLen:t.byteLength,state:n})}},{key:"_loadData",value:(t=_asyncToGenerator$2(_regeneratorRuntime$2().mark((function e(){return _regeneratorRuntime$2().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:if(navigator.onLine){e.next=2;break}return e.abrupt("return");case 2:if(this.mp4&&this._isMseInit){e.next=5;break}return this.log("loadData, player.mp4 null",this._isMseInit),e.abrupt("return");case 5:return this.loadstart<0&&(this.loadstart=util.nowTime()),e.prev=6,e.next=9,this.mp4.load(this._curLoadSegmentIdx,this._loadDataSuccess);case 9:e.next=14;break;case 11:e.prev=11,e.t0=e.catch(6),console.error("[Index] _loadData error",this.playerConfig.vid,e.t0);case 14:case"end":return e.stop()}}),e,this,[[6,11]])}))),function(){return t.apply(this,arguments)})},{key:"getDataBitRate",value:function(e){var t=this.mp4,r=this.playerConfig;if(!t)return 0;for(var n=t.getDataBitRate(e),i=r.definition.list,o=0,a=0;a<i.length;a++)if(i[a].bitrate===n){o=i[a];break}return o}},{key:"_loadStuckCheck",value:function(){var e=this,t=this.config,r=this.playerConfig,n=this.player;t.disableBufferBreakCheck||(n.currentTime-(this._lastCurrentTime||0)>.1||n.paused?1!==this._bufferBreakFlag&&2!==this._bufferBreakFlag||(this.log("视频没有卡死,重置卡死标记"),this._bufferBreakFlag=0,clearTimeout(this._bufferBreakTimer),this._bufferBreakFlag=null):this._bufferBreakFlag||(this._bufferBreakFlag=1,this.log("卡死计时开始! 持续".concat(BUFFER_BREAK,"毫秒则确认卡死")),this._bufferBreakTimer=setTimeout((function(){e.isDestroy||(1===e._bufferBreakFlag&&(e._bufferBreakFlag=2,e.log("确认卡死!!!"),e._errorHandler(new Errors(e.player,{errorType:"runtime",errorTypeCode:ERROR_TYPES.runtime,errorCode:ERROR_CODES.waitTimeout,errorMessage:"wait_timeout",vid:r.vid}))),e._bufferBreakTimer=null)}),BUFFER_BREAK)),this._lastCurrentTime=n.currentTime)}},{key:"_doubleCheckBuffer",value:function(e){var t=this.player;if(!(e.startTime>t.currentTime))return!0;if(!t.video||!t.video.buffered)return!0;var r=t.video.buffered;if(1===r.length)return!0;for(var n=!1,i=0;i<r.length;i++){var o=r.start(i)-.5,a=r.end(i)+.5;if(o<=e.startTime&&e.endTime<=a){n=!0;break}}return n}},{key:"_onTimeUpdate",value:function(){var e=this,t=this.mse,r=this.mp4,n=this.player;if(this.useVideoLoad)this.checkIfCanPreload();else if(r){var i=r.timeRange;if(i&&!(i.length<1)&&1!==this._firstSegState){var o=n.getBufferedRange(n.buffered2);if((t||this.mseProxy)&&r&&r.canDownload){util.nowTime()-this._lastCheckTime>1e3&&(this._lastCheckTime=util.nowTime(),this._loadStuckCheck(),this._startUrlExpiredCheck(),this._checkRemoveSourceBuffer(o,n.currentTime));var a=n.paused?n.currentTime+this._minBufferLength:n.currentTime+this._maxBufferLength;o[1]-a<0&&i.every((function(t,r){if(t.downloaded){if(e._doubleCheckBuffer(t))return!0;t.downloaded=!1,t.isLoading=!1,e.log("".concat(r," download state error, no buffer, download again"))}t.startTime-n.currentTime<e._maxBufferLength?(e._curLoadSegmentIdx=r,e.log("[onTimeUpdate],load index==>>>, ",r,",IdxTimeRange, ",t.startTime,"-",t.endTime,",buffEnd, ",o[1],",playCurTime,",n.currentTime,", bufferLen,",o[1]-n.currentTime,",bufferRangeList,",e.player.buffered2?e.player.buffered2.bufferedList:null),e._loadData()):e.log("[onTimeUpdate] not load index==>>>",r,",IdxTimeRange, ",t.startTime,"-",t.endTime,",playCurTime,",n.currentTime,",bufferRangeList,",e.player.buffered2?e.player.buffered2.bufferedList:null)})),this.checkIfCanPreload(),this.playFlag&&!this._hasTriggerBufferThreshold&&this._startBufferCheck(),this._isEnded()}}}}},{key:"_reset",value:function(){for(var e in this.states=[],this.hitpreload=!1,this._sTime=util.nowTime(),this._usePaused=!1,this._firstSegState=-1,this.useVideoLoad=!1,this._isMseInit=!1,this.endofstream=!1,this._curLoadSegmentIdx=0,this.preLoadData=null,this.forPreloadTimeCache=null,this.playFlag=!1,this._waitAdjustTimeCnt=0,this._initPromise&&"pending"===this._initPromise.state&&this._initPromise.reject("DESTROYED"),clearTimeout(this.checkResumePlayTimer),this.checkResumePlayTimer=null,this._stopProgress(),this.mp4&&(this.mp4.off(MP4_EVENTS.META_READY,this._onMp4MetaReady),this.mp4.off(MP4_EVENTS.ERROR,this._onMp4Error),this.mp4.off(MP4_EVENTS.UPDATEEME,this._updateDrmConfig),this.mp4.off(MP4_EVENTS.TASK_PROGRESS,this._onMp4Progress),this.mp4.off(MP4_EVENTS.MOOV_REQ_PROGRESS,this._onMp4DataCallBack),this.mp4.destroy(),this.mp4=null),this.mse&&(this.mse.destroy(),this.mse=null),this.mseProxy&&(this.player.video.removeEventListener("lowdecode",this._onDegrade),this.player.video.removeEventListener("error",this._onError)),this._clearMediaKeys(),this._unloadVideo(),this._cancelPendingPromises(),this._abrService&&(this._abrService.destroy(),this._abrService=null),this.firstFrameTime)Object.prototype.hasOwnProperty.call(this.firstFrameTime,e)&&(this.firstFrameTime[e]="apcnt"===e||"aplen"===e?0:"newplayer"===e?util.nowTime():-1);clearTimeout(this._waitInBufferTimer),this._waitInBufferTimer=null,this.loadstart=-1,this._loadStartEventTime=-1,this.startLoadData=-1}},{key:"removeErrorUrls",value:function(e,t,r){return-499897!==e.errorCode&&-499892!==e.errorCode||this._emitExpireEvent(e),r}},{key:"_errorHandler",value:function(e){var t=this.player,r=this.playerConfig,n=this.preLoadData;if(t){if(this.useVideoLoad)return console.log("useVideoLoad final error!!!!, ",r.vid,e),void this.emit("error",e);if("object"!==_typeof$3(e)){var i={};i.err=e,e=i}var o=t.paused;e.vid=r.vid,e.preloadHit=n&&n.byteLength>0?1:0,e.preloadCached=n?n.duration:0,e=new Errors(t,e),this.log("_errorHandle","preState is ".concat(o),e),!e.url&&(e.url=t.src),this.player.vtype="MP4_2",this.player.emit("playCatch",this.player.vtype,e),e.errd&&"object"===_typeof$3(e.errd)&&this.mp4&&(e.errd.url=this.mp4.url,e.url=this.mp4.url),e.codectype=this.codecType,this.emit("DATA_REPORT",e),this.mp4&&this.mp4.url&&this.removeErrorUrls(e,this.mp4.url,r.url),this.log("error task cancel"),this.mp4&&this.mp4.cancelLoading(),this._abrService&&this._abrService.disable(),this.mp4&&(this.mp4.canDownload=!1),this.mp4&&this.mp4.bufferCache&&this.mp4.bufferCache.clear(),this._startDegradedPlayback(e)}}},{key:"_startDegradedPlayback",value:function(e){var t=this;this.mp4&&(this.mp4.canDownload=!1);var r=this.player,n=this.playerConfig;this.endofstream=!1,this._currentTime=r.currentTime||0,this.player.pause(),this._reset(),this._replay=null,this.codecType===CODEC_TYPE.H265?(console.log("h265 err,degrade use 264 play",n.vid),this._onDegrade(e)):this.codecType===CODEC_TYPE.H264&&(this.config.drm?(this.config.drm&&Object.keys(this.config.drm).map((function(r){t.config.drm&&(e[r]=t.config.drm[r])})),console.log("final error !!!!, ",n.vid,e),this.emit("error",e)):(this.useVideoLoad=!0,this._setPlayerSrc(n.url),this.once("canplay",(function(){t._currentTime&&(r.currentTime=t._currentTime),!r.paused&&r.play()}))))}},{key:"_startProgress",value:function(){var e=this;this._hasStartProgress||(this._stopProgress(),this._requestTimer=new Timer((function(){e._requestTimer&&e._onTimeUpdate()})),this._requestTimer.tickEvery(this._tickInSeconds),this._hasStartProgress=!0)}},{key:"_unloadVideo",value:function(){var e=this.player;try{this.log("unloadVideo src ".concat(e.video.src)),e.video&&e.video.src&&(e.video.removeAttribute("src"),e.video.load())}catch(e){this.log("unloadVideo error",e)}}},{key:"_addPendingPromise",value:function(e){this._pendingPromises.push(e)}},{key:"_removePendingPromise",value:function(e){this.log("removePendingPromise",e.id);var t=this._pendingPromises.indexOf(e);t>-1&&this._pendingPromises.splice(t,1)}},{key:"_cancelPendingPromises",value:function(){this._pendingPromises.length>0&&this._pendingPromises.forEach((function(e){e.reject(DESTROYED)})),this._pendingPromises=[]}},{key:"_onMediaExpired",value:function(){this._stopProgress(),this.emit(CUSTOM_EVENTS.MEDIA_EXPIRED)}},{key:"_onDestroyWasm",value:function(){this.awManager&&(this.awManager.destroy(),this.awManager=null)}},{key:"_isEnded",value:function(){var e=this.player,t=this.mp4,r=e.bufferedPoint,n=r?r.end:0;return!this.endofstream&&this.bufferEndTime>0&&this.mse&&this.bufferEndTime-e.currentTime<.5&&(this.log("[check player isEnded],deal mse.endOfStream, currentTime,",e.currentTime,", bufferend,",n,", duration,",t.meta.duration),this.endofstream=!0,this.mse.endOfStream()),!!(t&&t.meta&&t.meta.duration-e.currentTime<.5)&&(this._stopProgress(),this.log("[check player isEnded],stopProgress and endOfStream,currentTime, ",e.currentTime,", bufferend,",n,", duration,",t.meta.duration),this.mse&&this.mse.endOfStream(),!0)}},{key:"_clearMediaKeys",value:function(){var e=this.player;e.video&&"function"==typeof e.video.setMediaKeys&&e.video.setMediaKeys(null).catch((function(){}))}},{key:"_checkRemoveSourceBuffer",value:function(e,t,r,n){var i=this,o=this.mse,a=this.mp4,s=this.player;if(o&&a&&s&&(r&&(clearTimeout(this._removeBufferTimer),this._removeBufferTimer=null),e||(e=s.getBufferedRange(s.buffered2)),t||(t=s.currentTime),!(!r&&util.nowTime()-this._checkRemoveBufferLastTime<=this.config.removeBufferLen||this.endofstream)&&(this._checkRemoveBufferLastTime=util.nowTime(),e&&e[0]>=0&&(t-e[0]>this.config.removeBufferLen||o.isFull())))){var c=n?e[1]:t-(o.isFull()?0:15),u=a.getFragmentIdx(c);if(u>=0&&(n||a.timeRange[u].startTime<t)){var l=Math.floor(Math.min(a.timeRange[u].startTime,e[1]));e[0]<l?(this.log("[checkremoveSourceBuffer], remove range==>>>",e[0],l),o.reuse(e[0],l)):o.isFull()&&!this._removeBufferTimer&&(this.log("[after 10s, go on checkremoveSourceBuffer], currentTime==>>>",t,", buffer start,",e[0]),this._removeBufferTimer=setTimeout((function(){i._checkRemoveSourceBuffer(null,null,!0)}),1e4))}}}},{key:"onMediaUpdate",value:function(e){var t=e.vid,r=e.kid,n=e.url,i=this.player,o=this.config;if(t===this.playerConfig.vid&&r===o.kid&&n){this.playerConfig.url=n,this._handlerUrl(n);var a=o._mainURL;return this.useVideoLoad?i.src=n:this.mp4&&this.mp4.update(a),!0}return!1}},{key:"enableAutoBuffer",value:function(e){var t=this;if(e){if(!this._allInitPromise)return void this.log("player destroyed!!");this._allInitPromise.then((function(){t.log("enableAutoBuffer true"),t._startProgress()}))}else this._stopProgress(),this.log("enableAutoBuffer false")}},{key:"bitRateAdapter",get:function(){return this.player&&this.player.plugins&&this.config.needAutoBitrate?this.player.plugins.bitrateselector:null}},{key:"getDefinitonFromAdapter",value:function(e,t){if(!this.bitRateAdapter)return null;var r=this.bitRateAdapter;return r.getSuitableBitrate?r.getSuitableBitrate(e,t):r.bitRateAdapter?r.bitRateAdapter.select(e):null}},{key:"addPreloader",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};e.playerId=this.playerId,this.preloader?this.preloader.addPreloader(e,this.playerId,this.playerConfig.vid):this.log("preloader has destroyed")}},{key:"addPreloaderList",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];this.preloader?this.preloader.addPreloaderList(e,this.playerId,this.playerConfig.vid):this.log("preloader has destroyed")}},{key:"changeUserSelectDefinition",value:function(e){this.preloader&&e&&this.preloader.changeUserSelectDefinition(e)}},{key:"log",value:function(e){for(var t=this.playerConfig,r=t&&t.vid?"[Index]".concat(t.vid," ").concat(e):"[Index] ".concat(e),n=arguments.length,i=new Array(n>1?n-1:0),o=1;o<n;o++)i[o-1]=arguments[o];log$2.apply(void 0,[r].concat(i))}},{key:"_emitInitFail",value:function(e){this.log("initFail, reason:",e),this.emit(CUSTOM_EVENTS.INIT_FAIL,e)}},{key:"emitParseError",value:function(){this.log("parseError"),this.emit(CUSTOM_EVENTS.PARSE_ERROR)}},{key:"useVideoLoad",get:function(){return this._useVideoLoad},set:function(e){this._useVideoLoad=e}},{key:"ready",get:function(){return this._allInitPromise}},{key:"speed",get:function(){return parseInt(MP4.speed,10)}},{key:"version",get:function(){return version}},{key:"realTimeSpeed",get:function(){return _realTimeSpeed}},{key:"opQueueLen",get:function(){var e=this.mse&&this.mse.opQueues?this.mse.opQueues.video:[];return e?e.length:0}},{key:"loadSegmentTimeRange",get:function(){if(!this.mp4)return[0,0,0,0];var e=this.mp4.timeRange;if(e&&e.length>0&&this._curLoadSegmentIdx&&this._curLoadSegmentIdx<e.length){var t=e[this._curLoadSegmentIdx];if(t.isLoading){var r=this.mp4.getFragRange(this._curLoadSegmentIdx);return[Number(t.startTime),Number(t.endTime)].concat(_toConsumableArray$3(r))}}return[0,0,0,0]}},{key:"preloadState",get:function(){return this.preloader&&this.preloader.loadingCount}},{key:"moovSize",get:function(){return 0}},{key:"isDestroy",get:function(){return!this.player}},{key:"cancelPreloadTask",value:function(){this.preloader&&this.preloader.cancelLoading(this.player.playerId)}},{key:"CDNUrl",get:function(){var e=this.playerConfig.url,t=document.createElement("a");return t.href=e,t.host}},{key:"abrInstance",get:function(){return this._abrService?this._abrService.abrInstance:null}},{key:"_handleUrlExpire",value:function(){var e=this,t=this.config,r=this.player,n=r.paused;(new Date).getTime()/1e3>=this.urlExpireTimestamp&&this.urlExpireTimestamp>0&&!n&&t.getServerTime&&(r.serverTimeDiffPromise=r.serverTimeDiffPromise||t.getServerTime().catch((function(){return 0})),r.serverTimeDiffPromise.then((function(t){if(t&&(r.serverTimeDiff=(new Date).getTime()/1e3-t),(new Date).getTime()/1e3>=e.urlExpireTimestamp+r.serverTimeDiff){e.urlExpireTimestamp=(new Date).getTime()/1e3+86400;var n=new NetWorkError("network",ERROR_CODES[403]);e._emitExpireEvent(n)}})))}},{key:"_emitExpireEvent",value:function(e){var t=this.player,r=(new Date).getTime()/1e3;this.emitExpireTimestamp?r-this.emitExpireTimestamp>300&&(this.emitExpireTimestamp=r,t.emit("MEDIA_EXPIRED",e)):(this.emitExpireTimestamp=r,t.emit("MEDIA_EXPIRED",e))}}],[{key:"registerPreloader",value:function(e,t){e.vtype=VTYPES.MP4,Mp4Preloader.BitRateAdapter=t,new Mp4Preloader(e,this)}},{key:"pluginName",get:function(){return"Mp4EncryptPlayer"}},{key:"defaultConfig",get:function(){return{onlyInit:!1,useWaterLevel:!1,maxBufferLength:10,minBufferLength:5,tickInSeconds:.2,getLicenseUrl:"",xhrSetup:{},retryCount:1,retryDelay:1e3,preloadCacheType:1,needPreloadRangeList:!1,cdnHost:"",cdnBucket:"",isEncrypt:!1,isOpenPreload:!0,needPreloadCheck:!1,preloadTime:0,preloadMaxCacheCount:0,needAutoBitrate:!0,keyValue:null,drm:null,switchBitRateWay:!1,enableWorker:!1,bufferThreshold:10,removeBufferLen:40,focusUserDefinition:!1,resumePlayWaterLevel:2,waitJampBufferMaxCnt:3,waitingInBufferTimeOut:5e3,h265Degrade:!1,forceVideoPlay:!1,segmentMinDuration:2,supportHevc:void 0,H264Config:null}}},{key:"speed",get:function(){return _realTimeSpeed}},{key:"realTimeSpeed",get:function(){return _realTimeSpeed}},{key:"version",get:function(){return version}}]),i}();Mp4EncryptPlayer.isSupported=isSupported,Mp4EncryptPlayer.isEMESupported=isEMESupported,Mp4EncryptPlayer.isSupportedWithXgmse=isSupportedWithXgmse,Mp4EncryptPlayer.isMediaSourceSupported=isMediaSourceSupported,Mp4EncryptPlayer.isWebAssemblySupported=isWebAssemblySupported,Mp4EncryptPlayer.getPlayLicenses=getPlayLicenses,Mp4EncryptPlayer.CUSTOM_EVENTS=CUSTOM_EVENTS,Mp4EncryptPlayer.Mp4Preloader=Mp4Preloader;var shakaPlayer_compiled={};
11
11
  /*
12
12
  @license
13
13
  Shaka Player