NodeLink
NodeLink copied to clipboard
[BUG]: Randomly crashes while playing tracks
NodeLink version
4b68eac
Description
TypeError: invalid public_nonce length
at f (/root/NodeLink/node_modules/libsodium-wrappers/dist/modules/libsodium-wrappers.js:1:18800)
at Object.D [as crypto_aead_xchacha20poly1305_ietf_decrypt] (/root/NodeLink/node_modules/libsodium-wrappers/dist/modules/libsodium-wrappers.js:1:32450)
at Object.crypto_aead_xchacha20poly1305_ietf_decrypt (file:///root/NodeLink/node_modules/@performanc/voice/sodium.js:17:21)
at Socket.<anonymous> (file:///root/NodeLink/node_modules/@performanc/voice/index.js:213:26)
at Socket.emit (node:events:519:28)
at UDP.onMessage [as onmessage] (node:dgram:942:8)
Node.js v21.7.3
/root/NodeLink/node_modules/libsodium-wrappers/dist/modules/libsodium-wrappers.js:1
!function(e){function r(e,r){"use strict";var t,a="uint8array",_=r.ready.then((function(){function a(){if(0!==t._sodium_init())throw new Error("libsodium was not correctly initialized.");for(var r=["crypto_aead_aegis128l_decrypt","crypto_aead_aegis128l_decrypt_detached","crypto_aead_aegis128l_encrypt","crypto_aead_aegis128l_encrypt_detached","crypto_aead_aegis128l_keygen","crypto_aead_aegis256_decrypt","crypto_aead_aegis256_decrypt_detached","crypto_aead_aegis256_encrypt","crypto_aead_aegis256_encrypt_detached","crypto_aead_aegis256_keygen","crypto_aead_chacha20poly1305_decrypt","crypto_aead_chacha20poly1305_decrypt_detached","crypto_aead_chacha20poly1305_encrypt","crypto_aead_chacha20poly1305_encrypt_detached","crypto_aead_chacha20poly1305_ietf_decrypt","crypto_aead_chacha20poly1305_ietf_decrypt_detached","crypto_aead_chacha20poly1305_ietf_encrypt","crypto_aead_chacha20poly1305_ietf_encrypt_detached","crypto_aead_chacha20poly1305_ietf_keygen","crypto_aead_chacha20poly1305_keygen","crypto_aead_xchacha20poly1305_ietf_decrypt","crypto_aead_xchacha20poly1305_ietf_decrypt_detached","crypto_aead_xchacha20poly1305_ietf_encrypt","crypto_aead_xchacha20poly1305_ietf_encrypt_detached","crypto_aead_xchacha20poly1305_ietf_keygen","crypto_auth","crypto_auth_hmacsha256","crypto_auth_hmacsha256_final","crypto_auth_hmacsha256_init","crypto_auth_hmacsha256_keygen","crypto_auth_hmacsha256_update","crypto_auth_hmacsha256_verify","crypto_auth_hmacsha512","crypto_auth_hmacsha512_final","crypto_auth_hmacsha512_init","crypto_auth_hmacsha512_keygen","crypto_auth_hmacsha512_update","crypto_auth_hmacsha512_verify","crypto_auth_keygen","crypto_auth_verify","crypto_box_beforenm","crypto_box_curve25519xchacha20poly1305_beforenm","crypto_box_curve25519xchacha20poly1305_detached","crypto_box_curve25519xchacha20poly1305_detached_afternm","crypto_box_curve25519xchacha20poly1305_easy","crypto_box_curve25519xchacha20poly1305_easy_afternm","crypto_box_curve25519xchacha20poly1305_keypair","crypto_box_curve25519xchacha20poly1305_open_detached","crypto_box_curve25519xchacha20poly1305_open_detached_afternm","crypto_box_curve25519xchacha20poly1305_open_easy","crypto_box_curve25519xchacha20poly1305_open_easy_afternm","crypto_box_curve25519xchacha20poly1305_seal","crypto_box_curve25519xchacha20poly1305_seal_open","crypto_box_curve25519xchacha20poly1305_seed_keypair","crypto_box_detached","crypto_box_easy","crypto_box_easy_afternm","crypto_box_keypair","crypto_box_open_detached","crypto_box_open_easy","crypto_box_open_easy_afternm","crypto_box_seal","crypto_box_seal_open","crypto_box_seed_keypair","crypto_core_ed25519_add","crypto_core_ed25519_from_hash","crypto_core_ed25519_from_uniform","crypto_core_ed25519_is_valid_point","crypto_core_ed25519_random","crypto_core_ed25519_scalar_add","crypto_core_ed25519_scalar_complement","crypto_core_ed25519_scalar_invert","crypto_core_ed25519_scalar_mul","crypto_core_ed25519_scalar_negate","crypto_core_ed25519_scalar_random","crypto_core_ed25519_scalar_reduce","crypto_core_ed25519_scalar_sub","crypto_core_ed25519_sub","crypto_core_hchacha20","crypto_core_hsalsa20","crypto_core_ristretto255_add","crypto_core_ristretto255_from_hash","crypto_core_ristretto255_is_valid_point","crypto_core_ristretto255_random","crypto_core_ristretto255_scalar_add","crypto_core_ristretto255_scalar_complement","crypto_core_ristretto255_scalar_invert","crypto_core_ristretto255_scalar_mul","crypto_core_ristretto255_scalar_negate","crypto_core_ristretto255_scalar_random","crypto_core_ristretto255_scalar_reduce","crypto_core_ristretto255_scalar_sub","crypto_core_ristretto255_sub","crypto_generichash","crypto_generichash_blake2b_salt_personal","crypto_generichash_final","crypto_generichash_init","crypto_generichash_keygen","crypto_generichash_update","crypto_hash","crypto_hash_sha256","crypto_hash_sha256_final","crypto_hash_sha256_init","crypto_hash_sha256_update","crypto_hash_sha512","crypto_hash_sha512_final","crypto_hash_sha512_init","crypto_hash_sha512_update","crypto_kdf_derive_from_key","crypto_kdf_keygen","crypto_kx_client_session_keys","crypto_kx_keypair","crypto_kx_seed_keypair","crypto_kx_server_session_keys","crypto_onetimeauth","crypto_onetimeauth_final","crypto_onetimeauth_init","crypto_onetimeauth_keygen","crypto_onetimeauth_update","crypto_onetimeauth_verify","crypto_pwhash","crypto_pwhash_scryptsalsa208sha256","crypto_pwhash_scryptsalsa208sha256_ll","crypto_pwhash_scryptsalsa208sha256_str","crypto_pwhash_scryptsalsa208sha256_str_verify","crypto_pwhash_str","crypto_pwhash_str_needs_rehash","crypto_pwhash_str_verify","crypto_scalarmult","crypto_scalarmult_base","crypto_scalarmult_ed25519","crypto_scalarmult_ed25519_base","crypto_scalarmult_ed25519_base_noclamp","crypto_scalarmult_ed25519_noclamp","crypto_scalarmult_ristretto255","crypto_scalarmult_ristretto255_base","crypto_secretbox_detached","crypto_secretbox_easy","crypto_secretbox_keygen","crypto_secretbox_open_detached","crypto_secretbox_open_easy","crypto_secretstream_xchacha20poly1305_init_pull","crypto_secretstream_xchacha20poly1305_init_push","crypto_secretstream_xchacha20poly1305_keygen","crypto_secretstream_xchacha20poly1305_pull","crypto_secretstream_xchacha20poly1305_push","crypto_secretstream_xchacha20poly1305_rekey","crypto_shorthash","crypto_shorthash_keygen","crypto_shorthash_siphashx24","crypto_sign","crypto_sign_detached","crypto_sign_ed25519_pk_to_curve25519","crypto_sign_ed25519_sk_to_curve25519","crypto_sign_ed25519_sk_to_pk","crypto_sign_ed25519_sk_to_seed","crypto_sign_final_create","crypto_sign_final_verify","crypto_sign_init","crypto_sign_keypair","crypto_sign_open","crypto_sign_seed_keypair","crypto_sign_update","crypto_sign_verify_detached","crypto_stream_chacha20","crypto_stream_chacha20_ietf_xor","crypto_stream_chacha20_ietf_xor_ic","crypto_stream_chacha20_keygen","crypto_stream_chacha20_xor","crypto_stream_chacha20_xor_ic","crypto_stream_keygen","crypto_stream_xchacha20_keygen","crypto_stream_xchacha20_xor","crypto_stream_xchacha20_xor_ic","randombytes_buf","randombytes_buf_deterministic","randombytes_close","randombytes_random","randombytes_set_implementation","randombytes_stir","randombytes_uniform","sodium_version_string"],a=[E,k,S,T,w,Y,B,A,K,M,I,N,L,U,O,C,R,P,G,X,D,F,V,H,q,j,z,W,J,Q,Z,$,ee,re,te,ae,_e,ne,se,ce,oe,he,pe,ye,ie,le,ue,de,ve,ge,be,fe,me,xe,Ee,ke,Se,Te,we,Ye,Be,Ae,Ke,Me,Ie,Ne,Le,Ue,Oe,Ce,Re,Pe,Ge,Xe,De,Fe,Ve,He,qe,je,ze,We,Je,Qe,Ze,$e,er,rr,tr,ar,_r,nr,sr,cr,or,hr,pr,yr,ir,lr,ur,dr,vr,gr,br,fr,mr,xr,Er,kr,Sr,Tr,wr,Yr,Br,Ar,Kr,Mr,Ir,Nr,Lr,Ur,Or,Cr,Rr,Pr,Gr,Xr,Dr,Fr,Vr,Hr,qr,jr,zr,Wr,Jr,Qr,Zr,$r,et,rt,tt,at,_t,nt,st,ct,ot,ht,pt,yt,it,lt,ut,dt,vt,gt,bt,ft,mt,xt,Et,kt,St,Tt,wt,Yt,Bt,At,Kt,Mt,It,Nt,Lt,Ut,Ot,Ct,Rt,Pt,Gt,Xt],_=0;_<a.length;_++)"function"==typeof t["_"+r[_]]&&(e[r[_]]=a[_]);var n=["SODIUM_LIBRARY_VERSION_MAJOR","SODIUM_LIBRARY_VERSION_MINOR","crypto_aead_chacha20poly1305_ABYTES","crypto_aead_chacha20poly1305_IETF_ABYTES","crypto_aead_chacha20poly1305_IETF_KEYBYTES","crypto_aead_chacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_IETF_NPUBBYTES","crypto_aead_chacha20poly1305_IETF_NSECBYTES","crypto_aead_chacha20poly1305_KEYBYTES","crypto_aead_chacha20poly1305_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_NPUBBYTES","crypto_aead_chacha20poly1305_NSECBYTES","crypto_aead_chacha20poly1305_ietf_ABYTES","crypto_aead_chacha20poly1305_ietf_KEYBYTES","crypto_aead_chacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_chacha20poly1305_ietf_NPUBBYTES","crypto_aead_chacha20poly1305_ietf_NSECBYTES","crypto_aead_xchacha20poly1305_IETF_ABYTES","crypto_aead_xchacha20poly1305_IETF_KEYBYTES","crypto_aead_xchacha20poly1305_IETF_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_IETF_NPUBBYTES","crypto_aead_xchacha20poly1305_IETF_NSECBYTES","crypto_aead_xchacha20poly1305_ietf_ABYTES","crypto_aead_xchacha20poly1305_ietf_KEYBYTES","crypto_aead_xchacha20poly1305_ietf_MESSAGEBYTES_MAX","crypto_aead_xchacha20poly1305_ietf_NPUBBYTES","crypto_aead_xchacha20poly1305_ietf_NSECBYTES","crypto_auth_BYTES","crypto_auth_KEYBYTES","crypto_auth_hmacsha256_BYTES","crypto_auth_hmacsha256_KEYBYTES","crypto_auth_hmacsha512256_BYTES","crypto_auth_hmacsha512256_KEYBYTES","crypto_auth_hmacsha512_BYTES","crypto_auth_hmacsha512_KEYBYTES","crypto_box_BEFORENMBYTES","crypto_box_MACBYTES","crypto_box_MESSAGEBYTES_MAX","crypto_box_NONCEBYTES","crypto_box_PUBLICKEYBYTES","crypto_box_SEALBYTES","crypto_box_SECRETKEYBYTES","crypto_box_SEEDBYTES","crypto_box_curve25519xchacha20poly1305_BEFORENMBYTES","crypto_box_curve25519xchacha20poly1305_MACBYTES","crypto_box_curve25519xchacha20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xchacha20poly1305_NONCEBYTES","crypto_box_curve25519xchacha20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEALBYTES","crypto_box_curve25519xchacha20poly1305_SECRETKEYBYTES","crypto_box_curve25519xchacha20poly1305_SEEDBYTES","crypto_box_curve25519xsalsa20poly1305_BEFORENMBYTES","crypto_box_curve25519xsalsa20poly1305_MACBYTES","crypto_box_curve25519xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_box_curve25519xsalsa20poly1305_NONCEBYTES","crypto_box_curve25519xsalsa20poly1305_PUBLICKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SECRETKEYBYTES","crypto_box_curve25519xsalsa20poly1305_SEEDBYTES","crypto_core_ed25519_BYTES","crypto_core_ed25519_HASHBYTES","crypto_core_ed25519_NONREDUCEDSCALARBYTES","crypto_core_ed25519_SCALARBYTES","crypto_core_ed25519_UNIFORMBYTES","crypto_core_hchacha20_CONSTBYTES","crypto_core_hchacha20_INPUTBYTES","crypto_core_hchacha20_KEYBYTES","crypto_core_hchacha20_OUTPUTBYTES","crypto_core_hsalsa20_CONSTBYTES","crypto_core_hsalsa20_INPUTBYTES","crypto_core_hsalsa20_KEYBYTES","crypto_core_hsalsa20_OUTPUTBYTES","crypto_core_ristretto255_BYTES","crypto_core_ristretto255_HASHBYTES","crypto_core_ristretto255_NONREDUCEDSCALARBYTES","crypto_core_ristretto255_SCALARBYTES","crypto_core_salsa2012_CONSTBYTES","crypto_core_salsa2012_INPUTBYTES","crypto_core_salsa2012_KEYBYTES","crypto_core_salsa2012_OUTPUTBYTES","crypto_core_salsa20_CONSTBYTES","crypto_core_salsa20_INPUTBYTES","crypto_core_salsa20_KEYBYTES","crypto_core_salsa20_OUTPUTBYTES","crypto_generichash_BYTES","crypto_generichash_BYTES_MAX","crypto_generichash_BYTES_MIN","crypto_generichash_KEYBYTES","crypto_generichash_KEYBYTES_MAX","crypto_generichash_KEYBYTES_MIN","crypto_generichash_blake2b_BYTES","crypto_generichash_blake2b_BYTES_MAX","crypto_generichash_blake2b_BYTES_MIN","crypto_generichash_blake2b_KEYBYTES","crypto_generichash_blake2b_KEYBYTES_MAX","crypto_generichash_blake2b_KEYBYTES_MIN","crypto_generichash_blake2b_PERSONALBYTES","crypto_generichash_blake2b_SALTBYTES","crypto_hash_BYTES","crypto_hash_sha256_BYTES","crypto_hash_sha512_BYTES","crypto_kdf_BYTES_MAX","crypto_kdf_BYTES_MIN","crypto_kdf_CONTEXTBYTES","crypto_kdf_KEYBYTES","crypto_kdf_blake2b_BYTES_MAX","crypto_kdf_blake2b_BYTES_MIN","crypto_kdf_blake2b_CONTEXTBYTES","crypto_kdf_blake2b_KEYBYTES","crypto_kx_PUBLICKEYBYTES","crypto_kx_SECRETKEYBYTES","crypto_kx_SEEDBYTES","crypto_kx_SESSIONKEYBYTES","crypto_onetimeauth_BYTES","crypto_onetimeauth_KEYBYTES","crypto_onetimeauth_poly1305_BYTES","crypto_onetimeauth_poly1305_KEYBYTES","crypto_pwhash_ALG_ARGON2I13","crypto_pwhash_ALG_ARGON2ID13","crypto_pwhash_ALG_DEFAULT","crypto_pwhash_BYTES_MAX","crypto_pwhash_BYTES_MIN","crypto_pwhash_MEMLIMIT_INTERACTIVE","crypto_pwhash_MEMLIMIT_MAX","crypto_pwhash_MEMLIMIT_MIN","crypto_pwhash_MEMLIMIT_MODERATE","crypto_pwhash_MEMLIMIT_SENSITIVE","crypto_pwhash_OPSLIMIT_INTERACTIVE","crypto_pwhash_OPSLIMIT_MAX","crypto_pwhash_OPSLIMIT_MIN","crypto_pwhash_OPSLIMIT_MODERATE","crypto_pwhash_OPSLIMIT_SENSITIVE","crypto_pwhash_PASSWD_MAX","crypto_pwhash_PASSWD_MIN","crypto_pwhash_SALTBYTES","crypto_pwhash_STRBYTES","crypto_pwhash_argon2i_BYTES_MAX","crypto_pwhash_argon2i_BYTES_MIN","crypto_pwhash_argon2i_SALTBYTES","crypto_pwhash_argon2i_STRBYTES","crypto_pwhash_argon2id_BYTES_MAX","crypto_pwhash_argon2id_BYTES_MIN","crypto_pwhash_argon2id_SALTBYTES","crypto_pwhash_argon2id_STRBYTES","crypto_pwhash_scryptsalsa208sha256_BYTES_MAX","crypto_pwhash_scryptsalsa208sha256_BYTES_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_MEMLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_INTERACTIVE","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MAX","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_MIN","crypto_pwhash_scryptsalsa208sha256_OPSLIMIT_SENSITIVE","crypto_pwhash_scryptsalsa208sha256_SALTBYTES","crypto_pwhash_scryptsalsa208sha256_STRBYTES","crypto_scalarmult_BYTES","crypto_scalarmult_SCALARBYTES","crypto_scalarmult_curve25519_BYTES","crypto_scalarmult_curve25519_SCALARBYTES","crypto_scalarmult_ed25519_BYTES","crypto_scalarmult_ed25519_SCALARBYTES","crypto_scalarmult_ristretto255_BYTES","crypto_scalarmult_ristretto255_SCALARBYTES","crypto_secretbox_KEYBYTES","crypto_secretbox_MACBYTES","crypto_secretbox_MESSAGEBYTES_MAX","crypto_secretbox_NONCEBYTES","crypto_secretbox_xchacha20poly1305_KEYBYTES","crypto_secretbox_xchacha20poly1305_MACBYTES","crypto_secretbox_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xchacha20poly1305_NONCEBYTES","crypto_secretbox_xsalsa20poly1305_KEYBYTES","crypto_secretbox_xsalsa20poly1305_MACBYTES","crypto_secretbox_xsalsa20poly1305_MESSAGEBYTES_MAX","crypto_secretbox_xsalsa20poly1305_NONCEBYTES","crypto_secretstream_xchacha20poly1305_ABYTES","crypto_secretstream_xchacha20poly1305_HEADERBYTES","crypto_secretstream_xchacha20poly1305_KEYBYTES","crypto_secretstream_xchacha20poly1305_MESSAGEBYTES_MAX","crypto_secretstream_xchacha20poly1305_TAG_FINAL","crypto_secretstream_xchacha20poly1305_TAG_MESSAGE","crypto_secretstream_xchacha20poly1305_TAG_PUSH","crypto_secretstream_xchacha20poly1305_TAG_REKEY","crypto_shorthash_BYTES","crypto_shorthash_KEYBYTES","crypto_shorthash_siphash24_BYTES","crypto_shorthash_siphash24_KEYBYTES","crypto_shorthash_siphashx24_BYTES","crypto_shorthash_siphashx24_KEYBYTES","crypto_sign_BYTES","crypto_sign_MESSAGEBYTES_MAX","crypto_sign_PUBLICKEYBYTES","crypto_sign_SECRETKEYBYTES","crypto_sign_SEEDBYTES","crypto_sign_ed25519_BYTES","crypto_sign_ed25519_MESSAGEBYTES_MAX","crypto_sign_ed25519_PUBLICKEYBYTES","crypto_sign_ed25519_SECRETKEYBYTES","crypto_sign_ed25519_SEEDBYTES","crypto_stream_KEYBYTES","crypto_stream_MESSAGEBYTES_MAX","crypto_stream_NONCEBYTES","crypto_stream_chacha20_IETF_KEYBYTES","crypto_stream_chacha20_IETF_MESSAGEBYTES_MAX","crypto_stream_chacha20_IETF_NONCEBYTES","crypto_stream_chacha20_KEYBYTES","crypto_stream_chacha20_MESSAGEBYTES_MAX","crypto_stream_chacha20_NONCEBYTES","crypto_stream_chacha20_ietf_KEYBYTES","crypto_stream_chacha20_ietf_MESSAGEBYTES_MAX","crypto_stream_chacha20_ietf_NONCEBYTES","crypto_stream_salsa2012_KEYBYTES","crypto_stream_salsa2012_MESSAGEBYTES_MAX","crypto_stream_salsa2012_NONCEBYTES","crypto_stream_salsa208_KEYBYTES","crypto_stream_salsa208_MESSAGEBYTES_MAX","crypto_stream_salsa208_NONCEBYTES","crypto_stream_salsa20_KEYBYTES","crypto_stream_salsa20_MESSAGEBYTES_MAX","crypto_stream_salsa20_NONCEBYTES","crypto_stream_xchacha20_KEYBYTES","crypto_stream_xchacha20_MESSAGEBYTES_MAX","crypto_stream_xchacha20_NONCEBYTES","crypto_stream_xsalsa20_KEYBYTES","crypto_stream_xsalsa20_MESSAGEBYTES_MAX","crypto_stream_xsalsa20_NONCEBYTES","crypto_verify_16_BYTES","crypto_verify_32_BYTES","crypto_verify_64_BYTES"];for(_=0;_<n.length;_++)"function"==typeof(c=t["_"+n[_].toLowerCase()])&&(e[n[_]]=c());var s=["SODIUM_VERSION_STRING","crypto_pwhash_STRPREFIX","crypto_pwhash_scryptsalsa208sha256_STRPREFIX"];for(_=0;_<s.length;_++){var c;"function"==typeof(c=t["_"+s[_].toLowerCase()])&&(e[s[_]]=t.UTF8ToString(c()))}}t=r;try{a();var _=new Uint8Array([98,97,108,108,115]),n=e.randombytes_buf(e.crypto_secretbox_NONCEBYTES),s=e.randombytes_buf(e.crypto_secretbox_KEYBYTES),c=e.crypto_secretbox_easy(_,n,s),o=e.crypto_secretbox_open_easy(c,n,s);if(e.memcmp(_,o))return}catch(e){if(null==t.useBackupModule)throw new Error("Both wasm and asm failed to load"+e)}t.useBackupModule(),a()}));function n(e){if("function"==typeof TextEncoder)return(new TextEncoder).encode(e);e=unescape(encodeURIComponent(e));for(var r=new Uint8Array(e.length),t=0,a=e.length;t<a;t++)r[t]=e.charCodeAt(t);return r}function s(e){if("function"==typeof TextDecoder)return new TextDecoder("utf-8",{fatal:!0}).decode(e);var r=8192,t=Math.ceil(e.length/r);if(t<=1)try{return decodeURIComponent(escape(String.fromCharCode.apply(null,e)))}catch(e){throw new TypeError("The encoded data was not valid.")}for(var a="",_=0,n=0;n<t;n++){var c=Array.prototype.slice.call(e,n*r+_,(n+1)*r+_);if(0!=c.length){var o,h=c.length,p=0;do{var y=c[--h];y>=240?(p=4,o=!0):y>=224?(p=3,o=!0):y>=192?(p=2,o=!0):y<128&&(p=1,o=!0)}while(!o);for(var i=p-(c.length-h),l=0;l<i;l++)_--,c.pop();a+=s(c)}}return a}function c(e){e=x(null,e,"input");for(var r,t,a,_="",n=0;n<e.length;n++)a=87+(t=15&e[n])+(t-10>>8&-39)<<8|87+(r=e[n]>>>4)+(r-10>>8&-39),_+=String.fromCharCode(255&a)+String.fromCharCode(a>>>8);return _}var o={ORIGINAL:1,ORIGINAL_NO_PADDING:3,URLSAFE:5,URLSAFE_NO_PADDING:7};function h(e){if(null==e)return o.URLSAFE_NO_PADDING;if(e!==o.ORIGINAL&&e!==o.ORIGINAL_NO_PADDING&&e!==o.URLSAFE&&e!=o.URLSAFE_NO_PADDING)throw new Error("unsupported base64 variant");return e}function p(e,r){r=h(r),e=x(_,e,"input");var a,_=[],n=0|Math.floor(e.length/3),c=e.length-3*n,o=4*n+(0!==c?0==(2&r)?4:2+(c>>>1):0),p=new u(o+1),y=d(e);return _.push(y),_.push(p.address),0===t._sodium_bin2base64(p.address,p.length,y,e.length,r)&&b(_,"conversion failed"),p.length=o,a=s(p.to_Uint8Array()),g(_),a}function y(e,r){var t=r||a;if(!i(t))throw new Error(t+" output format is not available");if(e instanceof u){if("uint8array"===t)return e.to_Uint8Array();if("text"===t)return s(e.to_Uint8Array());if("hex"===t)return c(e.to_Uint8Array());if("base64"===t)return p(e.to_Uint8Array(),o.URLSAFE_NO_PADDING);throw new Error('What is output format "'+t+'"?')}if("object"==typeof e){for(var _=Object.keys(e),n={},h=0;h<_.length;h++)n[_[h]]=y(e[_[h]],t);return n}if("string"==typeof e)return e;throw new TypeError("Cannot format output")}function i(e){for(var r=["uint8array","text","hex","base64"],t=0;t<r.length;t++)if(r[t]===e)return!0;return!1}function l(e){if(e){if("string"!=typeof e)throw new TypeError("When defined, the output format must be a string");if(!i(e))throw new Error(e+" is not a supported output format")}}function u(e){this.length=e,this.address=v(e)}function d(e){var r=v(e.length);return t.HEAPU8.set(e,r),r}function v(e){var r=t._malloc(e);if(0===r)throw{message:"_malloc() failed",length:e};return r}function g(e){if(e)for(var r=0;r<e.length;r++)a=e[r],t._free(a);var a}function b(e,r){throw g(e),new Error(r)}function f(e,r){throw g(e),new TypeError(r)}function m(e,r,t){null==r&&f(e,t+" cannot be null or undefined")}function x(e,r,t){return m(e,r,t),r instanceof Uint8Array?r:"string"==typeof r?n(r):void f(e,"unsupported input type for "+t)}function E(e,r,a,_,n,s){var c=[];l(s);var o=null;null!=e&&(o=d(e=x(c,e,"secret_nonce")),e.length,c.push(o)),r=x(c,r,"ciphertext");var h,p=t._crypto_aead_aegis128l_abytes(),i=r.length;i<p&&f(c,"ciphertext is too short"),h=d(r),c.push(h);var v=null,m=0;null!=a&&(v=d(a=x(c,a,"additional_data")),m=a.length,c.push(v)),_=x(c,_,"public_nonce");var E,k=0|t._crypto_aead_aegis128l_npubbytes();_.length!==k&&f(c,"invalid public_nonce length"),E=d(_),c.push(E),n=x(c,n,"key");var S,T=0|t._crypto_aead_aegis128l_keybytes();n.length!==T&&f(c,"invalid key length"),S=d(n),c.push(S);var w=new u(i-t._crypto_aead_aegis128l_abytes()|0),Y=w.address;if(c.push(Y),0===t._crypto_aead_aegis128l_decrypt(Y,null,o,h,i,0,v,m,0,E,S)){var B=y(w,s);return g(c),B}b(c,"ciphertext cannot be decrypted using that key")}function k(e,r,a,_,n,s,c){var o=[];l(c);var h=null;null!=e&&(h=d(e=x(o,e,"secret_nonce")),e.length,o.push(h));var p=d(r=x(o,r,"ciphertext")),i=r.length;o.push(p),a=x(o,a,"mac");var v,m=0|t._crypto_box_macbytes();a.length!==m&&f(o,"invalid mac length"),v=d(a),o.push(v);var E=null,k=0;null!=_&&(E=d(_=x(o,_,"additional_data")),k=_.length,o.push(E)),n=x(o,n,"public_nonce");var S,T=0|t._crypto_aead_aegis128l_npubbytes();n.length!==T&&f(o,"invalid public_nonce length"),S=d(n),o.push(S),s=x(o,s,"key");var w,Y=0|t._crypto_aead_aegis128l_keybytes();s.length!==Y&&f(o,"invalid key length"),w=d(s),o.push(w);var B=new u(0|i),A=B.address;if(o.push(A),0===t._crypto_aead_aegis128l_decrypt_detached(A,h,p,i,0,v,E,k,0,S,w)){var K=y(B,c);return g(o),K}b(o,"ciphertext cannot be decrypted using that key")}function S(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_aegis128l_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_aegis128l_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(h+t._crypto_aead_aegis128l_abytes()|0),w=T.address;if(c.push(w),0===t._crypto_aead_aegis128l_encrypt(w,null,o,h,0,p,i,0,v,m,k)){var Y=y(T,s);return g(c),Y}b(c,"invalid usage")}function T(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_aegis128l_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_aegis128l_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(0|h),w=T.address;c.push(w);var Y=new u(0|t._crypto_aead_aegis128l_abytes()),B=Y.address;if(c.push(B),0===t._crypto_aead_aegis128l_encrypt_detached(w,B,null,o,h,0,p,i,0,v,m,k)){var A=y({ciphertext:T,mac:Y},s);return g(c),A}b(c,"invalid usage")}function w(e){var r=[];l(e);var a=new u(0|t._crypto_aead_aegis128l_keybytes()),_=a.address;r.push(_),t._crypto_aead_aegis128l_keygen(_);var n=y(a,e);return g(r),n}function Y(e,r,a,_,n,s){var c=[];l(s);var o=null;null!=e&&(o=d(e=x(c,e,"secret_nonce")),e.length,c.push(o)),r=x(c,r,"ciphertext");var h,p=t._crypto_aead_aegis256_abytes(),i=r.length;i<p&&f(c,"ciphertext is too short"),h=d(r),c.push(h);var v=null,m=0;null!=a&&(v=d(a=x(c,a,"additional_data")),m=a.length,c.push(v)),_=x(c,_,"public_nonce");var E,k=0|t._crypto_aead_aegis256_npubbytes();_.length!==k&&f(c,"invalid public_nonce length"),E=d(_),c.push(E),n=x(c,n,"key");var S,T=0|t._crypto_aead_aegis256_keybytes();n.length!==T&&f(c,"invalid key length"),S=d(n),c.push(S);var w=new u(i-t._crypto_aead_aegis256_abytes()|0),Y=w.address;if(c.push(Y),0===t._crypto_aead_aegis256_decrypt(Y,null,o,h,i,0,v,m,0,E,S)){var B=y(w,s);return g(c),B}b(c,"ciphertext cannot be decrypted using that key")}function B(e,r,a,_,n,s,c){var o=[];l(c);var h=null;null!=e&&(h=d(e=x(o,e,"secret_nonce")),e.length,o.push(h));var p=d(r=x(o,r,"ciphertext")),i=r.length;o.push(p),a=x(o,a,"mac");var v,m=0|t._crypto_box_macbytes();a.length!==m&&f(o,"invalid mac length"),v=d(a),o.push(v);var E=null,k=0;null!=_&&(E=d(_=x(o,_,"additional_data")),k=_.length,o.push(E)),n=x(o,n,"public_nonce");var S,T=0|t._crypto_aead_aegis256_npubbytes();n.length!==T&&f(o,"invalid public_nonce length"),S=d(n),o.push(S),s=x(o,s,"key");var w,Y=0|t._crypto_aead_aegis256_keybytes();s.length!==Y&&f(o,"invalid key length"),w=d(s),o.push(w);var B=new u(0|i),A=B.address;if(o.push(A),0===t._crypto_aead_aegis256_decrypt_detached(A,h,p,i,0,v,E,k,0,S,w)){var K=y(B,c);return g(o),K}b(o,"ciphertext cannot be decrypted using that key")}function A(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_aegis256_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_aegis256_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(h+t._crypto_aead_aegis256_abytes()|0),w=T.address;if(c.push(w),0===t._crypto_aead_aegis256_encrypt(w,null,o,h,0,p,i,0,v,m,k)){var Y=y(T,s);return g(c),Y}b(c,"invalid usage")}function K(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_aegis256_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_aegis256_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(0|h),w=T.address;c.push(w);var Y=new u(0|t._crypto_aead_aegis256_abytes()),B=Y.address;if(c.push(B),0===t._crypto_aead_aegis256_encrypt_detached(w,B,null,o,h,0,p,i,0,v,m,k)){var A=y({ciphertext:T,mac:Y},s);return g(c),A}b(c,"invalid usage")}function M(e){var r=[];l(e);var a=new u(0|t._crypto_aead_aegis256_keybytes()),_=a.address;r.push(_),t._crypto_aead_aegis256_keygen(_);var n=y(a,e);return g(r),n}function I(e,r,a,_,n,s){var c=[];l(s);var o=null;null!=e&&(o=d(e=x(c,e,"secret_nonce")),e.length,c.push(o)),r=x(c,r,"ciphertext");var h,p=t._crypto_aead_chacha20poly1305_abytes(),i=r.length;i<p&&f(c,"ciphertext is too short"),h=d(r),c.push(h);var v=null,m=0;null!=a&&(v=d(a=x(c,a,"additional_data")),m=a.length,c.push(v)),_=x(c,_,"public_nonce");var E,k=0|t._crypto_aead_chacha20poly1305_npubbytes();_.length!==k&&f(c,"invalid public_nonce length"),E=d(_),c.push(E),n=x(c,n,"key");var S,T=0|t._crypto_aead_chacha20poly1305_keybytes();n.length!==T&&f(c,"invalid key length"),S=d(n),c.push(S);var w=new u(i-t._crypto_aead_chacha20poly1305_abytes()|0),Y=w.address;if(c.push(Y),0===t._crypto_aead_chacha20poly1305_decrypt(Y,null,o,h,i,0,v,m,0,E,S)){var B=y(w,s);return g(c),B}b(c,"ciphertext cannot be decrypted using that key")}function N(e,r,a,_,n,s,c){var o=[];l(c);var h=null;null!=e&&(h=d(e=x(o,e,"secret_nonce")),e.length,o.push(h));var p=d(r=x(o,r,"ciphertext")),i=r.length;o.push(p),a=x(o,a,"mac");var v,m=0|t._crypto_box_macbytes();a.length!==m&&f(o,"invalid mac length"),v=d(a),o.push(v);var E=null,k=0;null!=_&&(E=d(_=x(o,_,"additional_data")),k=_.length,o.push(E)),n=x(o,n,"public_nonce");var S,T=0|t._crypto_aead_chacha20poly1305_npubbytes();n.length!==T&&f(o,"invalid public_nonce length"),S=d(n),o.push(S),s=x(o,s,"key");var w,Y=0|t._crypto_aead_chacha20poly1305_keybytes();s.length!==Y&&f(o,"invalid key length"),w=d(s),o.push(w);var B=new u(0|i),A=B.address;if(o.push(A),0===t._crypto_aead_chacha20poly1305_decrypt_detached(A,h,p,i,0,v,E,k,0,S,w)){var K=y(B,c);return g(o),K}b(o,"ciphertext cannot be decrypted using that key")}function L(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_chacha20poly1305_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_chacha20poly1305_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(h+t._crypto_aead_chacha20poly1305_abytes()|0),w=T.address;if(c.push(w),0===t._crypto_aead_chacha20poly1305_encrypt(w,null,o,h,0,p,i,0,v,m,k)){var Y=y(T,s);return g(c),Y}b(c,"invalid usage")}function U(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_chacha20poly1305_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_chacha20poly1305_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(0|h),w=T.address;c.push(w);var Y=new u(0|t._crypto_aead_chacha20poly1305_abytes()),B=Y.address;if(c.push(B),0===t._crypto_aead_chacha20poly1305_encrypt_detached(w,B,null,o,h,0,p,i,0,v,m,k)){var A=y({ciphertext:T,mac:Y},s);return g(c),A}b(c,"invalid usage")}function O(e,r,a,_,n,s){var c=[];l(s);var o=null;null!=e&&(o=d(e=x(c,e,"secret_nonce")),e.length,c.push(o)),r=x(c,r,"ciphertext");var h,p=t._crypto_aead_chacha20poly1305_ietf_abytes(),i=r.length;i<p&&f(c,"ciphertext is too short"),h=d(r),c.push(h);var v=null,m=0;null!=a&&(v=d(a=x(c,a,"additional_data")),m=a.length,c.push(v)),_=x(c,_,"public_nonce");var E,k=0|t._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==k&&f(c,"invalid public_nonce length"),E=d(_),c.push(E),n=x(c,n,"key");var S,T=0|t._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==T&&f(c,"invalid key length"),S=d(n),c.push(S);var w=new u(i-t._crypto_aead_chacha20poly1305_ietf_abytes()|0),Y=w.address;if(c.push(Y),0===t._crypto_aead_chacha20poly1305_ietf_decrypt(Y,null,o,h,i,0,v,m,0,E,S)){var B=y(w,s);return g(c),B}b(c,"ciphertext cannot be decrypted using that key")}function C(e,r,a,_,n,s,c){var o=[];l(c);var h=null;null!=e&&(h=d(e=x(o,e,"secret_nonce")),e.length,o.push(h));var p=d(r=x(o,r,"ciphertext")),i=r.length;o.push(p),a=x(o,a,"mac");var v,m=0|t._crypto_box_macbytes();a.length!==m&&f(o,"invalid mac length"),v=d(a),o.push(v);var E=null,k=0;null!=_&&(E=d(_=x(o,_,"additional_data")),k=_.length,o.push(E)),n=x(o,n,"public_nonce");var S,T=0|t._crypto_aead_chacha20poly1305_ietf_npubbytes();n.length!==T&&f(o,"invalid public_nonce length"),S=d(n),o.push(S),s=x(o,s,"key");var w,Y=0|t._crypto_aead_chacha20poly1305_ietf_keybytes();s.length!==Y&&f(o,"invalid key length"),w=d(s),o.push(w);var B=new u(0|i),A=B.address;if(o.push(A),0===t._crypto_aead_chacha20poly1305_ietf_decrypt_detached(A,h,p,i,0,v,E,k,0,S,w)){var K=y(B,c);return g(o),K}b(o,"ciphertext cannot be decrypted using that key")}function R(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(h+t._crypto_aead_chacha20poly1305_ietf_abytes()|0),w=T.address;if(c.push(w),0===t._crypto_aead_chacha20poly1305_ietf_encrypt(w,null,o,h,0,p,i,0,v,m,k)){var Y=y(T,s);return g(c),Y}b(c,"invalid usage")}function P(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_chacha20poly1305_ietf_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_chacha20poly1305_ietf_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(0|h),w=T.address;c.push(w);var Y=new u(0|t._crypto_aead_chacha20poly1305_ietf_abytes()),B=Y.address;if(c.push(B),0===t._crypto_aead_chacha20poly1305_ietf_encrypt_detached(w,B,null,o,h,0,p,i,0,v,m,k)){var A=y({ciphertext:T,mac:Y},s);return g(c),A}b(c,"invalid usage")}function G(e){var r=[];l(e);var a=new u(0|t._crypto_aead_chacha20poly1305_ietf_keybytes()),_=a.address;r.push(_),t._crypto_aead_chacha20poly1305_ietf_keygen(_);var n=y(a,e);return g(r),n}function X(e){var r=[];l(e);var a=new u(0|t._crypto_aead_chacha20poly1305_keybytes()),_=a.address;r.push(_),t._crypto_aead_chacha20poly1305_keygen(_);var n=y(a,e);return g(r),n}function D(e,r,a,_,n,s){var c=[];l(s);var o=null;null!=e&&(o=d(e=x(c,e,"secret_nonce")),e.length,c.push(o)),r=x(c,r,"ciphertext");var h,p=t._crypto_aead_xchacha20poly1305_ietf_abytes(),i=r.length;i<p&&f(c,"ciphertext is too short"),h=d(r),c.push(h);var v=null,m=0;null!=a&&(v=d(a=x(c,a,"additional_data")),m=a.length,c.push(v)),_=x(c,_,"public_nonce");var E,k=0|t._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==k&&f(c,"invalid public_nonce length"),E=d(_),c.push(E),n=x(c,n,"key");var S,T=0|t._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==T&&f(c,"invalid key length"),S=d(n),c.push(S);var w=new u(i-t._crypto_aead_xchacha20poly1305_ietf_abytes()|0),Y=w.address;if(c.push(Y),0===t._crypto_aead_xchacha20poly1305_ietf_decrypt(Y,null,o,h,i,0,v,m,0,E,S)){var B=y(w,s);return g(c),B}b(c,"ciphertext cannot be decrypted using that key")}function F(e,r,a,_,n,s,c){var o=[];l(c);var h=null;null!=e&&(h=d(e=x(o,e,"secret_nonce")),e.length,o.push(h));var p=d(r=x(o,r,"ciphertext")),i=r.length;o.push(p),a=x(o,a,"mac");var v,m=0|t._crypto_box_macbytes();a.length!==m&&f(o,"invalid mac length"),v=d(a),o.push(v);var E=null,k=0;null!=_&&(E=d(_=x(o,_,"additional_data")),k=_.length,o.push(E)),n=x(o,n,"public_nonce");var S,T=0|t._crypto_aead_xchacha20poly1305_ietf_npubbytes();n.length!==T&&f(o,"invalid public_nonce length"),S=d(n),o.push(S),s=x(o,s,"key");var w,Y=0|t._crypto_aead_xchacha20poly1305_ietf_keybytes();s.length!==Y&&f(o,"invalid key length"),w=d(s),o.push(w);var B=new u(0|i),A=B.address;if(o.push(A),0===t._crypto_aead_xchacha20poly1305_ietf_decrypt_detached(A,h,p,i,0,v,E,k,0,S,w)){var K=y(B,c);return g(o),K}b(o,"ciphertext cannot be decrypted using that key")}function V(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(h+t._crypto_aead_xchacha20poly1305_ietf_abytes()|0),w=T.address;if(c.push(w),0===t._crypto_aead_xchacha20poly1305_ietf_encrypt(w,null,o,h,0,p,i,0,v,m,k)){var Y=y(T,s);return g(c),Y}b(c,"invalid usage")}function H(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"message")),h=e.length;c.push(o);var p=null,i=0;null!=r&&(p=d(r=x(c,r,"additional_data")),i=r.length,c.push(p));var v=null;null!=a&&(v=d(a=x(c,a,"secret_nonce")),a.length,c.push(v)),_=x(c,_,"public_nonce");var m,E=0|t._crypto_aead_xchacha20poly1305_ietf_npubbytes();_.length!==E&&f(c,"invalid public_nonce length"),m=d(_),c.push(m),n=x(c,n,"key");var k,S=0|t._crypto_aead_xchacha20poly1305_ietf_keybytes();n.length!==S&&f(c,"invalid key length"),k=d(n),c.push(k);var T=new u(0|h),w=T.address;c.push(w);var Y=new u(0|t._crypto_aead_xchacha20poly1305_ietf_abytes()),B=Y.address;if(c.push(B),0===t._crypto_aead_xchacha20poly1305_ietf_encrypt_detached(w,B,null,o,h,0,p,i,0,v,m,k)){var A=y({ciphertext:T,mac:Y},s);return g(c),A}b(c,"invalid usage")}function q(e){var r=[];l(e);var a=new u(0|t._crypto_aead_xchacha20poly1305_ietf_keybytes()),_=a.address;r.push(_),t._crypto_aead_xchacha20poly1305_ietf_keygen(_);var n=y(a,e);return g(r),n}function j(e,r,a){var _=[];l(a);var n=d(e=x(_,e,"message")),s=e.length;_.push(n),r=x(_,r,"key");var c,o=0|t._crypto_auth_keybytes();r.length!==o&&f(_,"invalid key length"),c=d(r),_.push(c);var h=new u(0|t._crypto_auth_bytes()),p=h.address;if(_.push(p),0==(0|t._crypto_auth(p,n,s,0,c))){var i=y(h,a);return g(_),i}b(_,"invalid usage")}function z(e,r,a){var _=[];l(a);var n=d(e=x(_,e,"message")),s=e.length;_.push(n),r=x(_,r,"key");var c,o=0|t._crypto_auth_hmacsha256_keybytes();r.length!==o&&f(_,"invalid key length"),c=d(r),_.push(c);var h=new u(0|t._crypto_auth_hmacsha256_bytes()),p=h.address;if(_.push(p),0==(0|t._crypto_auth_hmacsha256(p,n,s,0,c))){var i=y(h,a);return g(_),i}b(_,"invalid usage")}function W(e,r){var a=[];l(r),m(a,e,"state_address");var _=new u(0|t._crypto_auth_hmacsha256_bytes()),n=_.address;if(a.push(n),0==(0|t._crypto_auth_hmacsha256_final(e,n))){var s=(t._free(e),y(_,r));return g(a),s}b(a,"invalid usage")}function J(e,r){var a=[];l(r);var _=null,n=0;null!=e&&(_=d(e=x(a,e,"key")),n=e.length,a.push(_));var s=new u(208).address;if(0==(0|t._crypto_auth_hmacsha256_init(s,_,n))){var c=s;return g(a),c}b(a,"invalid usage")}function Q(e){var r=[];l(e);var a=new u(0|t._crypto_auth_hmacsha256_keybytes()),_=a.address;r.push(_),t._crypto_auth_hmacsha256_keygen(_);var n=y(a,e);return g(r),n}function Z(e,r,a){var _=[];l(a),m(_,e,"state_address");var n=d(r=x(_,r,"message_chunk")),s=r.length;_.push(n),0!=(0|t._crypto_auth_hmacsha256_update(e,n,s))&&b(_,"invalid usage"),g(_)}function $(e,r,a){var _=[];e=x(_,e,"tag");var n,s=0|t._crypto_auth_hmacsha256_bytes();e.length!==s&&f(_,"invalid tag length"),n=d(e),_.push(n);var c=d(r=x(_,r,"message")),o=r.length;_.push(c),a=x(_,a,"key");var h,p=0|t._crypto_auth_hmacsha256_keybytes();a.length!==p&&f(_,"invalid key length"),h=d(a),_.push(h);var y=0==(0|t._crypto_auth_hmacsha256_verify(n,c,o,0,h));return g(_),y}function ee(e,r,a){var _=[];l(a);var n=d(e=x(_,e,"message")),s=e.length;_.push(n),r=x(_,r,"key");var c,o=0|t._crypto_auth_hmacsha512_keybytes();r.length!==o&&f(_,"invalid key length"),c=d(r),_.push(c);var h=new u(0|t._crypto_auth_hmacsha512_bytes()),p=h.address;if(_.push(p),0==(0|t._crypto_auth_hmacsha512(p,n,s,0,c))){var i=y(h,a);return g(_),i}b(_,"invalid usage")}function re(e,r){var a=[];l(r),m(a,e,"state_address");var _=new u(0|t._crypto_auth_hmacsha512_bytes()),n=_.address;if(a.push(n),0==(0|t._crypto_auth_hmacsha512_final(e,n))){var s=(t._free(e),y(_,r));return g(a),s}b(a,"invalid usage")}function te(e,r){var a=[];l(r);var _=null,n=0;null!=e&&(_=d(e=x(a,e,"key")),n=e.length,a.push(_));var s=new u(416).address;if(0==(0|t._crypto_auth_hmacsha512_init(s,_,n))){var c=s;return g(a),c}b(a,"invalid usage")}function ae(e){var r=[];l(e);var a=new u(0|t._crypto_auth_hmacsha512_keybytes()),_=a.address;r.push(_),t._crypto_auth_hmacsha512_keygen(_);var n=y(a,e);return g(r),n}function _e(e,r,a){var _=[];l(a),m(_,e,"state_address");var n=d(r=x(_,r,"message_chunk")),s=r.length;_.push(n),0!=(0|t._crypto_auth_hmacsha512_update(e,n,s))&&b(_,"invalid usage"),g(_)}function ne(e,r,a){var _=[];e=x(_,e,"tag");var n,s=0|t._crypto_auth_hmacsha512_bytes();e.length!==s&&f(_,"invalid tag length"),n=d(e),_.push(n);var c=d(r=x(_,r,"message")),o=r.length;_.push(c),a=x(_,a,"key");var h,p=0|t._crypto_auth_hmacsha512_keybytes();a.length!==p&&f(_,"invalid key length"),h=d(a),_.push(h);var y=0==(0|t._crypto_auth_hmacsha512_verify(n,c,o,0,h));return g(_),y}function se(e){var r=[];l(e);var a=new u(0|t._crypto_auth_keybytes()),_=a.address;r.push(_),t._crypto_auth_keygen(_);var n=y(a,e);return g(r),n}function ce(e,r,a){var _=[];e=x(_,e,"tag");var n,s=0|t._crypto_auth_bytes();e.length!==s&&f(_,"invalid tag length"),n=d(e),_.push(n);var c=d(r=x(_,r,"message")),o=r.length;_.push(c),a=x(_,a,"key");var h,p=0|t._crypto_auth_keybytes();a.length!==p&&f(_,"invalid key length"),h=d(a),_.push(h);var y=0==(0|t._crypto_auth_verify(n,c,o,0,h));return g(_),y}function oe(e,r,a){var _=[];l(a),e=x(_,e,"publicKey");var n,s=0|t._crypto_box_publickeybytes();e.length!==s&&f(_,"invalid publicKey length"),n=d(e),_.push(n),r=x(_,r,"privateKey");var c,o=0|t._crypto_box_secretkeybytes();r.length!==o&&f(_,"invalid privateKey length"),c=d(r),_.push(c);var h=new u(0|t._crypto_box_beforenmbytes()),p=h.address;if(_.push(p),0==(0|t._crypto_box_beforenm(p,n,c))){var i=y(h,a);return g(_),i}b(_,"invalid usage")}function he(e,r,a){var _=[];l(a),e=x(_,e,"publicKey");var n,s=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();e.length!==s&&f(_,"invalid publicKey length"),n=d(e),_.push(n),r=x(_,r,"privateKey");var c,o=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();r.length!==o&&f(_,"invalid privateKey length"),c=d(r),_.push(c);var h=new u(0|t._crypto_box_curve25519xchacha20poly1305_beforenmbytes()),p=h.address;if(_.push(p),0==(0|t._crypto_box_curve25519xchacha20poly1305_beforenm(p,n,c))){var i=y(h,a);return g(_),i}b(_,"invalid usage")}function pe(e,r,a,_,n){var s=[];l(n);var c=d(e=x(s,e,"message")),o=e.length;s.push(c),r=x(s,r,"nonce");var h,p=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==p&&f(s,"invalid nonce length"),h=d(r),s.push(h),a=x(s,a,"publicKey");var i,v=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==v&&f(s,"invalid publicKey length"),i=d(a),s.push(i),_=x(s,_,"privateKey");var m,E=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==E&&f(s,"invalid privateKey length"),m=d(_),s.push(m);var k=new u(0|o),S=k.address;s.push(S);var T=new u(0|t._crypto_box_curve25519xchacha20poly1305_macbytes()),w=T.address;if(s.push(w),0==(0|t._crypto_box_curve25519xchacha20poly1305_detached(S,w,c,o,0,h,i,m))){var Y=y({ciphertext:k,mac:T},n);return g(s),Y}b(s,"invalid usage")}function ye(e,r,a,_){var n=[];l(_);var s=d(e=x(n,e,"message")),c=e.length;n.push(s),r=x(n,r,"nonce");var o,h=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==h&&f(n,"invalid nonce length"),o=d(r),n.push(o),a=x(n,a,"sharedKey");var p,i=0|t._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==i&&f(n,"invalid sharedKey length"),p=d(a),n.push(p);var v=new u(0|c),m=v.address;n.push(m);var E=new u(0|t._crypto_box_curve25519xchacha20poly1305_macbytes()),k=E.address;if(n.push(k),0==(0|t._crypto_box_curve25519xchacha20poly1305_detached_afternm(m,k,s,c,0,o,p))){var S=y({ciphertext:v,mac:E},_);return g(n),S}b(n,"invalid usage")}function ie(e,r,a,_,n){var s=[];l(n);var c=d(e=x(s,e,"message")),o=e.length;s.push(c),r=x(s,r,"nonce");var h,p=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==p&&f(s,"invalid nonce length"),h=d(r),s.push(h),a=x(s,a,"publicKey");var i,v=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==v&&f(s,"invalid publicKey length"),i=d(a),s.push(i),_=x(s,_,"privateKey");var m,E=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==E&&f(s,"invalid privateKey length"),m=d(_),s.push(m);var k=new u(o+t._crypto_box_curve25519xchacha20poly1305_macbytes()|0),S=k.address;if(s.push(S),0==(0|t._crypto_box_curve25519xchacha20poly1305_easy(S,c,o,0,h,i,m))){var T=y(k,n);return g(s),T}b(s,"invalid usage")}function le(e,r,a,_){var n=[];l(_);var s=d(e=x(n,e,"message")),c=e.length;n.push(s),r=x(n,r,"nonce");var o,h=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==h&&f(n,"invalid nonce length"),o=d(r),n.push(o),a=x(n,a,"sharedKey");var p,i=0|t._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==i&&f(n,"invalid sharedKey length"),p=d(a),n.push(p);var v=new u(c+t._crypto_box_curve25519xchacha20poly1305_macbytes()|0),m=v.address;if(n.push(m),0==(0|t._crypto_box_curve25519xchacha20poly1305_easy_afternm(m,s,c,0,o,p))){var E=y(v,_);return g(n),E}b(n,"invalid usage")}function ue(e){var r=[];l(e);var a=new u(0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes()),_=a.address;r.push(_);var n=new u(0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),s=n.address;r.push(s),t._crypto_box_curve25519xchacha20poly1305_keypair(_,s);var c=y({publicKey:a,privateKey:n,keyType:"curve25519"},e);return g(r),c}function de(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"ciphertext")),h=e.length;c.push(o),r=x(c,r,"mac");var p,i=0|t._crypto_box_curve25519xchacha20poly1305_macbytes();r.length!==i&&f(c,"invalid mac length"),p=d(r),c.push(p),a=x(c,a,"nonce");var v,m=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==m&&f(c,"invalid nonce length"),v=d(a),c.push(v),_=x(c,_,"publicKey");var E,k=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();_.length!==k&&f(c,"invalid publicKey length"),E=d(_),c.push(E),n=x(c,n,"privateKey");var S,T=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();n.length!==T&&f(c,"invalid privateKey length"),S=d(n),c.push(S);var w=new u(0|h),Y=w.address;if(c.push(Y),0==(0|t._crypto_box_curve25519xchacha20poly1305_open_detached(Y,o,p,h,0,v,E,S))){var B=y(w,s);return g(c),B}b(c,"incorrect key pair for the given ciphertext")}function ve(e,r,a,_,n){var s=[];l(n);var c=d(e=x(s,e,"ciphertext")),o=e.length;s.push(c),r=x(s,r,"mac");var h,p=0|t._crypto_box_curve25519xchacha20poly1305_macbytes();r.length!==p&&f(s,"invalid mac length"),h=d(r),s.push(h),a=x(s,a,"nonce");var i,v=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();a.length!==v&&f(s,"invalid nonce length"),i=d(a),s.push(i),_=x(s,_,"sharedKey");var m,E=0|t._crypto_box_curve25519xchacha20poly1305_beforenmbytes();_.length!==E&&f(s,"invalid sharedKey length"),m=d(_),s.push(m);var k=new u(0|o),S=k.address;if(s.push(S),0==(0|t._crypto_box_curve25519xchacha20poly1305_open_detached_afternm(S,c,h,o,0,i,m))){var T=y(k,n);return g(s),T}b(s,"incorrect secret key for the given ciphertext")}function ge(e,r,a,_,n){var s=[];l(n),e=x(s,e,"ciphertext");var c,o=t._crypto_box_curve25519xchacha20poly1305_macbytes(),h=e.length;h<o&&f(s,"ciphertext is too short"),c=d(e),s.push(c),r=x(s,r,"nonce");var p,i=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==i&&f(s,"invalid nonce length"),p=d(r),s.push(p),a=x(s,a,"publicKey");var v,m=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();a.length!==m&&f(s,"invalid publicKey length"),v=d(a),s.push(v),_=x(s,_,"privateKey");var E,k=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();_.length!==k&&f(s,"invalid privateKey length"),E=d(_),s.push(E);var S=new u(h-t._crypto_box_curve25519xchacha20poly1305_macbytes()|0),T=S.address;if(s.push(T),0==(0|t._crypto_box_curve25519xchacha20poly1305_open_easy(T,c,h,0,p,v,E))){var w=y(S,n);return g(s),w}b(s,"incorrect key pair for the given ciphertext")}function be(e,r,a,_){var n=[];l(_);var s=d(e=x(n,e,"ciphertext")),c=e.length;n.push(s),r=x(n,r,"nonce");var o,h=0|t._crypto_box_curve25519xchacha20poly1305_noncebytes();r.length!==h&&f(n,"invalid nonce length"),o=d(r),n.push(o),a=x(n,a,"sharedKey");var p,i=0|t._crypto_box_curve25519xchacha20poly1305_beforenmbytes();a.length!==i&&f(n,"invalid sharedKey length"),p=d(a),n.push(p);var v=new u(c-t._crypto_box_curve25519xchacha20poly1305_macbytes()|0),m=v.address;if(n.push(m),0==(0|t._crypto_box_curve25519xchacha20poly1305_open_easy_afternm(m,s,c,0,o,p))){var E=y(v,_);return g(n),E}b(n,"incorrect secret key for the given ciphertext")}function fe(e,r,a){var _=[];l(a);var n=d(e=x(_,e,"message")),s=e.length;_.push(n),r=x(_,r,"publicKey");var c,o=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();r.length!==o&&f(_,"invalid publicKey length"),c=d(r),_.push(c);var h=new u(s+t._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),p=h.address;_.push(p),t._crypto_box_curve25519xchacha20poly1305_seal(p,n,s,0,c);var i=y(h,a);return g(_),i}function me(e,r,a,_){var n=[];l(_),e=x(n,e,"ciphertext");var s,c=t._crypto_box_curve25519xchacha20poly1305_sealbytes(),o=e.length;o<c&&f(n,"ciphertext is too short"),s=d(e),n.push(s),r=x(n,r,"publicKey");var h,p=0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes();r.length!==p&&f(n,"invalid publicKey length"),h=d(r),n.push(h),a=x(n,a,"secretKey");var i,v=0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes();a.length!==v&&f(n,"invalid secretKey length"),i=d(a),n.push(i);var b=new u(o-t._crypto_box_curve25519xchacha20poly1305_sealbytes()|0),m=b.address;n.push(m),t._crypto_box_curve25519xchacha20poly1305_seal_open(m,s,o,0,h,i);var E=y(b,_);return g(n),E}function xe(e,r){var a=[];l(r),e=x(a,e,"seed");var _,n=0|t._crypto_box_curve25519xchacha20poly1305_seedbytes();e.length!==n&&f(a,"invalid seed length"),_=d(e),a.push(_);var s=new u(0|t._crypto_box_curve25519xchacha20poly1305_publickeybytes()),c=s.address;a.push(c);var o=new u(0|t._crypto_box_curve25519xchacha20poly1305_secretkeybytes()),h=o.address;if(a.push(h),0==(0|t._crypto_box_curve25519xchacha20poly1305_seed_keypair(c,h,_))){var p={publicKey:y(s,r),privateKey:y(o,r),keyType:"x25519"};return g(a),p}b(a,"invalid usage")}function Ee(e,r,a,_,n){var s=[];l(n);var c=d(e=x(s,e,"message")),o=e.length;s.push(c),r=x(s,r,"nonce");var h,p=0|t._crypto_box_noncebytes();r.length!==p&&f(s,"invalid nonce length"),h=d(r),s.push(h),a=x(s,a,"publicKey");var i,v=0|t._crypto_box_publickeybytes();a.length!==v&&f(s,"invalid publicKey length"),i=d(a),s.push(i),_=x(s,_,"privateKey");var m,E=0|t._crypto_box_secretkeybytes();_.length!==E&&f(s,"invalid privateKey length"),m=d(_),s.push(m);var k=new u(0|o),S=k.address;s.push(S);var T=new u(0|t._crypto_box_macbytes()),w=T.address;if(s.push(w),0==(0|t._crypto_box_detached(S,w,c,o,0,h,i,m))){var Y=y({ciphertext:k,mac:T},n);return g(s),Y}b(s,"invalid usage")}function ke(e,r,a,_,n){var s=[];l(n);var c=d(e=x(s,e,"message")),o=e.length;s.push(c),r=x(s,r,"nonce");var h,p=0|t._crypto_box_noncebytes();r.length!==p&&f(s,"invalid nonce length"),h=d(r),s.push(h),a=x(s,a,"publicKey");var i,v=0|t._crypto_box_publickeybytes();a.length!==v&&f(s,"invalid publicKey length"),i=d(a),s.push(i),_=x(s,_,"privateKey");var m,E=0|t._crypto_box_secretkeybytes();_.length!==E&&f(s,"invalid privateKey length"),m=d(_),s.push(m);var k=new u(o+t._crypto_box_macbytes()|0),S=k.address;if(s.push(S),0==(0|t._crypto_box_easy(S,c,o,0,h,i,m))){var T=y(k,n);return g(s),T}b(s,"invalid usage")}function Se(e,r,a,_){var n=[];l(_);var s=d(e=x(n,e,"message")),c=e.length;n.push(s),r=x(n,r,"nonce");var o,h=0|t._crypto_box_noncebytes();r.length!==h&&f(n,"invalid nonce length"),o=d(r),n.push(o),a=x(n,a,"sharedKey");var p,i=0|t._crypto_box_beforenmbytes();a.length!==i&&f(n,"invalid sharedKey length"),p=d(a),n.push(p);var v=new u(c+t._crypto_box_macbytes()|0),m=v.address;if(n.push(m),0==(0|t._crypto_box_easy_afternm(m,s,c,0,o,p))){var E=y(v,_);return g(n),E}b(n,"invalid usage")}function Te(e){var r=[];l(e);var a=new u(0|t._crypto_box_publickeybytes()),_=a.address;r.push(_);var n=new u(0|t._crypto_box_secretkeybytes()),s=n.address;if(r.push(s),0==(0|t._crypto_box_keypair(_,s))){var c={publicKey:y(a,e),privateKey:y(n,e),keyType:"x25519"};return g(r),c}b(r,"internal error")}function we(e,r,a,_,n,s){var c=[];l(s);var o=d(e=x(c,e,"ciphertext")),h=e.length;c.push(o),r=x(c,r,"mac");var p,i=0|t._crypto_box_macbytes();r.length!==i&&f(c,"invalid mac length"),p=d(r),c.push(p),a=x(c,a,"nonce");var v,m=0|t._crypto_box_noncebytes();a.length!==m&&f(c,"invalid nonce length"),v=d(a),c.push(v),_=x(c,_,"publicKey");var E,k=0|t._crypto_box_publickeybytes();_.length!==k&&f(c,"invalid publicKey length"),E=d(_),c.push(E),n=x(c,n,"privateKey");var S,T=0|t._crypto_box_secretkeybytes();n.length!==T&&f(c,"invalid privateKey length"),S=d(n),c.push(S);var w=new u(0|h),Y=w.address;if(c.push(Y),0==(0|t._crypto_box_open_detached(Y,o,p,h,0,v,E,S))){var B=y(w,s);return g(c),B}b(c,"incorrect key pair for the given ciphertext")}function Ye(e,r,a,_,n){var s=[];l(n),e=x(s,e,"ciphertext");var c,o=t._crypto_box_macbytes(),h=e.length;h<o&&f(s,"ciphertext is too short"),c=d(e),s.push(c),r=x(s,r,"nonce");var p,i=0|t._crypto_box_noncebytes();r.length!==i&&f(s,"invalid nonce length"),p=d(r),s.push(p),a=x(s,a,"publicKey");var
Above is shortened.
Client
LavaCop
Steps to reproduce
Play music.
Example code
No response
Confirmations
- [X] My environment meets the minimum requirements.
- [X] I have verified that this is not a duplicate issue.
Code of Conduct
- [X] I agree to follow this project's Code of Conduct
Cannot repro. Did you update @performanc/voice to v2.1.0?
Yes, I'm using 2.1.0 version of it
https://github.com/PerformanC/voice/commit/7e8388c71caea1350204ad131b3083425da14912
Voice package issue, fixed with new version 2.2.0