@coremail/lunkr-openclaw 1.1.6 → 1.2.0
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.
- package/bin/lunkr-cli.js +10 -10
- package/i18n/locales/en-US.json +1 -0
- package/i18n/locales/zh-CN.json +1 -0
- package/index.js +34 -29
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -1,42 +1,47 @@
|
|
|
1
|
-
var Ll=Object.create;var Wo=Object.defineProperty;var Il=Object.getOwnPropertyDescriptor;var Pl=Object.getOwnPropertyNames;var Ul=Object.getPrototypeOf,Tl=Object.prototype.hasOwnProperty;var G=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,o)=>(typeof require<"u"?require:e)[o]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var se=(n,e)=>()=>(n&&(e=n(n=0)),e);var A=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),us=(n,e)=>{for(var o in e)Wo(n,o,{get:e[o],enumerable:!0})},Ol=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Pl(e))!Tl.call(n,i)&&i!==o&&Wo(n,i,{get:()=>e[i],enumerable:!(t=Il(e,i))||t.enumerable});return n};var Jo=(n,e,o)=>(o=n!=null?Ll(Ul(n)):{},Ol(e||!n||!n.__esModule?Wo(o,"default",{value:n,enumerable:!0}):o,n));function Y(n){return El?.env?.[n]}function ps(){return Y("HTTPS_PROXY")||Y("https_proxy")||Y("HTTP_PROXY")||Y("http_proxy")}var El,fn=se(()=>{El=globalThis.process});import*as En from"fs";import*as ro from"path";import{fileURLToPath as jl}from"url";import{dirname as Fl}from"path";function ql(){let n=ro.join(ds,"locales");return En.existsSync(n)?n:ro.join(ds,"i18n","locales")}function Dl(){let n=Y("LUNKR_LANG");if(n)return Xo(n);let e=Y("LANG")||Y("LC_ALL");if(e){let t=e.split(".")[0].replace("_","-");return Xo(t)}let o=Y("LANGUAGE");if(o){let t=o.split(":")[0].replace("_","-");return Xo(t)}return co}function Xo(n){let e=n.toLowerCase();return{zh:"zh-CN","zh-cn":"zh-CN",zh_cn:"zh-CN","zh-hans":"zh-CN","zh-hans-cn":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","zh-hk":"zh-TW",en:"en-US","en-us":"en-US",en_us:"en-US","en-gb":"en-US"}[e]||co}function ms(n){if(Yo.has(n))return Yo.get(n);let e=ro.join(ql(),`${n}.json`);try{if(En.existsSync(e)){let o=En.readFileSync(e,"utf-8"),t=JSON.parse(o);return Yo.set(n,t),t}}catch{}return null}function Nl(){return Qo||(Qo=Dl()),Qo}function fs(n,e){let o=e.split("."),t=n;for(let i of o)if(typeof t=="object"&&t!==null&&i in t)t=t[i];else return;return typeof t=="string"?t:void 0}function gs(n,e){return e?n.replace(/\{\{(\w+)\}\}/g,(o,t)=>String(e[t]??"")):n}function l(n,e){let o=Nl(),t=ms(o);if(t){let i=fs(t,n);if(i)return gs(i,e)}if(o!==co){let i=ms(co);if(i){let s=fs(i,n);if(s)return gs(s,e)}}return n}var $l,ds,Yo,Qo,co,U=se(()=>{fn();$l=jl(import.meta.url),ds=Fl($l),Yo=new Map,Qo=null,co="en-US"});import*as Z from"crypto";import*as lo from"os";function et(n){return n<128?Buffer.from([n]):n<256?Buffer.from([129,n]):Buffer.from([130,n>>8&255,n&255])}function ys(n){let e=n.length%2===0?n:"0"+n,o=Buffer.from(e,"hex");return o[0]&&o[0]&128&&(o=Buffer.concat([Buffer.from([0]),o])),Buffer.concat([Buffer.from([2]),et(o.length),o])}function ks(n){return Buffer.concat([Buffer.from([48]),et(n.length),n])}function Wl(n){let e=Buffer.concat([Buffer.from([0]),n]);return Buffer.concat([Buffer.from([3]),et(e.length),e])}function ws(n,e){let o=ys(e),t=ys(n),i=ks(Buffer.concat([o,t])),s=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return ks(Buffer.concat([s,Wl(i)]))}function nt(n,e,o){try{let t=ws(e,o),i=Z.createPublicKey({key:t,format:"der",type:"spki"});return Z.publicEncrypt({key:i,padding:Z.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}catch{return n}}function ot(n,e){let o=Buffer.from(e,"base64"),t=Z.createPublicKey({key:o,format:"der",type:"spki"});return Z.publicEncrypt({key:t,padding:Z.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}var Be,gn,uo=se(()=>{Be=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},gn=class{key=null;deviceUuid=null;deviceName=null;username=null;setDeviceUuid(e){this.deviceUuid=e,this.key=null}setDeviceName(e){this.deviceName=e,this.key=null}setUsername(e){this.username=e,this.key=null}getKey(){if(!this.key){let e=this.deviceUuid||"",o=this.deviceName||lo.hostname(),t=this.username||lo.userInfo().username;if(!e)throw new Be("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${o}-${t}`;this.key=Z.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let o=this.getKey(),t=Z.randomBytes(12),i=Z.createCipheriv("aes-256-gcm",o,t),s=Buffer.concat([i.update(e,"utf8"),i.final()]),a=i.getAuthTag();return Buffer.concat([t,s,a]).toString("base64")}decrypt(e){if(!e)return"";let o=this.getKey(),t=Buffer.from(e,"base64");if(t.length<28)throw new Be("Ciphertext too short");let i=t.subarray(0,12),s=t.subarray(12,-16),a=t.subarray(-16),r=Z.createDecipheriv("aes-256-gcm",o,i);r.setAuthTag(a);try{return Buffer.concat([r.update(s),r.final()]).toString("utf8")}catch{throw new Be("Decryption failed, config file may be corrupted or key changed")}}}});import*as je from"fs";import*as st from"path";import*as Ge from"os";function jn(){return st.join(Ge.homedir(),Cs)}function de(){return st.join(jn(),_s)}function Ss(){let n=jn();je.existsSync(n)||je.mkdirSync(n,{recursive:!0})}function Jl(){let n=Ge.hostname(),e=Ge.platform(),o=Ge.release(),t="Unknown",i="Unknown";return e==="darwin"?(t=`macOS ${o}`,i="mac"):e==="win32"?(t=`Windows ${o}`,i="pc"):e==="linux"&&(t=`Linux ${o}`,i="pc"),{device_uuid:As(),device_os:t,device_model:i,device_name:n}}function As(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}function it(){return{...Jl(),bot_name:po,accounts:[]}}function Rs(n){let e=new gn;return e.setDeviceUuid(n.device_uuid),e.setDeviceName(n.device_name),e}function tt(n){if(!n)return!1;try{return Buffer.from(n,"base64").length>=28}catch{return!1}}function Yl(n,e){let o={...n};return o.session&&(o.session={...o.session,sid:o.session.sid?e.encrypt(o.session.sid):o.session.sid,cookie:o.session.cookie?e.encrypt(o.session.cookie):o.session.cookie}),o.apiToken&&(o.apiToken=e.encrypt(o.apiToken)),o}function Ql(n,e){let o={...n};if(o.session){let t={...o.session};try{t.sid&&tt(t.sid)&&(t.sid=e.decrypt(t.sid))}catch{t.sid=""}try{t.cookie&&tt(t.cookie)&&(t.cookie=e.decrypt(t.cookie))}catch{t.cookie=""}o.session=t}try{o.apiToken&&tt(o.apiToken)&&(o.apiToken=e.decrypt(o.apiToken))}catch{o.apiToken=void 0}return o}function L(){let n=de();if(!je.existsSync(n))return it();try{let e=je.readFileSync(n,"utf-8"),o=JSON.parse(e);if(o.device_uuid||(o.device_uuid=As()),o.bot_name||(o.bot_name=po),o.accounts||(o.accounts=[]),o.accounts?.length){let t=Rs(o);try{o.accounts=o.accounts.map(i=>Ql(i,t))}catch(i){i instanceof Be&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return o}catch{return it()}}function E(n){Ss();let e=de(),o={...n,accounts:n.accounts?.map(t=>{let i=Rs(n);return Yl(t,i)})};je.writeFileSync(e,JSON.stringify(o,null,2),"utf-8")}function mo(n){let e=W(n);if(e)return e;let o=n||L();return o.accounts?.length&&(o.accounts.find(t=>t.enabled&&t.session?.sid)||o.accounts.find(t=>!!t.session?.sid))||null}function W(n){let e=n||L();if(!e.accounts?.length)return null;let o=i=>!i.role||i.role==="standard"||i.role==="standard+agent";return e.accounts.find(i=>i.enabled&&i.session?.sid&&o(i))||e.accounts.find(i=>i.session?.sid&&o(i))||null}function Fn(n){let e=n||L();return e.accounts?.length?e.accounts.filter(o=>o.role==="agent"):[]}function ee(n,e){return(e||L()).accounts?.find(t=>t.email===n)||null}function Fe(n,e){let o=e||L();o.accounts||(o.accounts=[]);let t=o.accounts.findIndex(i=>i.accountId===n.accountId||i.email===n.email);t>=0?o.accounts[t]=n:o.accounts.push(n),E(o)}function at(n,e){let o=e||L();if(!o.accounts)return!1;let t=o.accounts.findIndex(i=>i.email===n);return t<0?!1:(o.accounts.splice(t,1),E(o),!0)}function ae(n){return(n||L()).bot_name||po}function rt(n,e){let o=e||L();return o.bot_name=n,o}var Cs,_s,po,re=se(()=>{uo();Cs=".lunkr",_s="config.json",po="Bot"});var Es=A((cf,tu)=>{tu.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/ace+json":{source:"iana",compressible:!0},"application/ace-groupcomm+cbor":{source:"iana"},"application/ace-trl+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/aif+cbor":{source:"iana"},"application/aif+json":{source:"iana",compressible:!0},"application/alto-cdni+json":{source:"iana",compressible:!0},"application/alto-cdnifilter+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-propmap+json":{source:"iana",compressible:!0},"application/alto-propmapparams+json":{source:"iana",compressible:!0},"application/alto-tips+json":{source:"iana",compressible:!0},"application/alto-tipsparams+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/appinstaller":{compressible:!1,extensions:["appinstaller"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/appx":{compressible:!1,extensions:["appx"]},"application/appxbundle":{compressible:!1,extensions:["appxbundle"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/automationml-aml+xml":{source:"iana",compressible:!0,extensions:["aml"]},"application/automationml-amlx+zip":{source:"iana",compressible:!1,extensions:["amlx"]},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/bufr":{source:"iana"},"application/c2pa":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/ce+cbor":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/cid-edhoc+cbor-seq":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/city+json-seq":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-eap":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/concise-problem-details+cbor":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cose-x509":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwl":{source:"iana",extensions:["cwl"]},"application/cwl+json":{source:"iana",compressible:!0},"application/cwl+yaml":{source:"iana"},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana",extensions:["dcm"]},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dpop+jwt":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/eat+cwt":{source:"iana"},"application/eat+jwt":{source:"iana"},"application/eat-bun+cbor":{source:"iana"},"application/eat-bun+json":{source:"iana",compressible:!0},"application/eat-ucs+cbor":{source:"iana"},"application/eat-ucs+json":{source:"iana",compressible:!0},"application/ecmascript":{source:"apache",compressible:!0,extensions:["ecma"]},"application/edhoc+cbor-seq":{source:"iana"},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.legacyesn+json":{source:"iana",compressible:!0},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/entity-statement+jwt":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdf":{source:"iana",extensions:["fdf"]},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geopose+json":{source:"iana",compressible:!0},"application/geoxacml+json":{source:"iana",compressible:!0},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gnap-binding-jws":{source:"iana"},"application/gnap-binding-jwsd":{source:"iana"},"application/gnap-binding-rotation-jws":{source:"iana"},"application/gnap-binding-rotation-jwsd":{source:"iana"},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/grib":{source:"iana"},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"iana",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"apache",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/jscontact+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jsonpath":{source:"iana"},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwk-set+jwt":{source:"iana"},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/linkset":{source:"iana"},"application/linkset+json":{source:"iana",compressible:!0},"application/load-control+xml":{source:"iana",compressible:!0},"application/logout+jwt":{source:"iana"},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msix":{compressible:!1,extensions:["msix"]},"application/msixbundle":{compressible:!1,extensions:["msixbundle"]},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!0,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/ohttp-keys":{source:"iana"},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["sig","asc"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/private-token-issuer-directory":{source:"iana"},"application/private-token-request":{source:"iana"},"application/private-token-response":{source:"iana"},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/provided-claims+jwt":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.implied-document+xml":{source:"iana",compressible:!0},"application/prs.implied-executable":{source:"iana"},"application/prs.implied-object+json":{source:"iana",compressible:!0},"application/prs.implied-object+json-seq":{source:"iana"},"application/prs.implied-object+yaml":{source:"iana"},"application/prs.implied-structure":{source:"iana"},"application/prs.mayfile":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.vcfbzip2":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0,extensions:["xsf"]},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"apache"},"application/reputon+json":{source:"iana",compressible:!0},"application/resolve-response+jwt":{source:"iana"},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-checklist":{source:"iana"},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-signed-tal":{source:"iana"},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"apache"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana",extensions:["sql"]},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/sslkeylogfile":{source:"iana"},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/st2110-41":{source:"iana"},"application/stix+json":{source:"iana",compressible:!0},"application/stratum":{source:"iana"},"application/swid+cbor":{source:"iana"},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tm+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/toc+cbor":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{source:"iana",compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/trust-chain+json":{source:"iana",compressible:!0},"application/trust-mark+jwt":{source:"iana"},"application/trust-mark-delegation+jwt":{source:"iana"},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/uccs+cbor":{source:"iana"},"application/ujcs+json":{source:"iana",compressible:!0},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vc":{source:"iana"},"application/vc+cose":{source:"iana"},"application/vc+jwt":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.1ob":{source:"iana"},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3a+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ach+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc8+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.5gsa2x":{source:"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gsv2x":{source:"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.crs+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.current-location-discovery+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.seal-group-doc+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-network-qos-management-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-ue-config-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-unicast-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-user-profile-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.v2x":{source:"iana"},"application/vnd.3gpp.vae-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acm.addressxfer+json":{source:"iana",compressible:!0},"application/vnd.acm.chatbot+json":{source:"iana",compressible:!0},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"apache",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"apache"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.parquet":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.apexlang":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"apache"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autodesk.fbx":{extensions:["fbx"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.belightsoft.lhzd+zip":{source:"iana",compressible:!1},"application/vnd.belightsoft.lhzl+zip":{source:"iana",compressible:!1},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.bzip3":{source:"iana"},"application/vnd.c3voc.schedule+xml":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{source:"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{source:"iana"},"application/vnd.cncf.helm.config.v1+json":{source:"iana",compressible:!0},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datalog":{source:"iana"},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.dcmp+xml":{source:"iana",compressible:!0,extensions:["dcmp"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.eln+zip":{source:"iana",compressible:!1},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.erofs":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"apache",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{source:"iana",charset:"XML-BASED",compressible:!0},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.freelog.comic":{source:"iana"},"application/vnd.frogans.fnc":{source:"apache",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"apache",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.ga4gh.passport+jwt":{source:"iana"},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.genozip":{source:"iana"},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.gentoo.catmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.ebuild":{source:"iana"},"application/vnd.gentoo.eclass":{source:"iana"},"application/vnd.gentoo.gpkg":{source:"iana"},"application/vnd.gentoo.manifest":{source:"iana"},"application/vnd.gentoo.pkgmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.xpak":{source:"iana"},"application/vnd.geo+json":{source:"apache",compressible:!0},"application/vnd.geocube+xml":{source:"apache",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.pinboard":{source:"iana"},"application/vnd.geogebra.slides":{source:"iana",extensions:["ggs"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.gnu.taler.exchange+json":{source:"iana",compressible:!0},"application/vnd.gnu.taler.merchant+json":{source:"iana",compressible:!0},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.drawing":{compressible:!1,extensions:["gdraw"]},"application/vnd.google-apps.drive-sdk":{compressible:!1},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{compressible:!1},"application/vnd.google-apps.form":{compressible:!1,extensions:["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{compressible:!1,extensions:["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{compressible:!1,extensions:["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.script":{compressible:!1,extensions:["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{compressible:!1,extensions:["gsite"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"apache",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0,extensions:["xdcf"]},"application/vnd.gpxsee.map+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.hsl":{source:"iana"},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"apache"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"apache",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"apache"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.ipfs.ipns-record":{source:"iana"},"application/vnd.ipld.car":{source:"iana"},"application/vnd.ipld.dag-cbor":{source:"iana"},"application/vnd.ipld.dag-json":{source:"iana"},"application/vnd.ipld.raw":{source:"iana"},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kdl":{source:"iana"},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.keyman.kmp+zip":{source:"iana",compressible:!1},"application/vnd.keyman.kmx":{source:"iana"},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.ldev.productlicensing":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.mdl":{source:"iana"},"application/vnd.mdl-mbsdf":{source:"iana"},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.medicalholodeck.recordxr":{source:"iana"},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mermaid":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.modl":{source:"iana"},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-visio.viewer":{extensions:["vdx"]},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msgpack":{source:"iana"},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+cbor":{source:"iana"},"application/vnd.nato.bindingdataobject+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+xml":{source:"iana",compressible:!0,extensions:["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{source:"iana",compressible:!1},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"apache",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oai.workflows":{source:"iana"},"application/vnd.oai.workflows+json":{source:"iana",compressible:!0},"application/vnd.oai.workflows+yaml":{source:"iana"},"application/vnd.oasis.opendocument.base":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"apache",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-master-template":{source:"iana"},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.onvif.metadata":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openvpi.dspx+json":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.procrate.brushset":{extensions:["brushset"]},"application/vnd.procreate.brush":{extensions:["brush"]},"application/vnd.procreate.dream":{extensions:["drm"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.pt.mundusmundi":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0,extensions:["xhtm"]},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.relpipe":{source:"iana"},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.sketchometry":{source:"iana"},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.smintio.portals.archive":{source:"iana"},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sybyl.mol2":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uic.osdm+json":{source:"iana",compressible:!0},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml","uo"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.veraison.tsm-report+cbor":{source:"iana"},"application/vnd.veraison.tsm-report+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vocalshaper.vsp4":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.wasmflow.wafl":{source:"iana"},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordlift":{source:"iana"},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xarin.cpj":{source:"iana"},"application/vnd.xecrets-encrypted":{source:"iana"},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/voucher-jws+json":{source:"iana",compressible:!0},"application/vp":{source:"iana"},"application/vp+cose":{source:"iana"},"application/vp+jwt":{source:"iana"},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blender":{extensions:["blend"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-compressed":{extensions:["rar"]},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-ipynb+json":{compressible:!0,extensions:["ipynb"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zip-compressed":{extensions:["zip"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xfdf":{source:"iana",extensions:["xfdf"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yaml":{source:"iana"},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+cbor":{source:"iana"},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yang-sid+json":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zip+dotlottie":{extensions:["lottie"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana",extensions:["adts","aac"]},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flac":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/matroska":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/midi-clip":{source:"iana"},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a","m4b"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"apache"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{source:"iana",compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp","dib"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/dpx":{source:"iana",extensions:["dpx"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/j2c":{source:"iana"},"image/jaii":{source:"iana",extensions:["jaii"]},"image/jais":{source:"iana",extensions:["jais"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpg","jpeg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm","jpgm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxl":{source:"iana",extensions:["jxl"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1,extensions:["jfif"]},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif","btf"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.clip":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"iana",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-adobe-dng":{extensions:["dng"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-emf":{source:"iana"},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-wmf":{source:"iana"},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/bhttp":{source:"iana"},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/mls":{source:"iana"},"message/news":{source:"apache"},"message/ohttp-req":{source:"iana"},"message/ohttp-res":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime","mht","mhtml"]},"message/s-http":{source:"apache"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"apache"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/jt":{source:"iana",extensions:["jt"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/prc":{source:"iana",extensions:["prc"]},"model/step":{source:"iana",extensions:["step","stp","stpnc","p21","210"]},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/u3d":{source:"iana",extensions:["u3d"]},"model/vnd.bary":{source:"iana",extensions:["bary"]},"model/vnd.cld":{source:"iana",extensions:["cld"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana",extensions:["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usda":{source:"iana",extensions:["usda"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"apache"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hl7v2":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["md","markdown"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/prs.texi":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.exchangeable":{source:"iana"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"apache"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.vcf":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vnd.zoo.kcl":{source:"iana"},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/wgsl":{source:"iana",extensions:["wgsl"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/evc":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/h266":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/lottie+json":{source:"iana",compressible:!0},"video/matroska":{source:"iana"},"video/matroska-3d":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts","m2t","m2ts","mts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.planar":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var Fs=A((lf,js)=>{js.exports=Es()});var Ms=A((uf,Ns)=>{var $s={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},qs={nginx:10,apache:20,iana:40,default:30},Ds={application:1,font:2,audio:2,video:3,default:0};Ns.exports=function(e,o="default"){if(e==="application/octet-stream")return 0;let[t,i]=e.split("/"),s=i.replace(/(\.|x-).*/,"$1"),a=$s[s]||$s.default,r=qs[o]||qs.default,c=Ds[t]||Ds.default,u=1-e.length/100;return a+r+c+u}});var lt=A(Q=>{"use strict";var nn=Fs(),iu=G("path").extname,Bs=Ms(),Gs=/^\s*([^;\s]*)(?:;|\s|$)/,su=/^text\//i;Q.charset=zs;Q.charsets={lookup:zs};Q.contentType=au;Q.extension=ct;Q.extensions=Object.create(null);Q.lookup=ru;Q.types=Object.create(null);Q._extensionConflicts=[];cu(Q.extensions,Q.types);function zs(n){if(!n||typeof n!="string")return!1;var e=Gs.exec(n),o=e&&nn[e[1].toLowerCase()];return o&&o.charset?o.charset:e&&su.test(e[1])?"UTF-8":!1}function au(n){if(!n||typeof n!="string")return!1;var e=n.indexOf("/")===-1?Q.lookup(n):n;if(!e)return!1;if(e.indexOf("charset")===-1){var o=Q.charset(e);o&&(e+="; charset="+o.toLowerCase())}return e}function ct(n){if(!n||typeof n!="string")return!1;var e=Gs.exec(n),o=e&&Q.extensions[e[1].toLowerCase()];return!o||!o.length?!1:o[0]}function ru(n){if(!n||typeof n!="string")return!1;var e=iu("x."+n).toLowerCase().slice(1);return e&&Q.types[e]||!1}function cu(n,e){Object.keys(nn).forEach(function(t){var i=nn[t],s=i.extensions;if(!(!s||!s.length)){n[t]=s;for(var a=0;a<s.length;a++){var r=s[a];e[r]=lu(r,e[r],t);let c=uu(r,e[r],t);c!==e[r]&&Q._extensionConflicts.push([r,c,e[r]])}}})}function lu(n,e,o){var t=e?Bs(e,nn[e].source):0,i=o?Bs(o,nn[o].source):0;return t>i?e:o}function uu(n,e,o){var t=["nginx","apache",void 0,"iana"],i=e?t.indexOf(nn[e].source):0,s=o?t.indexOf(nn[o].source):0;return Q.types[ct]!=="application/octet-stream"&&(i>s||i===s&&Q.types[ct]?.slice(0,12)==="application/")||i>s?e:o}});var Ys={};us(Ys,{httpsGet:()=>ze,httpsGetBuffer:()=>hn,httpsPost:()=>ye,httpsPostBinary:()=>on});import*as qn from"https";import*as fo from"zlib";import{HttpsProxyAgent as pu}from"https-proxy-agent";function go(n,e){if(!e)return n.toString("utf8");let o=e.toLowerCase().split(",").map(t=>t.trim());try{if(o.includes("gzip"))return fo.gunzipSync(n).toString("utf8");if(o.includes("deflate"))return fo.inflateSync(n).toString("utf8")}catch{}return n.toString("utf8")}function ho(n){return n instanceof Error&&n.constructor.name==="AggregateError"}function Hs(n,e,o,t,i){return new Promise((s,a)=>{let r=new URL(n),c=Buffer.from(e,"utf8"),u={hostname:r.hostname,port:r.port||443,path:r.pathname+r.search,method:"POST",headers:{...xo,...o,"Content-Length":c.length},timeout:t,agent:Dn};i&&(u.family=i);let p=qn.request(u,d=>{let m=[];d.on("data",f=>{m.push(f)}),d.on("end",()=>{let f={};if(d.headers)for(let[g,v]of Object.entries(d.headers))v!==void 0&&(f[g.toLowerCase()]=Array.isArray(v)?v.join(", "):v);let h=Buffer.concat(m),x=go(h,d.headers["content-encoding"]);s({status:d.statusCode||0,data:x,headers:f})})});p.on("error",a),p.on("timeout",()=>{p.destroy(),a(new Error("Request timeout"))}),p.write(c),p.end()})}function Vs(n,e,o,t){return new Promise((i,s)=>{let a=new URL(n),r={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...xo,...e},timeout:o,agent:Dn};t&&(r.family=t);let c=qn.request(r,u=>{let p=[];u.on("data",d=>{p.push(d)}),u.on("end",()=>{let d={};if(u.headers)for(let[h,x]of Object.entries(u.headers))x!==void 0&&(d[h.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let m=Buffer.concat(p),f=go(m,u.headers["content-encoding"]);i({status:u.statusCode||0,data:f,headers:d})})});c.on("error",s),c.on("timeout",()=>{c.destroy(),s(new Error("Request timeout"))}),c.end()})}function Ws(n,e,o,t){return new Promise((i,s)=>{let a=new URL(n),r={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...xo,...e},timeout:o,agent:Dn};t&&(r.family=t);let c=qn.request(r,u=>{let p=[];u.on("data",d=>{p.push(d)}),u.on("end",()=>{let d={};if(u.headers)for(let[h,x]of Object.entries(u.headers))x!==void 0&&(d[h.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let m=Buffer.concat(p),f=u.headers["content-encoding"];if(f){let h=go(m,f);i({status:u.statusCode||0,data:Buffer.from(h,"utf8"),headers:d})}else i({status:u.statusCode||0,data:m,headers:d})})});c.on("error",s),c.on("timeout",()=>{c.destroy(),s(new Error("Request timeout"))}),c.end()})}function Js(n,e,o,t,i){return new Promise((s,a)=>{let r=new URL(n),c={hostname:r.hostname,port:r.port||443,path:r.pathname+r.search,method:"POST",headers:{...xo,...o,"Content-Length":e.length},timeout:t,agent:Dn};i&&(c.family=i);let u=qn.request(c,p=>{let d=[];p.on("data",m=>{d.push(m)}),p.on("end",()=>{let m={};if(p.headers)for(let[x,g]of Object.entries(p.headers))g!==void 0&&(m[x.toLowerCase()]=Array.isArray(g)?g.join(", "):g);let f=Buffer.concat(d),h=go(f,p.headers["content-encoding"]);s({status:p.statusCode||0,data:h,headers:m})})});u.on("error",a),u.on("timeout",()=>{u.destroy(),a(new Error("Request timeout"))}),u.write(e),u.end()})}async function ye(n,e,o,t){try{return await Hs(n,e,o,t)}catch(i){if(ho(i))return Hs(n,e,o,t,4);throw i}}async function ze(n,e={},o=2e4){try{return await Vs(n,e,o)}catch(t){if(ho(t))return Vs(n,e,o,4);throw t}}async function hn(n,e={},o=6e4){try{return await Ws(n,e,o)}catch(t){if(ho(t))return Ws(n,e,o,4);throw t}}async function on(n,e,o,t){try{return await Js(n,e,o,t)}catch(i){if(ho(i))return Js(n,e,o,t,4);throw i}}var Dn,Ks,xo,tn=se(()=>{fn();Ks=ps();Ks&&(Dn=new pu(Ks));xo={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"}});import*as Bn from"crypto";import*as Ke from"os";import{XMLParser as du}from"fast-xml-parser";function ut(n){let e=Ke.platform(),o=Ke.release(),t=Ke.arch(),i=Ke.hostname(),s=n?.device_uuid?.trim()||"",a=n?.device_os?.trim()||"",r=n?.device_model?.trim()||"",c=n?.device_name?.trim()||"";if(!s){let u=`${i}-${e}-${t}`;s=Bn.createHash("sha256").update(u).digest("hex").substring(0,40)}return r||(e==="win32"?r="windows":e==="darwin"?r="mac":e==="linux"?r="Linux":r=e),a||(e==="win32"?a=`Windows ${o} (build ${o.split(".").pop()||o}), ${t}bit`:e==="darwin"?a=`macOS ${o}, ${t}`:e==="linux"?a=`Linux ${o}, ${t}`:a=`${e} ${o}, ${t}`),c||(c=i),{deviceType:"AI-Bot",friendlyName:c,model:r,os:a,uuid:s}}function pt(n,e,o){let t=n+e+o;return"!AIBot:"+Bn.createHash("sha1").update(t).digest("hex")}function dt(n){let e=n+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Bn.createHash("sha1").update(e).digest("hex")}function mt(n,e,o,t=""){let i=u=>encodeURIComponent(u).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),s=i(n),a=i(o),r;if(t){let u=i(t);r=`accessToken=${s}&nonce=${u}×tamp=${e}&secret=${a}`}else r=`accessToken=${s}×tamp=${e}&secret=${a}`;return Bn.createHash("sha1").update(r).digest().toString("base64")}var vo,xn,j,Nn,Mn,F,vn=se(()=>{tn();uo();vo="https://lunkr.coremail.cn",xn="/lunkr/s/json",j=class extends Error{constructor(e){super(e),this.name="AuthError"}},Nn=class extends j{constructor(e){super(e),this.name="PasswordError"}},Mn=class{static QUERY_URL="https://cloud.icoremail.net/querydomain/query";static PRIORITY_ORDER=["lookup","gal","incoming","outgoing","mirror"];static getTypePriority(e){if(e==="gal")return[1,0];if(e.startsWith("gal")&&/^\d+$/.test(e.slice(3)))return[1,parseInt(e.slice(3),10)];for(let o=0;o<this.PRIORITY_ORDER.length;o++)if(e===this.PRIORITY_ORDER[o])return[o+1,0];return[this.PRIORITY_ORDER.length+1,0]}static extractDomain(e){return e.includes("@")?e.split("@").pop().trim().toLowerCase():null}static async queryDomain(e){let o=`${this.QUERY_URL}?domain=${e}`;try{let t=await ze(o,{},3e4);return this.parseXmlResponse(t.data)}catch(t){let i=t instanceof Error?`${t.message} (${t.name})`:String(t);throw t instanceof Error&&t.cause?new j(`Domain query failed: ${i}, cause: ${t.cause}`):new j(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let t=new du({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=t.result||t.querydomain;if(!i)throw new j("Domain query response parse failed: root element not found");let s=i.code;if(s!=="S_OK")throw new j(`Domain query returned error: ${s}`);let a=i.provider;if(!a)throw new j("Provider not found in domain query response");let r=[],c=["gal","lookup","mirror"];for(let[u,p]of Object.entries(a)){if(u.startsWith("@_")||typeof p!="object"||!p||!c.some(m=>u===m||u.startsWith(m)))continue;let d=Array.isArray(p)?p:[p];for(let m of d){let f=m["@_uri"];if(!f||!f.startsWith("http://")&&!f.startsWith("https://"))continue;let h=new URL(f),x=`${h.protocol}//${h.host}`,g=h.pathname.replace(/\/$/,""),v=g?`${g}/s/json`:"/s/json";r.push({type:u,uri:f,baseUrl:x,apiPath:v,apiUrl:`${x}${v}`})}}return r.sort((u,p)=>{let[d,m]=this.getTypePriority(u.type),[f,h]=this.getTypePriority(p.type);return d!==f?d-f:m-h}),r}static async testServerAvailability(e,o,t){let i=`func=user:getPasswordKey&uid=${encodeURIComponent(t)}`,s=`${e}${o}?${i}`,a={"Content-Type":"text/x-json; charset=UTF-8"};try{let r=await ye(s,"{}",a,3e4);if(r.status!==200)return null;let c=JSON.parse(r.data);if(c.code!=="S_OK")return null;let u=c.var||{},p=u.key||{},d=u.sid,m=p.type;return!d||!m?null:{sid:d,authType:m,rsaE:p.e||"",rsaN:p.n||""}}catch(r){let c=r instanceof Error?r.message:String(r);return console.log(` Server unavailable: ${c}`),null}}static async discoverAvailableServer(e){let o=this.extractDomain(e);if(!o)throw new j(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${o}`);let t=await this.queryDomain(o);if(t.length===0)throw new j(`No server addresses found for domain: ${o}`);console.log(`Found ${t.length} server addresses:`);for(let i of t)console.log(` - ${i.type}: ${i.apiUrl}`);for(let i of t){console.log(`Trying server: ${i.type} (${i.apiUrl})`);let s=await this.testServerAvailability(i.baseUrl,i.apiPath,e);if(s)return console.log(`Server available: ${i.type}`),[i,s]}throw new j("All server addresses are unavailable")}},F=class{_baseUrl;apiPath;headers;timeout;_cookies={};constructor(e,o={}){this._baseUrl=e.replace(/\/$/,""),this.apiPath=o.apiPath||"/lunkr/s/json",this.headers=o.headers||{},this.timeout=o.timeout||2e4}get baseUrl(){return this._baseUrl}get apiUrl(){return`${this._baseUrl}${this.apiPath}`}get cookies(){return this._cookies}setCookies(e){this._cookies=e}async postJson(e){let o={func:e.func};e.sid&&(o.sid=e.sid),e.query&&Object.assign(o,e.query);let t=Object.entries(o).map(([u,p])=>`${encodeURIComponent(u)}=${encodeURIComponent(String(p))}`).join("&"),i=`${this.apiUrl}?${t}`,s={"Content-Type":"text/x-json; charset=UTF-8",...this.headers};Object.keys(this.cookies).length>0&&(s.Cookie=Object.entries(this.cookies).map(([u,p])=>`${u}=${p}`).join("; "));let a=JSON.stringify(e.payload||{});e.debug&&(console.log(`[postJson] URL: ${i}`),console.log(`[postJson] headers: ${JSON.stringify(s)}`),console.log(`[postJson] body: ${a}`));let r=await ye(i,a,s,this.timeout),c=r.headers["set-cookie"];if(c){let u=c.split(/, (?=[^=]+=[^;]+)/);for(let p of u){let d=p.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(r.data)}catch{throw new j(`API returned non-JSON: ${r.data?.substring?.(0,400)||r.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}}});import*as Qs from"https";import*as Xs from"http";import{WebSocket as ft}from"ws";import{v4 as mu}from"uuid";function bo(...n){Y("LUNKR_VERBOSE")==="1"&&console.log("[SocketIO]",...n)}var sn,yo=se(()=>{tn();fn();sn=class n{baseUrl;cookies;eventCallbacks;ws=null;connected=!1;websocketUrl=null;eioSid="";pingInterval=25e3;running=!1;authDone=!1;sessionId="";uid="";username="";pingTimer=null;waitResolve=null;autoReconnect;static authLoginIndex=1;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.cookies=e.cookies,this.eventCallbacks=e.eventCallbacks||{},this.uid=e.uid||"",this.username=e.username||"",this.autoReconnect=e.autoReconnect??!0}static fromLunkrConfig(e,o,t,i){let s={"Cim.sid":o};for(let r of t.split(";")){let c=r.trim();if(c.includes("=")){let[u,p]=c.split("=",2);s[u.trim()]=p.trim()}}let a=new n({baseUrl:e,cookies:s,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username,autoReconnect:i?.autoReconnect});return a.sessionId=o,a}buildCookieHeader(){return Object.entries(this.cookies).map(([e,o])=>`${e}=${o}`).join("; ")}async getWebSocketUrl(){if(this.websocketUrl)return this.websocketUrl;let e=this.buildCookieHeader(),o=`${this.baseUrl}/lunkr/s/json?func=cim.common:getWebSocketURL&uid=${encodeURIComponent(this.username)}&sid=${encodeURIComponent(this.sessionId)}`;try{let t=await ze(o,{Cookie:e},1e4),i=JSON.parse(t.data);return i?.code==="S_OK"?(this.websocketUrl=typeof i.var=="string"?i.var:i.var?.webSocketURL,this.websocketUrl):(console.error("getWebSocketURL failed:",i),null)}catch(t){return console.error("getWebSocketURL request failed:",t),null}}async callSioSubscribe(){let e=this.buildCookieHeader(),o=`${this.baseUrl}/lunkr/s/json?func=cim.common:sioSubscribe&sid=${encodeURIComponent(this.sessionId)}`;try{let t=await ye(o,"{}",{Cookie:e},1e4),i=JSON.parse(t.data),s=i?.code==="S_OK";return s||console.error("sioSubscribe failed:",i),s}catch(t){return console.error("sioSubscribe exception:",t),!1}}async performHandshake(){let e=await this.getWebSocketUrl();if(!e)return!1;await this.callSioSubscribe();let o=this.buildCookieHeader();try{let a=`${e}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=(await ze(a,{Cookie:o},1e4)).data,u=c.indexOf('0{"sid"');if(u>=0&&(c=c.substring(u)),!c.startsWith("0{"))return console.error("Handshake response format error:",c.substring(0,80)),!1;let p=JSON.parse(c.substring(1));if(this.eioSid=p.sid,this.pingInterval=p.pingInterval??25e3,!p.upgrades?.includes("websocket"))return console.error("Server does not support WebSocket upgrade"),!1}catch(a){return console.error("Socket.IO HTTP handshake failed:",a),!1}let t=e.startsWith("https://"),i=e.replace(/^https?:\/\//,""),s=`${t?"wss":"ws"}://${i}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(this.eioSid)}`;return new Promise(a=>{this.ws=new ft(s,{headers:{Cookie:this.buildCookieHeader()},agent:t?new Qs.Agent({rejectUnauthorized:!1}):new Xs.Agent}),this.ws.once("open",()=>{bo("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",r=>{let c=r.toString();bo("Received during handshake:",c.substring(0,50)),c.includes("3probe")?(bo("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),bo("Connection complete, connected=true, running=true"),a(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",c.substring(0,50)),a(!1))}),this.ws.once("error",r=>{console.error("WebSocket connection failed:",r.message),a(!1)})})}startMessageLoop(){this.ws&&(this.ws.on("message",e=>{this.handleFrame(e.toString())}),this.ws.on("close",()=>{this.connected=!1,this.authDone=!1,this.stopPingLoop(),this.handleEvent("disconnect",{}),this.waitResolve&&(this.waitResolve(),this.waitResolve=null),this.running&&this.autoReconnect&&setTimeout(()=>this.reconnect(),5e3)}),this.ws.on("error",e=>{console.error("[SocketIO] WebSocket error:",e.message)}))}startPingLoop(){this.pingTimer=setInterval(()=>{this.connected&&this.ws?.readyState===ft.OPEN&&this.ws.send("2")},this.pingInterval)}stopPingLoop(){this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}handleFrame(e){if(e){if(e[0]==="2"){this.ws?.send("3");return}if(e[0]==="4"&&e.length>1){let o=e[1];if(o==="0"){this.handleEvent("connect",{}),this.authDone||this.sendAuth();return}if(o==="1"){this.connected=!1;return}if(o==="2"){try{let t=JSON.parse(e.substring(2));if(Array.isArray(t)&&t.length>=2){let i=t[0],s=t[1];i==="ready"&&(this.authDone=!0),this.handleEvent(i,s)}}catch{}return}}}}sendAuth(){let e=`pc:${this.sessionId}_${n.authLoginIndex++}`,o=this.cookies.Cim||"";this.emit("auth",{username:this.username,clientId:e,password:`{SES}${this.sessionId}:${o}`,uid:this.uid,uuid:mu()})}handleEvent(e,o){let t=this.eventCallbacks[e];if(t)try{t(o)}catch(i){console.error(`${e} callback error:`,i)}}async connect(){return this.performHandshake()}async reconnect(){this.connected=!1,this.authDone=!1,this.eioSid="",this.websocketUrl=null;try{this.ws?.close()}catch{}this.ws=null,await this.performHandshake()}disconnect(){this.running=!1,this.stopPingLoop();try{this.ws?.send("0")}catch{}try{this.ws?.close()}catch{}this.connected=!1}emit(e,o){if(!this.connected||this.ws?.readyState!==ft.OPEN)return!1;try{return this.ws.send(`42${JSON.stringify([e,o])}`),!0}catch{return!1}}isConnected(){return this.connected}isAuthenticated(){return this.authDone}onDisconnect(e){let o=this.eventCallbacks.disconnect;o?this.eventCallbacks.disconnect=t=>{o(t),e()}:this.eventCallbacks.disconnect=()=>e()}wait(){return!this.ws||!this.connected?Promise.resolve():new Promise(e=>{this.waitResolve=e})}}});var gt=A((If,ea)=>{ea.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var He=A(an=>{var ht,hu=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];an.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};an.getSymbolTotalCodewords=function(e){return hu[e]};an.getBCHDigit=function(n){let e=0;for(;n!==0;)e++,n>>>=1;return e};an.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');ht=e};an.isKanjiModeEnabled=function(){return typeof ht<"u"};an.toSJIS=function(e){return ht(e)}});var ko=A(fe=>{fe.L={bit:1};fe.M={bit:0};fe.Q={bit:3};fe.H={bit:2};function xu(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return fe.L;case"m":case"medium":return fe.M;case"q":case"quartile":return fe.Q;case"h":case"high":return fe.H;default:throw new Error("Unknown EC Level: "+n)}}fe.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};fe.from=function(e,o){if(fe.isValid(e))return e;try{return xu(e)}catch{return o}}});var ta=A((Tf,oa)=>{function na(){this.buffer=[],this.length=0}na.prototype={get:function(n){let e=Math.floor(n/8);return(this.buffer[e]>>>7-n%8&1)===1},put:function(n,e){for(let o=0;o<e;o++)this.putBit((n>>>e-o-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(n){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}};oa.exports=na});var sa=A((Of,ia)=>{function Gn(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}Gn.prototype.set=function(n,e,o,t){let i=n*this.size+e;this.data[i]=o,t&&(this.reservedBit[i]=!0)};Gn.prototype.get=function(n,e){return this.data[n*this.size+e]};Gn.prototype.xor=function(n,e,o){this.data[n*this.size+e]^=o};Gn.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]};ia.exports=Gn});var aa=A(wo=>{var vu=He().getSymbolSize;wo.getRowColCoords=function(e){if(e===1)return[];let o=Math.floor(e/7)+2,t=vu(e),i=t===145?26:Math.ceil((t-13)/(2*o-2))*2,s=[t-7];for(let a=1;a<o-1;a++)s[a]=s[a-1]-i;return s.push(6),s.reverse()};wo.getPositions=function(e){let o=[],t=wo.getRowColCoords(e),i=t.length;for(let s=0;s<i;s++)for(let a=0;a<i;a++)s===0&&a===0||s===0&&a===i-1||s===i-1&&a===0||o.push([t[s],t[a]]);return o}});var la=A(ca=>{var bu=He().getSymbolSize,ra=7;ca.getPositions=function(e){let o=bu(e);return[[0,0],[o-ra,0],[0,o-ra]]}});var ua=A(D=>{D.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var rn={N1:3,N2:3,N3:40,N4:10};D.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};D.from=function(e){return D.isValid(e)?parseInt(e,10):void 0};D.getPenaltyN1=function(e){let o=e.size,t=0,i=0,s=0,a=null,r=null;for(let c=0;c<o;c++){i=s=0,a=r=null;for(let u=0;u<o;u++){let p=e.get(c,u);p===a?i++:(i>=5&&(t+=rn.N1+(i-5)),a=p,i=1),p=e.get(u,c),p===r?s++:(s>=5&&(t+=rn.N1+(s-5)),r=p,s=1)}i>=5&&(t+=rn.N1+(i-5)),s>=5&&(t+=rn.N1+(s-5))}return t};D.getPenaltyN2=function(e){let o=e.size,t=0;for(let i=0;i<o-1;i++)for(let s=0;s<o-1;s++){let a=e.get(i,s)+e.get(i,s+1)+e.get(i+1,s)+e.get(i+1,s+1);(a===4||a===0)&&t++}return t*rn.N2};D.getPenaltyN3=function(e){let o=e.size,t=0,i=0,s=0;for(let a=0;a<o;a++){i=s=0;for(let r=0;r<o;r++)i=i<<1&2047|e.get(a,r),r>=10&&(i===1488||i===93)&&t++,s=s<<1&2047|e.get(r,a),r>=10&&(s===1488||s===93)&&t++}return t*rn.N3};D.getPenaltyN4=function(e){let o=0,t=e.data.length;for(let s=0;s<t;s++)o+=e.data[s];return Math.abs(Math.ceil(o*100/t/5)-10)*rn.N4};function yu(n,e,o){switch(n){case D.Patterns.PATTERN000:return(e+o)%2===0;case D.Patterns.PATTERN001:return e%2===0;case D.Patterns.PATTERN010:return o%3===0;case D.Patterns.PATTERN011:return(e+o)%3===0;case D.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(o/3))%2===0;case D.Patterns.PATTERN101:return e*o%2+e*o%3===0;case D.Patterns.PATTERN110:return(e*o%2+e*o%3)%2===0;case D.Patterns.PATTERN111:return(e*o%3+(e+o)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}D.applyMask=function(e,o){let t=o.size;for(let i=0;i<t;i++)for(let s=0;s<t;s++)o.isReserved(s,i)||o.xor(s,i,yu(e,s,i))};D.getBestMask=function(e,o){let t=Object.keys(D.Patterns).length,i=0,s=1/0;for(let a=0;a<t;a++){o(a),D.applyMask(a,e);let r=D.getPenaltyN1(e)+D.getPenaltyN2(e)+D.getPenaltyN3(e)+D.getPenaltyN4(e);D.applyMask(a,e),r<s&&(s=r,i=a)}return i}});var vt=A(xt=>{var Ve=ko(),Co=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],_o=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];xt.getBlocksCount=function(e,o){switch(o){case Ve.L:return Co[(e-1)*4+0];case Ve.M:return Co[(e-1)*4+1];case Ve.Q:return Co[(e-1)*4+2];case Ve.H:return Co[(e-1)*4+3];default:return}};xt.getTotalCodewordsCount=function(e,o){switch(o){case Ve.L:return _o[(e-1)*4+0];case Ve.M:return _o[(e-1)*4+1];case Ve.Q:return _o[(e-1)*4+2];case Ve.H:return _o[(e-1)*4+3];default:return}}});var pa=A(Ao=>{var zn=new Uint8Array(512),So=new Uint8Array(256);(function(){let e=1;for(let o=0;o<255;o++)zn[o]=e,So[e]=o,e<<=1,e&256&&(e^=285);for(let o=255;o<512;o++)zn[o]=zn[o-255]})();Ao.log=function(e){if(e<1)throw new Error("log("+e+")");return So[e]};Ao.exp=function(e){return zn[e]};Ao.mul=function(e,o){return e===0||o===0?0:zn[So[e]+So[o]]}});var da=A(Kn=>{var bt=pa();Kn.mul=function(e,o){let t=new Uint8Array(e.length+o.length-1);for(let i=0;i<e.length;i++)for(let s=0;s<o.length;s++)t[i+s]^=bt.mul(e[i],o[s]);return t};Kn.mod=function(e,o){let t=new Uint8Array(e);for(;t.length-o.length>=0;){let i=t[0];for(let a=0;a<o.length;a++)t[a]^=bt.mul(o[a],i);let s=0;for(;s<t.length&&t[s]===0;)s++;t=t.slice(s)}return t};Kn.generateECPolynomial=function(e){let o=new Uint8Array([1]);for(let t=0;t<e;t++)o=Kn.mul(o,new Uint8Array([1,bt.exp(t)]));return o}});var ga=A((Nf,fa)=>{var ma=da();function yt(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}yt.prototype.initialize=function(e){this.degree=e,this.genPoly=ma.generateECPolynomial(this.degree)};yt.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let o=new Uint8Array(e.length+this.degree);o.set(e);let t=ma.mod(o,this.genPoly),i=this.degree-t.length;if(i>0){let s=new Uint8Array(this.degree);return s.set(t,i),s}return t};fa.exports=yt});var kt=A(ha=>{ha.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var wt=A($e=>{var xa="[0-9]+",ku="[A-Z $%*+\\-./:]+",Hn="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";Hn=Hn.replace(/u/g,"\\u");var wu="(?:(?![A-Z0-9 $%*+\\-./:]|"+Hn+`)(?:.|[\r
|
|
2
|
-
]))
|
|
3
|
-
Make sure your charset is UTF-8`);
|
|
4
|
-
Suggested mode is:
|
|
1
|
+
var eu=Object.create;var so=Object.defineProperty;var nu=Object.getOwnPropertyDescriptor;var tu=Object.getOwnPropertyNames;var ou=Object.getPrototypeOf,iu=Object.prototype.hasOwnProperty;var z=(n=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(n,{get:(e,t)=>(typeof require<"u"?require:e)[t]}):n)(function(n){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+n+'" is not supported')});var ce=(n,e)=>()=>(n&&(e=n(n=0)),e);var A=(n,e)=>()=>(e||n((e={exports:{}}).exports,e),e.exports),ao=(n,e)=>{for(var t in e)so(n,t,{get:e[t],enumerable:!0})},su=(n,e,t,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of tu(e))!iu.call(n,i)&&i!==t&&so(n,i,{get:()=>e[i],enumerable:!(o=nu(e,i))||o.enumerable});return n};var ro=(n,e,t)=>(t=n!=null?eu(ou(n)):{},su(e||!n||!n.__esModule?so(t,"default",{value:n,enumerable:!0}):t,n));function Q(n){return au?.env?.[n]}function Is(){return Q("HTTPS_PROXY")||Q("https_proxy")||Q("HTTP_PROXY")||Q("http_proxy")}var au,Cn=ce(()=>{au=globalThis.process});import*as Kn from"fs";import*as ht from"path";import{fileURLToPath as ru}from"url";import{dirname as cu}from"path";function uu(){let n=ht.join(Ps,"locales");return Kn.existsSync(n)?n:ht.join(Ps,"i18n","locales")}function pu(){let n=Q("LUNKR_LANG");if(n)return uo(n);let e=Q("LANG")||Q("LC_ALL");if(e){let o=e.split(".")[0].replace("_","-");return uo(o)}let t=Q("LANGUAGE");if(t){let o=t.split(":")[0].replace("_","-");return uo(o)}return xt}function uo(n){let e=n.toLowerCase();return{zh:"zh-CN","zh-cn":"zh-CN",zh_cn:"zh-CN","zh-hans":"zh-CN","zh-hans-cn":"zh-CN","zh-tw":"zh-TW","zh-hant":"zh-TW","zh-hk":"zh-TW",en:"en-US","en-us":"en-US",en_us:"en-US","en-gb":"en-US"}[e]||xt}function Us(n){if(co.has(n))return co.get(n);let e=ht.join(uu(),`${n}.json`);try{if(Kn.existsSync(e)){let t=Kn.readFileSync(e,"utf-8"),o=JSON.parse(t);return co.set(n,o),o}}catch{}return null}function du(){return lo||(lo=pu()),lo}function Ts(n,e){let t=e.split("."),o=n;for(let i of t)if(typeof o=="object"&&o!==null&&i in o)o=o[i];else return;return typeof o=="string"?o:void 0}function Os(n,e){return e?n.replace(/\{\{(\w+)\}\}/g,(t,o)=>String(e[o]??"")):n}function l(n,e){let t=du(),o=Us(t);if(o){let i=Ts(o,n);if(i)return Os(i,e)}if(t!==xt){let i=Us(xt);if(i){let s=Ts(i,n);if(s)return Os(s,e)}}return n}var lu,Ps,co,lo,xt,T=ce(()=>{Cn();lu=ru(import.meta.url),Ps=cu(lu),co=new Map,lo=null,xt="en-US"});import*as ne from"crypto";import*as vt from"os";function mo(n){return n<128?Buffer.from([n]):n<256?Buffer.from([129,n]):Buffer.from([130,n>>8&255,n&255])}function Ds(n){let e=n.length%2===0?n:"0"+n,t=Buffer.from(e,"hex");return t[0]&&t[0]&128&&(t=Buffer.concat([Buffer.from([0]),t])),Buffer.concat([Buffer.from([2]),mo(t.length),t])}function qs(n){return Buffer.concat([Buffer.from([48]),mo(n.length),n])}function yu(n){let e=Buffer.concat([Buffer.from([0]),n]);return Buffer.concat([Buffer.from([3]),mo(e.length),e])}function Ns(n,e){let t=Ds(e),o=Ds(n),i=qs(Buffer.concat([t,o])),s=Buffer.from([48,13,6,9,42,134,72,134,247,13,1,1,1,5,0]);return qs(Buffer.concat([s,yu(i)]))}function fo(n,e,t){try{let o=Ns(e,t),i=ne.createPublicKey({key:o,format:"der",type:"spki"});return ne.publicEncrypt({key:i,padding:ne.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}catch{return n}}function go(n,e){let t=Buffer.from(e,"base64"),o=ne.createPublicKey({key:t,format:"der",type:"spki"});return ne.publicEncrypt({key:o,padding:ne.constants.RSA_PKCS1_PADDING},Buffer.from(n,"utf8")).toString("base64")}var Ge,_n,bt=ce(()=>{Ge=class extends Error{constructor(e){super(e),this.name="EncryptionError"}},_n=class{key=null;deviceUuid=null;deviceName=null;username=null;setDeviceUuid(e){this.deviceUuid=e,this.key=null}setDeviceName(e){this.deviceName=e,this.key=null}setUsername(e){this.username=e,this.key=null}getKey(){if(!this.key){let e=this.deviceUuid||"",t=this.deviceName||vt.hostname(),o=this.username||vt.userInfo().username;if(!e)throw new Ge("device_uuid not set, cannot generate encryption key");let i=`lunkr-mcp-key-${e}-${t}-${o}`;this.key=ne.createHash("sha256").update(i).digest()}return this.key}encrypt(e){if(!e)return"";let t=this.getKey(),o=ne.randomBytes(12),i=ne.createCipheriv("aes-256-gcm",t,o),s=Buffer.concat([i.update(e,"utf8"),i.final()]),a=i.getAuthTag();return Buffer.concat([o,s,a]).toString("base64")}decrypt(e){if(!e)return"";let t=this.getKey(),o=Buffer.from(e,"base64");if(o.length<28)throw new Ge("Ciphertext too short");let i=o.subarray(0,12),s=o.subarray(12,-16),a=o.subarray(-16),r=ne.createDecipheriv("aes-256-gcm",t,i);r.setAuthTag(a);try{return Buffer.concat([r.update(s),r.final()]).toString("utf8")}catch{throw new Ge("Decryption failed, config file may be corrupted or key changed")}}}});var Hs={};ao(Hs,{DEFAULT_BOT_NAME:()=>Sn,DEFAULT_CONFIG_DIR:()=>xo,DEFAULT_CONFIG_FILE:()=>vo,addOrUpdateAccount:()=>Le,ensureConfig:()=>Ks,ensureConfigDir:()=>bo,getAccountByEmail:()=>X,getAccountById:()=>ko,getAgentAccounts:()=>ze,getBotName:()=>se,getConfigDir:()=>An,getConfigPath:()=>le,getDefaultConfig:()=>yt,getFirstAccount:()=>sn,getSenderName:()=>Gs,getStandardAccount:()=>K,loadConfig:()=>R,migrateFromOldConfig:()=>Co,removeAccountByEmail:()=>wt,removeAccountSession:()=>Bs,saveConfig:()=>$,setBotName:()=>Ct,setSenderName:()=>zs,updateAccountSession:()=>wo});import*as ge from"fs";import*as kt from"path";import*as Re from"os";function An(){return kt.join(Re.homedir(),xo)}function le(){return kt.join(An(),vo)}function bo(){let n=An();ge.existsSync(n)||ge.mkdirSync(n,{recursive:!0})}function ku(){let n=Re.hostname(),e=Re.platform(),t=Re.release(),o="Unknown",i="Unknown";return e==="darwin"?(o=`macOS ${t}`,i="mac"):e==="win32"?(o=`Windows ${t}`,i="pc"):e==="linux"&&(o=`Linux ${t}`,i="pc"),{device_uuid:yo(),device_os:o,device_model:i,device_name:n}}function yo(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{let e=Math.random()*16|0;return(n==="x"?e:e&3|8).toString(16)})}function yt(){return{...ku(),bot_name:Sn,accounts:[]}}function Ms(n){let e=new _n;return e.setDeviceUuid(n.device_uuid),e.setDeviceName(n.device_name),e}function ho(n){if(!n)return!1;try{return Buffer.from(n,"base64").length>=28}catch{return!1}}function wu(n,e){let t={...n};return t.session&&(t.session={...t.session,sid:t.session.sid?e.encrypt(t.session.sid):t.session.sid,cookie:t.session.cookie?e.encrypt(t.session.cookie):t.session.cookie}),t.apiToken&&(t.apiToken=e.encrypt(t.apiToken)),t}function Cu(n,e){let t={...n};if(t.session){let o={...t.session};try{o.sid&&ho(o.sid)&&(o.sid=e.decrypt(o.sid))}catch{o.sid=""}try{o.cookie&&ho(o.cookie)&&(o.cookie=e.decrypt(o.cookie))}catch{o.cookie=""}t.session=o}try{t.apiToken&&ho(t.apiToken)&&(t.apiToken=e.decrypt(t.apiToken))}catch{t.apiToken=void 0}return t}function R(){let n=le();if(!ge.existsSync(n))return yt();try{let e=ge.readFileSync(n,"utf-8"),t=JSON.parse(e);if(t.device_uuid||(t.device_uuid=yo()),t.bot_name||(t.bot_name=Sn),t.accounts||(t.accounts=[]),t.accounts?.length){let o=Ms(t);try{t.accounts=t.accounts.map(i=>Cu(i,o))}catch(i){i instanceof Ge&&console.warn("Warning: Failed to decrypt config, values may be unencrypted or from different machine/user")}}return t}catch{return yt()}}function $(n){bo();let e=le(),t={...n,accounts:n.accounts?.map(o=>{let i=Ms(n);return wu(o,i)})};ge.writeFileSync(e,JSON.stringify(t,null,2),"utf-8")}function sn(n){let e=K(n);if(e)return e;let t=n||R();return t.accounts?.length&&(t.accounts.find(o=>o.enabled&&o.session?.sid)||t.accounts.find(o=>!!o.session?.sid))||null}function K(n){let e=n||R();if(!e.accounts?.length)return null;let t=i=>!i.role||i.role==="standard"||i.role==="standard+agent";return e.accounts.find(i=>i.enabled&&i.session?.sid&&t(i))||e.accounts.find(i=>i.session?.sid&&t(i))||null}function ze(n){let e=n||R();return e.accounts?.length?e.accounts.filter(t=>t.role==="agent"):[]}function X(n,e){return(e||R()).accounts?.find(o=>o.email===n)||null}function Le(n,e){let t=e||R();t.accounts||(t.accounts=[]);let o=t.accounts.findIndex(i=>i.accountId===n.accountId||i.email===n.email);o>=0?t.accounts[o]=n:t.accounts.push(n),$(t)}function wt(n,e){let t=e||R();if(!t.accounts)return!1;let o=t.accounts.findIndex(i=>i.email===n);return o<0?!1:(t.accounts.splice(o,1),$(t),!0)}function ko(n,e){return(e||R()).accounts?.find(o=>o.accountId===n)||null}function wo(n,e,t){let o=t||R();o.accounts||(o.accounts=[]);let i=o.accounts.findIndex(s=>s.accountId===n);return i>=0?o.accounts[i]={...o.accounts[i],session:{...o.accounts[i].session,...e}}:o.accounts.push({accountId:n,email:e.selfUid||"",enabled:!0,session:e}),o}function Bs(n,e){let t=e||R();if(t.accounts){let o=t.accounts.findIndex(i=>i.accountId===n);o>=0&&(t.accounts[o].session=void 0,t.accounts[o].enabled=!1)}return t}function se(n){return(n||R()).bot_name||Sn}function Ct(n,e){let t=e||R();return t.bot_name=n,t}function Gs(n,e){let t=e||R();return(n?ko(n,t):sn(t))?.session?.senderName||null}function zs(n,e,t){let o=t||R(),i=e||sn(o)?.accountId;return i?wo(i,{senderName:n},o):o}function Co(){let n=kt.join(Re.homedir(),".lunkr-mcp","config.json"),e=le();if(ge.existsSync(n)&&!ge.existsSync(e))try{let t=ge.readFileSync(n,"utf-8"),o=JSON.parse(t),i={device_uuid:o.lunkr_config?.device_uuid||o.device_uuid||yo(),device_os:o.lunkr_config?.device_os||o.device_os||"Unknown",device_model:o.lunkr_config?.device_model||o.device_model||"Unknown",device_name:o.lunkr_config?.device_name||o.device_name||Re.hostname(),bot_name:o.lunkr_config?.bot_name||o.bot_name||Sn,accounts:[]};if(Array.isArray(o.accounts))for(let s of o.accounts)s.session&&i.accounts?.push({accountId:s.accountId||s.session.selfUid||"default",email:s.email||"",enabled:s.enabled!==!1,session:{sid:s.session.sid,cookie:s.session.cookie||"",baseUrl:s.session.baseUrl||"https://lunkr.coremail.cn",apiPath:s.session.apiPath||"/lunkr/s/json",selfUid:s.session.selfUid||s.session.self_uid||"",senderName:s.session.senderName||s.session.sender_name||s.email?.split("@")[0]}});else o.lunkr_config?.lunkr_session_id&&i.accounts?.push({accountId:o.lunkr_config.self_uid||"default",email:o.lunkr_config.username||"",enabled:!0,session:{sid:o.lunkr_config.lunkr_session_id,cookie:o.lunkr_config.lunkr_cookie||"",baseUrl:"https://lunkr.coremail.cn",apiPath:"/lunkr/s/json",selfUid:o.lunkr_config.self_uid||"",senderName:o.lunkr_config.sender_name||o.lunkr_config.username}});return $(i),console.log(`Migrated config from ${n} to ${e}`),!0}catch(t){return console.error("Failed to migrate config:",t),!1}return!1}function Ks(){return Co(),R()}var xo,vo,Sn,te=ce(()=>{bt();xo=".lunkr",vo="config.json",Sn="Bot"});var Zs=A((Df,Iu)=>{Iu.exports={"application/1d-interleaved-parityfec":{source:"iana"},"application/3gpdash-qoe-report+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/3gpp-ims+xml":{source:"iana",compressible:!0},"application/3gpphal+json":{source:"iana",compressible:!0},"application/3gpphalforms+json":{source:"iana",compressible:!0},"application/a2l":{source:"iana"},"application/ace+cbor":{source:"iana"},"application/ace+json":{source:"iana",compressible:!0},"application/ace-groupcomm+cbor":{source:"iana"},"application/ace-trl+cbor":{source:"iana"},"application/activemessage":{source:"iana"},"application/activity+json":{source:"iana",compressible:!0},"application/aif+cbor":{source:"iana"},"application/aif+json":{source:"iana",compressible:!0},"application/alto-cdni+json":{source:"iana",compressible:!0},"application/alto-cdnifilter+json":{source:"iana",compressible:!0},"application/alto-costmap+json":{source:"iana",compressible:!0},"application/alto-costmapfilter+json":{source:"iana",compressible:!0},"application/alto-directory+json":{source:"iana",compressible:!0},"application/alto-endpointcost+json":{source:"iana",compressible:!0},"application/alto-endpointcostparams+json":{source:"iana",compressible:!0},"application/alto-endpointprop+json":{source:"iana",compressible:!0},"application/alto-endpointpropparams+json":{source:"iana",compressible:!0},"application/alto-error+json":{source:"iana",compressible:!0},"application/alto-networkmap+json":{source:"iana",compressible:!0},"application/alto-networkmapfilter+json":{source:"iana",compressible:!0},"application/alto-propmap+json":{source:"iana",compressible:!0},"application/alto-propmapparams+json":{source:"iana",compressible:!0},"application/alto-tips+json":{source:"iana",compressible:!0},"application/alto-tipsparams+json":{source:"iana",compressible:!0},"application/alto-updatestreamcontrol+json":{source:"iana",compressible:!0},"application/alto-updatestreamparams+json":{source:"iana",compressible:!0},"application/aml":{source:"iana"},"application/andrew-inset":{source:"iana",extensions:["ez"]},"application/appinstaller":{compressible:!1,extensions:["appinstaller"]},"application/applefile":{source:"iana"},"application/applixware":{source:"apache",extensions:["aw"]},"application/appx":{compressible:!1,extensions:["appx"]},"application/appxbundle":{compressible:!1,extensions:["appxbundle"]},"application/at+jwt":{source:"iana"},"application/atf":{source:"iana"},"application/atfx":{source:"iana"},"application/atom+xml":{source:"iana",compressible:!0,extensions:["atom"]},"application/atomcat+xml":{source:"iana",compressible:!0,extensions:["atomcat"]},"application/atomdeleted+xml":{source:"iana",compressible:!0,extensions:["atomdeleted"]},"application/atomicmail":{source:"iana"},"application/atomsvc+xml":{source:"iana",compressible:!0,extensions:["atomsvc"]},"application/atsc-dwd+xml":{source:"iana",compressible:!0,extensions:["dwd"]},"application/atsc-dynamic-event-message":{source:"iana"},"application/atsc-held+xml":{source:"iana",compressible:!0,extensions:["held"]},"application/atsc-rdt+json":{source:"iana",compressible:!0},"application/atsc-rsat+xml":{source:"iana",compressible:!0,extensions:["rsat"]},"application/atxml":{source:"iana"},"application/auth-policy+xml":{source:"iana",compressible:!0},"application/automationml-aml+xml":{source:"iana",compressible:!0,extensions:["aml"]},"application/automationml-amlx+zip":{source:"iana",compressible:!1,extensions:["amlx"]},"application/bacnet-xdd+zip":{source:"iana",compressible:!1},"application/batch-smtp":{source:"iana"},"application/bdoc":{compressible:!1,extensions:["bdoc"]},"application/beep+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/bufr":{source:"iana"},"application/c2pa":{source:"iana"},"application/calendar+json":{source:"iana",compressible:!0},"application/calendar+xml":{source:"iana",compressible:!0,extensions:["xcs"]},"application/call-completion":{source:"iana"},"application/cals-1840":{source:"iana"},"application/captive+json":{source:"iana",compressible:!0},"application/cbor":{source:"iana"},"application/cbor-seq":{source:"iana"},"application/cccex":{source:"iana"},"application/ccmp+xml":{source:"iana",compressible:!0},"application/ccxml+xml":{source:"iana",compressible:!0,extensions:["ccxml"]},"application/cda+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/cdfx+xml":{source:"iana",compressible:!0,extensions:["cdfx"]},"application/cdmi-capability":{source:"iana",extensions:["cdmia"]},"application/cdmi-container":{source:"iana",extensions:["cdmic"]},"application/cdmi-domain":{source:"iana",extensions:["cdmid"]},"application/cdmi-object":{source:"iana",extensions:["cdmio"]},"application/cdmi-queue":{source:"iana",extensions:["cdmiq"]},"application/cdni":{source:"iana"},"application/ce+cbor":{source:"iana"},"application/cea":{source:"iana"},"application/cea-2018+xml":{source:"iana",compressible:!0},"application/cellml+xml":{source:"iana",compressible:!0},"application/cfw":{source:"iana"},"application/cid-edhoc+cbor-seq":{source:"iana"},"application/city+json":{source:"iana",compressible:!0},"application/city+json-seq":{source:"iana"},"application/clr":{source:"iana"},"application/clue+xml":{source:"iana",compressible:!0},"application/clue_info+xml":{source:"iana",compressible:!0},"application/cms":{source:"iana"},"application/cnrp+xml":{source:"iana",compressible:!0},"application/coap-eap":{source:"iana"},"application/coap-group+json":{source:"iana",compressible:!0},"application/coap-payload":{source:"iana"},"application/commonground":{source:"iana"},"application/concise-problem-details+cbor":{source:"iana"},"application/conference-info+xml":{source:"iana",compressible:!0},"application/cose":{source:"iana"},"application/cose-key":{source:"iana"},"application/cose-key-set":{source:"iana"},"application/cose-x509":{source:"iana"},"application/cpl+xml":{source:"iana",compressible:!0,extensions:["cpl"]},"application/csrattrs":{source:"iana"},"application/csta+xml":{source:"iana",compressible:!0},"application/cstadata+xml":{source:"iana",compressible:!0},"application/csvm+json":{source:"iana",compressible:!0},"application/cu-seeme":{source:"apache",extensions:["cu"]},"application/cwl":{source:"iana",extensions:["cwl"]},"application/cwl+json":{source:"iana",compressible:!0},"application/cwl+yaml":{source:"iana"},"application/cwt":{source:"iana"},"application/cybercash":{source:"iana"},"application/dart":{compressible:!0},"application/dash+xml":{source:"iana",compressible:!0,extensions:["mpd"]},"application/dash-patch+xml":{source:"iana",compressible:!0,extensions:["mpp"]},"application/dashdelta":{source:"iana"},"application/davmount+xml":{source:"iana",compressible:!0,extensions:["davmount"]},"application/dca-rft":{source:"iana"},"application/dcd":{source:"iana"},"application/dec-dx":{source:"iana"},"application/dialog-info+xml":{source:"iana",compressible:!0},"application/dicom":{source:"iana",extensions:["dcm"]},"application/dicom+json":{source:"iana",compressible:!0},"application/dicom+xml":{source:"iana",compressible:!0},"application/dii":{source:"iana"},"application/dit":{source:"iana"},"application/dns":{source:"iana"},"application/dns+json":{source:"iana",compressible:!0},"application/dns-message":{source:"iana"},"application/docbook+xml":{source:"apache",compressible:!0,extensions:["dbk"]},"application/dots+cbor":{source:"iana"},"application/dpop+jwt":{source:"iana"},"application/dskpp+xml":{source:"iana",compressible:!0},"application/dssc+der":{source:"iana",extensions:["dssc"]},"application/dssc+xml":{source:"iana",compressible:!0,extensions:["xdssc"]},"application/dvcs":{source:"iana"},"application/eat+cwt":{source:"iana"},"application/eat+jwt":{source:"iana"},"application/eat-bun+cbor":{source:"iana"},"application/eat-bun+json":{source:"iana",compressible:!0},"application/eat-ucs+cbor":{source:"iana"},"application/eat-ucs+json":{source:"iana",compressible:!0},"application/ecmascript":{source:"apache",compressible:!0,extensions:["ecma"]},"application/edhoc+cbor-seq":{source:"iana"},"application/edi-consent":{source:"iana"},"application/edi-x12":{source:"iana",compressible:!1},"application/edifact":{source:"iana",compressible:!1},"application/efi":{source:"iana"},"application/elm+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/elm+xml":{source:"iana",compressible:!0},"application/emergencycalldata.cap+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/emergencycalldata.comment+xml":{source:"iana",compressible:!0},"application/emergencycalldata.control+xml":{source:"iana",compressible:!0},"application/emergencycalldata.deviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.ecall.msd":{source:"iana"},"application/emergencycalldata.legacyesn+json":{source:"iana",compressible:!0},"application/emergencycalldata.providerinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.serviceinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.subscriberinfo+xml":{source:"iana",compressible:!0},"application/emergencycalldata.veds+xml":{source:"iana",compressible:!0},"application/emma+xml":{source:"iana",compressible:!0,extensions:["emma"]},"application/emotionml+xml":{source:"iana",compressible:!0,extensions:["emotionml"]},"application/encaprtp":{source:"iana"},"application/entity-statement+jwt":{source:"iana"},"application/epp+xml":{source:"iana",compressible:!0},"application/epub+zip":{source:"iana",compressible:!1,extensions:["epub"]},"application/eshop":{source:"iana"},"application/exi":{source:"iana",extensions:["exi"]},"application/expect-ct-report+json":{source:"iana",compressible:!0},"application/express":{source:"iana",extensions:["exp"]},"application/fastinfoset":{source:"iana"},"application/fastsoap":{source:"iana"},"application/fdf":{source:"iana",extensions:["fdf"]},"application/fdt+xml":{source:"iana",compressible:!0,extensions:["fdt"]},"application/fhir+json":{source:"iana",charset:"UTF-8",compressible:!0},"application/fhir+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/fido.trusted-apps+json":{compressible:!0},"application/fits":{source:"iana"},"application/flexfec":{source:"iana"},"application/font-sfnt":{source:"iana"},"application/font-tdpfr":{source:"iana",extensions:["pfr"]},"application/font-woff":{source:"iana",compressible:!1},"application/framework-attributes+xml":{source:"iana",compressible:!0},"application/geo+json":{source:"iana",compressible:!0,extensions:["geojson"]},"application/geo+json-seq":{source:"iana"},"application/geopackage+sqlite3":{source:"iana"},"application/geopose+json":{source:"iana",compressible:!0},"application/geoxacml+json":{source:"iana",compressible:!0},"application/geoxacml+xml":{source:"iana",compressible:!0},"application/gltf-buffer":{source:"iana"},"application/gml+xml":{source:"iana",compressible:!0,extensions:["gml"]},"application/gnap-binding-jws":{source:"iana"},"application/gnap-binding-jwsd":{source:"iana"},"application/gnap-binding-rotation-jws":{source:"iana"},"application/gnap-binding-rotation-jwsd":{source:"iana"},"application/gpx+xml":{source:"apache",compressible:!0,extensions:["gpx"]},"application/grib":{source:"iana"},"application/gxf":{source:"apache",extensions:["gxf"]},"application/gzip":{source:"iana",compressible:!1,extensions:["gz"]},"application/h224":{source:"iana"},"application/held+xml":{source:"iana",compressible:!0},"application/hjson":{extensions:["hjson"]},"application/hl7v2+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/http":{source:"iana"},"application/hyperstudio":{source:"iana",extensions:["stk"]},"application/ibe-key-request+xml":{source:"iana",compressible:!0},"application/ibe-pkg-reply+xml":{source:"iana",compressible:!0},"application/ibe-pp-data":{source:"iana"},"application/iges":{source:"iana"},"application/im-iscomposing+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/index":{source:"iana"},"application/index.cmd":{source:"iana"},"application/index.obj":{source:"iana"},"application/index.response":{source:"iana"},"application/index.vnd":{source:"iana"},"application/inkml+xml":{source:"iana",compressible:!0,extensions:["ink","inkml"]},"application/iotp":{source:"iana"},"application/ipfix":{source:"iana",extensions:["ipfix"]},"application/ipp":{source:"iana"},"application/isup":{source:"iana"},"application/its+xml":{source:"iana",compressible:!0,extensions:["its"]},"application/java-archive":{source:"iana",compressible:!1,extensions:["jar","war","ear"]},"application/java-serialized-object":{source:"apache",compressible:!1,extensions:["ser"]},"application/java-vm":{source:"apache",compressible:!1,extensions:["class"]},"application/javascript":{source:"apache",charset:"UTF-8",compressible:!0,extensions:["js"]},"application/jf2feed+json":{source:"iana",compressible:!0},"application/jose":{source:"iana"},"application/jose+json":{source:"iana",compressible:!0},"application/jrd+json":{source:"iana",compressible:!0},"application/jscalendar+json":{source:"iana",compressible:!0},"application/jscontact+json":{source:"iana",compressible:!0},"application/json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["json","map"]},"application/json-patch+json":{source:"iana",compressible:!0},"application/json-seq":{source:"iana"},"application/json5":{extensions:["json5"]},"application/jsonml+json":{source:"apache",compressible:!0,extensions:["jsonml"]},"application/jsonpath":{source:"iana"},"application/jwk+json":{source:"iana",compressible:!0},"application/jwk-set+json":{source:"iana",compressible:!0},"application/jwk-set+jwt":{source:"iana"},"application/jwt":{source:"iana"},"application/kpml-request+xml":{source:"iana",compressible:!0},"application/kpml-response+xml":{source:"iana",compressible:!0},"application/ld+json":{source:"iana",compressible:!0,extensions:["jsonld"]},"application/lgr+xml":{source:"iana",compressible:!0,extensions:["lgr"]},"application/link-format":{source:"iana"},"application/linkset":{source:"iana"},"application/linkset+json":{source:"iana",compressible:!0},"application/load-control+xml":{source:"iana",compressible:!0},"application/logout+jwt":{source:"iana"},"application/lost+xml":{source:"iana",compressible:!0,extensions:["lostxml"]},"application/lostsync+xml":{source:"iana",compressible:!0},"application/lpf+zip":{source:"iana",compressible:!1},"application/lxf":{source:"iana"},"application/mac-binhex40":{source:"iana",extensions:["hqx"]},"application/mac-compactpro":{source:"apache",extensions:["cpt"]},"application/macwriteii":{source:"iana"},"application/mads+xml":{source:"iana",compressible:!0,extensions:["mads"]},"application/manifest+json":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["webmanifest"]},"application/marc":{source:"iana",extensions:["mrc"]},"application/marcxml+xml":{source:"iana",compressible:!0,extensions:["mrcx"]},"application/mathematica":{source:"iana",extensions:["ma","nb","mb"]},"application/mathml+xml":{source:"iana",compressible:!0,extensions:["mathml"]},"application/mathml-content+xml":{source:"iana",compressible:!0},"application/mathml-presentation+xml":{source:"iana",compressible:!0},"application/mbms-associated-procedure-description+xml":{source:"iana",compressible:!0},"application/mbms-deregister+xml":{source:"iana",compressible:!0},"application/mbms-envelope+xml":{source:"iana",compressible:!0},"application/mbms-msk+xml":{source:"iana",compressible:!0},"application/mbms-msk-response+xml":{source:"iana",compressible:!0},"application/mbms-protection-description+xml":{source:"iana",compressible:!0},"application/mbms-reception-report+xml":{source:"iana",compressible:!0},"application/mbms-register+xml":{source:"iana",compressible:!0},"application/mbms-register-response+xml":{source:"iana",compressible:!0},"application/mbms-schedule+xml":{source:"iana",compressible:!0},"application/mbms-user-service-description+xml":{source:"iana",compressible:!0},"application/mbox":{source:"iana",extensions:["mbox"]},"application/media-policy-dataset+xml":{source:"iana",compressible:!0,extensions:["mpf"]},"application/media_control+xml":{source:"iana",compressible:!0},"application/mediaservercontrol+xml":{source:"iana",compressible:!0,extensions:["mscml"]},"application/merge-patch+json":{source:"iana",compressible:!0},"application/metalink+xml":{source:"apache",compressible:!0,extensions:["metalink"]},"application/metalink4+xml":{source:"iana",compressible:!0,extensions:["meta4"]},"application/mets+xml":{source:"iana",compressible:!0,extensions:["mets"]},"application/mf4":{source:"iana"},"application/mikey":{source:"iana"},"application/mipc":{source:"iana"},"application/missing-blocks+cbor-seq":{source:"iana"},"application/mmt-aei+xml":{source:"iana",compressible:!0,extensions:["maei"]},"application/mmt-usd+xml":{source:"iana",compressible:!0,extensions:["musd"]},"application/mods+xml":{source:"iana",compressible:!0,extensions:["mods"]},"application/moss-keys":{source:"iana"},"application/moss-signature":{source:"iana"},"application/mosskey-data":{source:"iana"},"application/mosskey-request":{source:"iana"},"application/mp21":{source:"iana",extensions:["m21","mp21"]},"application/mp4":{source:"iana",extensions:["mp4","mpg4","mp4s","m4p"]},"application/mpeg4-generic":{source:"iana"},"application/mpeg4-iod":{source:"iana"},"application/mpeg4-iod-xmt":{source:"iana"},"application/mrb-consumer+xml":{source:"iana",compressible:!0},"application/mrb-publish+xml":{source:"iana",compressible:!0},"application/msc-ivr+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msc-mixer+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/msix":{compressible:!1,extensions:["msix"]},"application/msixbundle":{compressible:!1,extensions:["msixbundle"]},"application/msword":{source:"iana",compressible:!1,extensions:["doc","dot"]},"application/mud+json":{source:"iana",compressible:!0},"application/multipart-core":{source:"iana"},"application/mxf":{source:"iana",extensions:["mxf"]},"application/n-quads":{source:"iana",extensions:["nq"]},"application/n-triples":{source:"iana",extensions:["nt"]},"application/nasdata":{source:"iana"},"application/news-checkgroups":{source:"iana",charset:"US-ASCII"},"application/news-groupinfo":{source:"iana",charset:"US-ASCII"},"application/news-transmission":{source:"iana"},"application/nlsml+xml":{source:"iana",compressible:!0},"application/node":{source:"iana",extensions:["cjs"]},"application/nss":{source:"iana"},"application/oauth-authz-req+jwt":{source:"iana"},"application/oblivious-dns-message":{source:"iana"},"application/ocsp-request":{source:"iana"},"application/ocsp-response":{source:"iana"},"application/octet-stream":{source:"iana",compressible:!0,extensions:["bin","dms","lrf","mar","so","dist","distz","pkg","bpk","dump","elc","deploy","exe","dll","deb","dmg","iso","img","msi","msp","msm","buffer"]},"application/oda":{source:"iana",extensions:["oda"]},"application/odm+xml":{source:"iana",compressible:!0},"application/odx":{source:"iana"},"application/oebps-package+xml":{source:"iana",compressible:!0,extensions:["opf"]},"application/ogg":{source:"iana",compressible:!1,extensions:["ogx"]},"application/ohttp-keys":{source:"iana"},"application/omdoc+xml":{source:"apache",compressible:!0,extensions:["omdoc"]},"application/onenote":{source:"apache",extensions:["onetoc","onetoc2","onetmp","onepkg","one","onea"]},"application/opc-nodeset+xml":{source:"iana",compressible:!0},"application/oscore":{source:"iana"},"application/oxps":{source:"iana",extensions:["oxps"]},"application/p21":{source:"iana"},"application/p21+zip":{source:"iana",compressible:!1},"application/p2p-overlay+xml":{source:"iana",compressible:!0,extensions:["relo"]},"application/parityfec":{source:"iana"},"application/passport":{source:"iana"},"application/patch-ops-error+xml":{source:"iana",compressible:!0,extensions:["xer"]},"application/pdf":{source:"iana",compressible:!1,extensions:["pdf"]},"application/pdx":{source:"iana"},"application/pem-certificate-chain":{source:"iana"},"application/pgp-encrypted":{source:"iana",compressible:!1,extensions:["pgp"]},"application/pgp-keys":{source:"iana",extensions:["asc"]},"application/pgp-signature":{source:"iana",extensions:["sig","asc"]},"application/pics-rules":{source:"apache",extensions:["prf"]},"application/pidf+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pidf-diff+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/pkcs10":{source:"iana",extensions:["p10"]},"application/pkcs12":{source:"iana"},"application/pkcs7-mime":{source:"iana",extensions:["p7m","p7c"]},"application/pkcs7-signature":{source:"iana",extensions:["p7s"]},"application/pkcs8":{source:"iana",extensions:["p8"]},"application/pkcs8-encrypted":{source:"iana"},"application/pkix-attr-cert":{source:"iana",extensions:["ac"]},"application/pkix-cert":{source:"iana",extensions:["cer"]},"application/pkix-crl":{source:"iana",extensions:["crl"]},"application/pkix-pkipath":{source:"iana",extensions:["pkipath"]},"application/pkixcmp":{source:"iana",extensions:["pki"]},"application/pls+xml":{source:"iana",compressible:!0,extensions:["pls"]},"application/poc-settings+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/postscript":{source:"iana",compressible:!0,extensions:["ai","eps","ps"]},"application/ppsp-tracker+json":{source:"iana",compressible:!0},"application/private-token-issuer-directory":{source:"iana"},"application/private-token-request":{source:"iana"},"application/private-token-response":{source:"iana"},"application/problem+json":{source:"iana",compressible:!0},"application/problem+xml":{source:"iana",compressible:!0},"application/provenance+xml":{source:"iana",compressible:!0,extensions:["provx"]},"application/provided-claims+jwt":{source:"iana"},"application/prs.alvestrand.titrax-sheet":{source:"iana"},"application/prs.cww":{source:"iana",extensions:["cww"]},"application/prs.cyn":{source:"iana",charset:"7-BIT"},"application/prs.hpub+zip":{source:"iana",compressible:!1},"application/prs.implied-document+xml":{source:"iana",compressible:!0},"application/prs.implied-executable":{source:"iana"},"application/prs.implied-object+json":{source:"iana",compressible:!0},"application/prs.implied-object+json-seq":{source:"iana"},"application/prs.implied-object+yaml":{source:"iana"},"application/prs.implied-structure":{source:"iana"},"application/prs.mayfile":{source:"iana"},"application/prs.nprend":{source:"iana"},"application/prs.plucker":{source:"iana"},"application/prs.rdf-xml-crypt":{source:"iana"},"application/prs.vcfbzip2":{source:"iana"},"application/prs.xsf+xml":{source:"iana",compressible:!0,extensions:["xsf"]},"application/pskc+xml":{source:"iana",compressible:!0,extensions:["pskcxml"]},"application/pvd+json":{source:"iana",compressible:!0},"application/qsig":{source:"iana"},"application/raml+yaml":{compressible:!0,extensions:["raml"]},"application/raptorfec":{source:"iana"},"application/rdap+json":{source:"iana",compressible:!0},"application/rdf+xml":{source:"iana",compressible:!0,extensions:["rdf","owl"]},"application/reginfo+xml":{source:"iana",compressible:!0,extensions:["rif"]},"application/relax-ng-compact-syntax":{source:"iana",extensions:["rnc"]},"application/remote-printing":{source:"apache"},"application/reputon+json":{source:"iana",compressible:!0},"application/resolve-response+jwt":{source:"iana"},"application/resource-lists+xml":{source:"iana",compressible:!0,extensions:["rl"]},"application/resource-lists-diff+xml":{source:"iana",compressible:!0,extensions:["rld"]},"application/rfc+xml":{source:"iana",compressible:!0},"application/riscos":{source:"iana"},"application/rlmi+xml":{source:"iana",compressible:!0},"application/rls-services+xml":{source:"iana",compressible:!0,extensions:["rs"]},"application/route-apd+xml":{source:"iana",compressible:!0,extensions:["rapd"]},"application/route-s-tsid+xml":{source:"iana",compressible:!0,extensions:["sls"]},"application/route-usd+xml":{source:"iana",compressible:!0,extensions:["rusd"]},"application/rpki-checklist":{source:"iana"},"application/rpki-ghostbusters":{source:"iana",extensions:["gbr"]},"application/rpki-manifest":{source:"iana",extensions:["mft"]},"application/rpki-publication":{source:"iana"},"application/rpki-roa":{source:"iana",extensions:["roa"]},"application/rpki-signed-tal":{source:"iana"},"application/rpki-updown":{source:"iana"},"application/rsd+xml":{source:"apache",compressible:!0,extensions:["rsd"]},"application/rss+xml":{source:"apache",compressible:!0,extensions:["rss"]},"application/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"application/rtploopback":{source:"iana"},"application/rtx":{source:"iana"},"application/samlassertion+xml":{source:"iana",compressible:!0},"application/samlmetadata+xml":{source:"iana",compressible:!0},"application/sarif+json":{source:"iana",compressible:!0},"application/sarif-external-properties+json":{source:"iana",compressible:!0},"application/sbe":{source:"iana"},"application/sbml+xml":{source:"iana",compressible:!0,extensions:["sbml"]},"application/scaip+xml":{source:"iana",compressible:!0},"application/scim+json":{source:"iana",compressible:!0},"application/scvp-cv-request":{source:"iana",extensions:["scq"]},"application/scvp-cv-response":{source:"iana",extensions:["scs"]},"application/scvp-vp-request":{source:"iana",extensions:["spq"]},"application/scvp-vp-response":{source:"iana",extensions:["spp"]},"application/sdp":{source:"iana",extensions:["sdp"]},"application/secevent+jwt":{source:"iana"},"application/senml+cbor":{source:"iana"},"application/senml+json":{source:"iana",compressible:!0},"application/senml+xml":{source:"iana",compressible:!0,extensions:["senmlx"]},"application/senml-etch+cbor":{source:"iana"},"application/senml-etch+json":{source:"iana",compressible:!0},"application/senml-exi":{source:"iana"},"application/sensml+cbor":{source:"iana"},"application/sensml+json":{source:"iana",compressible:!0},"application/sensml+xml":{source:"iana",compressible:!0,extensions:["sensmlx"]},"application/sensml-exi":{source:"iana"},"application/sep+xml":{source:"iana",compressible:!0},"application/sep-exi":{source:"iana"},"application/session-info":{source:"iana"},"application/set-payment":{source:"iana"},"application/set-payment-initiation":{source:"iana",extensions:["setpay"]},"application/set-registration":{source:"iana"},"application/set-registration-initiation":{source:"iana",extensions:["setreg"]},"application/sgml":{source:"iana"},"application/sgml-open-catalog":{source:"iana"},"application/shf+xml":{source:"iana",compressible:!0,extensions:["shf"]},"application/sieve":{source:"iana",extensions:["siv","sieve"]},"application/simple-filter+xml":{source:"iana",compressible:!0},"application/simple-message-summary":{source:"iana"},"application/simplesymbolcontainer":{source:"iana"},"application/sipc":{source:"iana"},"application/slate":{source:"iana"},"application/smil":{source:"apache"},"application/smil+xml":{source:"iana",compressible:!0,extensions:["smi","smil"]},"application/smpte336m":{source:"iana"},"application/soap+fastinfoset":{source:"iana"},"application/soap+xml":{source:"iana",compressible:!0},"application/sparql-query":{source:"iana",extensions:["rq"]},"application/sparql-results+xml":{source:"iana",compressible:!0,extensions:["srx"]},"application/spdx+json":{source:"iana",compressible:!0},"application/spirits-event+xml":{source:"iana",compressible:!0},"application/sql":{source:"iana",extensions:["sql"]},"application/srgs":{source:"iana",extensions:["gram"]},"application/srgs+xml":{source:"iana",compressible:!0,extensions:["grxml"]},"application/sru+xml":{source:"iana",compressible:!0,extensions:["sru"]},"application/ssdl+xml":{source:"apache",compressible:!0,extensions:["ssdl"]},"application/sslkeylogfile":{source:"iana"},"application/ssml+xml":{source:"iana",compressible:!0,extensions:["ssml"]},"application/st2110-41":{source:"iana"},"application/stix+json":{source:"iana",compressible:!0},"application/stratum":{source:"iana"},"application/swid+cbor":{source:"iana"},"application/swid+xml":{source:"iana",compressible:!0,extensions:["swidtag"]},"application/tamp-apex-update":{source:"iana"},"application/tamp-apex-update-confirm":{source:"iana"},"application/tamp-community-update":{source:"iana"},"application/tamp-community-update-confirm":{source:"iana"},"application/tamp-error":{source:"iana"},"application/tamp-sequence-adjust":{source:"iana"},"application/tamp-sequence-adjust-confirm":{source:"iana"},"application/tamp-status-query":{source:"iana"},"application/tamp-status-response":{source:"iana"},"application/tamp-update":{source:"iana"},"application/tamp-update-confirm":{source:"iana"},"application/tar":{compressible:!0},"application/taxii+json":{source:"iana",compressible:!0},"application/td+json":{source:"iana",compressible:!0},"application/tei+xml":{source:"iana",compressible:!0,extensions:["tei","teicorpus"]},"application/tetra_isi":{source:"iana"},"application/thraud+xml":{source:"iana",compressible:!0,extensions:["tfi"]},"application/timestamp-query":{source:"iana"},"application/timestamp-reply":{source:"iana"},"application/timestamped-data":{source:"iana",extensions:["tsd"]},"application/tlsrpt+gzip":{source:"iana"},"application/tlsrpt+json":{source:"iana",compressible:!0},"application/tm+json":{source:"iana",compressible:!0},"application/tnauthlist":{source:"iana"},"application/toc+cbor":{source:"iana"},"application/token-introspection+jwt":{source:"iana"},"application/toml":{source:"iana",compressible:!0,extensions:["toml"]},"application/trickle-ice-sdpfrag":{source:"iana"},"application/trig":{source:"iana",extensions:["trig"]},"application/trust-chain+json":{source:"iana",compressible:!0},"application/trust-mark+jwt":{source:"iana"},"application/trust-mark-delegation+jwt":{source:"iana"},"application/ttml+xml":{source:"iana",compressible:!0,extensions:["ttml"]},"application/tve-trigger":{source:"iana"},"application/tzif":{source:"iana"},"application/tzif-leap":{source:"iana"},"application/ubjson":{compressible:!1,extensions:["ubj"]},"application/uccs+cbor":{source:"iana"},"application/ujcs+json":{source:"iana",compressible:!0},"application/ulpfec":{source:"iana"},"application/urc-grpsheet+xml":{source:"iana",compressible:!0},"application/urc-ressheet+xml":{source:"iana",compressible:!0,extensions:["rsheet"]},"application/urc-targetdesc+xml":{source:"iana",compressible:!0,extensions:["td"]},"application/urc-uisocketdesc+xml":{source:"iana",compressible:!0},"application/vc":{source:"iana"},"application/vc+cose":{source:"iana"},"application/vc+jwt":{source:"iana"},"application/vcard+json":{source:"iana",compressible:!0},"application/vcard+xml":{source:"iana",compressible:!0},"application/vemmi":{source:"iana"},"application/vividence.scriptfile":{source:"apache"},"application/vnd.1000minds.decision-model+xml":{source:"iana",compressible:!0,extensions:["1km"]},"application/vnd.1ob":{source:"iana"},"application/vnd.3gpp-prose+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3a+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ach+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc3ch+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-prose-pc8+xml":{source:"iana",compressible:!0},"application/vnd.3gpp-v2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gnas":{source:"iana"},"application/vnd.3gpp.5gsa2x":{source:"iana"},"application/vnd.3gpp.5gsa2x-local-service-information":{source:"iana"},"application/vnd.3gpp.5gsv2x":{source:"iana"},"application/vnd.3gpp.5gsv2x-local-service-information":{source:"iana"},"application/vnd.3gpp.access-transfer-events+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.bsf+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.crs+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.current-location-discovery+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gmop+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.gtpc":{source:"iana"},"application/vnd.3gpp.interworking-data":{source:"iana"},"application/vnd.3gpp.lpp":{source:"iana"},"application/vnd.3gpp.mc-signalling-ear":{source:"iana"},"application/vnd.3gpp.mcdata-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-msgstore-ctrl-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-payload":{source:"iana"},"application/vnd.3gpp.mcdata-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-signalling":{source:"iana"},"application/vnd.3gpp.mcdata-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcdata-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-floor-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-signed+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-ue-init-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcptt-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-affiliation-command+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-regroup+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-service-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-transmission-request+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-ue-config+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mcvideo-user-profile+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.mid-call+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ngap":{source:"iana"},"application/vnd.3gpp.pfcp":{source:"iana"},"application/vnd.3gpp.pic-bw-large":{source:"iana",extensions:["plb"]},"application/vnd.3gpp.pic-bw-small":{source:"iana",extensions:["psb"]},"application/vnd.3gpp.pic-bw-var":{source:"iana",extensions:["pvb"]},"application/vnd.3gpp.pinapp-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.s1ap":{source:"iana"},"application/vnd.3gpp.seal-group-doc+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-location-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-mbms-usage-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-network-qos-management-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-ue-config-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-unicast-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.seal-user-profile-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.sms":{source:"iana"},"application/vnd.3gpp.sms+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-ext+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.srvcc-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.state-and-event-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.ussd+xml":{source:"iana",compressible:!0},"application/vnd.3gpp.v2x":{source:"iana"},"application/vnd.3gpp.vae-info+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.bcmcsinfo+xml":{source:"iana",compressible:!0},"application/vnd.3gpp2.sms":{source:"iana"},"application/vnd.3gpp2.tcap":{source:"iana",extensions:["tcap"]},"application/vnd.3lightssoftware.imagescal":{source:"iana"},"application/vnd.3m.post-it-notes":{source:"iana",extensions:["pwn"]},"application/vnd.accpac.simply.aso":{source:"iana",extensions:["aso"]},"application/vnd.accpac.simply.imp":{source:"iana",extensions:["imp"]},"application/vnd.acm.addressxfer+json":{source:"iana",compressible:!0},"application/vnd.acm.chatbot+json":{source:"iana",compressible:!0},"application/vnd.acucobol":{source:"iana",extensions:["acu"]},"application/vnd.acucorp":{source:"iana",extensions:["atc","acutc"]},"application/vnd.adobe.air-application-installer-package+zip":{source:"apache",compressible:!1,extensions:["air"]},"application/vnd.adobe.flash.movie":{source:"iana"},"application/vnd.adobe.formscentral.fcdt":{source:"iana",extensions:["fcdt"]},"application/vnd.adobe.fxp":{source:"iana",extensions:["fxp","fxpl"]},"application/vnd.adobe.partial-upload":{source:"iana"},"application/vnd.adobe.xdp+xml":{source:"iana",compressible:!0,extensions:["xdp"]},"application/vnd.adobe.xfdf":{source:"apache",extensions:["xfdf"]},"application/vnd.aether.imp":{source:"iana"},"application/vnd.afpc.afplinedata":{source:"iana"},"application/vnd.afpc.afplinedata-pagedef":{source:"iana"},"application/vnd.afpc.cmoca-cmresource":{source:"iana"},"application/vnd.afpc.foca-charset":{source:"iana"},"application/vnd.afpc.foca-codedfont":{source:"iana"},"application/vnd.afpc.foca-codepage":{source:"iana"},"application/vnd.afpc.modca":{source:"iana"},"application/vnd.afpc.modca-cmtable":{source:"iana"},"application/vnd.afpc.modca-formdef":{source:"iana"},"application/vnd.afpc.modca-mediummap":{source:"iana"},"application/vnd.afpc.modca-objectcontainer":{source:"iana"},"application/vnd.afpc.modca-overlay":{source:"iana"},"application/vnd.afpc.modca-pagesegment":{source:"iana"},"application/vnd.age":{source:"iana",extensions:["age"]},"application/vnd.ah-barcode":{source:"apache"},"application/vnd.ahead.space":{source:"iana",extensions:["ahead"]},"application/vnd.airzip.filesecure.azf":{source:"iana",extensions:["azf"]},"application/vnd.airzip.filesecure.azs":{source:"iana",extensions:["azs"]},"application/vnd.amadeus+json":{source:"iana",compressible:!0},"application/vnd.amazon.ebook":{source:"apache",extensions:["azw"]},"application/vnd.amazon.mobi8-ebook":{source:"iana"},"application/vnd.americandynamics.acc":{source:"iana",extensions:["acc"]},"application/vnd.amiga.ami":{source:"iana",extensions:["ami"]},"application/vnd.amundsen.maze+xml":{source:"iana",compressible:!0},"application/vnd.android.ota":{source:"iana"},"application/vnd.android.package-archive":{source:"apache",compressible:!1,extensions:["apk"]},"application/vnd.anki":{source:"iana"},"application/vnd.anser-web-certificate-issue-initiation":{source:"iana",extensions:["cii"]},"application/vnd.anser-web-funds-transfer-initiation":{source:"apache",extensions:["fti"]},"application/vnd.antix.game-component":{source:"iana",extensions:["atx"]},"application/vnd.apache.arrow.file":{source:"iana"},"application/vnd.apache.arrow.stream":{source:"iana"},"application/vnd.apache.parquet":{source:"iana"},"application/vnd.apache.thrift.binary":{source:"iana"},"application/vnd.apache.thrift.compact":{source:"iana"},"application/vnd.apache.thrift.json":{source:"iana"},"application/vnd.apexlang":{source:"iana"},"application/vnd.api+json":{source:"iana",compressible:!0},"application/vnd.aplextor.warrp+json":{source:"iana",compressible:!0},"application/vnd.apothekende.reservation+json":{source:"iana",compressible:!0},"application/vnd.apple.installer+xml":{source:"iana",compressible:!0,extensions:["mpkg"]},"application/vnd.apple.keynote":{source:"iana",extensions:["key"]},"application/vnd.apple.mpegurl":{source:"iana",extensions:["m3u8"]},"application/vnd.apple.numbers":{source:"iana",extensions:["numbers"]},"application/vnd.apple.pages":{source:"iana",extensions:["pages"]},"application/vnd.apple.pkpass":{compressible:!1,extensions:["pkpass"]},"application/vnd.arastra.swi":{source:"apache"},"application/vnd.aristanetworks.swi":{source:"iana",extensions:["swi"]},"application/vnd.artisan+json":{source:"iana",compressible:!0},"application/vnd.artsquare":{source:"iana"},"application/vnd.astraea-software.iota":{source:"iana",extensions:["iota"]},"application/vnd.audiograph":{source:"iana",extensions:["aep"]},"application/vnd.autodesk.fbx":{extensions:["fbx"]},"application/vnd.autopackage":{source:"iana"},"application/vnd.avalon+json":{source:"iana",compressible:!0},"application/vnd.avistar+xml":{source:"iana",compressible:!0},"application/vnd.balsamiq.bmml+xml":{source:"iana",compressible:!0,extensions:["bmml"]},"application/vnd.balsamiq.bmpr":{source:"iana"},"application/vnd.banana-accounting":{source:"iana"},"application/vnd.bbf.usp.error":{source:"iana"},"application/vnd.bbf.usp.msg":{source:"iana"},"application/vnd.bbf.usp.msg+json":{source:"iana",compressible:!0},"application/vnd.bekitzur-stech+json":{source:"iana",compressible:!0},"application/vnd.belightsoft.lhzd+zip":{source:"iana",compressible:!1},"application/vnd.belightsoft.lhzl+zip":{source:"iana",compressible:!1},"application/vnd.bint.med-content":{source:"iana"},"application/vnd.biopax.rdf+xml":{source:"iana",compressible:!0},"application/vnd.blink-idb-value-wrapper":{source:"iana"},"application/vnd.blueice.multipass":{source:"iana",extensions:["mpm"]},"application/vnd.bluetooth.ep.oob":{source:"iana"},"application/vnd.bluetooth.le.oob":{source:"iana"},"application/vnd.bmi":{source:"iana",extensions:["bmi"]},"application/vnd.bpf":{source:"iana"},"application/vnd.bpf3":{source:"iana"},"application/vnd.businessobjects":{source:"iana",extensions:["rep"]},"application/vnd.byu.uapi+json":{source:"iana",compressible:!0},"application/vnd.bzip3":{source:"iana"},"application/vnd.c3voc.schedule+xml":{source:"iana",compressible:!0},"application/vnd.cab-jscript":{source:"iana"},"application/vnd.canon-cpdl":{source:"iana"},"application/vnd.canon-lips":{source:"iana"},"application/vnd.capasystems-pg+json":{source:"iana",compressible:!0},"application/vnd.cendio.thinlinc.clientconf":{source:"iana"},"application/vnd.century-systems.tcp_stream":{source:"iana"},"application/vnd.chemdraw+xml":{source:"iana",compressible:!0,extensions:["cdxml"]},"application/vnd.chess-pgn":{source:"iana"},"application/vnd.chipnuts.karaoke-mmd":{source:"iana",extensions:["mmd"]},"application/vnd.ciedi":{source:"iana"},"application/vnd.cinderella":{source:"iana",extensions:["cdy"]},"application/vnd.cirpack.isdn-ext":{source:"iana"},"application/vnd.citationstyles.style+xml":{source:"iana",compressible:!0,extensions:["csl"]},"application/vnd.claymore":{source:"iana",extensions:["cla"]},"application/vnd.cloanto.rp9":{source:"iana",extensions:["rp9"]},"application/vnd.clonk.c4group":{source:"iana",extensions:["c4g","c4d","c4f","c4p","c4u"]},"application/vnd.cluetrust.cartomobile-config":{source:"iana",extensions:["c11amc"]},"application/vnd.cluetrust.cartomobile-config-pkg":{source:"iana",extensions:["c11amz"]},"application/vnd.cncf.helm.chart.content.v1.tar+gzip":{source:"iana"},"application/vnd.cncf.helm.chart.provenance.v1.prov":{source:"iana"},"application/vnd.cncf.helm.config.v1+json":{source:"iana",compressible:!0},"application/vnd.coffeescript":{source:"iana"},"application/vnd.collabio.xodocuments.document":{source:"iana"},"application/vnd.collabio.xodocuments.document-template":{source:"iana"},"application/vnd.collabio.xodocuments.presentation":{source:"iana"},"application/vnd.collabio.xodocuments.presentation-template":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet":{source:"iana"},"application/vnd.collabio.xodocuments.spreadsheet-template":{source:"iana"},"application/vnd.collection+json":{source:"iana",compressible:!0},"application/vnd.collection.doc+json":{source:"iana",compressible:!0},"application/vnd.collection.next+json":{source:"iana",compressible:!0},"application/vnd.comicbook+zip":{source:"iana",compressible:!1},"application/vnd.comicbook-rar":{source:"iana"},"application/vnd.commerce-battelle":{source:"iana"},"application/vnd.commonspace":{source:"iana",extensions:["csp"]},"application/vnd.contact.cmsg":{source:"iana",extensions:["cdbcmsg"]},"application/vnd.coreos.ignition+json":{source:"iana",compressible:!0},"application/vnd.cosmocaller":{source:"iana",extensions:["cmc"]},"application/vnd.crick.clicker":{source:"iana",extensions:["clkx"]},"application/vnd.crick.clicker.keyboard":{source:"iana",extensions:["clkk"]},"application/vnd.crick.clicker.palette":{source:"iana",extensions:["clkp"]},"application/vnd.crick.clicker.template":{source:"iana",extensions:["clkt"]},"application/vnd.crick.clicker.wordbank":{source:"iana",extensions:["clkw"]},"application/vnd.criticaltools.wbs+xml":{source:"iana",compressible:!0,extensions:["wbs"]},"application/vnd.cryptii.pipe+json":{source:"iana",compressible:!0},"application/vnd.crypto-shade-file":{source:"iana"},"application/vnd.cryptomator.encrypted":{source:"iana"},"application/vnd.cryptomator.vault":{source:"iana"},"application/vnd.ctc-posml":{source:"iana",extensions:["pml"]},"application/vnd.ctct.ws+xml":{source:"iana",compressible:!0},"application/vnd.cups-pdf":{source:"iana"},"application/vnd.cups-postscript":{source:"iana"},"application/vnd.cups-ppd":{source:"iana",extensions:["ppd"]},"application/vnd.cups-raster":{source:"iana"},"application/vnd.cups-raw":{source:"iana"},"application/vnd.curl":{source:"iana"},"application/vnd.curl.car":{source:"apache",extensions:["car"]},"application/vnd.curl.pcurl":{source:"apache",extensions:["pcurl"]},"application/vnd.cyan.dean.root+xml":{source:"iana",compressible:!0},"application/vnd.cybank":{source:"iana"},"application/vnd.cyclonedx+json":{source:"iana",compressible:!0},"application/vnd.cyclonedx+xml":{source:"iana",compressible:!0},"application/vnd.d2l.coursepackage1p0+zip":{source:"iana",compressible:!1},"application/vnd.d3m-dataset":{source:"iana"},"application/vnd.d3m-problem":{source:"iana"},"application/vnd.dart":{source:"iana",compressible:!0,extensions:["dart"]},"application/vnd.data-vision.rdz":{source:"iana",extensions:["rdz"]},"application/vnd.datalog":{source:"iana"},"application/vnd.datapackage+json":{source:"iana",compressible:!0},"application/vnd.dataresource+json":{source:"iana",compressible:!0},"application/vnd.dbf":{source:"iana",extensions:["dbf"]},"application/vnd.dcmp+xml":{source:"iana",compressible:!0,extensions:["dcmp"]},"application/vnd.debian.binary-package":{source:"iana"},"application/vnd.dece.data":{source:"iana",extensions:["uvf","uvvf","uvd","uvvd"]},"application/vnd.dece.ttml+xml":{source:"iana",compressible:!0,extensions:["uvt","uvvt"]},"application/vnd.dece.unspecified":{source:"iana",extensions:["uvx","uvvx"]},"application/vnd.dece.zip":{source:"iana",extensions:["uvz","uvvz"]},"application/vnd.denovo.fcselayout-link":{source:"iana",extensions:["fe_launch"]},"application/vnd.desmume.movie":{source:"iana"},"application/vnd.dir-bi.plate-dl-nosuffix":{source:"iana"},"application/vnd.dm.delegation+xml":{source:"iana",compressible:!0},"application/vnd.dna":{source:"iana",extensions:["dna"]},"application/vnd.document+json":{source:"iana",compressible:!0},"application/vnd.dolby.mlp":{source:"apache",extensions:["mlp"]},"application/vnd.dolby.mobile.1":{source:"iana"},"application/vnd.dolby.mobile.2":{source:"iana"},"application/vnd.doremir.scorecloud-binary-document":{source:"iana"},"application/vnd.dpgraph":{source:"iana",extensions:["dpg"]},"application/vnd.dreamfactory":{source:"iana",extensions:["dfac"]},"application/vnd.drive+json":{source:"iana",compressible:!0},"application/vnd.ds-keypoint":{source:"apache",extensions:["kpxx"]},"application/vnd.dtg.local":{source:"iana"},"application/vnd.dtg.local.flash":{source:"iana"},"application/vnd.dtg.local.html":{source:"iana"},"application/vnd.dvb.ait":{source:"iana",extensions:["ait"]},"application/vnd.dvb.dvbisl+xml":{source:"iana",compressible:!0},"application/vnd.dvb.dvbj":{source:"iana"},"application/vnd.dvb.esgcontainer":{source:"iana"},"application/vnd.dvb.ipdcdftnotifaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess":{source:"iana"},"application/vnd.dvb.ipdcesgaccess2":{source:"iana"},"application/vnd.dvb.ipdcesgpdd":{source:"iana"},"application/vnd.dvb.ipdcroaming":{source:"iana"},"application/vnd.dvb.iptv.alfec-base":{source:"iana"},"application/vnd.dvb.iptv.alfec-enhancement":{source:"iana"},"application/vnd.dvb.notif-aggregate-root+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-container+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-generic+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-msglist+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-request+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-ia-registration-response+xml":{source:"iana",compressible:!0},"application/vnd.dvb.notif-init+xml":{source:"iana",compressible:!0},"application/vnd.dvb.pfr":{source:"iana"},"application/vnd.dvb.service":{source:"iana",extensions:["svc"]},"application/vnd.dxr":{source:"iana"},"application/vnd.dynageo":{source:"iana",extensions:["geo"]},"application/vnd.dzr":{source:"iana"},"application/vnd.easykaraoke.cdgdownload":{source:"iana"},"application/vnd.ecdis-update":{source:"iana"},"application/vnd.ecip.rlp":{source:"iana"},"application/vnd.eclipse.ditto+json":{source:"iana",compressible:!0},"application/vnd.ecowin.chart":{source:"iana",extensions:["mag"]},"application/vnd.ecowin.filerequest":{source:"iana"},"application/vnd.ecowin.fileupdate":{source:"iana"},"application/vnd.ecowin.series":{source:"iana"},"application/vnd.ecowin.seriesrequest":{source:"iana"},"application/vnd.ecowin.seriesupdate":{source:"iana"},"application/vnd.efi.img":{source:"iana"},"application/vnd.efi.iso":{source:"iana"},"application/vnd.eln+zip":{source:"iana",compressible:!1},"application/vnd.emclient.accessrequest+xml":{source:"iana",compressible:!0},"application/vnd.enliven":{source:"iana",extensions:["nml"]},"application/vnd.enphase.envoy":{source:"iana"},"application/vnd.eprints.data+xml":{source:"iana",compressible:!0},"application/vnd.epson.esf":{source:"iana",extensions:["esf"]},"application/vnd.epson.msf":{source:"iana",extensions:["msf"]},"application/vnd.epson.quickanime":{source:"iana",extensions:["qam"]},"application/vnd.epson.salt":{source:"iana",extensions:["slt"]},"application/vnd.epson.ssf":{source:"iana",extensions:["ssf"]},"application/vnd.ericsson.quickcall":{source:"iana"},"application/vnd.erofs":{source:"iana"},"application/vnd.espass-espass+zip":{source:"iana",compressible:!1},"application/vnd.eszigno3+xml":{source:"iana",compressible:!0,extensions:["es3","et3"]},"application/vnd.etsi.aoc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.asic-e+zip":{source:"iana",compressible:!1},"application/vnd.etsi.asic-s+zip":{source:"iana",compressible:!1},"application/vnd.etsi.cug+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvcommand+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-bc+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-cod+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsad-npvr+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvservice+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvsync+xml":{source:"iana",compressible:!0},"application/vnd.etsi.iptvueprofile+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mcid+xml":{source:"iana",compressible:!0},"application/vnd.etsi.mheg5":{source:"iana"},"application/vnd.etsi.overload-control-policy-dataset+xml":{source:"iana",compressible:!0},"application/vnd.etsi.pstn+xml":{source:"iana",compressible:!0},"application/vnd.etsi.sci+xml":{source:"iana",compressible:!0},"application/vnd.etsi.simservs+xml":{source:"iana",compressible:!0},"application/vnd.etsi.timestamp-token":{source:"iana"},"application/vnd.etsi.tsl+xml":{source:"iana",compressible:!0},"application/vnd.etsi.tsl.der":{source:"iana"},"application/vnd.eu.kasparian.car+json":{source:"iana",compressible:!0},"application/vnd.eudora.data":{source:"iana"},"application/vnd.evolv.ecig.profile":{source:"iana"},"application/vnd.evolv.ecig.settings":{source:"iana"},"application/vnd.evolv.ecig.theme":{source:"iana"},"application/vnd.exstream-empower+zip":{source:"iana",compressible:!1},"application/vnd.exstream-package":{source:"iana"},"application/vnd.ezpix-album":{source:"iana",extensions:["ez2"]},"application/vnd.ezpix-package":{source:"iana",extensions:["ez3"]},"application/vnd.f-secure.mobile":{source:"iana"},"application/vnd.familysearch.gedcom+zip":{source:"iana",compressible:!1},"application/vnd.fastcopy-disk-image":{source:"iana"},"application/vnd.fdf":{source:"apache",extensions:["fdf"]},"application/vnd.fdsn.mseed":{source:"iana",extensions:["mseed"]},"application/vnd.fdsn.seed":{source:"iana",extensions:["seed","dataless"]},"application/vnd.fdsn.stationxml+xml":{source:"iana",charset:"XML-BASED",compressible:!0},"application/vnd.ffsns":{source:"iana"},"application/vnd.ficlab.flb+zip":{source:"iana",compressible:!1},"application/vnd.filmit.zfc":{source:"iana"},"application/vnd.fints":{source:"iana"},"application/vnd.firemonkeys.cloudcell":{source:"iana"},"application/vnd.flographit":{source:"iana",extensions:["gph"]},"application/vnd.fluxtime.clip":{source:"iana",extensions:["ftc"]},"application/vnd.font-fontforge-sfd":{source:"iana"},"application/vnd.framemaker":{source:"iana",extensions:["fm","frame","maker","book"]},"application/vnd.freelog.comic":{source:"iana"},"application/vnd.frogans.fnc":{source:"apache",extensions:["fnc"]},"application/vnd.frogans.ltf":{source:"apache",extensions:["ltf"]},"application/vnd.fsc.weblaunch":{source:"iana",extensions:["fsc"]},"application/vnd.fujifilm.fb.docuworks":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.binder":{source:"iana"},"application/vnd.fujifilm.fb.docuworks.container":{source:"iana"},"application/vnd.fujifilm.fb.jfi+xml":{source:"iana",compressible:!0},"application/vnd.fujitsu.oasys":{source:"iana",extensions:["oas"]},"application/vnd.fujitsu.oasys2":{source:"iana",extensions:["oa2"]},"application/vnd.fujitsu.oasys3":{source:"iana",extensions:["oa3"]},"application/vnd.fujitsu.oasysgp":{source:"iana",extensions:["fg5"]},"application/vnd.fujitsu.oasysprs":{source:"iana",extensions:["bh2"]},"application/vnd.fujixerox.art-ex":{source:"iana"},"application/vnd.fujixerox.art4":{source:"iana"},"application/vnd.fujixerox.ddd":{source:"iana",extensions:["ddd"]},"application/vnd.fujixerox.docuworks":{source:"iana",extensions:["xdw"]},"application/vnd.fujixerox.docuworks.binder":{source:"iana",extensions:["xbd"]},"application/vnd.fujixerox.docuworks.container":{source:"iana"},"application/vnd.fujixerox.hbpl":{source:"iana"},"application/vnd.fut-misnet":{source:"iana"},"application/vnd.futoin+cbor":{source:"iana"},"application/vnd.futoin+json":{source:"iana",compressible:!0},"application/vnd.fuzzysheet":{source:"iana",extensions:["fzs"]},"application/vnd.ga4gh.passport+jwt":{source:"iana"},"application/vnd.genomatix.tuxedo":{source:"iana",extensions:["txd"]},"application/vnd.genozip":{source:"iana"},"application/vnd.gentics.grd+json":{source:"iana",compressible:!0},"application/vnd.gentoo.catmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.ebuild":{source:"iana"},"application/vnd.gentoo.eclass":{source:"iana"},"application/vnd.gentoo.gpkg":{source:"iana"},"application/vnd.gentoo.manifest":{source:"iana"},"application/vnd.gentoo.pkgmetadata+xml":{source:"iana",compressible:!0},"application/vnd.gentoo.xpak":{source:"iana"},"application/vnd.geo+json":{source:"apache",compressible:!0},"application/vnd.geocube+xml":{source:"apache",compressible:!0},"application/vnd.geogebra.file":{source:"iana",extensions:["ggb"]},"application/vnd.geogebra.pinboard":{source:"iana"},"application/vnd.geogebra.slides":{source:"iana",extensions:["ggs"]},"application/vnd.geogebra.tool":{source:"iana",extensions:["ggt"]},"application/vnd.geometry-explorer":{source:"iana",extensions:["gex","gre"]},"application/vnd.geonext":{source:"iana",extensions:["gxt"]},"application/vnd.geoplan":{source:"iana",extensions:["g2w"]},"application/vnd.geospace":{source:"iana",extensions:["g3w"]},"application/vnd.gerber":{source:"iana"},"application/vnd.globalplatform.card-content-mgt":{source:"iana"},"application/vnd.globalplatform.card-content-mgt-response":{source:"iana"},"application/vnd.gmx":{source:"iana",extensions:["gmx"]},"application/vnd.gnu.taler.exchange+json":{source:"iana",compressible:!0},"application/vnd.gnu.taler.merchant+json":{source:"iana",compressible:!0},"application/vnd.google-apps.audio":{},"application/vnd.google-apps.document":{compressible:!1,extensions:["gdoc"]},"application/vnd.google-apps.drawing":{compressible:!1,extensions:["gdraw"]},"application/vnd.google-apps.drive-sdk":{compressible:!1},"application/vnd.google-apps.file":{},"application/vnd.google-apps.folder":{compressible:!1},"application/vnd.google-apps.form":{compressible:!1,extensions:["gform"]},"application/vnd.google-apps.fusiontable":{},"application/vnd.google-apps.jam":{compressible:!1,extensions:["gjam"]},"application/vnd.google-apps.mail-layout":{},"application/vnd.google-apps.map":{compressible:!1,extensions:["gmap"]},"application/vnd.google-apps.photo":{},"application/vnd.google-apps.presentation":{compressible:!1,extensions:["gslides"]},"application/vnd.google-apps.script":{compressible:!1,extensions:["gscript"]},"application/vnd.google-apps.shortcut":{},"application/vnd.google-apps.site":{compressible:!1,extensions:["gsite"]},"application/vnd.google-apps.spreadsheet":{compressible:!1,extensions:["gsheet"]},"application/vnd.google-apps.unknown":{},"application/vnd.google-apps.video":{},"application/vnd.google-earth.kml+xml":{source:"iana",compressible:!0,extensions:["kml"]},"application/vnd.google-earth.kmz":{source:"iana",compressible:!1,extensions:["kmz"]},"application/vnd.gov.sk.e-form+xml":{source:"apache",compressible:!0},"application/vnd.gov.sk.e-form+zip":{source:"iana",compressible:!1},"application/vnd.gov.sk.xmldatacontainer+xml":{source:"iana",compressible:!0,extensions:["xdcf"]},"application/vnd.gpxsee.map+xml":{source:"iana",compressible:!0},"application/vnd.grafeq":{source:"iana",extensions:["gqf","gqs"]},"application/vnd.gridmp":{source:"iana"},"application/vnd.groove-account":{source:"iana",extensions:["gac"]},"application/vnd.groove-help":{source:"iana",extensions:["ghf"]},"application/vnd.groove-identity-message":{source:"iana",extensions:["gim"]},"application/vnd.groove-injector":{source:"iana",extensions:["grv"]},"application/vnd.groove-tool-message":{source:"iana",extensions:["gtm"]},"application/vnd.groove-tool-template":{source:"iana",extensions:["tpl"]},"application/vnd.groove-vcard":{source:"iana",extensions:["vcg"]},"application/vnd.hal+json":{source:"iana",compressible:!0},"application/vnd.hal+xml":{source:"iana",compressible:!0,extensions:["hal"]},"application/vnd.handheld-entertainment+xml":{source:"iana",compressible:!0,extensions:["zmm"]},"application/vnd.hbci":{source:"iana",extensions:["hbci"]},"application/vnd.hc+json":{source:"iana",compressible:!0},"application/vnd.hcl-bireports":{source:"iana"},"application/vnd.hdt":{source:"iana"},"application/vnd.heroku+json":{source:"iana",compressible:!0},"application/vnd.hhe.lesson-player":{source:"iana",extensions:["les"]},"application/vnd.hp-hpgl":{source:"iana",extensions:["hpgl"]},"application/vnd.hp-hpid":{source:"iana",extensions:["hpid"]},"application/vnd.hp-hps":{source:"iana",extensions:["hps"]},"application/vnd.hp-jlyt":{source:"iana",extensions:["jlt"]},"application/vnd.hp-pcl":{source:"iana",extensions:["pcl"]},"application/vnd.hp-pclxl":{source:"iana",extensions:["pclxl"]},"application/vnd.hsl":{source:"iana"},"application/vnd.httphone":{source:"iana"},"application/vnd.hydrostatix.sof-data":{source:"iana",extensions:["sfd-hdstx"]},"application/vnd.hyper+json":{source:"iana",compressible:!0},"application/vnd.hyper-item+json":{source:"iana",compressible:!0},"application/vnd.hyperdrive+json":{source:"iana",compressible:!0},"application/vnd.hzn-3d-crossword":{source:"iana"},"application/vnd.ibm.afplinedata":{source:"apache"},"application/vnd.ibm.electronic-media":{source:"iana"},"application/vnd.ibm.minipay":{source:"iana",extensions:["mpy"]},"application/vnd.ibm.modcap":{source:"apache",extensions:["afp","listafp","list3820"]},"application/vnd.ibm.rights-management":{source:"iana",extensions:["irm"]},"application/vnd.ibm.secure-container":{source:"iana",extensions:["sc"]},"application/vnd.iccprofile":{source:"iana",extensions:["icc","icm"]},"application/vnd.ieee.1905":{source:"iana"},"application/vnd.igloader":{source:"iana",extensions:["igl"]},"application/vnd.imagemeter.folder+zip":{source:"iana",compressible:!1},"application/vnd.imagemeter.image+zip":{source:"iana",compressible:!1},"application/vnd.immervision-ivp":{source:"iana",extensions:["ivp"]},"application/vnd.immervision-ivu":{source:"iana",extensions:["ivu"]},"application/vnd.ims.imsccv1p1":{source:"iana"},"application/vnd.ims.imsccv1p2":{source:"iana"},"application/vnd.ims.imsccv1p3":{source:"iana"},"application/vnd.ims.lis.v2.result+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolconsumerprofile+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolproxy.id+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings+json":{source:"iana",compressible:!0},"application/vnd.ims.lti.v2.toolsettings.simple+json":{source:"iana",compressible:!0},"application/vnd.informedcontrol.rms+xml":{source:"iana",compressible:!0},"application/vnd.informix-visionary":{source:"apache"},"application/vnd.infotech.project":{source:"iana"},"application/vnd.infotech.project+xml":{source:"iana",compressible:!0},"application/vnd.innopath.wamp.notification":{source:"iana"},"application/vnd.insors.igm":{source:"iana",extensions:["igm"]},"application/vnd.intercon.formnet":{source:"iana",extensions:["xpw","xpx"]},"application/vnd.intergeo":{source:"iana",extensions:["i2g"]},"application/vnd.intertrust.digibox":{source:"iana"},"application/vnd.intertrust.nncp":{source:"iana"},"application/vnd.intu.qbo":{source:"iana",extensions:["qbo"]},"application/vnd.intu.qfx":{source:"iana",extensions:["qfx"]},"application/vnd.ipfs.ipns-record":{source:"iana"},"application/vnd.ipld.car":{source:"iana"},"application/vnd.ipld.dag-cbor":{source:"iana"},"application/vnd.ipld.dag-json":{source:"iana"},"application/vnd.ipld.raw":{source:"iana"},"application/vnd.iptc.g2.catalogitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.conceptitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.knowledgeitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.newsmessage+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.packageitem+xml":{source:"iana",compressible:!0},"application/vnd.iptc.g2.planningitem+xml":{source:"iana",compressible:!0},"application/vnd.ipunplugged.rcprofile":{source:"iana",extensions:["rcprofile"]},"application/vnd.irepository.package+xml":{source:"iana",compressible:!0,extensions:["irp"]},"application/vnd.is-xpr":{source:"iana",extensions:["xpr"]},"application/vnd.isac.fcs":{source:"iana",extensions:["fcs"]},"application/vnd.iso11783-10+zip":{source:"iana",compressible:!1},"application/vnd.jam":{source:"iana",extensions:["jam"]},"application/vnd.japannet-directory-service":{source:"iana"},"application/vnd.japannet-jpnstore-wakeup":{source:"iana"},"application/vnd.japannet-payment-wakeup":{source:"iana"},"application/vnd.japannet-registration":{source:"iana"},"application/vnd.japannet-registration-wakeup":{source:"iana"},"application/vnd.japannet-setstore-wakeup":{source:"iana"},"application/vnd.japannet-verification":{source:"iana"},"application/vnd.japannet-verification-wakeup":{source:"iana"},"application/vnd.jcp.javame.midlet-rms":{source:"iana",extensions:["rms"]},"application/vnd.jisp":{source:"iana",extensions:["jisp"]},"application/vnd.joost.joda-archive":{source:"iana",extensions:["joda"]},"application/vnd.jsk.isdn-ngn":{source:"iana"},"application/vnd.kahootz":{source:"iana",extensions:["ktz","ktr"]},"application/vnd.kde.karbon":{source:"iana",extensions:["karbon"]},"application/vnd.kde.kchart":{source:"iana",extensions:["chrt"]},"application/vnd.kde.kformula":{source:"iana",extensions:["kfo"]},"application/vnd.kde.kivio":{source:"iana",extensions:["flw"]},"application/vnd.kde.kontour":{source:"iana",extensions:["kon"]},"application/vnd.kde.kpresenter":{source:"iana",extensions:["kpr","kpt"]},"application/vnd.kde.kspread":{source:"iana",extensions:["ksp"]},"application/vnd.kde.kword":{source:"iana",extensions:["kwd","kwt"]},"application/vnd.kdl":{source:"iana"},"application/vnd.kenameaapp":{source:"iana",extensions:["htke"]},"application/vnd.keyman.kmp+zip":{source:"iana",compressible:!1},"application/vnd.keyman.kmx":{source:"iana"},"application/vnd.kidspiration":{source:"iana",extensions:["kia"]},"application/vnd.kinar":{source:"iana",extensions:["kne","knp"]},"application/vnd.koan":{source:"iana",extensions:["skp","skd","skt","skm"]},"application/vnd.kodak-descriptor":{source:"iana",extensions:["sse"]},"application/vnd.las":{source:"iana"},"application/vnd.las.las+json":{source:"iana",compressible:!0},"application/vnd.las.las+xml":{source:"iana",compressible:!0,extensions:["lasxml"]},"application/vnd.laszip":{source:"iana"},"application/vnd.ldev.productlicensing":{source:"iana"},"application/vnd.leap+json":{source:"iana",compressible:!0},"application/vnd.liberty-request+xml":{source:"iana",compressible:!0},"application/vnd.llamagraphics.life-balance.desktop":{source:"iana",extensions:["lbd"]},"application/vnd.llamagraphics.life-balance.exchange+xml":{source:"iana",compressible:!0,extensions:["lbe"]},"application/vnd.logipipe.circuit+zip":{source:"iana",compressible:!1},"application/vnd.loom":{source:"iana"},"application/vnd.lotus-1-2-3":{source:"iana",extensions:["123"]},"application/vnd.lotus-approach":{source:"iana",extensions:["apr"]},"application/vnd.lotus-freelance":{source:"iana",extensions:["pre"]},"application/vnd.lotus-notes":{source:"iana",extensions:["nsf"]},"application/vnd.lotus-organizer":{source:"iana",extensions:["org"]},"application/vnd.lotus-screencam":{source:"iana",extensions:["scm"]},"application/vnd.lotus-wordpro":{source:"iana",extensions:["lwp"]},"application/vnd.macports.portpkg":{source:"iana",extensions:["portpkg"]},"application/vnd.mapbox-vector-tile":{source:"iana",extensions:["mvt"]},"application/vnd.marlin.drm.actiontoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.conftoken+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.license+xml":{source:"iana",compressible:!0},"application/vnd.marlin.drm.mdcf":{source:"iana"},"application/vnd.mason+json":{source:"iana",compressible:!0},"application/vnd.maxar.archive.3tz+zip":{source:"iana",compressible:!1},"application/vnd.maxmind.maxmind-db":{source:"iana"},"application/vnd.mcd":{source:"iana",extensions:["mcd"]},"application/vnd.mdl":{source:"iana"},"application/vnd.mdl-mbsdf":{source:"iana"},"application/vnd.medcalcdata":{source:"iana",extensions:["mc1"]},"application/vnd.mediastation.cdkey":{source:"iana",extensions:["cdkey"]},"application/vnd.medicalholodeck.recordxr":{source:"iana"},"application/vnd.meridian-slingshot":{source:"iana"},"application/vnd.mermaid":{source:"iana"},"application/vnd.mfer":{source:"iana",extensions:["mwf"]},"application/vnd.mfmp":{source:"iana",extensions:["mfm"]},"application/vnd.micro+json":{source:"iana",compressible:!0},"application/vnd.micrografx.flo":{source:"iana",extensions:["flo"]},"application/vnd.micrografx.igx":{source:"iana",extensions:["igx"]},"application/vnd.microsoft.portable-executable":{source:"iana"},"application/vnd.microsoft.windows.thumbnail-cache":{source:"iana"},"application/vnd.miele+json":{source:"iana",compressible:!0},"application/vnd.mif":{source:"iana",extensions:["mif"]},"application/vnd.minisoft-hp3000-save":{source:"iana"},"application/vnd.mitsubishi.misty-guard.trustweb":{source:"iana"},"application/vnd.mobius.daf":{source:"iana",extensions:["daf"]},"application/vnd.mobius.dis":{source:"iana",extensions:["dis"]},"application/vnd.mobius.mbk":{source:"iana",extensions:["mbk"]},"application/vnd.mobius.mqy":{source:"iana",extensions:["mqy"]},"application/vnd.mobius.msl":{source:"iana",extensions:["msl"]},"application/vnd.mobius.plc":{source:"iana",extensions:["plc"]},"application/vnd.mobius.txf":{source:"iana",extensions:["txf"]},"application/vnd.modl":{source:"iana"},"application/vnd.mophun.application":{source:"iana",extensions:["mpn"]},"application/vnd.mophun.certificate":{source:"iana",extensions:["mpc"]},"application/vnd.motorola.flexsuite":{source:"iana"},"application/vnd.motorola.flexsuite.adsi":{source:"iana"},"application/vnd.motorola.flexsuite.fis":{source:"iana"},"application/vnd.motorola.flexsuite.gotap":{source:"iana"},"application/vnd.motorola.flexsuite.kmr":{source:"iana"},"application/vnd.motorola.flexsuite.ttc":{source:"iana"},"application/vnd.motorola.flexsuite.wem":{source:"iana"},"application/vnd.motorola.iprm":{source:"iana"},"application/vnd.mozilla.xul+xml":{source:"iana",compressible:!0,extensions:["xul"]},"application/vnd.ms-3mfdocument":{source:"iana"},"application/vnd.ms-artgalry":{source:"iana",extensions:["cil"]},"application/vnd.ms-asf":{source:"iana"},"application/vnd.ms-cab-compressed":{source:"iana",extensions:["cab"]},"application/vnd.ms-color.iccprofile":{source:"apache"},"application/vnd.ms-excel":{source:"iana",compressible:!1,extensions:["xls","xlm","xla","xlc","xlt","xlw"]},"application/vnd.ms-excel.addin.macroenabled.12":{source:"iana",extensions:["xlam"]},"application/vnd.ms-excel.sheet.binary.macroenabled.12":{source:"iana",extensions:["xlsb"]},"application/vnd.ms-excel.sheet.macroenabled.12":{source:"iana",extensions:["xlsm"]},"application/vnd.ms-excel.template.macroenabled.12":{source:"iana",extensions:["xltm"]},"application/vnd.ms-fontobject":{source:"iana",compressible:!0,extensions:["eot"]},"application/vnd.ms-htmlhelp":{source:"iana",extensions:["chm"]},"application/vnd.ms-ims":{source:"iana",extensions:["ims"]},"application/vnd.ms-lrm":{source:"iana",extensions:["lrm"]},"application/vnd.ms-office.activex+xml":{source:"iana",compressible:!0},"application/vnd.ms-officetheme":{source:"iana",extensions:["thmx"]},"application/vnd.ms-opentype":{source:"apache",compressible:!0},"application/vnd.ms-outlook":{compressible:!1,extensions:["msg"]},"application/vnd.ms-package.obfuscated-opentype":{source:"apache"},"application/vnd.ms-pki.seccat":{source:"apache",extensions:["cat"]},"application/vnd.ms-pki.stl":{source:"apache",extensions:["stl"]},"application/vnd.ms-playready.initiator+xml":{source:"iana",compressible:!0},"application/vnd.ms-powerpoint":{source:"iana",compressible:!1,extensions:["ppt","pps","pot"]},"application/vnd.ms-powerpoint.addin.macroenabled.12":{source:"iana",extensions:["ppam"]},"application/vnd.ms-powerpoint.presentation.macroenabled.12":{source:"iana",extensions:["pptm"]},"application/vnd.ms-powerpoint.slide.macroenabled.12":{source:"iana",extensions:["sldm"]},"application/vnd.ms-powerpoint.slideshow.macroenabled.12":{source:"iana",extensions:["ppsm"]},"application/vnd.ms-powerpoint.template.macroenabled.12":{source:"iana",extensions:["potm"]},"application/vnd.ms-printdevicecapabilities+xml":{source:"iana",compressible:!0},"application/vnd.ms-printing.printticket+xml":{source:"apache",compressible:!0},"application/vnd.ms-printschematicket+xml":{source:"iana",compressible:!0},"application/vnd.ms-project":{source:"iana",extensions:["mpp","mpt"]},"application/vnd.ms-tnef":{source:"iana"},"application/vnd.ms-visio.viewer":{extensions:["vdx"]},"application/vnd.ms-windows.devicepairing":{source:"iana"},"application/vnd.ms-windows.nwprinting.oob":{source:"iana"},"application/vnd.ms-windows.printerpairing":{source:"iana"},"application/vnd.ms-windows.wsd.oob":{source:"iana"},"application/vnd.ms-wmdrm.lic-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.lic-resp":{source:"iana"},"application/vnd.ms-wmdrm.meter-chlg-req":{source:"iana"},"application/vnd.ms-wmdrm.meter-resp":{source:"iana"},"application/vnd.ms-word.document.macroenabled.12":{source:"iana",extensions:["docm"]},"application/vnd.ms-word.template.macroenabled.12":{source:"iana",extensions:["dotm"]},"application/vnd.ms-works":{source:"iana",extensions:["wps","wks","wcm","wdb"]},"application/vnd.ms-wpl":{source:"iana",extensions:["wpl"]},"application/vnd.ms-xpsdocument":{source:"iana",compressible:!1,extensions:["xps"]},"application/vnd.msa-disk-image":{source:"iana"},"application/vnd.mseq":{source:"iana",extensions:["mseq"]},"application/vnd.msgpack":{source:"iana"},"application/vnd.msign":{source:"iana"},"application/vnd.multiad.creator":{source:"iana"},"application/vnd.multiad.creator.cif":{source:"iana"},"application/vnd.music-niff":{source:"iana"},"application/vnd.musician":{source:"iana",extensions:["mus"]},"application/vnd.muvee.style":{source:"iana",extensions:["msty"]},"application/vnd.mynfc":{source:"iana",extensions:["taglet"]},"application/vnd.nacamar.ybrid+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+cbor":{source:"iana"},"application/vnd.nato.bindingdataobject+json":{source:"iana",compressible:!0},"application/vnd.nato.bindingdataobject+xml":{source:"iana",compressible:!0,extensions:["bdo"]},"application/vnd.nato.openxmlformats-package.iepd+zip":{source:"iana",compressible:!1},"application/vnd.ncd.control":{source:"iana"},"application/vnd.ncd.reference":{source:"iana"},"application/vnd.nearst.inv+json":{source:"iana",compressible:!0},"application/vnd.nebumind.line":{source:"iana"},"application/vnd.nervana":{source:"iana"},"application/vnd.netfpx":{source:"iana"},"application/vnd.neurolanguage.nlu":{source:"iana",extensions:["nlu"]},"application/vnd.nimn":{source:"iana"},"application/vnd.nintendo.nitro.rom":{source:"iana"},"application/vnd.nintendo.snes.rom":{source:"iana"},"application/vnd.nitf":{source:"iana",extensions:["ntf","nitf"]},"application/vnd.noblenet-directory":{source:"iana",extensions:["nnd"]},"application/vnd.noblenet-sealer":{source:"iana",extensions:["nns"]},"application/vnd.noblenet-web":{source:"iana",extensions:["nnw"]},"application/vnd.nokia.catalogs":{source:"iana"},"application/vnd.nokia.conml+wbxml":{source:"iana"},"application/vnd.nokia.conml+xml":{source:"iana",compressible:!0},"application/vnd.nokia.iptv.config+xml":{source:"iana",compressible:!0},"application/vnd.nokia.isds-radio-presets":{source:"iana"},"application/vnd.nokia.landmark+wbxml":{source:"iana"},"application/vnd.nokia.landmark+xml":{source:"iana",compressible:!0},"application/vnd.nokia.landmarkcollection+xml":{source:"iana",compressible:!0},"application/vnd.nokia.n-gage.ac+xml":{source:"iana",compressible:!0,extensions:["ac"]},"application/vnd.nokia.n-gage.data":{source:"iana",extensions:["ngdat"]},"application/vnd.nokia.n-gage.symbian.install":{source:"apache",extensions:["n-gage"]},"application/vnd.nokia.ncd":{source:"iana"},"application/vnd.nokia.pcd+wbxml":{source:"iana"},"application/vnd.nokia.pcd+xml":{source:"iana",compressible:!0},"application/vnd.nokia.radio-preset":{source:"iana",extensions:["rpst"]},"application/vnd.nokia.radio-presets":{source:"iana",extensions:["rpss"]},"application/vnd.novadigm.edm":{source:"iana",extensions:["edm"]},"application/vnd.novadigm.edx":{source:"iana",extensions:["edx"]},"application/vnd.novadigm.ext":{source:"iana",extensions:["ext"]},"application/vnd.ntt-local.content-share":{source:"iana"},"application/vnd.ntt-local.file-transfer":{source:"iana"},"application/vnd.ntt-local.ogw_remote-access":{source:"iana"},"application/vnd.ntt-local.sip-ta_remote":{source:"iana"},"application/vnd.ntt-local.sip-ta_tcp_stream":{source:"iana"},"application/vnd.oai.workflows":{source:"iana"},"application/vnd.oai.workflows+json":{source:"iana",compressible:!0},"application/vnd.oai.workflows+yaml":{source:"iana"},"application/vnd.oasis.opendocument.base":{source:"iana"},"application/vnd.oasis.opendocument.chart":{source:"iana",extensions:["odc"]},"application/vnd.oasis.opendocument.chart-template":{source:"iana",extensions:["otc"]},"application/vnd.oasis.opendocument.database":{source:"apache",extensions:["odb"]},"application/vnd.oasis.opendocument.formula":{source:"iana",extensions:["odf"]},"application/vnd.oasis.opendocument.formula-template":{source:"iana",extensions:["odft"]},"application/vnd.oasis.opendocument.graphics":{source:"iana",compressible:!1,extensions:["odg"]},"application/vnd.oasis.opendocument.graphics-template":{source:"iana",extensions:["otg"]},"application/vnd.oasis.opendocument.image":{source:"iana",extensions:["odi"]},"application/vnd.oasis.opendocument.image-template":{source:"iana",extensions:["oti"]},"application/vnd.oasis.opendocument.presentation":{source:"iana",compressible:!1,extensions:["odp"]},"application/vnd.oasis.opendocument.presentation-template":{source:"iana",extensions:["otp"]},"application/vnd.oasis.opendocument.spreadsheet":{source:"iana",compressible:!1,extensions:["ods"]},"application/vnd.oasis.opendocument.spreadsheet-template":{source:"iana",extensions:["ots"]},"application/vnd.oasis.opendocument.text":{source:"iana",compressible:!1,extensions:["odt"]},"application/vnd.oasis.opendocument.text-master":{source:"iana",extensions:["odm"]},"application/vnd.oasis.opendocument.text-master-template":{source:"iana"},"application/vnd.oasis.opendocument.text-template":{source:"iana",extensions:["ott"]},"application/vnd.oasis.opendocument.text-web":{source:"iana",extensions:["oth"]},"application/vnd.obn":{source:"iana"},"application/vnd.ocf+cbor":{source:"iana"},"application/vnd.oci.image.manifest.v1+json":{source:"iana",compressible:!0},"application/vnd.oftn.l10n+json":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessdownload+xml":{source:"iana",compressible:!0},"application/vnd.oipf.contentaccessstreaming+xml":{source:"iana",compressible:!0},"application/vnd.oipf.cspg-hexbinary":{source:"iana"},"application/vnd.oipf.dae.svg+xml":{source:"iana",compressible:!0},"application/vnd.oipf.dae.xhtml+xml":{source:"iana",compressible:!0},"application/vnd.oipf.mippvcontrolmessage+xml":{source:"iana",compressible:!0},"application/vnd.oipf.pae.gem":{source:"iana"},"application/vnd.oipf.spdiscovery+xml":{source:"iana",compressible:!0},"application/vnd.oipf.spdlist+xml":{source:"iana",compressible:!0},"application/vnd.oipf.ueprofile+xml":{source:"iana",compressible:!0},"application/vnd.oipf.userprofile+xml":{source:"iana",compressible:!0},"application/vnd.olpc-sugar":{source:"iana",extensions:["xo"]},"application/vnd.oma-scws-config":{source:"iana"},"application/vnd.oma-scws-http-request":{source:"iana"},"application/vnd.oma-scws-http-response":{source:"iana"},"application/vnd.oma.bcast.associated-procedure-parameter+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.drm-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.imd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.ltkm":{source:"iana"},"application/vnd.oma.bcast.notification+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.provisioningtrigger":{source:"iana"},"application/vnd.oma.bcast.sgboot":{source:"iana"},"application/vnd.oma.bcast.sgdd+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.sgdu":{source:"iana"},"application/vnd.oma.bcast.simple-symbol-container":{source:"iana"},"application/vnd.oma.bcast.smartcard-trigger+xml":{source:"apache",compressible:!0},"application/vnd.oma.bcast.sprov+xml":{source:"iana",compressible:!0},"application/vnd.oma.bcast.stkm":{source:"iana"},"application/vnd.oma.cab-address-book+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-feature-handler+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-pcc+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-subs-invite+xml":{source:"iana",compressible:!0},"application/vnd.oma.cab-user-prefs+xml":{source:"iana",compressible:!0},"application/vnd.oma.dcd":{source:"iana"},"application/vnd.oma.dcdc":{source:"iana"},"application/vnd.oma.dd2+xml":{source:"iana",compressible:!0,extensions:["dd2"]},"application/vnd.oma.drm.risd+xml":{source:"iana",compressible:!0},"application/vnd.oma.group-usage-list+xml":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+cbor":{source:"iana"},"application/vnd.oma.lwm2m+json":{source:"iana",compressible:!0},"application/vnd.oma.lwm2m+tlv":{source:"iana"},"application/vnd.oma.pal+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.detailed-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.final-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.groups+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.invocation-descriptor+xml":{source:"iana",compressible:!0},"application/vnd.oma.poc.optimized-progress-report+xml":{source:"iana",compressible:!0},"application/vnd.oma.push":{source:"iana"},"application/vnd.oma.scidm.messages+xml":{source:"iana",compressible:!0},"application/vnd.oma.xcap-directory+xml":{source:"iana",compressible:!0},"application/vnd.omads-email+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-file+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omads-folder+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.omaloc-supl-init":{source:"iana"},"application/vnd.onepager":{source:"iana"},"application/vnd.onepagertamp":{source:"iana"},"application/vnd.onepagertamx":{source:"iana"},"application/vnd.onepagertat":{source:"iana"},"application/vnd.onepagertatp":{source:"iana"},"application/vnd.onepagertatx":{source:"iana"},"application/vnd.onvif.metadata":{source:"iana"},"application/vnd.openblox.game+xml":{source:"iana",compressible:!0,extensions:["obgx"]},"application/vnd.openblox.game-binary":{source:"iana"},"application/vnd.openeye.oeb":{source:"iana"},"application/vnd.openofficeorg.extension":{source:"apache",extensions:["oxt"]},"application/vnd.openstreetmap.data+xml":{source:"iana",compressible:!0,extensions:["osm"]},"application/vnd.opentimestamps.ots":{source:"iana"},"application/vnd.openvpi.dspx+json":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.custom-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.customxmlproperties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawing+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chart+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramcolors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramdata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramlayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.drawingml.diagramstyle+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.extended-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.commentauthors+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.handoutmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesmaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.notesslide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presentation":{source:"iana",compressible:!1,extensions:["pptx"]},"application/vnd.openxmlformats-officedocument.presentationml.presentation.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.presprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slide":{source:"iana",extensions:["sldx"]},"application/vnd.openxmlformats-officedocument.presentationml.slide+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidelayout+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slidemaster+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideshow":{source:"iana",extensions:["ppsx"]},"application/vnd.openxmlformats-officedocument.presentationml.slideshow.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.slideupdateinfo+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tablestyles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.tags+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.template":{source:"iana",extensions:["potx"]},"application/vnd.openxmlformats-officedocument.presentationml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.presentationml.viewprops+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.calcchain+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.externallink+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcachedefinition+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivotcacherecords+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.pivottable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.querytable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionheaders+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.revisionlog+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sharedstrings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet":{source:"iana",compressible:!1,extensions:["xlsx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.sheetmetadata+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.tablesinglecells+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.template":{source:"iana",extensions:["xltx"]},"application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.usernames+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.volatiledependencies+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.theme+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.themeoverride+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.vmldrawing":{source:"iana"},"application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document":{source:"iana",compressible:!1,extensions:["docx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.glossary+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.endnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.fonttable+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footer+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.footnotes+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.numbering+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.template":{source:"iana",extensions:["dotx"]},"application/vnd.openxmlformats-officedocument.wordprocessingml.template.main+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-officedocument.wordprocessingml.websettings+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.core-properties+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.digital-signature-xmlsignature+xml":{source:"iana",compressible:!0},"application/vnd.openxmlformats-package.relationships+xml":{source:"iana",compressible:!0},"application/vnd.oracle.resource+json":{source:"iana",compressible:!0},"application/vnd.orange.indata":{source:"iana"},"application/vnd.osa.netdeploy":{source:"iana"},"application/vnd.osgeo.mapguide.package":{source:"iana",extensions:["mgp"]},"application/vnd.osgi.bundle":{source:"iana"},"application/vnd.osgi.dp":{source:"iana",extensions:["dp"]},"application/vnd.osgi.subsystem":{source:"iana",extensions:["esa"]},"application/vnd.otps.ct-kip+xml":{source:"iana",compressible:!0},"application/vnd.oxli.countgraph":{source:"iana"},"application/vnd.pagerduty+json":{source:"iana",compressible:!0},"application/vnd.palm":{source:"iana",extensions:["pdb","pqa","oprc"]},"application/vnd.panoply":{source:"iana"},"application/vnd.paos.xml":{source:"iana"},"application/vnd.patentdive":{source:"iana"},"application/vnd.patientecommsdoc":{source:"iana"},"application/vnd.pawaafile":{source:"iana",extensions:["paw"]},"application/vnd.pcos":{source:"iana"},"application/vnd.pg.format":{source:"iana",extensions:["str"]},"application/vnd.pg.osasli":{source:"iana",extensions:["ei6"]},"application/vnd.piaccess.application-licence":{source:"iana"},"application/vnd.picsel":{source:"iana",extensions:["efif"]},"application/vnd.pmi.widget":{source:"iana",extensions:["wg"]},"application/vnd.poc.group-advertisement+xml":{source:"iana",compressible:!0},"application/vnd.pocketlearn":{source:"iana",extensions:["plf"]},"application/vnd.powerbuilder6":{source:"iana",extensions:["pbd"]},"application/vnd.powerbuilder6-s":{source:"iana"},"application/vnd.powerbuilder7":{source:"iana"},"application/vnd.powerbuilder7-s":{source:"iana"},"application/vnd.powerbuilder75":{source:"iana"},"application/vnd.powerbuilder75-s":{source:"iana"},"application/vnd.preminet":{source:"iana"},"application/vnd.previewsystems.box":{source:"iana",extensions:["box"]},"application/vnd.procrate.brushset":{extensions:["brushset"]},"application/vnd.procreate.brush":{extensions:["brush"]},"application/vnd.procreate.dream":{extensions:["drm"]},"application/vnd.proteus.magazine":{source:"iana",extensions:["mgz"]},"application/vnd.psfs":{source:"iana"},"application/vnd.pt.mundusmundi":{source:"iana"},"application/vnd.publishare-delta-tree":{source:"iana",extensions:["qps"]},"application/vnd.pvi.ptid1":{source:"iana",extensions:["ptid"]},"application/vnd.pwg-multiplexed":{source:"iana"},"application/vnd.pwg-xhtml-print+xml":{source:"iana",compressible:!0,extensions:["xhtm"]},"application/vnd.qualcomm.brew-app-res":{source:"iana"},"application/vnd.quarantainenet":{source:"iana"},"application/vnd.quark.quarkxpress":{source:"iana",extensions:["qxd","qxt","qwd","qwt","qxl","qxb"]},"application/vnd.quobject-quoxdocument":{source:"iana"},"application/vnd.radisys.moml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-conn+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-audit-stream+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-conf+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-base+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-detect+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-fax-sendrecv+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-group+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-speech+xml":{source:"iana",compressible:!0},"application/vnd.radisys.msml-dialog-transform+xml":{source:"iana",compressible:!0},"application/vnd.rainstor.data":{source:"iana"},"application/vnd.rapid":{source:"iana"},"application/vnd.rar":{source:"iana",extensions:["rar"]},"application/vnd.realvnc.bed":{source:"iana",extensions:["bed"]},"application/vnd.recordare.musicxml":{source:"iana",extensions:["mxl"]},"application/vnd.recordare.musicxml+xml":{source:"iana",compressible:!0,extensions:["musicxml"]},"application/vnd.relpipe":{source:"iana"},"application/vnd.renlearn.rlprint":{source:"iana"},"application/vnd.resilient.logic":{source:"iana"},"application/vnd.restful+json":{source:"iana",compressible:!0},"application/vnd.rig.cryptonote":{source:"iana",extensions:["cryptonote"]},"application/vnd.rim.cod":{source:"apache",extensions:["cod"]},"application/vnd.rn-realmedia":{source:"apache",extensions:["rm"]},"application/vnd.rn-realmedia-vbr":{source:"apache",extensions:["rmvb"]},"application/vnd.route66.link66+xml":{source:"iana",compressible:!0,extensions:["link66"]},"application/vnd.rs-274x":{source:"iana"},"application/vnd.ruckus.download":{source:"iana"},"application/vnd.s3sms":{source:"iana"},"application/vnd.sailingtracker.track":{source:"iana",extensions:["st"]},"application/vnd.sar":{source:"iana"},"application/vnd.sbm.cid":{source:"iana"},"application/vnd.sbm.mid2":{source:"iana"},"application/vnd.scribus":{source:"iana"},"application/vnd.sealed.3df":{source:"iana"},"application/vnd.sealed.csf":{source:"iana"},"application/vnd.sealed.doc":{source:"iana"},"application/vnd.sealed.eml":{source:"iana"},"application/vnd.sealed.mht":{source:"iana"},"application/vnd.sealed.net":{source:"iana"},"application/vnd.sealed.ppt":{source:"iana"},"application/vnd.sealed.tiff":{source:"iana"},"application/vnd.sealed.xls":{source:"iana"},"application/vnd.sealedmedia.softseal.html":{source:"iana"},"application/vnd.sealedmedia.softseal.pdf":{source:"iana"},"application/vnd.seemail":{source:"iana",extensions:["see"]},"application/vnd.seis+json":{source:"iana",compressible:!0},"application/vnd.sema":{source:"iana",extensions:["sema"]},"application/vnd.semd":{source:"iana",extensions:["semd"]},"application/vnd.semf":{source:"iana",extensions:["semf"]},"application/vnd.shade-save-file":{source:"iana"},"application/vnd.shana.informed.formdata":{source:"iana",extensions:["ifm"]},"application/vnd.shana.informed.formtemplate":{source:"iana",extensions:["itp"]},"application/vnd.shana.informed.interchange":{source:"iana",extensions:["iif"]},"application/vnd.shana.informed.package":{source:"iana",extensions:["ipk"]},"application/vnd.shootproof+json":{source:"iana",compressible:!0},"application/vnd.shopkick+json":{source:"iana",compressible:!0},"application/vnd.shp":{source:"iana"},"application/vnd.shx":{source:"iana"},"application/vnd.sigrok.session":{source:"iana"},"application/vnd.simtech-mindmapper":{source:"iana",extensions:["twd","twds"]},"application/vnd.siren+json":{source:"iana",compressible:!0},"application/vnd.sketchometry":{source:"iana"},"application/vnd.smaf":{source:"iana",extensions:["mmf"]},"application/vnd.smart.notebook":{source:"iana"},"application/vnd.smart.teacher":{source:"iana",extensions:["teacher"]},"application/vnd.smintio.portals.archive":{source:"iana"},"application/vnd.snesdev-page-table":{source:"iana"},"application/vnd.software602.filler.form+xml":{source:"iana",compressible:!0,extensions:["fo"]},"application/vnd.software602.filler.form-xml-zip":{source:"iana"},"application/vnd.solent.sdkm+xml":{source:"iana",compressible:!0,extensions:["sdkm","sdkd"]},"application/vnd.spotfire.dxp":{source:"iana",extensions:["dxp"]},"application/vnd.spotfire.sfs":{source:"iana",extensions:["sfs"]},"application/vnd.sqlite3":{source:"iana"},"application/vnd.sss-cod":{source:"iana"},"application/vnd.sss-dtf":{source:"iana"},"application/vnd.sss-ntf":{source:"iana"},"application/vnd.stardivision.calc":{source:"apache",extensions:["sdc"]},"application/vnd.stardivision.draw":{source:"apache",extensions:["sda"]},"application/vnd.stardivision.impress":{source:"apache",extensions:["sdd"]},"application/vnd.stardivision.math":{source:"apache",extensions:["smf"]},"application/vnd.stardivision.writer":{source:"apache",extensions:["sdw","vor"]},"application/vnd.stardivision.writer-global":{source:"apache",extensions:["sgl"]},"application/vnd.stepmania.package":{source:"iana",extensions:["smzip"]},"application/vnd.stepmania.stepchart":{source:"iana",extensions:["sm"]},"application/vnd.street-stream":{source:"iana"},"application/vnd.sun.wadl+xml":{source:"iana",compressible:!0,extensions:["wadl"]},"application/vnd.sun.xml.calc":{source:"apache",extensions:["sxc"]},"application/vnd.sun.xml.calc.template":{source:"apache",extensions:["stc"]},"application/vnd.sun.xml.draw":{source:"apache",extensions:["sxd"]},"application/vnd.sun.xml.draw.template":{source:"apache",extensions:["std"]},"application/vnd.sun.xml.impress":{source:"apache",extensions:["sxi"]},"application/vnd.sun.xml.impress.template":{source:"apache",extensions:["sti"]},"application/vnd.sun.xml.math":{source:"apache",extensions:["sxm"]},"application/vnd.sun.xml.writer":{source:"apache",extensions:["sxw"]},"application/vnd.sun.xml.writer.global":{source:"apache",extensions:["sxg"]},"application/vnd.sun.xml.writer.template":{source:"apache",extensions:["stw"]},"application/vnd.sus-calendar":{source:"iana",extensions:["sus","susp"]},"application/vnd.svd":{source:"iana",extensions:["svd"]},"application/vnd.swiftview-ics":{source:"iana"},"application/vnd.sybyl.mol2":{source:"iana"},"application/vnd.sycle+xml":{source:"iana",compressible:!0},"application/vnd.syft+json":{source:"iana",compressible:!0},"application/vnd.symbian.install":{source:"apache",extensions:["sis","sisx"]},"application/vnd.syncml+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xsm"]},"application/vnd.syncml.dm+wbxml":{source:"iana",charset:"UTF-8",extensions:["bdm"]},"application/vnd.syncml.dm+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["xdm"]},"application/vnd.syncml.dm.notification":{source:"iana"},"application/vnd.syncml.dmddf+wbxml":{source:"iana"},"application/vnd.syncml.dmddf+xml":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["ddf"]},"application/vnd.syncml.dmtnds+wbxml":{source:"iana"},"application/vnd.syncml.dmtnds+xml":{source:"iana",charset:"UTF-8",compressible:!0},"application/vnd.syncml.ds.notification":{source:"iana"},"application/vnd.tableschema+json":{source:"iana",compressible:!0},"application/vnd.tao.intent-module-archive":{source:"iana",extensions:["tao"]},"application/vnd.tcpdump.pcap":{source:"iana",extensions:["pcap","cap","dmp"]},"application/vnd.think-cell.ppttc+json":{source:"iana",compressible:!0},"application/vnd.tmd.mediaflex.api+xml":{source:"iana",compressible:!0},"application/vnd.tml":{source:"iana"},"application/vnd.tmobile-livetv":{source:"iana",extensions:["tmo"]},"application/vnd.tri.onesource":{source:"iana"},"application/vnd.trid.tpt":{source:"iana",extensions:["tpt"]},"application/vnd.triscape.mxs":{source:"iana",extensions:["mxs"]},"application/vnd.trueapp":{source:"iana",extensions:["tra"]},"application/vnd.truedoc":{source:"iana"},"application/vnd.ubisoft.webplayer":{source:"iana"},"application/vnd.ufdl":{source:"iana",extensions:["ufd","ufdl"]},"application/vnd.uic.osdm+json":{source:"iana",compressible:!0},"application/vnd.uiq.theme":{source:"iana",extensions:["utz"]},"application/vnd.umajin":{source:"iana",extensions:["umj"]},"application/vnd.unity":{source:"iana",extensions:["unityweb"]},"application/vnd.uoml+xml":{source:"iana",compressible:!0,extensions:["uoml","uo"]},"application/vnd.uplanet.alert":{source:"iana"},"application/vnd.uplanet.alert-wbxml":{source:"iana"},"application/vnd.uplanet.bearer-choice":{source:"iana"},"application/vnd.uplanet.bearer-choice-wbxml":{source:"iana"},"application/vnd.uplanet.cacheop":{source:"iana"},"application/vnd.uplanet.cacheop-wbxml":{source:"iana"},"application/vnd.uplanet.channel":{source:"iana"},"application/vnd.uplanet.channel-wbxml":{source:"iana"},"application/vnd.uplanet.list":{source:"iana"},"application/vnd.uplanet.list-wbxml":{source:"iana"},"application/vnd.uplanet.listcmd":{source:"iana"},"application/vnd.uplanet.listcmd-wbxml":{source:"iana"},"application/vnd.uplanet.signal":{source:"iana"},"application/vnd.uri-map":{source:"iana"},"application/vnd.valve.source.material":{source:"iana"},"application/vnd.vcx":{source:"iana",extensions:["vcx"]},"application/vnd.vd-study":{source:"iana"},"application/vnd.vectorworks":{source:"iana"},"application/vnd.vel+json":{source:"iana",compressible:!0},"application/vnd.veraison.tsm-report+cbor":{source:"iana"},"application/vnd.veraison.tsm-report+json":{source:"iana",compressible:!0},"application/vnd.verimatrix.vcas":{source:"iana"},"application/vnd.veritone.aion+json":{source:"iana",compressible:!0},"application/vnd.veryant.thin":{source:"iana"},"application/vnd.ves.encrypted":{source:"iana"},"application/vnd.vidsoft.vidconference":{source:"iana"},"application/vnd.visio":{source:"iana",extensions:["vsd","vst","vss","vsw","vsdx","vtx"]},"application/vnd.visionary":{source:"iana",extensions:["vis"]},"application/vnd.vividence.scriptfile":{source:"iana"},"application/vnd.vocalshaper.vsp4":{source:"iana"},"application/vnd.vsf":{source:"iana",extensions:["vsf"]},"application/vnd.wap.sic":{source:"iana"},"application/vnd.wap.slc":{source:"iana"},"application/vnd.wap.wbxml":{source:"iana",charset:"UTF-8",extensions:["wbxml"]},"application/vnd.wap.wmlc":{source:"iana",extensions:["wmlc"]},"application/vnd.wap.wmlscriptc":{source:"iana",extensions:["wmlsc"]},"application/vnd.wasmflow.wafl":{source:"iana"},"application/vnd.webturbo":{source:"iana",extensions:["wtb"]},"application/vnd.wfa.dpp":{source:"iana"},"application/vnd.wfa.p2p":{source:"iana"},"application/vnd.wfa.wsc":{source:"iana"},"application/vnd.windows.devicepairing":{source:"iana"},"application/vnd.wmc":{source:"iana"},"application/vnd.wmf.bootstrap":{source:"iana"},"application/vnd.wolfram.mathematica":{source:"iana"},"application/vnd.wolfram.mathematica.package":{source:"iana"},"application/vnd.wolfram.player":{source:"iana",extensions:["nbp"]},"application/vnd.wordlift":{source:"iana"},"application/vnd.wordperfect":{source:"iana",extensions:["wpd"]},"application/vnd.wqd":{source:"iana",extensions:["wqd"]},"application/vnd.wrq-hp3000-labelled":{source:"iana"},"application/vnd.wt.stf":{source:"iana",extensions:["stf"]},"application/vnd.wv.csp+wbxml":{source:"iana"},"application/vnd.wv.csp+xml":{source:"iana",compressible:!0},"application/vnd.wv.ssp+xml":{source:"iana",compressible:!0},"application/vnd.xacml+json":{source:"iana",compressible:!0},"application/vnd.xara":{source:"iana",extensions:["xar"]},"application/vnd.xarin.cpj":{source:"iana"},"application/vnd.xecrets-encrypted":{source:"iana"},"application/vnd.xfdl":{source:"iana",extensions:["xfdl"]},"application/vnd.xfdl.webform":{source:"iana"},"application/vnd.xmi+xml":{source:"iana",compressible:!0},"application/vnd.xmpie.cpkg":{source:"iana"},"application/vnd.xmpie.dpkg":{source:"iana"},"application/vnd.xmpie.plan":{source:"iana"},"application/vnd.xmpie.ppkg":{source:"iana"},"application/vnd.xmpie.xlim":{source:"iana"},"application/vnd.yamaha.hv-dic":{source:"iana",extensions:["hvd"]},"application/vnd.yamaha.hv-script":{source:"iana",extensions:["hvs"]},"application/vnd.yamaha.hv-voice":{source:"iana",extensions:["hvp"]},"application/vnd.yamaha.openscoreformat":{source:"iana",extensions:["osf"]},"application/vnd.yamaha.openscoreformat.osfpvg+xml":{source:"iana",compressible:!0,extensions:["osfpvg"]},"application/vnd.yamaha.remote-setup":{source:"iana"},"application/vnd.yamaha.smaf-audio":{source:"iana",extensions:["saf"]},"application/vnd.yamaha.smaf-phrase":{source:"iana",extensions:["spf"]},"application/vnd.yamaha.through-ngn":{source:"iana"},"application/vnd.yamaha.tunnel-udpencap":{source:"iana"},"application/vnd.yaoweme":{source:"iana"},"application/vnd.yellowriver-custom-menu":{source:"iana",extensions:["cmp"]},"application/vnd.zul":{source:"iana",extensions:["zir","zirz"]},"application/vnd.zzazz.deck+xml":{source:"iana",compressible:!0,extensions:["zaz"]},"application/voicexml+xml":{source:"iana",compressible:!0,extensions:["vxml"]},"application/voucher-cms+json":{source:"iana",compressible:!0},"application/voucher-jws+json":{source:"iana",compressible:!0},"application/vp":{source:"iana"},"application/vp+cose":{source:"iana"},"application/vp+jwt":{source:"iana"},"application/vq-rtcpxr":{source:"iana"},"application/wasm":{source:"iana",compressible:!0,extensions:["wasm"]},"application/watcherinfo+xml":{source:"iana",compressible:!0,extensions:["wif"]},"application/webpush-options+json":{source:"iana",compressible:!0},"application/whoispp-query":{source:"iana"},"application/whoispp-response":{source:"iana"},"application/widget":{source:"iana",extensions:["wgt"]},"application/winhlp":{source:"apache",extensions:["hlp"]},"application/wita":{source:"iana"},"application/wordperfect5.1":{source:"iana"},"application/wsdl+xml":{source:"iana",compressible:!0,extensions:["wsdl"]},"application/wspolicy+xml":{source:"iana",compressible:!0,extensions:["wspolicy"]},"application/x-7z-compressed":{source:"apache",compressible:!1,extensions:["7z"]},"application/x-abiword":{source:"apache",extensions:["abw"]},"application/x-ace-compressed":{source:"apache",extensions:["ace"]},"application/x-amf":{source:"apache"},"application/x-apple-diskimage":{source:"apache",extensions:["dmg"]},"application/x-arj":{compressible:!1,extensions:["arj"]},"application/x-authorware-bin":{source:"apache",extensions:["aab","x32","u32","vox"]},"application/x-authorware-map":{source:"apache",extensions:["aam"]},"application/x-authorware-seg":{source:"apache",extensions:["aas"]},"application/x-bcpio":{source:"apache",extensions:["bcpio"]},"application/x-bdoc":{compressible:!1,extensions:["bdoc"]},"application/x-bittorrent":{source:"apache",extensions:["torrent"]},"application/x-blender":{extensions:["blend"]},"application/x-blorb":{source:"apache",extensions:["blb","blorb"]},"application/x-bzip":{source:"apache",compressible:!1,extensions:["bz"]},"application/x-bzip2":{source:"apache",compressible:!1,extensions:["bz2","boz"]},"application/x-cbr":{source:"apache",extensions:["cbr","cba","cbt","cbz","cb7"]},"application/x-cdlink":{source:"apache",extensions:["vcd"]},"application/x-cfs-compressed":{source:"apache",extensions:["cfs"]},"application/x-chat":{source:"apache",extensions:["chat"]},"application/x-chess-pgn":{source:"apache",extensions:["pgn"]},"application/x-chrome-extension":{extensions:["crx"]},"application/x-cocoa":{source:"nginx",extensions:["cco"]},"application/x-compress":{source:"apache"},"application/x-compressed":{extensions:["rar"]},"application/x-conference":{source:"apache",extensions:["nsc"]},"application/x-cpio":{source:"apache",extensions:["cpio"]},"application/x-csh":{source:"apache",extensions:["csh"]},"application/x-deb":{compressible:!1},"application/x-debian-package":{source:"apache",extensions:["deb","udeb"]},"application/x-dgc-compressed":{source:"apache",extensions:["dgc"]},"application/x-director":{source:"apache",extensions:["dir","dcr","dxr","cst","cct","cxt","w3d","fgd","swa"]},"application/x-doom":{source:"apache",extensions:["wad"]},"application/x-dtbncx+xml":{source:"apache",compressible:!0,extensions:["ncx"]},"application/x-dtbook+xml":{source:"apache",compressible:!0,extensions:["dtb"]},"application/x-dtbresource+xml":{source:"apache",compressible:!0,extensions:["res"]},"application/x-dvi":{source:"apache",compressible:!1,extensions:["dvi"]},"application/x-envoy":{source:"apache",extensions:["evy"]},"application/x-eva":{source:"apache",extensions:["eva"]},"application/x-font-bdf":{source:"apache",extensions:["bdf"]},"application/x-font-dos":{source:"apache"},"application/x-font-framemaker":{source:"apache"},"application/x-font-ghostscript":{source:"apache",extensions:["gsf"]},"application/x-font-libgrx":{source:"apache"},"application/x-font-linux-psf":{source:"apache",extensions:["psf"]},"application/x-font-pcf":{source:"apache",extensions:["pcf"]},"application/x-font-snf":{source:"apache",extensions:["snf"]},"application/x-font-speedo":{source:"apache"},"application/x-font-sunos-news":{source:"apache"},"application/x-font-type1":{source:"apache",extensions:["pfa","pfb","pfm","afm"]},"application/x-font-vfont":{source:"apache"},"application/x-freearc":{source:"apache",extensions:["arc"]},"application/x-futuresplash":{source:"apache",extensions:["spl"]},"application/x-gca-compressed":{source:"apache",extensions:["gca"]},"application/x-glulx":{source:"apache",extensions:["ulx"]},"application/x-gnumeric":{source:"apache",extensions:["gnumeric"]},"application/x-gramps-xml":{source:"apache",extensions:["gramps"]},"application/x-gtar":{source:"apache",extensions:["gtar"]},"application/x-gzip":{source:"apache"},"application/x-hdf":{source:"apache",extensions:["hdf"]},"application/x-httpd-php":{compressible:!0,extensions:["php"]},"application/x-install-instructions":{source:"apache",extensions:["install"]},"application/x-ipynb+json":{compressible:!0,extensions:["ipynb"]},"application/x-iso9660-image":{source:"apache",extensions:["iso"]},"application/x-iwork-keynote-sffkey":{extensions:["key"]},"application/x-iwork-numbers-sffnumbers":{extensions:["numbers"]},"application/x-iwork-pages-sffpages":{extensions:["pages"]},"application/x-java-archive-diff":{source:"nginx",extensions:["jardiff"]},"application/x-java-jnlp-file":{source:"apache",compressible:!1,extensions:["jnlp"]},"application/x-javascript":{compressible:!0},"application/x-keepass2":{extensions:["kdbx"]},"application/x-latex":{source:"apache",compressible:!1,extensions:["latex"]},"application/x-lua-bytecode":{extensions:["luac"]},"application/x-lzh-compressed":{source:"apache",extensions:["lzh","lha"]},"application/x-makeself":{source:"nginx",extensions:["run"]},"application/x-mie":{source:"apache",extensions:["mie"]},"application/x-mobipocket-ebook":{source:"apache",extensions:["prc","mobi"]},"application/x-mpegurl":{compressible:!1},"application/x-ms-application":{source:"apache",extensions:["application"]},"application/x-ms-shortcut":{source:"apache",extensions:["lnk"]},"application/x-ms-wmd":{source:"apache",extensions:["wmd"]},"application/x-ms-wmz":{source:"apache",extensions:["wmz"]},"application/x-ms-xbap":{source:"apache",extensions:["xbap"]},"application/x-msaccess":{source:"apache",extensions:["mdb"]},"application/x-msbinder":{source:"apache",extensions:["obd"]},"application/x-mscardfile":{source:"apache",extensions:["crd"]},"application/x-msclip":{source:"apache",extensions:["clp"]},"application/x-msdos-program":{extensions:["exe"]},"application/x-msdownload":{source:"apache",extensions:["exe","dll","com","bat","msi"]},"application/x-msmediaview":{source:"apache",extensions:["mvb","m13","m14"]},"application/x-msmetafile":{source:"apache",extensions:["wmf","wmz","emf","emz"]},"application/x-msmoney":{source:"apache",extensions:["mny"]},"application/x-mspublisher":{source:"apache",extensions:["pub"]},"application/x-msschedule":{source:"apache",extensions:["scd"]},"application/x-msterminal":{source:"apache",extensions:["trm"]},"application/x-mswrite":{source:"apache",extensions:["wri"]},"application/x-netcdf":{source:"apache",extensions:["nc","cdf"]},"application/x-ns-proxy-autoconfig":{compressible:!0,extensions:["pac"]},"application/x-nzb":{source:"apache",extensions:["nzb"]},"application/x-perl":{source:"nginx",extensions:["pl","pm"]},"application/x-pilot":{source:"nginx",extensions:["prc","pdb"]},"application/x-pkcs12":{source:"apache",compressible:!1,extensions:["p12","pfx"]},"application/x-pkcs7-certificates":{source:"apache",extensions:["p7b","spc"]},"application/x-pkcs7-certreqresp":{source:"apache",extensions:["p7r"]},"application/x-pki-message":{source:"iana"},"application/x-rar-compressed":{source:"apache",compressible:!1,extensions:["rar"]},"application/x-redhat-package-manager":{source:"nginx",extensions:["rpm"]},"application/x-research-info-systems":{source:"apache",extensions:["ris"]},"application/x-sea":{source:"nginx",extensions:["sea"]},"application/x-sh":{source:"apache",compressible:!0,extensions:["sh"]},"application/x-shar":{source:"apache",extensions:["shar"]},"application/x-shockwave-flash":{source:"apache",compressible:!1,extensions:["swf"]},"application/x-silverlight-app":{source:"apache",extensions:["xap"]},"application/x-sql":{source:"apache",extensions:["sql"]},"application/x-stuffit":{source:"apache",compressible:!1,extensions:["sit"]},"application/x-stuffitx":{source:"apache",extensions:["sitx"]},"application/x-subrip":{source:"apache",extensions:["srt"]},"application/x-sv4cpio":{source:"apache",extensions:["sv4cpio"]},"application/x-sv4crc":{source:"apache",extensions:["sv4crc"]},"application/x-t3vm-image":{source:"apache",extensions:["t3"]},"application/x-tads":{source:"apache",extensions:["gam"]},"application/x-tar":{source:"apache",compressible:!0,extensions:["tar"]},"application/x-tcl":{source:"apache",extensions:["tcl","tk"]},"application/x-tex":{source:"apache",extensions:["tex"]},"application/x-tex-tfm":{source:"apache",extensions:["tfm"]},"application/x-texinfo":{source:"apache",extensions:["texinfo","texi"]},"application/x-tgif":{source:"apache",extensions:["obj"]},"application/x-ustar":{source:"apache",extensions:["ustar"]},"application/x-virtualbox-hdd":{compressible:!0,extensions:["hdd"]},"application/x-virtualbox-ova":{compressible:!0,extensions:["ova"]},"application/x-virtualbox-ovf":{compressible:!0,extensions:["ovf"]},"application/x-virtualbox-vbox":{compressible:!0,extensions:["vbox"]},"application/x-virtualbox-vbox-extpack":{compressible:!1,extensions:["vbox-extpack"]},"application/x-virtualbox-vdi":{compressible:!0,extensions:["vdi"]},"application/x-virtualbox-vhd":{compressible:!0,extensions:["vhd"]},"application/x-virtualbox-vmdk":{compressible:!0,extensions:["vmdk"]},"application/x-wais-source":{source:"apache",extensions:["src"]},"application/x-web-app-manifest+json":{compressible:!0,extensions:["webapp"]},"application/x-www-form-urlencoded":{source:"iana",compressible:!0},"application/x-x509-ca-cert":{source:"iana",extensions:["der","crt","pem"]},"application/x-x509-ca-ra-cert":{source:"iana"},"application/x-x509-next-ca-cert":{source:"iana"},"application/x-xfig":{source:"apache",extensions:["fig"]},"application/x-xliff+xml":{source:"apache",compressible:!0,extensions:["xlf"]},"application/x-xpinstall":{source:"apache",compressible:!1,extensions:["xpi"]},"application/x-xz":{source:"apache",extensions:["xz"]},"application/x-zip-compressed":{extensions:["zip"]},"application/x-zmachine":{source:"apache",extensions:["z1","z2","z3","z4","z5","z6","z7","z8"]},"application/x400-bp":{source:"iana"},"application/xacml+xml":{source:"iana",compressible:!0},"application/xaml+xml":{source:"apache",compressible:!0,extensions:["xaml"]},"application/xcap-att+xml":{source:"iana",compressible:!0,extensions:["xav"]},"application/xcap-caps+xml":{source:"iana",compressible:!0,extensions:["xca"]},"application/xcap-diff+xml":{source:"iana",compressible:!0,extensions:["xdf"]},"application/xcap-el+xml":{source:"iana",compressible:!0,extensions:["xel"]},"application/xcap-error+xml":{source:"iana",compressible:!0},"application/xcap-ns+xml":{source:"iana",compressible:!0,extensions:["xns"]},"application/xcon-conference-info+xml":{source:"iana",compressible:!0},"application/xcon-conference-info-diff+xml":{source:"iana",compressible:!0},"application/xenc+xml":{source:"iana",compressible:!0,extensions:["xenc"]},"application/xfdf":{source:"iana",extensions:["xfdf"]},"application/xhtml+xml":{source:"iana",compressible:!0,extensions:["xhtml","xht"]},"application/xhtml-voice+xml":{source:"apache",compressible:!0},"application/xliff+xml":{source:"iana",compressible:!0,extensions:["xlf"]},"application/xml":{source:"iana",compressible:!0,extensions:["xml","xsl","xsd","rng"]},"application/xml-dtd":{source:"iana",compressible:!0,extensions:["dtd"]},"application/xml-external-parsed-entity":{source:"iana"},"application/xml-patch+xml":{source:"iana",compressible:!0},"application/xmpp+xml":{source:"iana",compressible:!0},"application/xop+xml":{source:"iana",compressible:!0,extensions:["xop"]},"application/xproc+xml":{source:"apache",compressible:!0,extensions:["xpl"]},"application/xslt+xml":{source:"iana",compressible:!0,extensions:["xsl","xslt"]},"application/xspf+xml":{source:"apache",compressible:!0,extensions:["xspf"]},"application/xv+xml":{source:"iana",compressible:!0,extensions:["mxml","xhvml","xvml","xvm"]},"application/yaml":{source:"iana"},"application/yang":{source:"iana",extensions:["yang"]},"application/yang-data+cbor":{source:"iana"},"application/yang-data+json":{source:"iana",compressible:!0},"application/yang-data+xml":{source:"iana",compressible:!0},"application/yang-patch+json":{source:"iana",compressible:!0},"application/yang-patch+xml":{source:"iana",compressible:!0},"application/yang-sid+json":{source:"iana",compressible:!0},"application/yin+xml":{source:"iana",compressible:!0,extensions:["yin"]},"application/zip":{source:"iana",compressible:!1,extensions:["zip"]},"application/zip+dotlottie":{extensions:["lottie"]},"application/zlib":{source:"iana"},"application/zstd":{source:"iana"},"audio/1d-interleaved-parityfec":{source:"iana"},"audio/32kadpcm":{source:"iana"},"audio/3gpp":{source:"iana",compressible:!1,extensions:["3gpp"]},"audio/3gpp2":{source:"iana"},"audio/aac":{source:"iana",extensions:["adts","aac"]},"audio/ac3":{source:"iana"},"audio/adpcm":{source:"apache",extensions:["adp"]},"audio/amr":{source:"iana",extensions:["amr"]},"audio/amr-wb":{source:"iana"},"audio/amr-wb+":{source:"iana"},"audio/aptx":{source:"iana"},"audio/asc":{source:"iana"},"audio/atrac-advanced-lossless":{source:"iana"},"audio/atrac-x":{source:"iana"},"audio/atrac3":{source:"iana"},"audio/basic":{source:"iana",compressible:!1,extensions:["au","snd"]},"audio/bv16":{source:"iana"},"audio/bv32":{source:"iana"},"audio/clearmode":{source:"iana"},"audio/cn":{source:"iana"},"audio/dat12":{source:"iana"},"audio/dls":{source:"iana"},"audio/dsr-es201108":{source:"iana"},"audio/dsr-es202050":{source:"iana"},"audio/dsr-es202211":{source:"iana"},"audio/dsr-es202212":{source:"iana"},"audio/dv":{source:"iana"},"audio/dvi4":{source:"iana"},"audio/eac3":{source:"iana"},"audio/encaprtp":{source:"iana"},"audio/evrc":{source:"iana"},"audio/evrc-qcp":{source:"iana"},"audio/evrc0":{source:"iana"},"audio/evrc1":{source:"iana"},"audio/evrcb":{source:"iana"},"audio/evrcb0":{source:"iana"},"audio/evrcb1":{source:"iana"},"audio/evrcnw":{source:"iana"},"audio/evrcnw0":{source:"iana"},"audio/evrcnw1":{source:"iana"},"audio/evrcwb":{source:"iana"},"audio/evrcwb0":{source:"iana"},"audio/evrcwb1":{source:"iana"},"audio/evs":{source:"iana"},"audio/flac":{source:"iana"},"audio/flexfec":{source:"iana"},"audio/fwdred":{source:"iana"},"audio/g711-0":{source:"iana"},"audio/g719":{source:"iana"},"audio/g722":{source:"iana"},"audio/g7221":{source:"iana"},"audio/g723":{source:"iana"},"audio/g726-16":{source:"iana"},"audio/g726-24":{source:"iana"},"audio/g726-32":{source:"iana"},"audio/g726-40":{source:"iana"},"audio/g728":{source:"iana"},"audio/g729":{source:"iana"},"audio/g7291":{source:"iana"},"audio/g729d":{source:"iana"},"audio/g729e":{source:"iana"},"audio/gsm":{source:"iana"},"audio/gsm-efr":{source:"iana"},"audio/gsm-hr-08":{source:"iana"},"audio/ilbc":{source:"iana"},"audio/ip-mr_v2.5":{source:"iana"},"audio/isac":{source:"apache"},"audio/l16":{source:"iana"},"audio/l20":{source:"iana"},"audio/l24":{source:"iana",compressible:!1},"audio/l8":{source:"iana"},"audio/lpc":{source:"iana"},"audio/matroska":{source:"iana"},"audio/melp":{source:"iana"},"audio/melp1200":{source:"iana"},"audio/melp2400":{source:"iana"},"audio/melp600":{source:"iana"},"audio/mhas":{source:"iana"},"audio/midi":{source:"apache",extensions:["mid","midi","kar","rmi"]},"audio/midi-clip":{source:"iana"},"audio/mobile-xmf":{source:"iana",extensions:["mxmf"]},"audio/mp3":{compressible:!1,extensions:["mp3"]},"audio/mp4":{source:"iana",compressible:!1,extensions:["m4a","mp4a","m4b"]},"audio/mp4a-latm":{source:"iana"},"audio/mpa":{source:"iana"},"audio/mpa-robust":{source:"iana"},"audio/mpeg":{source:"iana",compressible:!1,extensions:["mpga","mp2","mp2a","mp3","m2a","m3a"]},"audio/mpeg4-generic":{source:"iana"},"audio/musepack":{source:"apache"},"audio/ogg":{source:"iana",compressible:!1,extensions:["oga","ogg","spx","opus"]},"audio/opus":{source:"iana"},"audio/parityfec":{source:"iana"},"audio/pcma":{source:"iana"},"audio/pcma-wb":{source:"iana"},"audio/pcmu":{source:"iana"},"audio/pcmu-wb":{source:"iana"},"audio/prs.sid":{source:"iana"},"audio/qcelp":{source:"iana"},"audio/raptorfec":{source:"iana"},"audio/red":{source:"iana"},"audio/rtp-enc-aescm128":{source:"iana"},"audio/rtp-midi":{source:"iana"},"audio/rtploopback":{source:"iana"},"audio/rtx":{source:"iana"},"audio/s3m":{source:"apache",extensions:["s3m"]},"audio/scip":{source:"iana"},"audio/silk":{source:"apache",extensions:["sil"]},"audio/smv":{source:"iana"},"audio/smv-qcp":{source:"iana"},"audio/smv0":{source:"iana"},"audio/sofa":{source:"iana"},"audio/sp-midi":{source:"iana"},"audio/speex":{source:"iana"},"audio/t140c":{source:"iana"},"audio/t38":{source:"iana"},"audio/telephone-event":{source:"iana"},"audio/tetra_acelp":{source:"iana"},"audio/tetra_acelp_bb":{source:"iana"},"audio/tone":{source:"iana"},"audio/tsvcis":{source:"iana"},"audio/uemclip":{source:"iana"},"audio/ulpfec":{source:"iana"},"audio/usac":{source:"iana"},"audio/vdvi":{source:"iana"},"audio/vmr-wb":{source:"iana"},"audio/vnd.3gpp.iufp":{source:"iana"},"audio/vnd.4sb":{source:"iana"},"audio/vnd.audiokoz":{source:"iana"},"audio/vnd.celp":{source:"iana"},"audio/vnd.cisco.nse":{source:"iana"},"audio/vnd.cmles.radio-events":{source:"iana"},"audio/vnd.cns.anp1":{source:"iana"},"audio/vnd.cns.inf1":{source:"iana"},"audio/vnd.dece.audio":{source:"iana",extensions:["uva","uvva"]},"audio/vnd.digital-winds":{source:"iana",extensions:["eol"]},"audio/vnd.dlna.adts":{source:"iana"},"audio/vnd.dolby.heaac.1":{source:"iana"},"audio/vnd.dolby.heaac.2":{source:"iana"},"audio/vnd.dolby.mlp":{source:"iana"},"audio/vnd.dolby.mps":{source:"iana"},"audio/vnd.dolby.pl2":{source:"iana"},"audio/vnd.dolby.pl2x":{source:"iana"},"audio/vnd.dolby.pl2z":{source:"iana"},"audio/vnd.dolby.pulse.1":{source:"iana"},"audio/vnd.dra":{source:"iana",extensions:["dra"]},"audio/vnd.dts":{source:"iana",extensions:["dts"]},"audio/vnd.dts.hd":{source:"iana",extensions:["dtshd"]},"audio/vnd.dts.uhd":{source:"iana"},"audio/vnd.dvb.file":{source:"iana"},"audio/vnd.everad.plj":{source:"iana"},"audio/vnd.hns.audio":{source:"iana"},"audio/vnd.lucent.voice":{source:"iana",extensions:["lvp"]},"audio/vnd.ms-playready.media.pya":{source:"iana",extensions:["pya"]},"audio/vnd.nokia.mobile-xmf":{source:"iana"},"audio/vnd.nortel.vbk":{source:"iana"},"audio/vnd.nuera.ecelp4800":{source:"iana",extensions:["ecelp4800"]},"audio/vnd.nuera.ecelp7470":{source:"iana",extensions:["ecelp7470"]},"audio/vnd.nuera.ecelp9600":{source:"iana",extensions:["ecelp9600"]},"audio/vnd.octel.sbc":{source:"iana"},"audio/vnd.presonus.multitrack":{source:"iana"},"audio/vnd.qcelp":{source:"apache"},"audio/vnd.rhetorex.32kadpcm":{source:"iana"},"audio/vnd.rip":{source:"iana",extensions:["rip"]},"audio/vnd.rn-realaudio":{compressible:!1},"audio/vnd.sealedmedia.softseal.mpeg":{source:"iana"},"audio/vnd.vmx.cvsd":{source:"iana"},"audio/vnd.wave":{compressible:!1},"audio/vorbis":{source:"iana",compressible:!1},"audio/vorbis-config":{source:"iana"},"audio/wav":{compressible:!1,extensions:["wav"]},"audio/wave":{compressible:!1,extensions:["wav"]},"audio/webm":{source:"apache",compressible:!1,extensions:["weba"]},"audio/x-aac":{source:"apache",compressible:!1,extensions:["aac"]},"audio/x-aiff":{source:"apache",extensions:["aif","aiff","aifc"]},"audio/x-caf":{source:"apache",compressible:!1,extensions:["caf"]},"audio/x-flac":{source:"apache",extensions:["flac"]},"audio/x-m4a":{source:"nginx",extensions:["m4a"]},"audio/x-matroska":{source:"apache",extensions:["mka"]},"audio/x-mpegurl":{source:"apache",extensions:["m3u"]},"audio/x-ms-wax":{source:"apache",extensions:["wax"]},"audio/x-ms-wma":{source:"apache",extensions:["wma"]},"audio/x-pn-realaudio":{source:"apache",extensions:["ram","ra"]},"audio/x-pn-realaudio-plugin":{source:"apache",extensions:["rmp"]},"audio/x-realaudio":{source:"nginx",extensions:["ra"]},"audio/x-tta":{source:"apache"},"audio/x-wav":{source:"apache",extensions:["wav"]},"audio/xm":{source:"apache",extensions:["xm"]},"chemical/x-cdx":{source:"apache",extensions:["cdx"]},"chemical/x-cif":{source:"apache",extensions:["cif"]},"chemical/x-cmdf":{source:"apache",extensions:["cmdf"]},"chemical/x-cml":{source:"apache",extensions:["cml"]},"chemical/x-csml":{source:"apache",extensions:["csml"]},"chemical/x-pdb":{source:"apache"},"chemical/x-xyz":{source:"apache",extensions:["xyz"]},"font/collection":{source:"iana",extensions:["ttc"]},"font/otf":{source:"iana",compressible:!0,extensions:["otf"]},"font/sfnt":{source:"iana"},"font/ttf":{source:"iana",compressible:!0,extensions:["ttf"]},"font/woff":{source:"iana",extensions:["woff"]},"font/woff2":{source:"iana",extensions:["woff2"]},"image/aces":{source:"iana",extensions:["exr"]},"image/apng":{source:"iana",compressible:!1,extensions:["apng"]},"image/avci":{source:"iana",extensions:["avci"]},"image/avcs":{source:"iana",extensions:["avcs"]},"image/avif":{source:"iana",compressible:!1,extensions:["avif"]},"image/bmp":{source:"iana",compressible:!0,extensions:["bmp","dib"]},"image/cgm":{source:"iana",extensions:["cgm"]},"image/dicom-rle":{source:"iana",extensions:["drle"]},"image/dpx":{source:"iana",extensions:["dpx"]},"image/emf":{source:"iana",extensions:["emf"]},"image/fits":{source:"iana",extensions:["fits"]},"image/g3fax":{source:"iana",extensions:["g3"]},"image/gif":{source:"iana",compressible:!1,extensions:["gif"]},"image/heic":{source:"iana",extensions:["heic"]},"image/heic-sequence":{source:"iana",extensions:["heics"]},"image/heif":{source:"iana",extensions:["heif"]},"image/heif-sequence":{source:"iana",extensions:["heifs"]},"image/hej2k":{source:"iana",extensions:["hej2"]},"image/ief":{source:"iana",extensions:["ief"]},"image/j2c":{source:"iana"},"image/jaii":{source:"iana",extensions:["jaii"]},"image/jais":{source:"iana",extensions:["jais"]},"image/jls":{source:"iana",extensions:["jls"]},"image/jp2":{source:"iana",compressible:!1,extensions:["jp2","jpg2"]},"image/jpeg":{source:"iana",compressible:!1,extensions:["jpg","jpeg","jpe"]},"image/jph":{source:"iana",extensions:["jph"]},"image/jphc":{source:"iana",extensions:["jhc"]},"image/jpm":{source:"iana",compressible:!1,extensions:["jpm","jpgm"]},"image/jpx":{source:"iana",compressible:!1,extensions:["jpx","jpf"]},"image/jxl":{source:"iana",extensions:["jxl"]},"image/jxr":{source:"iana",extensions:["jxr"]},"image/jxra":{source:"iana",extensions:["jxra"]},"image/jxrs":{source:"iana",extensions:["jxrs"]},"image/jxs":{source:"iana",extensions:["jxs"]},"image/jxsc":{source:"iana",extensions:["jxsc"]},"image/jxsi":{source:"iana",extensions:["jxsi"]},"image/jxss":{source:"iana",extensions:["jxss"]},"image/ktx":{source:"iana",extensions:["ktx"]},"image/ktx2":{source:"iana",extensions:["ktx2"]},"image/naplps":{source:"iana"},"image/pjpeg":{compressible:!1,extensions:["jfif"]},"image/png":{source:"iana",compressible:!1,extensions:["png"]},"image/prs.btif":{source:"iana",extensions:["btif","btf"]},"image/prs.pti":{source:"iana",extensions:["pti"]},"image/pwg-raster":{source:"iana"},"image/sgi":{source:"apache",extensions:["sgi"]},"image/svg+xml":{source:"iana",compressible:!0,extensions:["svg","svgz"]},"image/t38":{source:"iana",extensions:["t38"]},"image/tiff":{source:"iana",compressible:!1,extensions:["tif","tiff"]},"image/tiff-fx":{source:"iana",extensions:["tfx"]},"image/vnd.adobe.photoshop":{source:"iana",compressible:!0,extensions:["psd"]},"image/vnd.airzip.accelerator.azv":{source:"iana",extensions:["azv"]},"image/vnd.clip":{source:"iana"},"image/vnd.cns.inf2":{source:"iana"},"image/vnd.dece.graphic":{source:"iana",extensions:["uvi","uvvi","uvg","uvvg"]},"image/vnd.djvu":{source:"iana",extensions:["djvu","djv"]},"image/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"image/vnd.dwg":{source:"iana",extensions:["dwg"]},"image/vnd.dxf":{source:"iana",extensions:["dxf"]},"image/vnd.fastbidsheet":{source:"iana",extensions:["fbs"]},"image/vnd.fpx":{source:"iana",extensions:["fpx"]},"image/vnd.fst":{source:"iana",extensions:["fst"]},"image/vnd.fujixerox.edmics-mmr":{source:"iana",extensions:["mmr"]},"image/vnd.fujixerox.edmics-rlc":{source:"iana",extensions:["rlc"]},"image/vnd.globalgraphics.pgb":{source:"iana"},"image/vnd.microsoft.icon":{source:"iana",compressible:!0,extensions:["ico"]},"image/vnd.mix":{source:"iana"},"image/vnd.mozilla.apng":{source:"iana"},"image/vnd.ms-dds":{compressible:!0,extensions:["dds"]},"image/vnd.ms-modi":{source:"iana",extensions:["mdi"]},"image/vnd.ms-photo":{source:"apache",extensions:["wdp"]},"image/vnd.net-fpx":{source:"iana",extensions:["npx"]},"image/vnd.pco.b16":{source:"iana",extensions:["b16"]},"image/vnd.radiance":{source:"iana"},"image/vnd.sealed.png":{source:"iana"},"image/vnd.sealedmedia.softseal.gif":{source:"iana"},"image/vnd.sealedmedia.softseal.jpg":{source:"iana"},"image/vnd.svf":{source:"iana"},"image/vnd.tencent.tap":{source:"iana",extensions:["tap"]},"image/vnd.valve.source.texture":{source:"iana",extensions:["vtf"]},"image/vnd.wap.wbmp":{source:"iana",extensions:["wbmp"]},"image/vnd.xiff":{source:"iana",extensions:["xif"]},"image/vnd.zbrush.pcx":{source:"iana",extensions:["pcx"]},"image/webp":{source:"iana",extensions:["webp"]},"image/wmf":{source:"iana",extensions:["wmf"]},"image/x-3ds":{source:"apache",extensions:["3ds"]},"image/x-adobe-dng":{extensions:["dng"]},"image/x-cmu-raster":{source:"apache",extensions:["ras"]},"image/x-cmx":{source:"apache",extensions:["cmx"]},"image/x-emf":{source:"iana"},"image/x-freehand":{source:"apache",extensions:["fh","fhc","fh4","fh5","fh7"]},"image/x-icon":{source:"apache",compressible:!0,extensions:["ico"]},"image/x-jng":{source:"nginx",extensions:["jng"]},"image/x-mrsid-image":{source:"apache",extensions:["sid"]},"image/x-ms-bmp":{source:"nginx",compressible:!0,extensions:["bmp"]},"image/x-pcx":{source:"apache",extensions:["pcx"]},"image/x-pict":{source:"apache",extensions:["pic","pct"]},"image/x-portable-anymap":{source:"apache",extensions:["pnm"]},"image/x-portable-bitmap":{source:"apache",extensions:["pbm"]},"image/x-portable-graymap":{source:"apache",extensions:["pgm"]},"image/x-portable-pixmap":{source:"apache",extensions:["ppm"]},"image/x-rgb":{source:"apache",extensions:["rgb"]},"image/x-tga":{source:"apache",extensions:["tga"]},"image/x-wmf":{source:"iana"},"image/x-xbitmap":{source:"apache",extensions:["xbm"]},"image/x-xcf":{compressible:!1},"image/x-xpixmap":{source:"apache",extensions:["xpm"]},"image/x-xwindowdump":{source:"apache",extensions:["xwd"]},"message/bhttp":{source:"iana"},"message/cpim":{source:"iana"},"message/delivery-status":{source:"iana"},"message/disposition-notification":{source:"iana",extensions:["disposition-notification"]},"message/external-body":{source:"iana"},"message/feedback-report":{source:"iana"},"message/global":{source:"iana",extensions:["u8msg"]},"message/global-delivery-status":{source:"iana",extensions:["u8dsn"]},"message/global-disposition-notification":{source:"iana",extensions:["u8mdn"]},"message/global-headers":{source:"iana",extensions:["u8hdr"]},"message/http":{source:"iana",compressible:!1},"message/imdn+xml":{source:"iana",compressible:!0},"message/mls":{source:"iana"},"message/news":{source:"apache"},"message/ohttp-req":{source:"iana"},"message/ohttp-res":{source:"iana"},"message/partial":{source:"iana",compressible:!1},"message/rfc822":{source:"iana",compressible:!0,extensions:["eml","mime","mht","mhtml"]},"message/s-http":{source:"apache"},"message/sip":{source:"iana"},"message/sipfrag":{source:"iana"},"message/tracking-status":{source:"iana"},"message/vnd.si.simp":{source:"apache"},"message/vnd.wfa.wsc":{source:"iana",extensions:["wsc"]},"model/3mf":{source:"iana",extensions:["3mf"]},"model/e57":{source:"iana"},"model/gltf+json":{source:"iana",compressible:!0,extensions:["gltf"]},"model/gltf-binary":{source:"iana",compressible:!0,extensions:["glb"]},"model/iges":{source:"iana",compressible:!1,extensions:["igs","iges"]},"model/jt":{source:"iana",extensions:["jt"]},"model/mesh":{source:"iana",compressible:!1,extensions:["msh","mesh","silo"]},"model/mtl":{source:"iana",extensions:["mtl"]},"model/obj":{source:"iana",extensions:["obj"]},"model/prc":{source:"iana",extensions:["prc"]},"model/step":{source:"iana",extensions:["step","stp","stpnc","p21","210"]},"model/step+xml":{source:"iana",compressible:!0,extensions:["stpx"]},"model/step+zip":{source:"iana",compressible:!1,extensions:["stpz"]},"model/step-xml+zip":{source:"iana",compressible:!1,extensions:["stpxz"]},"model/stl":{source:"iana",extensions:["stl"]},"model/u3d":{source:"iana",extensions:["u3d"]},"model/vnd.bary":{source:"iana",extensions:["bary"]},"model/vnd.cld":{source:"iana",extensions:["cld"]},"model/vnd.collada+xml":{source:"iana",compressible:!0,extensions:["dae"]},"model/vnd.dwf":{source:"iana",extensions:["dwf"]},"model/vnd.flatland.3dml":{source:"iana"},"model/vnd.gdl":{source:"iana",extensions:["gdl"]},"model/vnd.gs-gdl":{source:"apache"},"model/vnd.gs.gdl":{source:"iana"},"model/vnd.gtw":{source:"iana",extensions:["gtw"]},"model/vnd.moml+xml":{source:"iana",compressible:!0},"model/vnd.mts":{source:"iana",extensions:["mts"]},"model/vnd.opengex":{source:"iana",extensions:["ogex"]},"model/vnd.parasolid.transmit.binary":{source:"iana",extensions:["x_b"]},"model/vnd.parasolid.transmit.text":{source:"iana",extensions:["x_t"]},"model/vnd.pytha.pyox":{source:"iana",extensions:["pyo","pyox"]},"model/vnd.rosette.annotated-data-model":{source:"iana"},"model/vnd.sap.vds":{source:"iana",extensions:["vds"]},"model/vnd.usda":{source:"iana",extensions:["usda"]},"model/vnd.usdz+zip":{source:"iana",compressible:!1,extensions:["usdz"]},"model/vnd.valve.source.compiled-map":{source:"iana",extensions:["bsp"]},"model/vnd.vtu":{source:"iana",extensions:["vtu"]},"model/vrml":{source:"iana",compressible:!1,extensions:["wrl","vrml"]},"model/x3d+binary":{source:"apache",compressible:!1,extensions:["x3db","x3dbz"]},"model/x3d+fastinfoset":{source:"iana",extensions:["x3db"]},"model/x3d+vrml":{source:"apache",compressible:!1,extensions:["x3dv","x3dvz"]},"model/x3d+xml":{source:"iana",compressible:!0,extensions:["x3d","x3dz"]},"model/x3d-vrml":{source:"iana",extensions:["x3dv"]},"multipart/alternative":{source:"iana",compressible:!1},"multipart/appledouble":{source:"iana"},"multipart/byteranges":{source:"iana"},"multipart/digest":{source:"iana"},"multipart/encrypted":{source:"iana",compressible:!1},"multipart/form-data":{source:"iana",compressible:!1},"multipart/header-set":{source:"iana"},"multipart/mixed":{source:"iana"},"multipart/multilingual":{source:"iana"},"multipart/parallel":{source:"iana"},"multipart/related":{source:"iana",compressible:!1},"multipart/report":{source:"iana"},"multipart/signed":{source:"iana",compressible:!1},"multipart/vnd.bint.med-plus":{source:"iana"},"multipart/voice-message":{source:"iana"},"multipart/x-mixed-replace":{source:"iana"},"text/1d-interleaved-parityfec":{source:"iana"},"text/cache-manifest":{source:"iana",compressible:!0,extensions:["appcache","manifest"]},"text/calendar":{source:"iana",extensions:["ics","ifb"]},"text/calender":{compressible:!0},"text/cmd":{compressible:!0},"text/coffeescript":{extensions:["coffee","litcoffee"]},"text/cql":{source:"iana"},"text/cql-expression":{source:"iana"},"text/cql-identifier":{source:"iana"},"text/css":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["css"]},"text/csv":{source:"iana",compressible:!0,extensions:["csv"]},"text/csv-schema":{source:"iana"},"text/directory":{source:"iana"},"text/dns":{source:"iana"},"text/ecmascript":{source:"apache"},"text/encaprtp":{source:"iana"},"text/enriched":{source:"iana"},"text/fhirpath":{source:"iana"},"text/flexfec":{source:"iana"},"text/fwdred":{source:"iana"},"text/gff3":{source:"iana"},"text/grammar-ref-list":{source:"iana"},"text/hl7v2":{source:"iana"},"text/html":{source:"iana",compressible:!0,extensions:["html","htm","shtml"]},"text/jade":{extensions:["jade"]},"text/javascript":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["js","mjs"]},"text/jcr-cnd":{source:"iana"},"text/jsx":{compressible:!0,extensions:["jsx"]},"text/less":{compressible:!0,extensions:["less"]},"text/markdown":{source:"iana",compressible:!0,extensions:["md","markdown"]},"text/mathml":{source:"nginx",extensions:["mml"]},"text/mdx":{compressible:!0,extensions:["mdx"]},"text/mizar":{source:"iana"},"text/n3":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["n3"]},"text/parameters":{source:"iana",charset:"UTF-8"},"text/parityfec":{source:"iana"},"text/plain":{source:"iana",compressible:!0,extensions:["txt","text","conf","def","list","log","in","ini"]},"text/provenance-notation":{source:"iana",charset:"UTF-8"},"text/prs.fallenstein.rst":{source:"iana"},"text/prs.lines.tag":{source:"iana",extensions:["dsc"]},"text/prs.prop.logic":{source:"iana"},"text/prs.texi":{source:"iana"},"text/raptorfec":{source:"iana"},"text/red":{source:"iana"},"text/rfc822-headers":{source:"iana"},"text/richtext":{source:"iana",compressible:!0,extensions:["rtx"]},"text/rtf":{source:"iana",compressible:!0,extensions:["rtf"]},"text/rtp-enc-aescm128":{source:"iana"},"text/rtploopback":{source:"iana"},"text/rtx":{source:"iana"},"text/sgml":{source:"iana",extensions:["sgml","sgm"]},"text/shaclc":{source:"iana"},"text/shex":{source:"iana",extensions:["shex"]},"text/slim":{extensions:["slim","slm"]},"text/spdx":{source:"iana",extensions:["spdx"]},"text/strings":{source:"iana"},"text/stylus":{extensions:["stylus","styl"]},"text/t140":{source:"iana"},"text/tab-separated-values":{source:"iana",compressible:!0,extensions:["tsv"]},"text/troff":{source:"iana",extensions:["t","tr","roff","man","me","ms"]},"text/turtle":{source:"iana",charset:"UTF-8",extensions:["ttl"]},"text/ulpfec":{source:"iana"},"text/uri-list":{source:"iana",compressible:!0,extensions:["uri","uris","urls"]},"text/vcard":{source:"iana",compressible:!0,extensions:["vcard"]},"text/vnd.a":{source:"iana"},"text/vnd.abc":{source:"iana"},"text/vnd.ascii-art":{source:"iana"},"text/vnd.curl":{source:"iana",extensions:["curl"]},"text/vnd.curl.dcurl":{source:"apache",extensions:["dcurl"]},"text/vnd.curl.mcurl":{source:"apache",extensions:["mcurl"]},"text/vnd.curl.scurl":{source:"apache",extensions:["scurl"]},"text/vnd.debian.copyright":{source:"iana",charset:"UTF-8"},"text/vnd.dmclientscript":{source:"iana"},"text/vnd.dvb.subtitle":{source:"iana",extensions:["sub"]},"text/vnd.esmertec.theme-descriptor":{source:"iana",charset:"UTF-8"},"text/vnd.exchangeable":{source:"iana"},"text/vnd.familysearch.gedcom":{source:"iana",extensions:["ged"]},"text/vnd.ficlab.flt":{source:"iana"},"text/vnd.fly":{source:"iana",extensions:["fly"]},"text/vnd.fmi.flexstor":{source:"iana",extensions:["flx"]},"text/vnd.gml":{source:"iana"},"text/vnd.graphviz":{source:"iana",extensions:["gv"]},"text/vnd.hans":{source:"iana"},"text/vnd.hgl":{source:"iana"},"text/vnd.in3d.3dml":{source:"iana",extensions:["3dml"]},"text/vnd.in3d.spot":{source:"iana",extensions:["spot"]},"text/vnd.iptc.newsml":{source:"iana"},"text/vnd.iptc.nitf":{source:"iana"},"text/vnd.latex-z":{source:"iana"},"text/vnd.motorola.reflex":{source:"iana"},"text/vnd.ms-mediapackage":{source:"iana"},"text/vnd.net2phone.commcenter.command":{source:"iana"},"text/vnd.radisys.msml-basic-layout":{source:"iana"},"text/vnd.senx.warpscript":{source:"iana"},"text/vnd.si.uricatalogue":{source:"apache"},"text/vnd.sosi":{source:"iana"},"text/vnd.sun.j2me.app-descriptor":{source:"iana",charset:"UTF-8",extensions:["jad"]},"text/vnd.trolltech.linguist":{source:"iana",charset:"UTF-8"},"text/vnd.vcf":{source:"iana"},"text/vnd.wap.si":{source:"iana"},"text/vnd.wap.sl":{source:"iana"},"text/vnd.wap.wml":{source:"iana",extensions:["wml"]},"text/vnd.wap.wmlscript":{source:"iana",extensions:["wmls"]},"text/vnd.zoo.kcl":{source:"iana"},"text/vtt":{source:"iana",charset:"UTF-8",compressible:!0,extensions:["vtt"]},"text/wgsl":{source:"iana",extensions:["wgsl"]},"text/x-asm":{source:"apache",extensions:["s","asm"]},"text/x-c":{source:"apache",extensions:["c","cc","cxx","cpp","h","hh","dic"]},"text/x-component":{source:"nginx",extensions:["htc"]},"text/x-fortran":{source:"apache",extensions:["f","for","f77","f90"]},"text/x-gwt-rpc":{compressible:!0},"text/x-handlebars-template":{extensions:["hbs"]},"text/x-java-source":{source:"apache",extensions:["java"]},"text/x-jquery-tmpl":{compressible:!0},"text/x-lua":{extensions:["lua"]},"text/x-markdown":{compressible:!0,extensions:["mkd"]},"text/x-nfo":{source:"apache",extensions:["nfo"]},"text/x-opml":{source:"apache",extensions:["opml"]},"text/x-org":{compressible:!0,extensions:["org"]},"text/x-pascal":{source:"apache",extensions:["p","pas"]},"text/x-processing":{compressible:!0,extensions:["pde"]},"text/x-sass":{extensions:["sass"]},"text/x-scss":{extensions:["scss"]},"text/x-setext":{source:"apache",extensions:["etx"]},"text/x-sfv":{source:"apache",extensions:["sfv"]},"text/x-suse-ymp":{compressible:!0,extensions:["ymp"]},"text/x-uuencode":{source:"apache",extensions:["uu"]},"text/x-vcalendar":{source:"apache",extensions:["vcs"]},"text/x-vcard":{source:"apache",extensions:["vcf"]},"text/xml":{source:"iana",compressible:!0,extensions:["xml"]},"text/xml-external-parsed-entity":{source:"iana"},"text/yaml":{compressible:!0,extensions:["yaml","yml"]},"video/1d-interleaved-parityfec":{source:"iana"},"video/3gpp":{source:"iana",extensions:["3gp","3gpp"]},"video/3gpp-tt":{source:"iana"},"video/3gpp2":{source:"iana",extensions:["3g2"]},"video/av1":{source:"iana"},"video/bmpeg":{source:"iana"},"video/bt656":{source:"iana"},"video/celb":{source:"iana"},"video/dv":{source:"iana"},"video/encaprtp":{source:"iana"},"video/evc":{source:"iana"},"video/ffv1":{source:"iana"},"video/flexfec":{source:"iana"},"video/h261":{source:"iana",extensions:["h261"]},"video/h263":{source:"iana",extensions:["h263"]},"video/h263-1998":{source:"iana"},"video/h263-2000":{source:"iana"},"video/h264":{source:"iana",extensions:["h264"]},"video/h264-rcdo":{source:"iana"},"video/h264-svc":{source:"iana"},"video/h265":{source:"iana"},"video/h266":{source:"iana"},"video/iso.segment":{source:"iana",extensions:["m4s"]},"video/jpeg":{source:"iana",extensions:["jpgv"]},"video/jpeg2000":{source:"iana"},"video/jpm":{source:"apache",extensions:["jpm","jpgm"]},"video/jxsv":{source:"iana"},"video/lottie+json":{source:"iana",compressible:!0},"video/matroska":{source:"iana"},"video/matroska-3d":{source:"iana"},"video/mj2":{source:"iana",extensions:["mj2","mjp2"]},"video/mp1s":{source:"iana"},"video/mp2p":{source:"iana"},"video/mp2t":{source:"iana",extensions:["ts","m2t","m2ts","mts"]},"video/mp4":{source:"iana",compressible:!1,extensions:["mp4","mp4v","mpg4"]},"video/mp4v-es":{source:"iana"},"video/mpeg":{source:"iana",compressible:!1,extensions:["mpeg","mpg","mpe","m1v","m2v"]},"video/mpeg4-generic":{source:"iana"},"video/mpv":{source:"iana"},"video/nv":{source:"iana"},"video/ogg":{source:"iana",compressible:!1,extensions:["ogv"]},"video/parityfec":{source:"iana"},"video/pointer":{source:"iana"},"video/quicktime":{source:"iana",compressible:!1,extensions:["qt","mov"]},"video/raptorfec":{source:"iana"},"video/raw":{source:"iana"},"video/rtp-enc-aescm128":{source:"iana"},"video/rtploopback":{source:"iana"},"video/rtx":{source:"iana"},"video/scip":{source:"iana"},"video/smpte291":{source:"iana"},"video/smpte292m":{source:"iana"},"video/ulpfec":{source:"iana"},"video/vc1":{source:"iana"},"video/vc2":{source:"iana"},"video/vnd.cctv":{source:"iana"},"video/vnd.dece.hd":{source:"iana",extensions:["uvh","uvvh"]},"video/vnd.dece.mobile":{source:"iana",extensions:["uvm","uvvm"]},"video/vnd.dece.mp4":{source:"iana"},"video/vnd.dece.pd":{source:"iana",extensions:["uvp","uvvp"]},"video/vnd.dece.sd":{source:"iana",extensions:["uvs","uvvs"]},"video/vnd.dece.video":{source:"iana",extensions:["uvv","uvvv"]},"video/vnd.directv.mpeg":{source:"iana"},"video/vnd.directv.mpeg-tts":{source:"iana"},"video/vnd.dlna.mpeg-tts":{source:"iana"},"video/vnd.dvb.file":{source:"iana",extensions:["dvb"]},"video/vnd.fvt":{source:"iana",extensions:["fvt"]},"video/vnd.hns.video":{source:"iana"},"video/vnd.iptvforum.1dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.1dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.2dparityfec-1010":{source:"iana"},"video/vnd.iptvforum.2dparityfec-2005":{source:"iana"},"video/vnd.iptvforum.ttsavc":{source:"iana"},"video/vnd.iptvforum.ttsmpeg2":{source:"iana"},"video/vnd.motorola.video":{source:"iana"},"video/vnd.motorola.videop":{source:"iana"},"video/vnd.mpegurl":{source:"iana",extensions:["mxu","m4u"]},"video/vnd.ms-playready.media.pyv":{source:"iana",extensions:["pyv"]},"video/vnd.nokia.interleaved-multimedia":{source:"iana"},"video/vnd.nokia.mp4vr":{source:"iana"},"video/vnd.nokia.videovoip":{source:"iana"},"video/vnd.objectvideo":{source:"iana"},"video/vnd.planar":{source:"iana"},"video/vnd.radgamettools.bink":{source:"iana"},"video/vnd.radgamettools.smacker":{source:"apache"},"video/vnd.sealed.mpeg1":{source:"iana"},"video/vnd.sealed.mpeg4":{source:"iana"},"video/vnd.sealed.swf":{source:"iana"},"video/vnd.sealedmedia.softseal.mov":{source:"iana"},"video/vnd.uvvu.mp4":{source:"iana",extensions:["uvu","uvvu"]},"video/vnd.vivo":{source:"iana",extensions:["viv"]},"video/vnd.youtube.yt":{source:"iana"},"video/vp8":{source:"iana"},"video/vp9":{source:"iana"},"video/webm":{source:"apache",compressible:!1,extensions:["webm"]},"video/x-f4v":{source:"apache",extensions:["f4v"]},"video/x-fli":{source:"apache",extensions:["fli"]},"video/x-flv":{source:"apache",compressible:!1,extensions:["flv"]},"video/x-m4v":{source:"apache",extensions:["m4v"]},"video/x-matroska":{source:"apache",compressible:!1,extensions:["mkv","mk3d","mks"]},"video/x-mng":{source:"apache",extensions:["mng"]},"video/x-ms-asf":{source:"apache",extensions:["asf","asx"]},"video/x-ms-vob":{source:"apache",extensions:["vob"]},"video/x-ms-wm":{source:"apache",extensions:["wm"]},"video/x-ms-wmv":{source:"apache",compressible:!1,extensions:["wmv"]},"video/x-ms-wmx":{source:"apache",extensions:["wmx"]},"video/x-ms-wvx":{source:"apache",extensions:["wvx"]},"video/x-msvideo":{source:"apache",extensions:["avi"]},"video/x-sgi-movie":{source:"apache",extensions:["movie"]},"video/x-smv":{source:"apache",extensions:["smv"]},"x-conference/x-cooltalk":{source:"apache",extensions:["ice"]},"x-shader/x-fragment":{compressible:!0},"x-shader/x-vertex":{compressible:!0}}});var na=A((qf,ea)=>{ea.exports=Zs()});var aa=A((Nf,sa)=>{var ta={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},oa={nginx:10,apache:20,iana:40,default:30},ia={application:1,font:2,audio:2,video:3,default:0};sa.exports=function(e,t="default"){if(e==="application/octet-stream")return 0;let[o,i]=e.split("/"),s=i.replace(/(\.|x-).*/,"$1"),a=ta[s]||ta.default,r=oa[t]||oa.default,c=ia[o]||ia.default,u=1-e.length/100;return a+r+c+u}});var So=A(Z=>{"use strict";var an=na(),Pu=z("path").extname,ra=aa(),ca=/^\s*([^;\s]*)(?:;|\s|$)/,Uu=/^text\//i;Z.charset=la;Z.charsets={lookup:la};Z.contentType=Tu;Z.extension=_o;Z.extensions=Object.create(null);Z.lookup=Ou;Z.types=Object.create(null);Z._extensionConflicts=[];Eu(Z.extensions,Z.types);function la(n){if(!n||typeof n!="string")return!1;var e=ca.exec(n),t=e&&an[e[1].toLowerCase()];return t&&t.charset?t.charset:e&&Uu.test(e[1])?"UTF-8":!1}function Tu(n){if(!n||typeof n!="string")return!1;var e=n.indexOf("/")===-1?Z.lookup(n):n;if(!e)return!1;if(e.indexOf("charset")===-1){var t=Z.charset(e);t&&(e+="; charset="+t.toLowerCase())}return e}function _o(n){if(!n||typeof n!="string")return!1;var e=ca.exec(n),t=e&&Z.extensions[e[1].toLowerCase()];return!t||!t.length?!1:t[0]}function Ou(n){if(!n||typeof n!="string")return!1;var e=Pu("x."+n).toLowerCase().slice(1);return e&&Z.types[e]||!1}function Eu(n,e){Object.keys(an).forEach(function(o){var i=an[o],s=i.extensions;if(!(!s||!s.length)){n[o]=s;for(var a=0;a<s.length;a++){var r=s[a];e[r]=ju(r,e[r],o);let c=$u(r,e[r],o);c!==e[r]&&Z._extensionConflicts.push([r,c,e[r]])}}})}function ju(n,e,t){var o=e?ra(e,an[e].source):0,i=t?ra(t,an[t].source):0;return o>i?e:t}function $u(n,e,t){var o=["nginx","apache",void 0,"iana"],i=e?o.indexOf(an[e].source):0,s=t?o.indexOf(an[t].source):0;return Z.types[_o]!=="application/octet-stream"&&(i>s||i===s&&Z.types[_o]?.slice(0,12)==="application/")||i>s?e:t}});var ga={};ao(ga,{httpsGet:()=>Ke,httpsGetBuffer:()=>Rn,httpsPost:()=>we,httpsPostBinary:()=>rn});import*as Vn from"https";import*as _t from"zlib";import{HttpsProxyAgent as Fu}from"https-proxy-agent";function St(n,e){if(!e)return n.toString("utf8");let t=e.toLowerCase().split(",").map(o=>o.trim());try{if(t.includes("gzip"))return _t.gunzipSync(n).toString("utf8");if(t.includes("deflate"))return _t.inflateSync(n).toString("utf8")}catch{}return n.toString("utf8")}function At(n){return n instanceof Error&&n.constructor.name==="AggregateError"}function pa(n,e,t,o,i){return new Promise((s,a)=>{let r=new URL(n),c=Buffer.from(e,"utf8"),u={hostname:r.hostname,port:r.port||443,path:r.pathname+r.search,method:"POST",headers:{...Rt,...t,"Content-Length":c.length},timeout:o,agent:Wn};i&&(u.family=i);let p=Vn.request(u,d=>{let m=[];d.on("data",f=>{m.push(f)}),d.on("end",()=>{let f={};if(d.headers)for(let[v,g]of Object.entries(d.headers))g!==void 0&&(f[v.toLowerCase()]=Array.isArray(g)?g.join(", "):g);let h=Buffer.concat(m),x=St(h,d.headers["content-encoding"]);s({status:d.statusCode||0,data:x,headers:f})})});p.on("error",a),p.on("timeout",()=>{p.destroy(),a(new Error("Request timeout"))}),p.write(c),p.end()})}function da(n,e,t,o){return new Promise((i,s)=>{let a=new URL(n),r={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...Rt,...e},timeout:t,agent:Wn};o&&(r.family=o);let c=Vn.request(r,u=>{let p=[];u.on("data",d=>{p.push(d)}),u.on("end",()=>{let d={};if(u.headers)for(let[h,x]of Object.entries(u.headers))x!==void 0&&(d[h.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let m=Buffer.concat(p),f=St(m,u.headers["content-encoding"]);i({status:u.statusCode||0,data:f,headers:d})})});c.on("error",s),c.on("timeout",()=>{c.destroy(),s(new Error("Request timeout"))}),c.end()})}function ma(n,e,t,o){return new Promise((i,s)=>{let a=new URL(n),r={hostname:a.hostname,port:a.port||443,path:a.pathname+a.search,method:"GET",headers:{...Rt,...e},timeout:t,agent:Wn};o&&(r.family=o);let c=Vn.request(r,u=>{let p=[];u.on("data",d=>{p.push(d)}),u.on("end",()=>{let d={};if(u.headers)for(let[h,x]of Object.entries(u.headers))x!==void 0&&(d[h.toLowerCase()]=Array.isArray(x)?x.join(", "):x);let m=Buffer.concat(p),f=u.headers["content-encoding"];if(f){let h=St(m,f);i({status:u.statusCode||0,data:Buffer.from(h,"utf8"),headers:d})}else i({status:u.statusCode||0,data:m,headers:d})})});c.on("error",s),c.on("timeout",()=>{c.destroy(),s(new Error("Request timeout"))}),c.end()})}function fa(n,e,t,o,i){return new Promise((s,a)=>{let r=new URL(n),c={hostname:r.hostname,port:r.port||443,path:r.pathname+r.search,method:"POST",headers:{...Rt,...t,"Content-Length":e.length},timeout:o,agent:Wn};i&&(c.family=i);let u=Vn.request(c,p=>{let d=[];p.on("data",m=>{d.push(m)}),p.on("end",()=>{let m={};if(p.headers)for(let[x,v]of Object.entries(p.headers))v!==void 0&&(m[x.toLowerCase()]=Array.isArray(v)?v.join(", "):v);let f=Buffer.concat(d),h=St(f,p.headers["content-encoding"]);s({status:p.statusCode||0,data:h,headers:m})})});u.on("error",a),u.on("timeout",()=>{u.destroy(),a(new Error("Request timeout"))}),u.write(e),u.end()})}async function we(n,e,t,o){try{return await pa(n,e,t,o)}catch(i){if(At(i))return pa(n,e,t,o,4);throw i}}async function Ke(n,e={},t=2e4){try{return await da(n,e,t)}catch(o){if(At(o))return da(n,e,t,4);throw o}}async function Rn(n,e={},t=6e4){try{return await ma(n,e,t)}catch(o){if(At(o))return ma(n,e,t,4);throw o}}async function rn(n,e,t,o){try{return await fa(n,e,t,o)}catch(i){if(At(i))return fa(n,e,t,o,4);throw i}}var Wn,ua,Rt,cn=ce(()=>{Cn();ua=Is();ua&&(Wn=new Fu(ua));Rt={accept:"*/*","accept-encoding":"gzip, deflate",connection:"keep-alive","user-agent":"python-httpx/0.27.2"}});import*as Qn from"crypto";import*as He from"os";import{XMLParser as Du}from"fast-xml-parser";function Ao(n){let e=He.platform(),t=He.release(),o=He.arch(),i=He.hostname(),s=n?.device_uuid?.trim()||"",a=n?.device_os?.trim()||"",r=n?.device_model?.trim()||"",c=n?.device_name?.trim()||"";if(!s){let u=`${i}-${e}-${o}`;s=Qn.createHash("sha256").update(u).digest("hex").substring(0,40)}return r||(e==="win32"?r="windows":e==="darwin"?r="mac":e==="linux"?r="Linux":r=e),a||(e==="win32"?a=`Windows ${t} (build ${t.split(".").pop()||t}), ${o}bit`:e==="darwin"?a=`macOS ${t}, ${o}`:e==="linux"?a=`Linux ${t}, ${o}`:a=`${e} ${t}, ${o}`),c||(c=i),{deviceType:"AI-Bot",friendlyName:c,model:r,os:a,uuid:s}}function Ro(n,e,t){let o=n+e+t;return"!AIBot:"+Qn.createHash("sha1").update(o).digest("hex")}function Lo(n){let e=n+"cksjahfkdl&%789sdkjfKJHjhasfkHkk_)+.";return Qn.createHash("sha1").update(e).digest("hex")}function Io(n,e,t,o=""){let i=u=>encodeURIComponent(u).replace(/!/g,"%21").replace(/'/g,"%27").replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/\*/g,"%2A"),s=i(n),a=i(t),r;if(o){let u=i(o);r=`accessToken=${s}&nonce=${u}×tamp=${e}&secret=${a}`}else r=`accessToken=${s}×tamp=${e}&secret=${a}`;return Qn.createHash("sha1").update(r).digest().toString("base64")}var Lt,Ln,D,Jn,Yn,j,ln=ce(()=>{cn();bt();Lt="https://lunkr.coremail.cn",Ln="/lunkr/s/json",D=class extends Error{constructor(e){super(e),this.name="AuthError"}},Jn=class extends D{constructor(e){super(e),this.name="PasswordError"}},Yn=class{static QUERY_URL="https://cloud.icoremail.net/querydomain/query";static PRIORITY_ORDER=["lookup","gal","incoming","outgoing","mirror"];static getTypePriority(e){if(e==="gal")return[1,0];if(e.startsWith("gal")&&/^\d+$/.test(e.slice(3)))return[1,parseInt(e.slice(3),10)];for(let t=0;t<this.PRIORITY_ORDER.length;t++)if(e===this.PRIORITY_ORDER[t])return[t+1,0];return[this.PRIORITY_ORDER.length+1,0]}static extractDomain(e){return e.includes("@")?e.split("@").pop().trim().toLowerCase():null}static async queryDomain(e){let t=`${this.QUERY_URL}?domain=${e}`;try{let o=await Ke(t,{},3e4);return this.parseXmlResponse(o.data)}catch(o){let i=o instanceof Error?`${o.message} (${o.name})`:String(o);throw o instanceof Error&&o.cause?new D(`Domain query failed: ${i}, cause: ${o.cause}`):new D(`Domain query failed: ${i}`)}}static parseXmlResponse(e){let o=new Du({ignoreAttributes:!1,attributeNamePrefix:"@_"}).parse(e),i=o.result||o.querydomain;if(!i)throw new D("Domain query response parse failed: root element not found");let s=i.code;if(s!=="S_OK")throw new D(`Domain query returned error: ${s}`);let a=i.provider;if(!a)throw new D("Provider not found in domain query response");let r=[],c=["gal","lookup","mirror"];for(let[u,p]of Object.entries(a)){if(u.startsWith("@_")||typeof p!="object"||!p||!c.some(m=>u===m||u.startsWith(m)))continue;let d=Array.isArray(p)?p:[p];for(let m of d){let f=m["@_uri"];if(!f||!f.startsWith("http://")&&!f.startsWith("https://"))continue;let h=new URL(f),x=`${h.protocol}//${h.host}`,v=h.pathname.replace(/\/$/,""),g=v?`${v}/s/json`:"/s/json";r.push({type:u,uri:f,baseUrl:x,apiPath:g,apiUrl:`${x}${g}`})}}return r.sort((u,p)=>{let[d,m]=this.getTypePriority(u.type),[f,h]=this.getTypePriority(p.type);return d!==f?d-f:m-h}),r}static async testServerAvailability(e,t,o){let i=`func=user:getPasswordKey&uid=${encodeURIComponent(o)}`,s=`${e}${t}?${i}`,a={"Content-Type":"text/x-json; charset=UTF-8"};try{let r=await we(s,"{}",a,3e4);if(r.status!==200)return null;let c=JSON.parse(r.data);if(c.code!=="S_OK")return null;let u=c.var||{},p=u.key||{},d=u.sid,m=p.type;return!d||!m?null:{sid:d,authType:m,rsaE:p.e||"",rsaN:p.n||""}}catch(r){let c=r instanceof Error?r.message:String(r);return console.log(` Server unavailable: ${c}`),null}}static async discoverAvailableServer(e){let t=this.extractDomain(e);if(!t)throw new D(`Cannot extract domain from email: ${e}`);console.log(`Querying domain: ${t}`);let o=await this.queryDomain(t);if(o.length===0)throw new D(`No server addresses found for domain: ${t}`);console.log(`Found ${o.length} server addresses:`);for(let i of o)console.log(` - ${i.type}: ${i.apiUrl}`);for(let i of o){console.log(`Trying server: ${i.type} (${i.apiUrl})`);let s=await this.testServerAvailability(i.baseUrl,i.apiPath,e);if(s)return console.log(`Server available: ${i.type}`),[i,s]}throw new D("All server addresses are unavailable")}},j=class{_baseUrl;apiPath;headers;timeout;_cookies={};constructor(e,t={}){this._baseUrl=e.replace(/\/$/,""),this.apiPath=t.apiPath||"/lunkr/s/json",this.headers=t.headers||{},this.timeout=t.timeout||2e4}get baseUrl(){return this._baseUrl}get apiUrl(){return`${this._baseUrl}${this.apiPath}`}get cookies(){return this._cookies}setCookies(e){this._cookies=e}async postJson(e){let t={func:e.func};e.sid&&(t.sid=e.sid),e.query&&Object.assign(t,e.query);let o=Object.entries(t).map(([u,p])=>`${encodeURIComponent(u)}=${encodeURIComponent(String(p))}`).join("&"),i=`${this.apiUrl}?${o}`,s={"Content-Type":"text/x-json; charset=UTF-8",...this.headers};Object.keys(this.cookies).length>0&&(s.Cookie=Object.entries(this.cookies).map(([u,p])=>`${u}=${p}`).join("; "));let a=JSON.stringify(e.payload||{});e.debug&&(console.log(`[postJson] URL: ${i}`),console.log(`[postJson] headers: ${JSON.stringify(s)}`),console.log(`[postJson] body: ${a}`));let r=await we(i,a,s,this.timeout),c=r.headers["set-cookie"];if(c){let u=c.split(/, (?=[^=]+=[^;]+)/);for(let p of u){let d=p.match(/^([^=]+)=([^;]+)/);d&&(this._cookies[d[1].trim()]=d[2].trim())}}try{return JSON.parse(r.data)}catch{throw new D(`API returned non-JSON: ${r.data?.substring?.(0,400)||r.data}`)}}async checkSessionValid(e){try{return(await this.postJson({func:"cim.common:getOrgInfo",sid:e})).code==="S_OK"}catch{return!1}}}});import*as ha from"https";import*as xa from"http";import{WebSocket as Po}from"ws";import{v4 as qu}from"uuid";function It(...n){Q("LUNKR_VERBOSE")==="1"&&console.log("[SocketIO]",...n)}var un,Pt=ce(()=>{cn();Cn();un=class n{baseUrl;cookies;eventCallbacks;ws=null;connected=!1;websocketUrl=null;eioSid="";pingInterval=25e3;running=!1;authDone=!1;sessionId="";uid="";username="";pingTimer=null;waitResolve=null;autoReconnect;static authLoginIndex=1;constructor(e){this.baseUrl=e.baseUrl.replace(/\/$/,""),this.cookies=e.cookies,this.eventCallbacks=e.eventCallbacks||{},this.uid=e.uid||"",this.username=e.username||"",this.autoReconnect=e.autoReconnect??!0}static fromLunkrConfig(e,t,o,i){let s={"Cim.sid":t};for(let r of o.split(";")){let c=r.trim();if(c.includes("=")){let[u,p]=c.split("=",2);s[u.trim()]=p.trim()}}let a=new n({baseUrl:e,cookies:s,eventCallbacks:i?.eventCallbacks,uid:i?.uid,username:i?.username,autoReconnect:i?.autoReconnect});return a.sessionId=t,a}buildCookieHeader(){return Object.entries(this.cookies).map(([e,t])=>`${e}=${t}`).join("; ")}async getWebSocketUrl(){if(this.websocketUrl)return this.websocketUrl;let e=this.buildCookieHeader(),t=`${this.baseUrl}/lunkr/s/json?func=cim.common:getWebSocketURL&uid=${encodeURIComponent(this.username)}&sid=${encodeURIComponent(this.sessionId)}`;try{let o=await Ke(t,{Cookie:e},1e4),i=JSON.parse(o.data);return i?.code==="S_OK"?(this.websocketUrl=typeof i.var=="string"?i.var:i.var?.webSocketURL,this.websocketUrl):(console.error("getWebSocketURL failed:",i),null)}catch(o){return console.error("getWebSocketURL request failed:",o),null}}async callSioSubscribe(){let e=this.buildCookieHeader(),t=`${this.baseUrl}/lunkr/s/json?func=cim.common:sioSubscribe&sid=${encodeURIComponent(this.sessionId)}`;try{let o=await we(t,"{}",{Cookie:e},1e4),i=JSON.parse(o.data),s=i?.code==="S_OK";return s||console.error("sioSubscribe failed:",i),s}catch(o){return console.error("sioSubscribe exception:",o),!1}}async performHandshake(){let e=await this.getWebSocketUrl();if(!e)return!1;await this.callSioSubscribe();let t=this.buildCookieHeader();try{let a=`${e}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=(await Ke(a,{Cookie:t},1e4)).data,u=c.indexOf('0{"sid"');if(u>=0&&(c=c.substring(u)),!c.startsWith("0{"))return console.error("Handshake response format error:",c.substring(0,80)),!1;let p=JSON.parse(c.substring(1));if(this.eioSid=p.sid,this.pingInterval=p.pingInterval??25e3,!p.upgrades?.includes("websocket"))return console.error("Server does not support WebSocket upgrade"),!1}catch(a){return console.error("Socket.IO HTTP handshake failed:",a),!1}let o=e.startsWith("https://"),i=e.replace(/^https?:\/\//,""),s=`${o?"wss":"ws"}://${i}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(this.eioSid)}`;return new Promise(a=>{this.ws=new Po(s,{headers:{Cookie:this.buildCookieHeader()},agent:o?new ha.Agent({rejectUnauthorized:!1}):new xa.Agent}),this.ws.once("open",()=>{It("WebSocket open, sending 2probe"),this.ws.send("2probe")}),this.ws.once("message",r=>{let c=r.toString();It("Received during handshake:",c.substring(0,50)),c.includes("3probe")?(It("Upgrade confirmed, sending 5"),this.ws.send("5"),this.connected=!0,this.running=!0,this.startMessageLoop(),this.startPingLoop(),It("Connection complete, connected=true, running=true"),a(!0)):(console.error("[SocketIO] Upgrade handshake failed, received:",c.substring(0,50)),a(!1))}),this.ws.once("error",r=>{console.error("WebSocket connection failed:",r.message),a(!1)})})}startMessageLoop(){this.ws&&(this.ws.on("message",e=>{this.handleFrame(e.toString())}),this.ws.on("close",()=>{this.connected=!1,this.authDone=!1,this.stopPingLoop(),this.handleEvent("disconnect",{}),this.waitResolve&&(this.waitResolve(),this.waitResolve=null),this.running&&this.autoReconnect&&setTimeout(()=>this.reconnect(),5e3)}),this.ws.on("error",e=>{console.error("[SocketIO] WebSocket error:",e.message)}))}startPingLoop(){this.pingTimer=setInterval(()=>{this.connected&&this.ws?.readyState===Po.OPEN&&this.ws.send("2")},this.pingInterval)}stopPingLoop(){this.pingTimer&&(clearInterval(this.pingTimer),this.pingTimer=null)}handleFrame(e){if(e){if(e[0]==="2"){this.ws?.send("3");return}if(e[0]==="4"&&e.length>1){let t=e[1];if(t==="0"){this.handleEvent("connect",{}),this.authDone||this.sendAuth();return}if(t==="1"){this.connected=!1;return}if(t==="2"){try{let o=JSON.parse(e.substring(2));if(Array.isArray(o)&&o.length>=2){let i=o[0],s=o[1];i==="ready"&&(this.authDone=!0),this.handleEvent(i,s)}}catch{}return}}}}sendAuth(){let e=`pc:${this.sessionId}_${n.authLoginIndex++}`,t=this.cookies.Cim||"";this.emit("auth",{username:this.username,clientId:e,password:`{SES}${this.sessionId}:${t}`,uid:this.uid,uuid:qu()})}handleEvent(e,t){let o=this.eventCallbacks[e];if(o)try{o(t)}catch(i){console.error(`${e} callback error:`,i)}}async connect(){return this.performHandshake()}async reconnect(){this.connected=!1,this.authDone=!1,this.eioSid="",this.websocketUrl=null;try{this.ws?.close()}catch{}this.ws=null,await this.performHandshake()}disconnect(){this.running=!1,this.stopPingLoop();try{this.ws?.send("0")}catch{}try{this.ws?.close()}catch{}this.connected=!1}emit(e,t){if(!this.connected||this.ws?.readyState!==Po.OPEN)return!1;try{return this.ws.send(`42${JSON.stringify([e,t])}`),!0}catch{return!1}}isConnected(){return this.connected}isAuthenticated(){return this.authDone}onDisconnect(e){let t=this.eventCallbacks.disconnect;t?this.eventCallbacks.disconnect=o=>{t(o),e()}:this.eventCallbacks.disconnect=()=>e()}wait(){return!this.ws||!this.connected?Promise.resolve():new Promise(e=>{this.waitResolve=e})}}});var Uo=A((sg,ba)=>{ba.exports=function(){return typeof Promise=="function"&&Promise.prototype&&Promise.prototype.then}});var Ve=A(pn=>{var To,Bu=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];pn.getSymbolSize=function(e){if(!e)throw new Error('"version" cannot be null or undefined');if(e<1||e>40)throw new Error('"version" should be in range from 1 to 40');return e*4+17};pn.getSymbolTotalCodewords=function(e){return Bu[e]};pn.getBCHDigit=function(n){let e=0;for(;n!==0;)e++,n>>>=1;return e};pn.setToSJISFunction=function(e){if(typeof e!="function")throw new Error('"toSJISFunc" is not a valid function.');To=e};pn.isKanjiModeEnabled=function(){return typeof To<"u"};pn.toSJIS=function(e){return To(e)}});var Ut=A(he=>{he.L={bit:1};he.M={bit:0};he.Q={bit:3};he.H={bit:2};function Gu(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"l":case"low":return he.L;case"m":case"medium":return he.M;case"q":case"quartile":return he.Q;case"h":case"high":return he.H;default:throw new Error("Unknown EC Level: "+n)}}he.isValid=function(e){return e&&typeof e.bit<"u"&&e.bit>=0&&e.bit<4};he.from=function(e,t){if(he.isValid(e))return e;try{return Gu(e)}catch{return t}}});var wa=A((cg,ka)=>{function ya(){this.buffer=[],this.length=0}ya.prototype={get:function(n){let e=Math.floor(n/8);return(this.buffer[e]>>>7-n%8&1)===1},put:function(n,e){for(let t=0;t<e;t++)this.putBit((n>>>e-t-1&1)===1)},getLengthInBits:function(){return this.length},putBit:function(n){let e=Math.floor(this.length/8);this.buffer.length<=e&&this.buffer.push(0),n&&(this.buffer[e]|=128>>>this.length%8),this.length++}};ka.exports=ya});var _a=A((lg,Ca)=>{function Xn(n){if(!n||n<1)throw new Error("BitMatrix size must be defined and greater than 0");this.size=n,this.data=new Uint8Array(n*n),this.reservedBit=new Uint8Array(n*n)}Xn.prototype.set=function(n,e,t,o){let i=n*this.size+e;this.data[i]=t,o&&(this.reservedBit[i]=!0)};Xn.prototype.get=function(n,e){return this.data[n*this.size+e]};Xn.prototype.xor=function(n,e,t){this.data[n*this.size+e]^=t};Xn.prototype.isReserved=function(n,e){return this.reservedBit[n*this.size+e]};Ca.exports=Xn});var Sa=A(Tt=>{var zu=Ve().getSymbolSize;Tt.getRowColCoords=function(e){if(e===1)return[];let t=Math.floor(e/7)+2,o=zu(e),i=o===145?26:Math.ceil((o-13)/(2*t-2))*2,s=[o-7];for(let a=1;a<t-1;a++)s[a]=s[a-1]-i;return s.push(6),s.reverse()};Tt.getPositions=function(e){let t=[],o=Tt.getRowColCoords(e),i=o.length;for(let s=0;s<i;s++)for(let a=0;a<i;a++)s===0&&a===0||s===0&&a===i-1||s===i-1&&a===0||t.push([o[s],o[a]]);return t}});var La=A(Ra=>{var Ku=Ve().getSymbolSize,Aa=7;Ra.getPositions=function(e){let t=Ku(e);return[[0,0],[t-Aa,0],[0,t-Aa]]}});var Ia=A(N=>{N.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};var dn={N1:3,N2:3,N3:40,N4:10};N.isValid=function(e){return e!=null&&e!==""&&!isNaN(e)&&e>=0&&e<=7};N.from=function(e){return N.isValid(e)?parseInt(e,10):void 0};N.getPenaltyN1=function(e){let t=e.size,o=0,i=0,s=0,a=null,r=null;for(let c=0;c<t;c++){i=s=0,a=r=null;for(let u=0;u<t;u++){let p=e.get(c,u);p===a?i++:(i>=5&&(o+=dn.N1+(i-5)),a=p,i=1),p=e.get(u,c),p===r?s++:(s>=5&&(o+=dn.N1+(s-5)),r=p,s=1)}i>=5&&(o+=dn.N1+(i-5)),s>=5&&(o+=dn.N1+(s-5))}return o};N.getPenaltyN2=function(e){let t=e.size,o=0;for(let i=0;i<t-1;i++)for(let s=0;s<t-1;s++){let a=e.get(i,s)+e.get(i,s+1)+e.get(i+1,s)+e.get(i+1,s+1);(a===4||a===0)&&o++}return o*dn.N2};N.getPenaltyN3=function(e){let t=e.size,o=0,i=0,s=0;for(let a=0;a<t;a++){i=s=0;for(let r=0;r<t;r++)i=i<<1&2047|e.get(a,r),r>=10&&(i===1488||i===93)&&o++,s=s<<1&2047|e.get(r,a),r>=10&&(s===1488||s===93)&&o++}return o*dn.N3};N.getPenaltyN4=function(e){let t=0,o=e.data.length;for(let s=0;s<o;s++)t+=e.data[s];return Math.abs(Math.ceil(t*100/o/5)-10)*dn.N4};function Hu(n,e,t){switch(n){case N.Patterns.PATTERN000:return(e+t)%2===0;case N.Patterns.PATTERN001:return e%2===0;case N.Patterns.PATTERN010:return t%3===0;case N.Patterns.PATTERN011:return(e+t)%3===0;case N.Patterns.PATTERN100:return(Math.floor(e/2)+Math.floor(t/3))%2===0;case N.Patterns.PATTERN101:return e*t%2+e*t%3===0;case N.Patterns.PATTERN110:return(e*t%2+e*t%3)%2===0;case N.Patterns.PATTERN111:return(e*t%3+(e+t)%2)%2===0;default:throw new Error("bad maskPattern:"+n)}}N.applyMask=function(e,t){let o=t.size;for(let i=0;i<o;i++)for(let s=0;s<o;s++)t.isReserved(s,i)||t.xor(s,i,Hu(e,s,i))};N.getBestMask=function(e,t){let o=Object.keys(N.Patterns).length,i=0,s=1/0;for(let a=0;a<o;a++){t(a),N.applyMask(a,e);let r=N.getPenaltyN1(e)+N.getPenaltyN2(e)+N.getPenaltyN3(e)+N.getPenaltyN4(e);N.applyMask(a,e),r<s&&(s=r,i=a)}return i}});var Eo=A(Oo=>{var We=Ut(),Ot=[1,1,1,1,1,1,1,1,1,1,2,2,1,2,2,4,1,2,4,4,2,4,4,4,2,4,6,5,2,4,6,6,2,5,8,8,4,5,8,8,4,5,8,11,4,8,10,11,4,9,12,16,4,9,16,16,6,10,12,18,6,10,17,16,6,11,16,19,6,13,18,21,7,14,21,25,8,16,20,25,8,17,23,25,9,17,23,34,9,18,25,30,10,20,27,32,12,21,29,35,12,23,34,37,12,25,34,40,13,26,35,42,14,28,38,45,15,29,40,48,16,31,43,51,17,33,45,54,18,35,48,57,19,37,51,60,19,38,53,63,20,40,56,66,21,43,59,70,22,45,62,74,24,47,65,77,25,49,68,81],Et=[7,10,13,17,10,16,22,28,15,26,36,44,20,36,52,64,26,48,72,88,36,64,96,112,40,72,108,130,48,88,132,156,60,110,160,192,72,130,192,224,80,150,224,264,96,176,260,308,104,198,288,352,120,216,320,384,132,240,360,432,144,280,408,480,168,308,448,532,180,338,504,588,196,364,546,650,224,416,600,700,224,442,644,750,252,476,690,816,270,504,750,900,300,560,810,960,312,588,870,1050,336,644,952,1110,360,700,1020,1200,390,728,1050,1260,420,784,1140,1350,450,812,1200,1440,480,868,1290,1530,510,924,1350,1620,540,980,1440,1710,570,1036,1530,1800,570,1064,1590,1890,600,1120,1680,1980,630,1204,1770,2100,660,1260,1860,2220,720,1316,1950,2310,750,1372,2040,2430];Oo.getBlocksCount=function(e,t){switch(t){case We.L:return Ot[(e-1)*4+0];case We.M:return Ot[(e-1)*4+1];case We.Q:return Ot[(e-1)*4+2];case We.H:return Ot[(e-1)*4+3];default:return}};Oo.getTotalCodewordsCount=function(e,t){switch(t){case We.L:return Et[(e-1)*4+0];case We.M:return Et[(e-1)*4+1];case We.Q:return Et[(e-1)*4+2];case We.H:return Et[(e-1)*4+3];default:return}}});var Pa=A($t=>{var Zn=new Uint8Array(512),jt=new Uint8Array(256);(function(){let e=1;for(let t=0;t<255;t++)Zn[t]=e,jt[e]=t,e<<=1,e&256&&(e^=285);for(let t=255;t<512;t++)Zn[t]=Zn[t-255]})();$t.log=function(e){if(e<1)throw new Error("log("+e+")");return jt[e]};$t.exp=function(e){return Zn[e]};$t.mul=function(e,t){return e===0||t===0?0:Zn[jt[e]+jt[t]]}});var Ua=A(et=>{var jo=Pa();et.mul=function(e,t){let o=new Uint8Array(e.length+t.length-1);for(let i=0;i<e.length;i++)for(let s=0;s<t.length;s++)o[i+s]^=jo.mul(e[i],t[s]);return o};et.mod=function(e,t){let o=new Uint8Array(e);for(;o.length-t.length>=0;){let i=o[0];for(let a=0;a<t.length;a++)o[a]^=jo.mul(t[a],i);let s=0;for(;s<o.length&&o[s]===0;)s++;o=o.slice(s)}return o};et.generateECPolynomial=function(e){let t=new Uint8Array([1]);for(let o=0;o<e;o++)t=et.mul(t,new Uint8Array([1,jo.exp(o)]));return t}});var Ea=A((hg,Oa)=>{var Ta=Ua();function $o(n){this.genPoly=void 0,this.degree=n,this.degree&&this.initialize(this.degree)}$o.prototype.initialize=function(e){this.degree=e,this.genPoly=Ta.generateECPolynomial(this.degree)};$o.prototype.encode=function(e){if(!this.genPoly)throw new Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let o=Ta.mod(t,this.genPoly),i=this.degree-o.length;if(i>0){let s=new Uint8Array(this.degree);return s.set(o,i),s}return o};Oa.exports=$o});var Fo=A(ja=>{ja.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}});var Do=A(De=>{var $a="[0-9]+",Vu="[A-Z $%*+\\-./:]+",nt="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";nt=nt.replace(/u/g,"\\u");var Wu="(?:(?![A-Z0-9 $%*+\\-./:]|"+nt+`)(?:.|[\r
|
|
2
|
+
]))+`;De.KANJI=new RegExp(nt,"g");De.BYTE_KANJI=new RegExp("[^A-Z0-9 $%*+\\-./:]+","g");De.BYTE=new RegExp(Wu,"g");De.NUMERIC=new RegExp($a,"g");De.ALPHANUMERIC=new RegExp(Vu,"g");var Ju=new RegExp("^"+nt+"$"),Yu=new RegExp("^"+$a+"$"),Qu=new RegExp("^[A-Z0-9 $%*+\\-./:]+$");De.testKanji=function(e){return Ju.test(e)};De.testNumeric=function(e){return Yu.test(e)};De.testAlphanumeric=function(e){return Qu.test(e)}});var Je=A(H=>{var Xu=Fo(),qo=Do();H.NUMERIC={id:"Numeric",bit:1,ccBits:[10,12,14]};H.ALPHANUMERIC={id:"Alphanumeric",bit:2,ccBits:[9,11,13]};H.BYTE={id:"Byte",bit:4,ccBits:[8,16,16]};H.KANJI={id:"Kanji",bit:8,ccBits:[8,10,12]};H.MIXED={bit:-1};H.getCharCountIndicator=function(e,t){if(!e.ccBits)throw new Error("Invalid mode: "+e);if(!Xu.isValid(t))throw new Error("Invalid version: "+t);return t>=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]};H.getBestModeForData=function(e){return qo.testNumeric(e)?H.NUMERIC:qo.testAlphanumeric(e)?H.ALPHANUMERIC:qo.testKanji(e)?H.KANJI:H.BYTE};H.toString=function(e){if(e&&e.id)return e.id;throw new Error("Invalid mode")};H.isValid=function(e){return e&&e.bit&&e.ccBits};function Zu(n){if(typeof n!="string")throw new Error("Param is not a string");switch(n.toLowerCase()){case"numeric":return H.NUMERIC;case"alphanumeric":return H.ALPHANUMERIC;case"kanji":return H.KANJI;case"byte":return H.BYTE;default:throw new Error("Unknown mode: "+n)}}H.from=function(e,t){if(H.isValid(e))return e;try{return Zu(e)}catch{return t}}});var Ma=A(mn=>{var Ft=Ve(),ep=Eo(),Fa=Ut(),Ye=Je(),No=Fo(),qa=7973,Da=Ft.getBCHDigit(qa);function np(n,e,t){for(let o=1;o<=40;o++)if(e<=mn.getCapacity(o,t,n))return o}function Na(n,e){return Ye.getCharCountIndicator(n,e)+4}function tp(n,e){let t=0;return n.forEach(function(o){let i=Na(o.mode,e);t+=i+o.getBitsLength()}),t}function op(n,e){for(let t=1;t<=40;t++)if(tp(n,t)<=mn.getCapacity(t,e,Ye.MIXED))return t}mn.from=function(e,t){return No.isValid(e)?parseInt(e,10):t};mn.getCapacity=function(e,t,o){if(!No.isValid(e))throw new Error("Invalid QR Code version");typeof o>"u"&&(o=Ye.BYTE);let i=Ft.getSymbolTotalCodewords(e),s=ep.getTotalCodewordsCount(e,t),a=(i-s)*8;if(o===Ye.MIXED)return a;let r=a-Na(o,e);switch(o){case Ye.NUMERIC:return Math.floor(r/10*3);case Ye.ALPHANUMERIC:return Math.floor(r/11*2);case Ye.KANJI:return Math.floor(r/13);case Ye.BYTE:default:return Math.floor(r/8)}};mn.getBestVersionForData=function(e,t){let o,i=Fa.from(t,Fa.M);if(Array.isArray(e)){if(e.length>1)return op(e,i);if(e.length===0)return 1;o=e[0]}else o=e;return np(o.mode,o.getLength(),i)};mn.getEncodedBits=function(e){if(!No.isValid(e)||e<7)throw new Error("Invalid QR Code version");let t=e<<12;for(;Ft.getBCHDigit(t)-Da>=0;)t^=qa<<Ft.getBCHDigit(t)-Da;return e<<12|t}});var Ka=A(za=>{var Mo=Ve(),Ga=1335,ip=21522,Ba=Mo.getBCHDigit(Ga);za.getEncodedBits=function(e,t){let o=e.bit<<3|t,i=o<<10;for(;Mo.getBCHDigit(i)-Ba>=0;)i^=Ga<<Mo.getBCHDigit(i)-Ba;return(o<<10|i)^ip}});var Va=A((wg,Ha)=>{var sp=Je();function In(n){this.mode=sp.NUMERIC,this.data=n.toString()}In.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)};In.prototype.getLength=function(){return this.data.length};In.prototype.getBitsLength=function(){return In.getBitsLength(this.data.length)};In.prototype.write=function(e){let t,o,i;for(t=0;t+3<=this.data.length;t+=3)o=this.data.substr(t,3),i=parseInt(o,10),e.put(i,10);let s=this.data.length-t;s>0&&(o=this.data.substr(t),i=parseInt(o,10),e.put(i,s*3+1))};Ha.exports=In});var Ja=A((Cg,Wa)=>{var ap=Je(),Bo=["0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"," ","$","%","*","+","-",".","/",":"];function Pn(n){this.mode=ap.ALPHANUMERIC,this.data=n}Pn.getBitsLength=function(e){return 11*Math.floor(e/2)+6*(e%2)};Pn.prototype.getLength=function(){return this.data.length};Pn.prototype.getBitsLength=function(){return Pn.getBitsLength(this.data.length)};Pn.prototype.write=function(e){let t;for(t=0;t+2<=this.data.length;t+=2){let o=Bo.indexOf(this.data[t])*45;o+=Bo.indexOf(this.data[t+1]),e.put(o,11)}this.data.length%2&&e.put(Bo.indexOf(this.data[t]),6)};Wa.exports=Pn});var Qa=A((_g,Ya)=>{var rp=Je();function Un(n){this.mode=rp.BYTE,typeof n=="string"?this.data=new TextEncoder().encode(n):this.data=new Uint8Array(n)}Un.getBitsLength=function(e){return e*8};Un.prototype.getLength=function(){return this.data.length};Un.prototype.getBitsLength=function(){return Un.getBitsLength(this.data.length)};Un.prototype.write=function(n){for(let e=0,t=this.data.length;e<t;e++)n.put(this.data[e],8)};Ya.exports=Un});var Za=A((Sg,Xa)=>{var cp=Je(),lp=Ve();function Tn(n){this.mode=cp.KANJI,this.data=n}Tn.getBitsLength=function(e){return e*13};Tn.prototype.getLength=function(){return this.data.length};Tn.prototype.getBitsLength=function(){return Tn.getBitsLength(this.data.length)};Tn.prototype.write=function(n){let e;for(e=0;e<this.data.length;e++){let t=lp.toSJIS(this.data[e]);if(t>=33088&&t<=40956)t-=33088;else if(t>=57408&&t<=60351)t-=49472;else throw new Error("Invalid SJIS character: "+this.data[e]+`
|
|
3
|
+
Make sure your charset is UTF-8`);t=(t>>>8&255)*192+(t&255),n.put(t,13)}};Xa.exports=Tn});var er=A((Ag,Go)=>{"use strict";var tt={single_source_shortest_paths:function(n,e,t){var o={},i={};i[e]=0;var s=tt.PriorityQueue.make();s.push(e,0);for(var a,r,c,u,p,d,m,f,h;!s.empty();){a=s.pop(),r=a.value,u=a.cost,p=n[r]||{};for(c in p)p.hasOwnProperty(c)&&(d=p[c],m=u+d,f=i[c],h=typeof i[c]>"u",(h||f>m)&&(i[c]=m,s.push(c,m),o[c]=r))}if(typeof t<"u"&&typeof i[t]>"u"){var x=["Could not find a path from ",e," to ",t,"."].join("");throw new Error(x)}return o},extract_shortest_path_from_predecessor_list:function(n,e){for(var t=[],o=e,i;o;)t.push(o),i=n[o],o=n[o];return t.reverse(),t},find_path:function(n,e,t){var o=tt.single_source_shortest_paths(n,e,t);return tt.extract_shortest_path_from_predecessor_list(o,t)},PriorityQueue:{make:function(n){var e=tt.PriorityQueue,t={},o;n=n||{};for(o in e)e.hasOwnProperty(o)&&(t[o]=e[o]);return t.queue=[],t.sorter=n.sorter||e.default_sorter,t},default_sorter:function(n,e){return n.cost-e.cost},push:function(n,e){var t={value:n,cost:e};this.queue.push(t),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return this.queue.length===0}}};typeof Go<"u"&&(Go.exports=tt)});var cr=A(On=>{var q=Je(),or=Va(),ir=Ja(),sr=Qa(),ar=Za(),ot=Do(),Dt=Ve(),up=er();function nr(n){return unescape(encodeURIComponent(n)).length}function it(n,e,t){let o=[],i;for(;(i=n.exec(t))!==null;)o.push({data:i[0],index:i.index,mode:e,length:i[0].length});return o}function rr(n){let e=it(ot.NUMERIC,q.NUMERIC,n),t=it(ot.ALPHANUMERIC,q.ALPHANUMERIC,n),o,i;return Dt.isKanjiModeEnabled()?(o=it(ot.BYTE,q.BYTE,n),i=it(ot.KANJI,q.KANJI,n)):(o=it(ot.BYTE_KANJI,q.BYTE,n),i=[]),e.concat(t,o,i).sort(function(a,r){return a.index-r.index}).map(function(a){return{data:a.data,mode:a.mode,length:a.length}})}function zo(n,e){switch(e){case q.NUMERIC:return or.getBitsLength(n);case q.ALPHANUMERIC:return ir.getBitsLength(n);case q.KANJI:return ar.getBitsLength(n);case q.BYTE:return sr.getBitsLength(n)}}function pp(n){return n.reduce(function(e,t){let o=e.length-1>=0?e[e.length-1]:null;return o&&o.mode===t.mode?(e[e.length-1].data+=t.data,e):(e.push(t),e)},[])}function dp(n){let e=[];for(let t=0;t<n.length;t++){let o=n[t];switch(o.mode){case q.NUMERIC:e.push([o,{data:o.data,mode:q.ALPHANUMERIC,length:o.length},{data:o.data,mode:q.BYTE,length:o.length}]);break;case q.ALPHANUMERIC:e.push([o,{data:o.data,mode:q.BYTE,length:o.length}]);break;case q.KANJI:e.push([o,{data:o.data,mode:q.BYTE,length:nr(o.data)}]);break;case q.BYTE:e.push([{data:o.data,mode:q.BYTE,length:nr(o.data)}])}}return e}function mp(n,e){let t={},o={start:{}},i=["start"];for(let s=0;s<n.length;s++){let a=n[s],r=[];for(let c=0;c<a.length;c++){let u=a[c],p=""+s+c;r.push(p),t[p]={node:u,lastCount:0},o[p]={};for(let d=0;d<i.length;d++){let m=i[d];t[m]&&t[m].node.mode===u.mode?(o[m][p]=zo(t[m].lastCount+u.length,u.mode)-zo(t[m].lastCount,u.mode),t[m].lastCount+=u.length):(t[m]&&(t[m].lastCount=u.length),o[m][p]=zo(u.length,u.mode)+4+q.getCharCountIndicator(u.mode,e))}}i=r}for(let s=0;s<i.length;s++)o[i[s]].end=0;return{map:o,table:t}}function tr(n,e){let t,o=q.getBestModeForData(n);if(t=q.from(e,o),t!==q.BYTE&&t.bit<o.bit)throw new Error('"'+n+'" cannot be encoded with mode '+q.toString(t)+`.
|
|
4
|
+
Suggested mode is: `+q.toString(o));switch(t===q.KANJI&&!Dt.isKanjiModeEnabled()&&(t=q.BYTE),t){case q.NUMERIC:return new or(n);case q.ALPHANUMERIC:return new ir(n);case q.KANJI:return new ar(n);case q.BYTE:return new sr(n)}}On.fromArray=function(e){return e.reduce(function(t,o){return typeof o=="string"?t.push(tr(o,null)):o.data&&t.push(tr(o.data,o.mode)),t},[])};On.fromString=function(e,t){let o=rr(e,Dt.isKanjiModeEnabled()),i=dp(o),s=mp(i,t),a=up.find_path(s.map,"start","end"),r=[];for(let c=1;c<a.length-1;c++)r.push(s.table[a[c]].node);return On.fromArray(pp(r))};On.rawSplit=function(e){return On.fromArray(rr(e,Dt.isKanjiModeEnabled()))}});var Yo=A(lr=>{var Nt=Ve(),Ko=Ut(),fp=wa(),gp=_a(),hp=Sa(),xp=La(),Wo=Ia(),Jo=Eo(),vp=Ea(),qt=Ma(),bp=Ka(),yp=Je(),Ho=cr();function kp(n,e){let t=n.size,o=xp.getPositions(e);for(let i=0;i<o.length;i++){let s=o[i][0],a=o[i][1];for(let r=-1;r<=7;r++)if(!(s+r<=-1||t<=s+r))for(let c=-1;c<=7;c++)a+c<=-1||t<=a+c||(r>=0&&r<=6&&(c===0||c===6)||c>=0&&c<=6&&(r===0||r===6)||r>=2&&r<=4&&c>=2&&c<=4?n.set(s+r,a+c,!0,!0):n.set(s+r,a+c,!1,!0))}}function wp(n){let e=n.size;for(let t=8;t<e-8;t++){let o=t%2===0;n.set(t,6,o,!0),n.set(6,t,o,!0)}}function Cp(n,e){let t=hp.getPositions(e);for(let o=0;o<t.length;o++){let i=t[o][0],s=t[o][1];for(let a=-2;a<=2;a++)for(let r=-2;r<=2;r++)a===-2||a===2||r===-2||r===2||a===0&&r===0?n.set(i+a,s+r,!0,!0):n.set(i+a,s+r,!1,!0)}}function _p(n,e){let t=n.size,o=qt.getEncodedBits(e),i,s,a;for(let r=0;r<18;r++)i=Math.floor(r/3),s=r%3+t-8-3,a=(o>>r&1)===1,n.set(i,s,a,!0),n.set(s,i,a,!0)}function Vo(n,e,t){let o=n.size,i=bp.getEncodedBits(e,t),s,a;for(s=0;s<15;s++)a=(i>>s&1)===1,s<6?n.set(s,8,a,!0):s<8?n.set(s+1,8,a,!0):n.set(o-15+s,8,a,!0),s<8?n.set(8,o-s-1,a,!0):s<9?n.set(8,15-s-1+1,a,!0):n.set(8,15-s-1,a,!0);n.set(o-8,8,1,!0)}function Sp(n,e){let t=n.size,o=-1,i=t-1,s=7,a=0;for(let r=t-1;r>0;r-=2)for(r===6&&r--;;){for(let c=0;c<2;c++)if(!n.isReserved(i,r-c)){let u=!1;a<e.length&&(u=(e[a]>>>s&1)===1),n.set(i,r-c,u),s--,s===-1&&(a++,s=7)}if(i+=o,i<0||t<=i){i-=o,o=-o;break}}}function Ap(n,e,t){let o=new fp;t.forEach(function(c){o.put(c.mode.bit,4),o.put(c.getLength(),yp.getCharCountIndicator(c.mode,n)),c.write(o)});let i=Nt.getSymbolTotalCodewords(n),s=Jo.getTotalCodewordsCount(n,e),a=(i-s)*8;for(o.getLengthInBits()+4<=a&&o.put(0,4);o.getLengthInBits()%8!==0;)o.putBit(0);let r=(a-o.getLengthInBits())/8;for(let c=0;c<r;c++)o.put(c%2?17:236,8);return Rp(o,n,e)}function Rp(n,e,t){let o=Nt.getSymbolTotalCodewords(e),i=Jo.getTotalCodewordsCount(e,t),s=o-i,a=Jo.getBlocksCount(e,t),r=o%a,c=a-r,u=Math.floor(o/a),p=Math.floor(s/a),d=p+1,m=u-p,f=new vp(m),h=0,x=new Array(a),v=new Array(a),g=0,k=new Uint8Array(n.buffer);for(let C=0;C<a;C++){let I=C<c?p:d;x[C]=k.slice(h,h+I),v[C]=f.encode(x[C]),h+=I,g=Math.max(g,I)}let w=new Uint8Array(o),b=0,S,y;for(S=0;S<g;S++)for(y=0;y<a;y++)S<x[y].length&&(w[b++]=x[y][S]);for(S=0;S<m;S++)for(y=0;y<a;y++)w[b++]=v[y][S];return w}function Lp(n,e,t,o){let i;if(Array.isArray(n))i=Ho.fromArray(n);else if(typeof n=="string"){let u=e;if(!u){let p=Ho.rawSplit(n);u=qt.getBestVersionForData(p,t)}i=Ho.fromString(n,u||40)}else throw new Error("Invalid data");let s=qt.getBestVersionForData(i,t);if(!s)throw new Error("The amount of data is too big to be stored in a QR Code");if(!e)e=s;else if(e<s)throw new Error(`
|
|
5
5
|
The chosen QR Code version cannot contain this amount of data.
|
|
6
6
|
Minimum version required to store current data is: `+s+`.
|
|
7
|
-
`);let a=ep(e,o,i),r=Po.getSymbolSize(e),c=new Gu(r);return Ju(c,e),Yu(c),Qu(c,e),Ut(c,o,0),e>=7&&Xu(c,e),Zu(c,a),isNaN(t)&&(t=Tt.getBestMask(c,Ut.bind(null,c,o))),Tt.applyMask(t,c),Ut(c,o,t),{modules:c,version:e,errorCorrectionLevel:o,maskPattern:t,segments:i}}za.create=function(e,o){if(typeof e>"u"||e==="")throw new Error("No input text");let t=It.M,i,s;return typeof o<"u"&&(t=It.from(o.errorCorrectionLevel,It.M),i=Io.from(o.version),s=Tt.from(o.maskPattern),o.toSJISFunc&&Po.setToSJISFunction(o.toSJISFunc)),op(e,i,t,s)}});var jt=A((Zf,Ha)=>{"use strict";var tp=G("util"),Ka=G("stream"),ke=Ha.exports=function(){Ka.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};tp.inherits(ke,Ka);ke.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};ke.prototype.write=function(n,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let o;return Buffer.isBuffer(n)?o=n:o=Buffer.from(n,e||this._encoding),this._buffers.push(o),this._buffered+=o.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};ke.prototype.end=function(n,e){n&&this.write(n,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};ke.prototype.destroySoon=ke.prototype.end;ke.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};ke.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};ke.prototype._processReadAllowingLess=function(n){this._reads.shift();let e=this._buffers[0];e.length>n.length?(this._buffered-=n.length,this._buffers[0]=e.slice(n.length),n.func.call(this,e.slice(0,n.length))):(this._buffered-=e.length,this._buffers.shift(),n.func.call(this,e))};ke.prototype._processRead=function(n){this._reads.shift();let e=0,o=0,t=Buffer.alloc(n.length);for(;e<n.length;){let i=this._buffers[o++],s=Math.min(i.length,n.length-e);i.copy(t,e,0,s),e+=s,s!==i.length&&(this._buffers[--o]=i.slice(s))}o>0&&this._buffers.splice(0,o),this._buffered-=n.length,n.func.call(this,t)};ke.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let n=this._reads[0];if(n.allowLess)this._processReadAllowingLess(n);else if(this._buffered>=n.length)this._processRead(n);else break}this._buffers&&!this.writable&&this._end()}catch(n){this.emit("error",n)}}});var $t=A(Ft=>{"use strict";var Ye=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];Ft.getImagePasses=function(n,e){let o=[],t=n%8,i=e%8,s=(n-t)/8,a=(e-i)/8;for(let r=0;r<Ye.length;r++){let c=Ye[r],u=s*c.x.length,p=a*c.y.length;for(let d=0;d<c.x.length&&c.x[d]<t;d++)u++;for(let d=0;d<c.y.length&&c.y[d]<i;d++)p++;u>0&&p>0&&o.push({width:u,height:p,index:r})}return o};Ft.getInterlaceIterator=function(n){return function(e,o,t){let i=e%Ye[t].x.length,s=(e-i)/Ye[t].x.length*8+Ye[t].x[i],a=o%Ye[t].y.length,r=(o-a)/Ye[t].y.length*8+Ye[t].y[a];return s*4+r*n*4}}});var qt=A((ng,Va)=>{"use strict";Va.exports=function(e,o,t){let i=e+o-t,s=Math.abs(i-e),a=Math.abs(i-o),r=Math.abs(i-t);return s<=a&&s<=r?e:a<=r?o:t}});var Dt=A((og,Ja)=>{"use strict";var ip=$t(),sp=qt();function Wa(n,e,o){let t=n*e;return o!==8&&(t=Math.ceil(t/(8/o))),t}var _n=Ja.exports=function(n,e){let o=n.width,t=n.height,i=n.interlace,s=n.bpp,a=n.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let r=ip.getImagePasses(o,t);for(let c=0;c<r.length;c++)this._images.push({byteWidth:Wa(r[c].width,s,a),height:r[c].height,lineIndex:0})}else this._images.push({byteWidth:Wa(o,s,a),height:t,lineIndex:0});a===8?this._xComparison=s:a===16?this._xComparison=s*2:this._xComparison=1};_n.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};_n.prototype._unFilterType1=function(n,e,o){let t=this._xComparison,i=t-1;for(let s=0;s<o;s++){let a=n[1+s],r=s>i?e[s-t]:0;e[s]=a+r}};_n.prototype._unFilterType2=function(n,e,o){let t=this._lastLine;for(let i=0;i<o;i++){let s=n[1+i],a=t?t[i]:0;e[i]=s+a}};_n.prototype._unFilterType3=function(n,e,o){let t=this._xComparison,i=t-1,s=this._lastLine;for(let a=0;a<o;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-t]:0,p=Math.floor((u+c)/2);e[a]=r+p}};_n.prototype._unFilterType4=function(n,e,o){let t=this._xComparison,i=t-1,s=this._lastLine;for(let a=0;a<o;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-t]:0,p=a>i&&s?s[a-t]:0,d=sp(u,c,p);e[a]=r+d}};_n.prototype._reverseFilterLine=function(n){let e=n[0],o,t=this._images[this._imageIndex],i=t.byteWidth;if(e===0)o=n.slice(1,i+1);else switch(o=Buffer.alloc(i),e){case 1:this._unFilterType1(n,o,i);break;case 2:this._unFilterType2(n,o,i);break;case 3:this._unFilterType3(n,o,i);break;case 4:this._unFilterType4(n,o,i);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(o),t.lineIndex++,t.lineIndex>=t.height?(this._lastLine=null,this._imageIndex++,t=this._images[this._imageIndex]):this._lastLine=o,t?this.read(t.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var Xa=A((tg,Qa)=>{"use strict";var ap=G("util"),Ya=jt(),rp=Dt(),cp=Qa.exports=function(n){Ya.call(this);let e=[],o=this;this._filter=new rp(n,{read:this.read.bind(this),write:function(t){e.push(t)},complete:function(){o.emit("complete",Buffer.concat(e))}}),this._filter.start()};ap.inherits(cp,Ya)});var Sn=A((ig,Za)=>{"use strict";Za.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var Bt=A((sg,er)=>{"use strict";var Nt=[];(function(){for(let n=0;n<256;n++){let e=n;for(let o=0;o<8;o++)e&1?e=3988292384^e>>>1:e=e>>>1;Nt[n]=e}})();var Mt=er.exports=function(){this._crc=-1};Mt.prototype.write=function(n){for(let e=0;e<n.length;e++)this._crc=Nt[(this._crc^n[e])&255]^this._crc>>>8;return!0};Mt.prototype.crc32=function(){return this._crc^-1};Mt.crc32=function(n){let e=-1;for(let o=0;o<n.length;o++)e=Nt[(e^n[o])&255]^e>>>8;return e^-1}});var Gt=A((ag,nr)=>{"use strict";var J=Sn(),lp=Bt(),X=nr.exports=function(n,e){this._options=n,n.checkCRC=n.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[J.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[J.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[J.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[J.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[J.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[J.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};X.prototype.start=function(){this.read(J.PNG_SIGNATURE.length,this._parseSignature.bind(this))};X.prototype._parseSignature=function(n){let e=J.PNG_SIGNATURE;for(let o=0;o<e.length;o++)if(n[o]!==e[o]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};X.prototype._parseChunkBegin=function(n){let e=n.readUInt32BE(0),o=n.readUInt32BE(4),t="";for(let s=4;s<8;s++)t+=String.fromCharCode(n[s]);let i=!!(n[4]&32);if(!this._hasIHDR&&o!==J.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new lp,this._crc.write(Buffer.from(t)),this._chunks[o])return this._chunks[o](e);if(!i){this.error(new Error("Unsupported critical chunk type "+t));return}this.read(e+4,this._skipChunk.bind(this))};X.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};X.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};X.prototype._parseChunkEnd=function(n){let e=n.readInt32BE(0),o=this._crc.crc32();if(this._options.checkCRC&&o!==e){this.error(new Error("Crc error - "+e+" - "+o));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};X.prototype._handleIHDR=function(n){this.read(n,this._parseIHDR.bind(this))};X.prototype._parseIHDR=function(n){this._crc.write(n);let e=n.readUInt32BE(0),o=n.readUInt32BE(4),t=n[8],i=n[9],s=n[10],a=n[11],r=n[12];if(t!==8&&t!==4&&t!==2&&t!==1&&t!==16){this.error(new Error("Unsupported bit depth "+t));return}if(!(i in J.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(a!==0){this.error(new Error("Unsupported filter method"));return}if(r!==0&&r!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=i;let c=J.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:o,depth:t,interlace:!!r,palette:!!(i&J.COLORTYPE_PALETTE),color:!!(i&J.COLORTYPE_COLOR),alpha:!!(i&J.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};X.prototype._handlePLTE=function(n){this.read(n,this._parsePLTE.bind(this))};X.prototype._parsePLTE=function(n){this._crc.write(n);let e=Math.floor(n.length/3);for(let o=0;o<e;o++)this._palette.push([n[o*3],n[o*3+1],n[o*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};X.prototype._handleTRNS=function(n){this.simpleTransparency(),this.read(n,this._parseTRNS.bind(this))};X.prototype._parseTRNS=function(n){if(this._crc.write(n),this._colorType===J.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(n.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<n.length;e++)this._palette[e][3]=n[e];this.palette(this._palette)}this._colorType===J.COLORTYPE_GRAYSCALE&&this.transColor([n.readUInt16BE(0)]),this._colorType===J.COLORTYPE_COLOR&&this.transColor([n.readUInt16BE(0),n.readUInt16BE(2),n.readUInt16BE(4)]),this._handleChunkEnd()};X.prototype._handleGAMA=function(n){this.read(n,this._parseGAMA.bind(this))};X.prototype._parseGAMA=function(n){this._crc.write(n),this.gamma(n.readUInt32BE(0)/J.GAMMA_DIVISION),this._handleChunkEnd()};X.prototype._handleIDAT=function(n){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-n,this._parseIDAT.bind(this,n))};X.prototype._parseIDAT=function(n,e){if(this._crc.write(e),this._colorType===J.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let o=n-e.length;o>0?this._handleIDAT(o):this._handleChunkEnd()};X.prototype._handleIEND=function(n){this.read(n,this._parseIEND.bind(this))};X.prototype._parseIEND=function(n){this._crc.write(n),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var zt=A(tr=>{"use strict";var or=$t(),up=[function(){},function(n,e,o,t){if(t===e.length)throw new Error("Ran out of data");let i=e[t];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=255},function(n,e,o,t){if(t+1>=e.length)throw new Error("Ran out of data");let i=e[t];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=e[t+1]},function(n,e,o,t){if(t+2>=e.length)throw new Error("Ran out of data");n[o]=e[t],n[o+1]=e[t+1],n[o+2]=e[t+2],n[o+3]=255},function(n,e,o,t){if(t+3>=e.length)throw new Error("Ran out of data");n[o]=e[t],n[o+1]=e[t+1],n[o+2]=e[t+2],n[o+3]=e[t+3]}],pp=[function(){},function(n,e,o,t){let i=e[0];n[o]=i,n[o+1]=i,n[o+2]=i,n[o+3]=t},function(n,e,o){let t=e[0];n[o]=t,n[o+1]=t,n[o+2]=t,n[o+3]=e[1]},function(n,e,o,t){n[o]=e[0],n[o+1]=e[1],n[o+2]=e[2],n[o+3]=t},function(n,e,o){n[o]=e[0],n[o+1]=e[1],n[o+2]=e[2],n[o+3]=e[3]}];function dp(n,e){let o=[],t=0;function i(){if(t===n.length)throw new Error("Ran out of data");let s=n[t];t++;let a,r,c,u,p,d,m,f;switch(e){default:throw new Error("unrecognised depth");case 16:m=n[t],t++,o.push((s<<8)+m);break;case 4:m=s&15,f=s>>4,o.push(f,m);break;case 2:p=s&3,d=s>>2&3,m=s>>4&3,f=s>>6&3,o.push(f,m,d,p);break;case 1:a=s&1,r=s>>1&1,c=s>>2&1,u=s>>3&1,p=s>>4&1,d=s>>5&1,m=s>>6&1,f=s>>7&1,o.push(f,m,d,p,u,c,r,a);break}}return{get:function(s){for(;o.length<s;)i();let a=o.slice(0,s);return o=o.slice(s),a},resetAfterLine:function(){o.length=0},end:function(){if(t!==n.length)throw new Error("extra data found")}}}function mp(n,e,o,t,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++)for(let p=0;p<a;p++){let d=o(p,u,c);up[t](e,i,d,s),s+=t}return s}function fp(n,e,o,t,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++){for(let p=0;p<a;p++){let d=i.get(t),m=o(p,u,c);pp[t](e,d,m,s)}i.resetAfterLine()}}tr.dataToBitMap=function(n,e){let o=e.width,t=e.height,i=e.depth,s=e.bpp,a=e.interlace,r;i!==8&&(r=dp(n,i));let c;i<=8?c=Buffer.alloc(o*t*4):c=new Uint16Array(o*t*4);let u=Math.pow(2,i)-1,p=0,d,m;if(a)d=or.getImagePasses(o,t),m=or.getInterlaceIterator(o,t);else{let f=0;m=function(){let h=f;return f+=4,h},d=[{width:o,height:t}]}for(let f=0;f<d.length;f++)i===8?p=mp(d[f],c,m,s,n,p):fp(d[f],c,m,s,r,u);if(i===8){if(p!==n.length)throw new Error("extra data found")}else r.end();return c}});var Kt=A((cg,ir)=>{"use strict";function gp(n,e,o,t,i){let s=0;for(let a=0;a<t;a++)for(let r=0;r<o;r++){let c=i[n[s]];if(!c)throw new Error("index "+n[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function hp(n,e,o,t,i){let s=0;for(let a=0;a<t;a++)for(let r=0;r<o;r++){let c=!1;if(i.length===1?i[0]===n[s]&&(c=!0):i[0]===n[s]&&i[1]===n[s+1]&&i[2]===n[s+2]&&(c=!0),c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function xp(n,e,o,t,i){let s=255,a=Math.pow(2,i)-1,r=0;for(let c=0;c<t;c++)for(let u=0;u<o;u++){for(let p=0;p<4;p++)e[r+p]=Math.floor(n[r+p]*s/a+.5);r+=4}}ir.exports=function(n,e){let o=e.depth,t=e.width,i=e.height,s=e.colorType,a=e.transColor,r=e.palette,c=n;return s===3?gp(n,c,t,i,r):(a&&hp(n,c,t,i,a),o!==8&&(o===16&&(c=Buffer.alloc(t*i*4)),xp(n,c,t,i,o))),c}});var rr=A((lg,ar)=>{"use strict";var vp=G("util"),Ht=G("zlib"),sr=jt(),bp=Xa(),yp=Gt(),kp=zt(),wp=Kt(),Ae=ar.exports=function(n){sr.call(this),this._parser=new yp(n,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=n,this.writable=!0,this._parser.start()};vp.inherits(Ae,sr);Ae.prototype._handleError=function(n){this.emit("error",n),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Ae.prototype._inflateData=function(n){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=Ht.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let o=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,t=Math.max(o,Ht.Z_MIN_CHUNK);this._inflate=Ht.createInflate({chunkSize:t});let i=o,s=this.emit.bind(this,"error");this._inflate.on("error",function(r){i&&s(r)}),this._filter.on("complete",this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on("data",function(r){i&&(r.length>i&&(r=r.slice(0,i)),i-=r.length,a(r))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(n)};Ae.prototype._handleMetaData=function(n){this._metaData=n,this._bitmapInfo=Object.create(n),this._filter=new bp(this._bitmapInfo)};Ae.prototype._handleTransColor=function(n){this._bitmapInfo.transColor=n};Ae.prototype._handlePalette=function(n){this._bitmapInfo.palette=n};Ae.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Ae.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Ae.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Ae.prototype._complete=function(n){if(this.errord)return;let e;try{let o=kp.dataToBitMap(n,this._bitmapInfo);e=wp(o,this._bitmapInfo),o=null}catch(o){this._handleError(o);return}this.emit("parsed",e)}});var lr=A((ug,cr)=>{"use strict";var ge=Sn();cr.exports=function(n,e,o,t){let i=[ge.COLORTYPE_COLOR_ALPHA,ge.COLORTYPE_ALPHA].indexOf(t.colorType)!==-1;if(t.colorType===t.inputColorType){let h=(function(){let x=new ArrayBuffer(2);return new DataView(x).setInt16(0,256,!0),new Int16Array(x)[0]!==256})();if(t.bitDepth===8||t.bitDepth===16&&h)return n}let s=t.bitDepth!==16?n:new Uint16Array(n.buffer),a=255,r=ge.COLORTYPE_TO_BPP_MAP[t.inputColorType];r===4&&!t.inputHasAlpha&&(r=3);let c=ge.COLORTYPE_TO_BPP_MAP[t.colorType];t.bitDepth===16&&(a=65535,c*=2);let u=Buffer.alloc(e*o*c),p=0,d=0,m=t.bgColor||{};m.red===void 0&&(m.red=a),m.green===void 0&&(m.green=a),m.blue===void 0&&(m.blue=a);function f(){let h,x,g,v=a;switch(t.inputColorType){case ge.COLORTYPE_COLOR_ALPHA:v=s[p+3],h=s[p],x=s[p+1],g=s[p+2];break;case ge.COLORTYPE_COLOR:h=s[p],x=s[p+1],g=s[p+2];break;case ge.COLORTYPE_ALPHA:v=s[p+1],h=s[p],x=h,g=h;break;case ge.COLORTYPE_GRAYSCALE:h=s[p],x=h,g=h;break;default:throw new Error("input color type:"+t.inputColorType+" is not supported at present")}return t.inputHasAlpha&&(i||(v/=a,h=Math.min(Math.max(Math.round((1-v)*m.red+v*h),0),a),x=Math.min(Math.max(Math.round((1-v)*m.green+v*x),0),a),g=Math.min(Math.max(Math.round((1-v)*m.blue+v*g),0),a))),{red:h,green:x,blue:g,alpha:v}}for(let h=0;h<o;h++)for(let x=0;x<e;x++){let g=f(s,p);switch(t.colorType){case ge.COLORTYPE_COLOR_ALPHA:case ge.COLORTYPE_COLOR:t.bitDepth===8?(u[d]=g.red,u[d+1]=g.green,u[d+2]=g.blue,i&&(u[d+3]=g.alpha)):(u.writeUInt16BE(g.red,d),u.writeUInt16BE(g.green,d+2),u.writeUInt16BE(g.blue,d+4),i&&u.writeUInt16BE(g.alpha,d+6));break;case ge.COLORTYPE_ALPHA:case ge.COLORTYPE_GRAYSCALE:{let v=(g.red+g.green+g.blue)/3;t.bitDepth===8?(u[d]=v,i&&(u[d+1]=g.alpha)):(u.writeUInt16BE(v,d),i&&u.writeUInt16BE(g.alpha,d+2));break}default:throw new Error("unrecognised color Type "+t.colorType)}p+=r,d+=c}return u}});var dr=A((pg,pr)=>{"use strict";var ur=qt();function Cp(n,e,o,t,i){for(let s=0;s<o;s++)t[i+s]=n[e+s]}function _p(n,e,o){let t=0,i=e+o;for(let s=e;s<i;s++)t+=Math.abs(n[s]);return t}function Sp(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=n[e+a]-r;t[i+a]=c}}function Ap(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=n[e+s]-a;i+=Math.abs(r)}return i}function Rp(n,e,o,t,i){for(let s=0;s<o;s++){let a=e>0?n[e+s-o]:0,r=n[e+s]-a;t[i+s]=r}}function Lp(n,e,o){let t=0,i=e+o;for(let s=e;s<i;s++){let a=e>0?n[s-o]:0,r=n[s]-a;t+=Math.abs(r)}return t}function Ip(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-o]:0,u=n[e+a]-(r+c>>1);t[i+a]=u}}function Pp(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=e>0?n[e+s-o]:0,c=n[e+s]-(a+r>>1);i+=Math.abs(c)}return i}function Up(n,e,o,t,i,s){for(let a=0;a<o;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-o]:0,u=e>0&&a>=s?n[e+a-(o+s)]:0,p=n[e+a]-ur(r,c,u);t[i+a]=p}}function Tp(n,e,o,t){let i=0;for(let s=0;s<o;s++){let a=s>=t?n[e+s-t]:0,r=e>0?n[e+s-o]:0,c=e>0&&s>=t?n[e+s-(o+t)]:0,u=n[e+s]-ur(a,r,c);i+=Math.abs(u)}return i}var Op={0:Cp,1:Sp,2:Rp,3:Ip,4:Up},Ep={0:_p,1:Ap,2:Lp,3:Pp,4:Tp};pr.exports=function(n,e,o,t,i){let s;if(!("filterType"in t)||t.filterType===-1)s=[0,1,2,3,4];else if(typeof t.filterType=="number")s=[t.filterType];else throw new Error("unrecognised filter types");t.bitDepth===16&&(i*=2);let a=e*i,r=0,c=0,u=Buffer.alloc((a+1)*o),p=s[0];for(let d=0;d<o;d++){if(s.length>1){let m=1/0;for(let f=0;f<s.length;f++){let h=Ep[s[f]](n,c,a,i);h<m&&(p=s[f],m=h)}}u[r]=p,r++,Op[p](n,c,a,u,r,i),r+=a,c+=a}return u}});var Vt=A((dg,mr)=>{"use strict";var ne=Sn(),jp=Bt(),Fp=lr(),$p=dr(),qp=G("zlib"),Qe=mr.exports=function(n){if(this._options=n,n.deflateChunkSize=n.deflateChunkSize||32*1024,n.deflateLevel=n.deflateLevel!=null?n.deflateLevel:9,n.deflateStrategy=n.deflateStrategy!=null?n.deflateStrategy:3,n.inputHasAlpha=n.inputHasAlpha!=null?n.inputHasAlpha:!0,n.deflateFactory=n.deflateFactory||qp.createDeflate,n.bitDepth=n.bitDepth||8,n.colorType=typeof n.colorType=="number"?n.colorType:ne.COLORTYPE_COLOR_ALPHA,n.inputColorType=typeof n.inputColorType=="number"?n.inputColorType:ne.COLORTYPE_COLOR_ALPHA,[ne.COLORTYPE_GRAYSCALE,ne.COLORTYPE_COLOR,ne.COLORTYPE_COLOR_ALPHA,ne.COLORTYPE_ALPHA].indexOf(n.colorType)===-1)throw new Error("option color type:"+n.colorType+" is not supported at present");if([ne.COLORTYPE_GRAYSCALE,ne.COLORTYPE_COLOR,ne.COLORTYPE_COLOR_ALPHA,ne.COLORTYPE_ALPHA].indexOf(n.inputColorType)===-1)throw new Error("option input color type:"+n.inputColorType+" is not supported at present");if(n.bitDepth!==8&&n.bitDepth!==16)throw new Error("option bit depth:"+n.bitDepth+" is not supported at present")};Qe.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Qe.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Qe.prototype.filterData=function(n,e,o){let t=Fp(n,e,o,this._options),i=ne.COLORTYPE_TO_BPP_MAP[this._options.colorType];return $p(t,e,o,this._options,i)};Qe.prototype._packChunk=function(n,e){let o=e?e.length:0,t=Buffer.alloc(o+12);return t.writeUInt32BE(o,0),t.writeUInt32BE(n,4),e&&e.copy(t,8),t.writeInt32BE(jp.crc32(t.slice(4,t.length-4)),t.length-4),t};Qe.prototype.packGAMA=function(n){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(n*ne.GAMMA_DIVISION),0),this._packChunk(ne.TYPE_gAMA,e)};Qe.prototype.packIHDR=function(n,e){let o=Buffer.alloc(13);return o.writeUInt32BE(n,0),o.writeUInt32BE(e,4),o[8]=this._options.bitDepth,o[9]=this._options.colorType,o[10]=0,o[11]=0,o[12]=0,this._packChunk(ne.TYPE_IHDR,o)};Qe.prototype.packIDAT=function(n){return this._packChunk(ne.TYPE_IDAT,n)};Qe.prototype.packIEND=function(){return this._packChunk(ne.TYPE_IEND,null)}});var xr=A((mg,hr)=>{"use strict";var Dp=G("util"),fr=G("stream"),Np=Sn(),Mp=Vt(),gr=hr.exports=function(n){fr.call(this);let e=n||{};this._packer=new Mp(e),this._deflate=this._packer.createDeflate(),this.readable=!0};Dp.inherits(gr,fr);gr.prototype.pack=function(n,e,o,t){this.emit("data",Buffer.from(Np.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,o)),t&&this.emit("data",this._packer.packGAMA(t));let i=this._packer.filterData(n,e,o);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Cr=A((Yn,wr)=>{"use strict";var vr=G("assert").ok,An=G("zlib"),Bp=G("util"),br=G("buffer").kMaxLength;function ln(n){if(!(this instanceof ln))return new ln(n);n&&n.chunkSize<An.Z_MIN_CHUNK&&(n.chunkSize=An.Z_MIN_CHUNK),An.Inflate.call(this,n),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,n&&n.maxLength!=null&&(this._maxLength=n.maxLength)}function Gp(n){return new ln(n)}function yr(n,e){e&&process.nextTick(e),n._handle&&(n._handle.close(),n._handle=null)}ln.prototype._processChunk=function(n,e,o){if(typeof o=="function")return An.Inflate._processChunk.call(this,n,e,o);let t=this,i=n&&n.length,s=this._chunkSize-this._offset,a=this._maxLength,r=0,c=[],u=0,p;this.on("error",function(h){p=h});function d(h,x){if(t._hadError)return;let g=s-x;if(vr(g>=0,"have should not go down"),g>0){let v=t._buffer.slice(t._offset,t._offset+g);if(t._offset+=g,v.length>a&&(v=v.slice(0,a)),c.push(v),u+=v.length,a-=v.length,a===0)return!1}return(x===0||t._offset>=t._chunkSize)&&(s=t._chunkSize,t._offset=0,t._buffer=Buffer.allocUnsafe(t._chunkSize)),x===0?(r+=i-h,i=h,!0):!1}vr(this._handle,"zlib binding closed");let m;do m=this._handle.writeSync(e,n,r,i,this._buffer,this._offset,s),m=m||this._writeState;while(!this._hadError&&d(m[0],m[1]));if(this._hadError)throw p;if(u>=br)throw yr(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+br.toString(16)+" bytes");let f=Buffer.concat(c,u);return yr(this),f};Bp.inherits(ln,An.Inflate);function zp(n,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let o=n._finishFlushFlag;return o==null&&(o=An.Z_FINISH),n._processChunk(e,o)}function kr(n,e){return zp(new ln(e),n)}wr.exports=Yn=kr;Yn.Inflate=ln;Yn.createInflate=Gp;Yn.inflateSync=kr});var Wt=A((fg,Sr)=>{"use strict";var _r=Sr.exports=function(n){this._buffer=n,this._reads=[]};_r.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e})};_r.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let n=this._reads[0];if(this._buffer.length&&(this._buffer.length>=n.length||n.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(n.length),n.func.call(this,e.slice(0,n.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var Rr=A(Ar=>{"use strict";var Kp=Wt(),Hp=Dt();Ar.process=function(n,e){let o=[],t=new Kp(n);return new Hp(e,{read:t.read.bind(t),write:function(s){o.push(s)},complete:function(){}}).start(),t.process(),Buffer.concat(o)}});var Ur=A((hg,Pr)=>{"use strict";var Lr=!0,Ir=G("zlib"),Vp=Cr();Ir.deflateSync||(Lr=!1);var Wp=Wt(),Jp=Rr(),Yp=Gt(),Qp=zt(),Xp=Kt();Pr.exports=function(n,e){if(!Lr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let o;function t(k){o=k}let i;function s(k){i=k}function a(k){i.transColor=k}function r(k){i.palette=k}function c(){i.alpha=!0}let u;function p(k){u=k}let d=[];function m(k){d.push(k)}let f=new Wp(n);if(new Yp(e,{read:f.read.bind(f),error:t,metadata:s,gamma:p,palette:r,transColor:a,inflateData:m,simpleTransparency:c}).start(),f.process(),o)throw o;let x=Buffer.concat(d);d.length=0;let g;if(i.interlace)g=Ir.inflateSync(x);else{let C=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;g=Vp(x,{chunkSize:C,maxLength:C})}if(x=null,!g||!g.length)throw new Error("bad png - invalid inflate data response");let v=Jp.process(g,i);x=null;let w=Qp.dataToBitMap(v,i);v=null;let y=Xp(w,i);return i.data=y,i.gamma=u||0,i}});var jr=A((xg,Er)=>{"use strict";var Tr=!0,Or=G("zlib");Or.deflateSync||(Tr=!1);var Zp=Sn(),ed=Vt();Er.exports=function(n,e){if(!Tr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let o=e||{},t=new ed(o),i=[];i.push(Buffer.from(Zp.PNG_SIGNATURE)),i.push(t.packIHDR(n.width,n.height)),n.gamma&&i.push(t.packGAMA(n.gamma));let s=t.filterData(n.data,n.width,n.height),a=Or.deflateSync(s,t.getDeflateOptions());if(s=null,!a||!a.length)throw new Error("bad png - invalid compressed data response");return i.push(t.packIDAT(a)),i.push(t.packIEND()),Buffer.concat(i)}});var Fr=A(Jt=>{"use strict";var nd=Ur(),od=jr();Jt.read=function(n,e){return nd(n,e||{})};Jt.write=function(n,e){return od(n,e)}});var Dr=A(qr=>{"use strict";var td=G("util"),$r=G("stream"),id=rr(),sd=xr(),ad=Fr(),te=qr.PNG=function(n){$r.call(this),n=n||{},this.width=n.width|0,this.height=n.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,n.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new id(n),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new sd(n),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};td.inherits(te,$r);te.sync=ad;te.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};te.prototype.parse=function(n,e){if(e){let o,t;o=function(i){this.removeListener("error",t),this.data=i,e(null,this)}.bind(this),t=function(i){this.removeListener("parsed",o),e(i,null)}.bind(this),this.once("parsed",o),this.once("error",t)}return this.end(n),this};te.prototype.write=function(n){return this._parser.write(n),!0};te.prototype.end=function(n){this._parser.end(n)};te.prototype._metadata=function(n){this.width=n.width,this.height=n.height,this.emit("metadata",n)};te.prototype._gamma=function(n){this.gamma=n};te.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};te.bitblt=function(n,e,o,t,i,s,a,r){if(o|=0,t|=0,i|=0,s|=0,a|=0,r|=0,o>n.width||t>n.height||o+i>n.width||t+s>n.height)throw new Error("bitblt reading outside image");if(a>e.width||r>e.height||a+i>e.width||r+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)n.data.copy(e.data,(r+c)*e.width+a<<2,(t+c)*n.width+o<<2,(t+c)*n.width+o+i<<2)};te.prototype.bitblt=function(n,e,o,t,i,s,a){return te.bitblt(this,n,e,o,t,i,s,a),this};te.adjustGamma=function(n){if(n.gamma){for(let e=0;e<n.height;e++)for(let o=0;o<n.width;o++){let t=n.width*e+o<<2;for(let i=0;i<3;i++){let s=n.data[t+i]/255;s=Math.pow(s,1/2.2/n.gamma),n.data[t+i]=Math.round(s*255)}}n.gamma=0}};te.prototype.adjustGamma=function(){te.adjustGamma(this)}});var Qn=A(un=>{function Nr(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+n);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(t){return[t,t]}))),e.length===6&&e.push("F","F");let o=parseInt(e.join(""),16);return{r:o>>24&255,g:o>>16&255,b:o>>8&255,a:o&255,hex:"#"+e.slice(0,6).join("")}}un.getOptions=function(e){e||(e={}),e.color||(e.color={});let o=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,t=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:t,scale:t?4:i,margin:o,color:{dark:Nr(e.color.dark||"#000000ff"),light:Nr(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};un.getScale=function(e,o){return o.width&&o.width>=e+o.margin*2?o.width/(e+o.margin*2):o.scale};un.getImageWidth=function(e,o){let t=un.getScale(e,o);return Math.floor((e+o.margin*2)*t)};un.qrToImageData=function(e,o,t){let i=o.modules.size,s=o.modules.data,a=un.getScale(i,t),r=Math.floor((i+t.margin*2)*a),c=t.margin*a,u=[t.color.light,t.color.dark];for(let p=0;p<r;p++)for(let d=0;d<r;d++){let m=(p*r+d)*4,f=t.color.light;if(p>=c&&d>=c&&p<r-c&&d<r-c){let h=Math.floor((p-c)/a),x=Math.floor((d-c)/a);f=u[s[h*i+x]?1:0]}e[m++]=f.r,e[m++]=f.g,e[m++]=f.b,e[m]=f.a}}});var Mr=A(Re=>{var rd=G("fs"),cd=Dr().PNG,Yt=Qn();Re.render=function(e,o){let t=Yt.getOptions(o),i=t.rendererOpts,s=Yt.getImageWidth(e.modules.size,t);i.width=s,i.height=s;let a=new cd(i);return Yt.qrToImageData(a.data,e,t),a};Re.renderToDataURL=function(e,o,t){typeof t>"u"&&(t=o,o=void 0),Re.renderToBuffer(e,o,function(i,s){i&&t(i);let a="data:image/png;base64,";a+=s.toString("base64"),t(null,a)})};Re.renderToBuffer=function(e,o,t){typeof t>"u"&&(t=o,o=void 0);let i=Re.render(e,o),s=[];i.on("error",t),i.on("data",function(a){s.push(a)}),i.on("end",function(){t(null,Buffer.concat(s))}),i.pack()};Re.renderToFile=function(e,o,t,i){typeof i>"u"&&(i=t,t=void 0);let s=!1,a=(...c)=>{s||(s=!0,i.apply(null,c))},r=rd.createWriteStream(e);r.on("error",a),r.on("close",a),Re.renderToFileStream(r,o,t)};Re.renderToFileStream=function(e,o,t){Re.render(o,t).pack().pipe(e)}});var Br=A(Uo=>{var ld=Qn(),ud={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},pd={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function dd(n,e,o){return n&&e?o.BB:n&&!e?o.BW:!n&&e?o.WB:o.WW}Uo.render=function(n,e,o){let t=ld.getOptions(e),i=ud;(t.color.dark.hex==="#ffffff"||t.color.light.hex==="#000000")&&(i=pd);let s=n.modules.size,a=n.modules.data,r="",c=Array(s+t.margin*2+1).join(i.WW);c=Array(t.margin/2+1).join(c+`
|
|
8
|
-
`);let u=Array(
|
|
9
|
-
`}return r+=c.slice(0,-1),typeof
|
|
10
|
-
`;for(let p=0;p<
|
|
7
|
+
`);let a=Ap(e,t,i),r=Nt.getSymbolSize(e),c=new gp(r);return kp(c,e),wp(c),Cp(c,e),Vo(c,t,0),e>=7&&_p(c,e),Sp(c,a),isNaN(o)&&(o=Wo.getBestMask(c,Vo.bind(null,c,t))),Wo.applyMask(o,c),Vo(c,t,o),{modules:c,version:e,errorCorrectionLevel:t,maskPattern:o,segments:i}}lr.create=function(e,t){if(typeof e>"u"||e==="")throw new Error("No input text");let o=Ko.M,i,s;return typeof t<"u"&&(o=Ko.from(t.errorCorrectionLevel,Ko.M),i=qt.from(t.version),s=Wo.from(t.maskPattern),t.toSJISFunc&&Nt.setToSJISFunction(t.toSJISFunc)),Lp(e,i,o,s)}});var Qo=A((Ig,pr)=>{"use strict";var Ip=z("util"),ur=z("stream"),Ce=pr.exports=function(){ur.call(this),this._buffers=[],this._buffered=0,this._reads=[],this._paused=!1,this._encoding="utf8",this.writable=!0};Ip.inherits(Ce,ur);Ce.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e}),process.nextTick(function(){this._process(),this._paused&&this._reads&&this._reads.length>0&&(this._paused=!1,this.emit("drain"))}.bind(this))};Ce.prototype.write=function(n,e){if(!this.writable)return this.emit("error",new Error("Stream not writable")),!1;let t;return Buffer.isBuffer(n)?t=n:t=Buffer.from(n,e||this._encoding),this._buffers.push(t),this._buffered+=t.length,this._process(),this._reads&&this._reads.length===0&&(this._paused=!0),this.writable&&!this._paused};Ce.prototype.end=function(n,e){n&&this.write(n,e),this.writable=!1,this._buffers&&(this._buffers.length===0?this._end():(this._buffers.push(null),this._process()))};Ce.prototype.destroySoon=Ce.prototype.end;Ce.prototype._end=function(){this._reads.length>0&&this.emit("error",new Error("Unexpected end of input")),this.destroy()};Ce.prototype.destroy=function(){this._buffers&&(this.writable=!1,this._reads=null,this._buffers=null,this.emit("close"))};Ce.prototype._processReadAllowingLess=function(n){this._reads.shift();let e=this._buffers[0];e.length>n.length?(this._buffered-=n.length,this._buffers[0]=e.slice(n.length),n.func.call(this,e.slice(0,n.length))):(this._buffered-=e.length,this._buffers.shift(),n.func.call(this,e))};Ce.prototype._processRead=function(n){this._reads.shift();let e=0,t=0,o=Buffer.alloc(n.length);for(;e<n.length;){let i=this._buffers[t++],s=Math.min(i.length,n.length-e);i.copy(o,e,0,s),e+=s,s!==i.length&&(this._buffers[--t]=i.slice(s))}t>0&&this._buffers.splice(0,t),this._buffered-=n.length,n.func.call(this,o)};Ce.prototype._process=function(){try{for(;this._buffered>0&&this._reads&&this._reads.length>0;){let n=this._reads[0];if(n.allowLess)this._processReadAllowingLess(n);else if(this._buffered>=n.length)this._processRead(n);else break}this._buffers&&!this.writable&&this._end()}catch(n){this.emit("error",n)}}});var Zo=A(Xo=>{"use strict";var Qe=[{x:[0],y:[0]},{x:[4],y:[0]},{x:[0,4],y:[4]},{x:[2,6],y:[0,4]},{x:[0,2,4,6],y:[2,6]},{x:[1,3,5,7],y:[0,2,4,6]},{x:[0,1,2,3,4,5,6,7],y:[1,3,5,7]}];Xo.getImagePasses=function(n,e){let t=[],o=n%8,i=e%8,s=(n-o)/8,a=(e-i)/8;for(let r=0;r<Qe.length;r++){let c=Qe[r],u=s*c.x.length,p=a*c.y.length;for(let d=0;d<c.x.length&&c.x[d]<o;d++)u++;for(let d=0;d<c.y.length&&c.y[d]<i;d++)p++;u>0&&p>0&&t.push({width:u,height:p,index:r})}return t};Xo.getInterlaceIterator=function(n){return function(e,t,o){let i=e%Qe[o].x.length,s=(e-i)/Qe[o].x.length*8+Qe[o].x[i],a=t%Qe[o].y.length,r=(t-a)/Qe[o].y.length*8+Qe[o].y[a];return s*4+r*n*4}}});var ei=A((Ug,dr)=>{"use strict";dr.exports=function(e,t,o){let i=e+t-o,s=Math.abs(i-e),a=Math.abs(i-t),r=Math.abs(i-o);return s<=a&&s<=r?e:a<=r?t:o}});var ni=A((Tg,fr)=>{"use strict";var Pp=Zo(),Up=ei();function mr(n,e,t){let o=n*e;return t!==8&&(o=Math.ceil(o/(8/t))),o}var En=fr.exports=function(n,e){let t=n.width,o=n.height,i=n.interlace,s=n.bpp,a=n.depth;if(this.read=e.read,this.write=e.write,this.complete=e.complete,this._imageIndex=0,this._images=[],i){let r=Pp.getImagePasses(t,o);for(let c=0;c<r.length;c++)this._images.push({byteWidth:mr(r[c].width,s,a),height:r[c].height,lineIndex:0})}else this._images.push({byteWidth:mr(t,s,a),height:o,lineIndex:0});a===8?this._xComparison=s:a===16?this._xComparison=s*2:this._xComparison=1};En.prototype.start=function(){this.read(this._images[this._imageIndex].byteWidth+1,this._reverseFilterLine.bind(this))};En.prototype._unFilterType1=function(n,e,t){let o=this._xComparison,i=o-1;for(let s=0;s<t;s++){let a=n[1+s],r=s>i?e[s-o]:0;e[s]=a+r}};En.prototype._unFilterType2=function(n,e,t){let o=this._lastLine;for(let i=0;i<t;i++){let s=n[1+i],a=o?o[i]:0;e[i]=s+a}};En.prototype._unFilterType3=function(n,e,t){let o=this._xComparison,i=o-1,s=this._lastLine;for(let a=0;a<t;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-o]:0,p=Math.floor((u+c)/2);e[a]=r+p}};En.prototype._unFilterType4=function(n,e,t){let o=this._xComparison,i=o-1,s=this._lastLine;for(let a=0;a<t;a++){let r=n[1+a],c=s?s[a]:0,u=a>i?e[a-o]:0,p=a>i&&s?s[a-o]:0,d=Up(u,c,p);e[a]=r+d}};En.prototype._reverseFilterLine=function(n){let e=n[0],t,o=this._images[this._imageIndex],i=o.byteWidth;if(e===0)t=n.slice(1,i+1);else switch(t=Buffer.alloc(i),e){case 1:this._unFilterType1(n,t,i);break;case 2:this._unFilterType2(n,t,i);break;case 3:this._unFilterType3(n,t,i);break;case 4:this._unFilterType4(n,t,i);break;default:throw new Error("Unrecognised filter type - "+e)}this.write(t),o.lineIndex++,o.lineIndex>=o.height?(this._lastLine=null,this._imageIndex++,o=this._images[this._imageIndex]):this._lastLine=t,o?this.read(o.byteWidth+1,this._reverseFilterLine.bind(this)):(this._lastLine=null,this.complete())}});var xr=A((Og,hr)=>{"use strict";var Tp=z("util"),gr=Qo(),Op=ni(),Ep=hr.exports=function(n){gr.call(this);let e=[],t=this;this._filter=new Op(n,{read:this.read.bind(this),write:function(o){e.push(o)},complete:function(){t.emit("complete",Buffer.concat(e))}}),this._filter.start()};Tp.inherits(Ep,gr)});var jn=A((Eg,vr)=>{"use strict";vr.exports={PNG_SIGNATURE:[137,80,78,71,13,10,26,10],TYPE_IHDR:1229472850,TYPE_IEND:1229278788,TYPE_IDAT:1229209940,TYPE_PLTE:1347179589,TYPE_tRNS:1951551059,TYPE_gAMA:1732332865,COLORTYPE_GRAYSCALE:0,COLORTYPE_PALETTE:1,COLORTYPE_COLOR:2,COLORTYPE_ALPHA:4,COLORTYPE_PALETTE_COLOR:3,COLORTYPE_COLOR_ALPHA:6,COLORTYPE_TO_BPP_MAP:{0:1,2:3,3:1,4:2,6:4},GAMMA_DIVISION:1e5}});var ii=A((jg,br)=>{"use strict";var ti=[];(function(){for(let n=0;n<256;n++){let e=n;for(let t=0;t<8;t++)e&1?e=3988292384^e>>>1:e=e>>>1;ti[n]=e}})();var oi=br.exports=function(){this._crc=-1};oi.prototype.write=function(n){for(let e=0;e<n.length;e++)this._crc=ti[(this._crc^n[e])&255]^this._crc>>>8;return!0};oi.prototype.crc32=function(){return this._crc^-1};oi.crc32=function(n){let e=-1;for(let t=0;t<n.length;t++)e=ti[(e^n[t])&255]^e>>>8;return e^-1}});var si=A(($g,yr)=>{"use strict";var Y=jn(),jp=ii(),ee=yr.exports=function(n,e){this._options=n,n.checkCRC=n.checkCRC!==!1,this._hasIHDR=!1,this._hasIEND=!1,this._emittedHeadersFinished=!1,this._palette=[],this._colorType=0,this._chunks={},this._chunks[Y.TYPE_IHDR]=this._handleIHDR.bind(this),this._chunks[Y.TYPE_IEND]=this._handleIEND.bind(this),this._chunks[Y.TYPE_IDAT]=this._handleIDAT.bind(this),this._chunks[Y.TYPE_PLTE]=this._handlePLTE.bind(this),this._chunks[Y.TYPE_tRNS]=this._handleTRNS.bind(this),this._chunks[Y.TYPE_gAMA]=this._handleGAMA.bind(this),this.read=e.read,this.error=e.error,this.metadata=e.metadata,this.gamma=e.gamma,this.transColor=e.transColor,this.palette=e.palette,this.parsed=e.parsed,this.inflateData=e.inflateData,this.finished=e.finished,this.simpleTransparency=e.simpleTransparency,this.headersFinished=e.headersFinished||function(){}};ee.prototype.start=function(){this.read(Y.PNG_SIGNATURE.length,this._parseSignature.bind(this))};ee.prototype._parseSignature=function(n){let e=Y.PNG_SIGNATURE;for(let t=0;t<e.length;t++)if(n[t]!==e[t]){this.error(new Error("Invalid file signature"));return}this.read(8,this._parseChunkBegin.bind(this))};ee.prototype._parseChunkBegin=function(n){let e=n.readUInt32BE(0),t=n.readUInt32BE(4),o="";for(let s=4;s<8;s++)o+=String.fromCharCode(n[s]);let i=!!(n[4]&32);if(!this._hasIHDR&&t!==Y.TYPE_IHDR){this.error(new Error("Expected IHDR on beggining"));return}if(this._crc=new jp,this._crc.write(Buffer.from(o)),this._chunks[t])return this._chunks[t](e);if(!i){this.error(new Error("Unsupported critical chunk type "+o));return}this.read(e+4,this._skipChunk.bind(this))};ee.prototype._skipChunk=function(){this.read(8,this._parseChunkBegin.bind(this))};ee.prototype._handleChunkEnd=function(){this.read(4,this._parseChunkEnd.bind(this))};ee.prototype._parseChunkEnd=function(n){let e=n.readInt32BE(0),t=this._crc.crc32();if(this._options.checkCRC&&t!==e){this.error(new Error("Crc error - "+e+" - "+t));return}this._hasIEND||this.read(8,this._parseChunkBegin.bind(this))};ee.prototype._handleIHDR=function(n){this.read(n,this._parseIHDR.bind(this))};ee.prototype._parseIHDR=function(n){this._crc.write(n);let e=n.readUInt32BE(0),t=n.readUInt32BE(4),o=n[8],i=n[9],s=n[10],a=n[11],r=n[12];if(o!==8&&o!==4&&o!==2&&o!==1&&o!==16){this.error(new Error("Unsupported bit depth "+o));return}if(!(i in Y.COLORTYPE_TO_BPP_MAP)){this.error(new Error("Unsupported color type"));return}if(s!==0){this.error(new Error("Unsupported compression method"));return}if(a!==0){this.error(new Error("Unsupported filter method"));return}if(r!==0&&r!==1){this.error(new Error("Unsupported interlace method"));return}this._colorType=i;let c=Y.COLORTYPE_TO_BPP_MAP[this._colorType];this._hasIHDR=!0,this.metadata({width:e,height:t,depth:o,interlace:!!r,palette:!!(i&Y.COLORTYPE_PALETTE),color:!!(i&Y.COLORTYPE_COLOR),alpha:!!(i&Y.COLORTYPE_ALPHA),bpp:c,colorType:i}),this._handleChunkEnd()};ee.prototype._handlePLTE=function(n){this.read(n,this._parsePLTE.bind(this))};ee.prototype._parsePLTE=function(n){this._crc.write(n);let e=Math.floor(n.length/3);for(let t=0;t<e;t++)this._palette.push([n[t*3],n[t*3+1],n[t*3+2],255]);this.palette(this._palette),this._handleChunkEnd()};ee.prototype._handleTRNS=function(n){this.simpleTransparency(),this.read(n,this._parseTRNS.bind(this))};ee.prototype._parseTRNS=function(n){if(this._crc.write(n),this._colorType===Y.COLORTYPE_PALETTE_COLOR){if(this._palette.length===0){this.error(new Error("Transparency chunk must be after palette"));return}if(n.length>this._palette.length){this.error(new Error("More transparent colors than palette size"));return}for(let e=0;e<n.length;e++)this._palette[e][3]=n[e];this.palette(this._palette)}this._colorType===Y.COLORTYPE_GRAYSCALE&&this.transColor([n.readUInt16BE(0)]),this._colorType===Y.COLORTYPE_COLOR&&this.transColor([n.readUInt16BE(0),n.readUInt16BE(2),n.readUInt16BE(4)]),this._handleChunkEnd()};ee.prototype._handleGAMA=function(n){this.read(n,this._parseGAMA.bind(this))};ee.prototype._parseGAMA=function(n){this._crc.write(n),this.gamma(n.readUInt32BE(0)/Y.GAMMA_DIVISION),this._handleChunkEnd()};ee.prototype._handleIDAT=function(n){this._emittedHeadersFinished||(this._emittedHeadersFinished=!0,this.headersFinished()),this.read(-n,this._parseIDAT.bind(this,n))};ee.prototype._parseIDAT=function(n,e){if(this._crc.write(e),this._colorType===Y.COLORTYPE_PALETTE_COLOR&&this._palette.length===0)throw new Error("Expected palette not found");this.inflateData(e);let t=n-e.length;t>0?this._handleIDAT(t):this._handleChunkEnd()};ee.prototype._handleIEND=function(n){this.read(n,this._parseIEND.bind(this))};ee.prototype._parseIEND=function(n){this._crc.write(n),this._hasIEND=!0,this._handleChunkEnd(),this.finished&&this.finished()}});var ai=A(wr=>{"use strict";var kr=Zo(),$p=[function(){},function(n,e,t,o){if(o===e.length)throw new Error("Ran out of data");let i=e[o];n[t]=i,n[t+1]=i,n[t+2]=i,n[t+3]=255},function(n,e,t,o){if(o+1>=e.length)throw new Error("Ran out of data");let i=e[o];n[t]=i,n[t+1]=i,n[t+2]=i,n[t+3]=e[o+1]},function(n,e,t,o){if(o+2>=e.length)throw new Error("Ran out of data");n[t]=e[o],n[t+1]=e[o+1],n[t+2]=e[o+2],n[t+3]=255},function(n,e,t,o){if(o+3>=e.length)throw new Error("Ran out of data");n[t]=e[o],n[t+1]=e[o+1],n[t+2]=e[o+2],n[t+3]=e[o+3]}],Fp=[function(){},function(n,e,t,o){let i=e[0];n[t]=i,n[t+1]=i,n[t+2]=i,n[t+3]=o},function(n,e,t){let o=e[0];n[t]=o,n[t+1]=o,n[t+2]=o,n[t+3]=e[1]},function(n,e,t,o){n[t]=e[0],n[t+1]=e[1],n[t+2]=e[2],n[t+3]=o},function(n,e,t){n[t]=e[0],n[t+1]=e[1],n[t+2]=e[2],n[t+3]=e[3]}];function Dp(n,e){let t=[],o=0;function i(){if(o===n.length)throw new Error("Ran out of data");let s=n[o];o++;let a,r,c,u,p,d,m,f;switch(e){default:throw new Error("unrecognised depth");case 16:m=n[o],o++,t.push((s<<8)+m);break;case 4:m=s&15,f=s>>4,t.push(f,m);break;case 2:p=s&3,d=s>>2&3,m=s>>4&3,f=s>>6&3,t.push(f,m,d,p);break;case 1:a=s&1,r=s>>1&1,c=s>>2&1,u=s>>3&1,p=s>>4&1,d=s>>5&1,m=s>>6&1,f=s>>7&1,t.push(f,m,d,p,u,c,r,a);break}}return{get:function(s){for(;t.length<s;)i();let a=t.slice(0,s);return t=t.slice(s),a},resetAfterLine:function(){t.length=0},end:function(){if(o!==n.length)throw new Error("extra data found")}}}function qp(n,e,t,o,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++)for(let p=0;p<a;p++){let d=t(p,u,c);$p[o](e,i,d,s),s+=o}return s}function Np(n,e,t,o,i,s){let a=n.width,r=n.height,c=n.index;for(let u=0;u<r;u++){for(let p=0;p<a;p++){let d=i.get(o),m=t(p,u,c);Fp[o](e,d,m,s)}i.resetAfterLine()}}wr.dataToBitMap=function(n,e){let t=e.width,o=e.height,i=e.depth,s=e.bpp,a=e.interlace,r;i!==8&&(r=Dp(n,i));let c;i<=8?c=Buffer.alloc(t*o*4):c=new Uint16Array(t*o*4);let u=Math.pow(2,i)-1,p=0,d,m;if(a)d=kr.getImagePasses(t,o),m=kr.getInterlaceIterator(t,o);else{let f=0;m=function(){let h=f;return f+=4,h},d=[{width:t,height:o}]}for(let f=0;f<d.length;f++)i===8?p=qp(d[f],c,m,s,n,p):Np(d[f],c,m,s,r,u);if(i===8){if(p!==n.length)throw new Error("extra data found")}else r.end();return c}});var ri=A((Dg,Cr)=>{"use strict";function Mp(n,e,t,o,i){let s=0;for(let a=0;a<o;a++)for(let r=0;r<t;r++){let c=i[n[s]];if(!c)throw new Error("index "+n[s]+" not in palette");for(let u=0;u<4;u++)e[s+u]=c[u];s+=4}}function Bp(n,e,t,o,i){let s=0;for(let a=0;a<o;a++)for(let r=0;r<t;r++){let c=!1;if(i.length===1?i[0]===n[s]&&(c=!0):i[0]===n[s]&&i[1]===n[s+1]&&i[2]===n[s+2]&&(c=!0),c)for(let u=0;u<4;u++)e[s+u]=0;s+=4}}function Gp(n,e,t,o,i){let s=255,a=Math.pow(2,i)-1,r=0;for(let c=0;c<o;c++)for(let u=0;u<t;u++){for(let p=0;p<4;p++)e[r+p]=Math.floor(n[r+p]*s/a+.5);r+=4}}Cr.exports=function(n,e){let t=e.depth,o=e.width,i=e.height,s=e.colorType,a=e.transColor,r=e.palette,c=n;return s===3?Mp(n,c,o,i,r):(a&&Bp(n,c,o,i,a),t!==8&&(t===16&&(c=Buffer.alloc(o*i*4)),Gp(n,c,o,i,t))),c}});var Ar=A((qg,Sr)=>{"use strict";var zp=z("util"),ci=z("zlib"),_r=Qo(),Kp=xr(),Hp=si(),Vp=ai(),Wp=ri(),Ie=Sr.exports=function(n){_r.call(this),this._parser=new Hp(n,{read:this.read.bind(this),error:this._handleError.bind(this),metadata:this._handleMetaData.bind(this),gamma:this.emit.bind(this,"gamma"),palette:this._handlePalette.bind(this),transColor:this._handleTransColor.bind(this),finished:this._finished.bind(this),inflateData:this._inflateData.bind(this),simpleTransparency:this._simpleTransparency.bind(this),headersFinished:this._headersFinished.bind(this)}),this._options=n,this.writable=!0,this._parser.start()};zp.inherits(Ie,_r);Ie.prototype._handleError=function(n){this.emit("error",n),this.writable=!1,this.destroy(),this._inflate&&this._inflate.destroy&&this._inflate.destroy(),this._filter&&(this._filter.destroy(),this._filter.on("error",function(){})),this.errord=!0};Ie.prototype._inflateData=function(n){if(!this._inflate)if(this._bitmapInfo.interlace)this._inflate=ci.createInflate(),this._inflate.on("error",this.emit.bind(this,"error")),this._filter.on("complete",this._complete.bind(this)),this._inflate.pipe(this._filter);else{let t=((this._bitmapInfo.width*this._bitmapInfo.bpp*this._bitmapInfo.depth+7>>3)+1)*this._bitmapInfo.height,o=Math.max(t,ci.Z_MIN_CHUNK);this._inflate=ci.createInflate({chunkSize:o});let i=t,s=this.emit.bind(this,"error");this._inflate.on("error",function(r){i&&s(r)}),this._filter.on("complete",this._complete.bind(this));let a=this._filter.write.bind(this._filter);this._inflate.on("data",function(r){i&&(r.length>i&&(r=r.slice(0,i)),i-=r.length,a(r))}),this._inflate.on("end",this._filter.end.bind(this._filter))}this._inflate.write(n)};Ie.prototype._handleMetaData=function(n){this._metaData=n,this._bitmapInfo=Object.create(n),this._filter=new Kp(this._bitmapInfo)};Ie.prototype._handleTransColor=function(n){this._bitmapInfo.transColor=n};Ie.prototype._handlePalette=function(n){this._bitmapInfo.palette=n};Ie.prototype._simpleTransparency=function(){this._metaData.alpha=!0};Ie.prototype._headersFinished=function(){this.emit("metadata",this._metaData)};Ie.prototype._finished=function(){this.errord||(this._inflate?this._inflate.end():this.emit("error","No Inflate block"))};Ie.prototype._complete=function(n){if(this.errord)return;let e;try{let t=Vp.dataToBitMap(n,this._bitmapInfo);e=Wp(t,this._bitmapInfo),t=null}catch(t){this._handleError(t);return}this.emit("parsed",e)}});var Lr=A((Ng,Rr)=>{"use strict";var xe=jn();Rr.exports=function(n,e,t,o){let i=[xe.COLORTYPE_COLOR_ALPHA,xe.COLORTYPE_ALPHA].indexOf(o.colorType)!==-1;if(o.colorType===o.inputColorType){let h=(function(){let x=new ArrayBuffer(2);return new DataView(x).setInt16(0,256,!0),new Int16Array(x)[0]!==256})();if(o.bitDepth===8||o.bitDepth===16&&h)return n}let s=o.bitDepth!==16?n:new Uint16Array(n.buffer),a=255,r=xe.COLORTYPE_TO_BPP_MAP[o.inputColorType];r===4&&!o.inputHasAlpha&&(r=3);let c=xe.COLORTYPE_TO_BPP_MAP[o.colorType];o.bitDepth===16&&(a=65535,c*=2);let u=Buffer.alloc(e*t*c),p=0,d=0,m=o.bgColor||{};m.red===void 0&&(m.red=a),m.green===void 0&&(m.green=a),m.blue===void 0&&(m.blue=a);function f(){let h,x,v,g=a;switch(o.inputColorType){case xe.COLORTYPE_COLOR_ALPHA:g=s[p+3],h=s[p],x=s[p+1],v=s[p+2];break;case xe.COLORTYPE_COLOR:h=s[p],x=s[p+1],v=s[p+2];break;case xe.COLORTYPE_ALPHA:g=s[p+1],h=s[p],x=h,v=h;break;case xe.COLORTYPE_GRAYSCALE:h=s[p],x=h,v=h;break;default:throw new Error("input color type:"+o.inputColorType+" is not supported at present")}return o.inputHasAlpha&&(i||(g/=a,h=Math.min(Math.max(Math.round((1-g)*m.red+g*h),0),a),x=Math.min(Math.max(Math.round((1-g)*m.green+g*x),0),a),v=Math.min(Math.max(Math.round((1-g)*m.blue+g*v),0),a))),{red:h,green:x,blue:v,alpha:g}}for(let h=0;h<t;h++)for(let x=0;x<e;x++){let v=f(s,p);switch(o.colorType){case xe.COLORTYPE_COLOR_ALPHA:case xe.COLORTYPE_COLOR:o.bitDepth===8?(u[d]=v.red,u[d+1]=v.green,u[d+2]=v.blue,i&&(u[d+3]=v.alpha)):(u.writeUInt16BE(v.red,d),u.writeUInt16BE(v.green,d+2),u.writeUInt16BE(v.blue,d+4),i&&u.writeUInt16BE(v.alpha,d+6));break;case xe.COLORTYPE_ALPHA:case xe.COLORTYPE_GRAYSCALE:{let g=(v.red+v.green+v.blue)/3;o.bitDepth===8?(u[d]=g,i&&(u[d+1]=v.alpha)):(u.writeUInt16BE(g,d),i&&u.writeUInt16BE(v.alpha,d+2));break}default:throw new Error("unrecognised color Type "+o.colorType)}p+=r,d+=c}return u}});var Ur=A((Mg,Pr)=>{"use strict";var Ir=ei();function Jp(n,e,t,o,i){for(let s=0;s<t;s++)o[i+s]=n[e+s]}function Yp(n,e,t){let o=0,i=e+t;for(let s=e;s<i;s++)o+=Math.abs(n[s]);return o}function Qp(n,e,t,o,i,s){for(let a=0;a<t;a++){let r=a>=s?n[e+a-s]:0,c=n[e+a]-r;o[i+a]=c}}function Xp(n,e,t,o){let i=0;for(let s=0;s<t;s++){let a=s>=o?n[e+s-o]:0,r=n[e+s]-a;i+=Math.abs(r)}return i}function Zp(n,e,t,o,i){for(let s=0;s<t;s++){let a=e>0?n[e+s-t]:0,r=n[e+s]-a;o[i+s]=r}}function ed(n,e,t){let o=0,i=e+t;for(let s=e;s<i;s++){let a=e>0?n[s-t]:0,r=n[s]-a;o+=Math.abs(r)}return o}function nd(n,e,t,o,i,s){for(let a=0;a<t;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-t]:0,u=n[e+a]-(r+c>>1);o[i+a]=u}}function td(n,e,t,o){let i=0;for(let s=0;s<t;s++){let a=s>=o?n[e+s-o]:0,r=e>0?n[e+s-t]:0,c=n[e+s]-(a+r>>1);i+=Math.abs(c)}return i}function od(n,e,t,o,i,s){for(let a=0;a<t;a++){let r=a>=s?n[e+a-s]:0,c=e>0?n[e+a-t]:0,u=e>0&&a>=s?n[e+a-(t+s)]:0,p=n[e+a]-Ir(r,c,u);o[i+a]=p}}function id(n,e,t,o){let i=0;for(let s=0;s<t;s++){let a=s>=o?n[e+s-o]:0,r=e>0?n[e+s-t]:0,c=e>0&&s>=o?n[e+s-(t+o)]:0,u=n[e+s]-Ir(a,r,c);i+=Math.abs(u)}return i}var sd={0:Jp,1:Qp,2:Zp,3:nd,4:od},ad={0:Yp,1:Xp,2:ed,3:td,4:id};Pr.exports=function(n,e,t,o,i){let s;if(!("filterType"in o)||o.filterType===-1)s=[0,1,2,3,4];else if(typeof o.filterType=="number")s=[o.filterType];else throw new Error("unrecognised filter types");o.bitDepth===16&&(i*=2);let a=e*i,r=0,c=0,u=Buffer.alloc((a+1)*t),p=s[0];for(let d=0;d<t;d++){if(s.length>1){let m=1/0;for(let f=0;f<s.length;f++){let h=ad[s[f]](n,c,a,i);h<m&&(p=s[f],m=h)}}u[r]=p,r++,sd[p](n,c,a,u,r,i),r+=a,c+=a}return u}});var li=A((Bg,Tr)=>{"use strict";var oe=jn(),rd=ii(),cd=Lr(),ld=Ur(),ud=z("zlib"),Xe=Tr.exports=function(n){if(this._options=n,n.deflateChunkSize=n.deflateChunkSize||32*1024,n.deflateLevel=n.deflateLevel!=null?n.deflateLevel:9,n.deflateStrategy=n.deflateStrategy!=null?n.deflateStrategy:3,n.inputHasAlpha=n.inputHasAlpha!=null?n.inputHasAlpha:!0,n.deflateFactory=n.deflateFactory||ud.createDeflate,n.bitDepth=n.bitDepth||8,n.colorType=typeof n.colorType=="number"?n.colorType:oe.COLORTYPE_COLOR_ALPHA,n.inputColorType=typeof n.inputColorType=="number"?n.inputColorType:oe.COLORTYPE_COLOR_ALPHA,[oe.COLORTYPE_GRAYSCALE,oe.COLORTYPE_COLOR,oe.COLORTYPE_COLOR_ALPHA,oe.COLORTYPE_ALPHA].indexOf(n.colorType)===-1)throw new Error("option color type:"+n.colorType+" is not supported at present");if([oe.COLORTYPE_GRAYSCALE,oe.COLORTYPE_COLOR,oe.COLORTYPE_COLOR_ALPHA,oe.COLORTYPE_ALPHA].indexOf(n.inputColorType)===-1)throw new Error("option input color type:"+n.inputColorType+" is not supported at present");if(n.bitDepth!==8&&n.bitDepth!==16)throw new Error("option bit depth:"+n.bitDepth+" is not supported at present")};Xe.prototype.getDeflateOptions=function(){return{chunkSize:this._options.deflateChunkSize,level:this._options.deflateLevel,strategy:this._options.deflateStrategy}};Xe.prototype.createDeflate=function(){return this._options.deflateFactory(this.getDeflateOptions())};Xe.prototype.filterData=function(n,e,t){let o=cd(n,e,t,this._options),i=oe.COLORTYPE_TO_BPP_MAP[this._options.colorType];return ld(o,e,t,this._options,i)};Xe.prototype._packChunk=function(n,e){let t=e?e.length:0,o=Buffer.alloc(t+12);return o.writeUInt32BE(t,0),o.writeUInt32BE(n,4),e&&e.copy(o,8),o.writeInt32BE(rd.crc32(o.slice(4,o.length-4)),o.length-4),o};Xe.prototype.packGAMA=function(n){let e=Buffer.alloc(4);return e.writeUInt32BE(Math.floor(n*oe.GAMMA_DIVISION),0),this._packChunk(oe.TYPE_gAMA,e)};Xe.prototype.packIHDR=function(n,e){let t=Buffer.alloc(13);return t.writeUInt32BE(n,0),t.writeUInt32BE(e,4),t[8]=this._options.bitDepth,t[9]=this._options.colorType,t[10]=0,t[11]=0,t[12]=0,this._packChunk(oe.TYPE_IHDR,t)};Xe.prototype.packIDAT=function(n){return this._packChunk(oe.TYPE_IDAT,n)};Xe.prototype.packIEND=function(){return this._packChunk(oe.TYPE_IEND,null)}});var $r=A((Gg,jr)=>{"use strict";var pd=z("util"),Or=z("stream"),dd=jn(),md=li(),Er=jr.exports=function(n){Or.call(this);let e=n||{};this._packer=new md(e),this._deflate=this._packer.createDeflate(),this.readable=!0};pd.inherits(Er,Or);Er.prototype.pack=function(n,e,t,o){this.emit("data",Buffer.from(dd.PNG_SIGNATURE)),this.emit("data",this._packer.packIHDR(e,t)),o&&this.emit("data",this._packer.packGAMA(o));let i=this._packer.filterData(n,e,t);this._deflate.on("error",this.emit.bind(this,"error")),this._deflate.on("data",function(s){this.emit("data",this._packer.packIDAT(s))}.bind(this)),this._deflate.on("end",function(){this.emit("data",this._packer.packIEND()),this.emit("end")}.bind(this)),this._deflate.end(i)}});var Br=A((st,Mr)=>{"use strict";var Fr=z("assert").ok,$n=z("zlib"),fd=z("util"),Dr=z("buffer").kMaxLength;function fn(n){if(!(this instanceof fn))return new fn(n);n&&n.chunkSize<$n.Z_MIN_CHUNK&&(n.chunkSize=$n.Z_MIN_CHUNK),$n.Inflate.call(this,n),this._offset=this._offset===void 0?this._outOffset:this._offset,this._buffer=this._buffer||this._outBuffer,n&&n.maxLength!=null&&(this._maxLength=n.maxLength)}function gd(n){return new fn(n)}function qr(n,e){e&&process.nextTick(e),n._handle&&(n._handle.close(),n._handle=null)}fn.prototype._processChunk=function(n,e,t){if(typeof t=="function")return $n.Inflate._processChunk.call(this,n,e,t);let o=this,i=n&&n.length,s=this._chunkSize-this._offset,a=this._maxLength,r=0,c=[],u=0,p;this.on("error",function(h){p=h});function d(h,x){if(o._hadError)return;let v=s-x;if(Fr(v>=0,"have should not go down"),v>0){let g=o._buffer.slice(o._offset,o._offset+v);if(o._offset+=v,g.length>a&&(g=g.slice(0,a)),c.push(g),u+=g.length,a-=g.length,a===0)return!1}return(x===0||o._offset>=o._chunkSize)&&(s=o._chunkSize,o._offset=0,o._buffer=Buffer.allocUnsafe(o._chunkSize)),x===0?(r+=i-h,i=h,!0):!1}Fr(this._handle,"zlib binding closed");let m;do m=this._handle.writeSync(e,n,r,i,this._buffer,this._offset,s),m=m||this._writeState;while(!this._hadError&&d(m[0],m[1]));if(this._hadError)throw p;if(u>=Dr)throw qr(this),new RangeError("Cannot create final Buffer. It would be larger than 0x"+Dr.toString(16)+" bytes");let f=Buffer.concat(c,u);return qr(this),f};fd.inherits(fn,$n.Inflate);function hd(n,e){if(typeof e=="string"&&(e=Buffer.from(e)),!(e instanceof Buffer))throw new TypeError("Not a string or buffer");let t=n._finishFlushFlag;return t==null&&(t=$n.Z_FINISH),n._processChunk(e,t)}function Nr(n,e){return hd(new fn(e),n)}Mr.exports=st=Nr;st.Inflate=fn;st.createInflate=gd;st.inflateSync=Nr});var ui=A((zg,zr)=>{"use strict";var Gr=zr.exports=function(n){this._buffer=n,this._reads=[]};Gr.prototype.read=function(n,e){this._reads.push({length:Math.abs(n),allowLess:n<0,func:e})};Gr.prototype.process=function(){for(;this._reads.length>0&&this._buffer.length;){let n=this._reads[0];if(this._buffer.length&&(this._buffer.length>=n.length||n.allowLess)){this._reads.shift();let e=this._buffer;this._buffer=e.slice(n.length),n.func.call(this,e.slice(0,n.length))}else break}if(this._reads.length>0)return new Error("There are some read requests waitng on finished stream");if(this._buffer.length>0)return new Error("unrecognised content at end of stream")}});var Hr=A(Kr=>{"use strict";var xd=ui(),vd=ni();Kr.process=function(n,e){let t=[],o=new xd(n);return new vd(e,{read:o.read.bind(o),write:function(s){t.push(s)},complete:function(){}}).start(),o.process(),Buffer.concat(t)}});var Yr=A((Hg,Jr)=>{"use strict";var Vr=!0,Wr=z("zlib"),bd=Br();Wr.deflateSync||(Vr=!1);var yd=ui(),kd=Hr(),wd=si(),Cd=ai(),_d=ri();Jr.exports=function(n,e){if(!Vr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t;function o(b){t=b}let i;function s(b){i=b}function a(b){i.transColor=b}function r(b){i.palette=b}function c(){i.alpha=!0}let u;function p(b){u=b}let d=[];function m(b){d.push(b)}let f=new yd(n);if(new wd(e,{read:f.read.bind(f),error:o,metadata:s,gamma:p,palette:r,transColor:a,inflateData:m,simpleTransparency:c}).start(),f.process(),t)throw t;let x=Buffer.concat(d);d.length=0;let v;if(i.interlace)v=Wr.inflateSync(x);else{let S=((i.width*i.bpp*i.depth+7>>3)+1)*i.height;v=bd(x,{chunkSize:S,maxLength:S})}if(x=null,!v||!v.length)throw new Error("bad png - invalid inflate data response");let g=kd.process(v,i);x=null;let k=Cd.dataToBitMap(g,i);g=null;let w=_d(k,i);return i.data=w,i.gamma=u||0,i}});var ec=A((Vg,Zr)=>{"use strict";var Qr=!0,Xr=z("zlib");Xr.deflateSync||(Qr=!1);var Sd=jn(),Ad=li();Zr.exports=function(n,e){if(!Qr)throw new Error("To use the sync capability of this library in old node versions, please pin pngjs to v2.3.0");let t=e||{},o=new Ad(t),i=[];i.push(Buffer.from(Sd.PNG_SIGNATURE)),i.push(o.packIHDR(n.width,n.height)),n.gamma&&i.push(o.packGAMA(n.gamma));let s=o.filterData(n.data,n.width,n.height),a=Xr.deflateSync(s,o.getDeflateOptions());if(s=null,!a||!a.length)throw new Error("bad png - invalid compressed data response");return i.push(o.packIDAT(a)),i.push(o.packIEND()),Buffer.concat(i)}});var nc=A(pi=>{"use strict";var Rd=Yr(),Ld=ec();pi.read=function(n,e){return Rd(n,e||{})};pi.write=function(n,e){return Ld(n,e)}});var ic=A(oc=>{"use strict";var Id=z("util"),tc=z("stream"),Pd=Ar(),Ud=$r(),Td=nc(),ae=oc.PNG=function(n){tc.call(this),n=n||{},this.width=n.width|0,this.height=n.height|0,this.data=this.width>0&&this.height>0?Buffer.alloc(4*this.width*this.height):null,n.fill&&this.data&&this.data.fill(0),this.gamma=0,this.readable=this.writable=!0,this._parser=new Pd(n),this._parser.on("error",this.emit.bind(this,"error")),this._parser.on("close",this._handleClose.bind(this)),this._parser.on("metadata",this._metadata.bind(this)),this._parser.on("gamma",this._gamma.bind(this)),this._parser.on("parsed",function(e){this.data=e,this.emit("parsed",e)}.bind(this)),this._packer=new Ud(n),this._packer.on("data",this.emit.bind(this,"data")),this._packer.on("end",this.emit.bind(this,"end")),this._parser.on("close",this._handleClose.bind(this)),this._packer.on("error",this.emit.bind(this,"error"))};Id.inherits(ae,tc);ae.sync=Td;ae.prototype.pack=function(){return!this.data||!this.data.length?(this.emit("error","No data provided"),this):(process.nextTick(function(){this._packer.pack(this.data,this.width,this.height,this.gamma)}.bind(this)),this)};ae.prototype.parse=function(n,e){if(e){let t,o;t=function(i){this.removeListener("error",o),this.data=i,e(null,this)}.bind(this),o=function(i){this.removeListener("parsed",t),e(i,null)}.bind(this),this.once("parsed",t),this.once("error",o)}return this.end(n),this};ae.prototype.write=function(n){return this._parser.write(n),!0};ae.prototype.end=function(n){this._parser.end(n)};ae.prototype._metadata=function(n){this.width=n.width,this.height=n.height,this.emit("metadata",n)};ae.prototype._gamma=function(n){this.gamma=n};ae.prototype._handleClose=function(){!this._parser.writable&&!this._packer.readable&&this.emit("close")};ae.bitblt=function(n,e,t,o,i,s,a,r){if(t|=0,o|=0,i|=0,s|=0,a|=0,r|=0,t>n.width||o>n.height||t+i>n.width||o+s>n.height)throw new Error("bitblt reading outside image");if(a>e.width||r>e.height||a+i>e.width||r+s>e.height)throw new Error("bitblt writing outside image");for(let c=0;c<s;c++)n.data.copy(e.data,(r+c)*e.width+a<<2,(o+c)*n.width+t<<2,(o+c)*n.width+t+i<<2)};ae.prototype.bitblt=function(n,e,t,o,i,s,a){return ae.bitblt(this,n,e,t,o,i,s,a),this};ae.adjustGamma=function(n){if(n.gamma){for(let e=0;e<n.height;e++)for(let t=0;t<n.width;t++){let o=n.width*e+t<<2;for(let i=0;i<3;i++){let s=n.data[o+i]/255;s=Math.pow(s,1/2.2/n.gamma),n.data[o+i]=Math.round(s*255)}}n.gamma=0}};ae.prototype.adjustGamma=function(){ae.adjustGamma(this)}});var at=A(gn=>{function sc(n){if(typeof n=="number"&&(n=n.toString()),typeof n!="string")throw new Error("Color should be defined as hex string");let e=n.slice().replace("#","").split("");if(e.length<3||e.length===5||e.length>8)throw new Error("Invalid hex color: "+n);(e.length===3||e.length===4)&&(e=Array.prototype.concat.apply([],e.map(function(o){return[o,o]}))),e.length===6&&e.push("F","F");let t=parseInt(e.join(""),16);return{r:t>>24&255,g:t>>16&255,b:t>>8&255,a:t&255,hex:"#"+e.slice(0,6).join("")}}gn.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=typeof e.margin>"u"||e.margin===null||e.margin<0?4:e.margin,o=e.width&&e.width>=21?e.width:void 0,i=e.scale||4;return{width:o,scale:o?4:i,margin:t,color:{dark:sc(e.color.dark||"#000000ff"),light:sc(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}};gn.getScale=function(e,t){return t.width&&t.width>=e+t.margin*2?t.width/(e+t.margin*2):t.scale};gn.getImageWidth=function(e,t){let o=gn.getScale(e,t);return Math.floor((e+t.margin*2)*o)};gn.qrToImageData=function(e,t,o){let i=t.modules.size,s=t.modules.data,a=gn.getScale(i,o),r=Math.floor((i+o.margin*2)*a),c=o.margin*a,u=[o.color.light,o.color.dark];for(let p=0;p<r;p++)for(let d=0;d<r;d++){let m=(p*r+d)*4,f=o.color.light;if(p>=c&&d>=c&&p<r-c&&d<r-c){let h=Math.floor((p-c)/a),x=Math.floor((d-c)/a);f=u[s[h*i+x]?1:0]}e[m++]=f.r,e[m++]=f.g,e[m++]=f.b,e[m]=f.a}}});var ac=A(Pe=>{var Od=z("fs"),Ed=ic().PNG,di=at();Pe.render=function(e,t){let o=di.getOptions(t),i=o.rendererOpts,s=di.getImageWidth(e.modules.size,o);i.width=s,i.height=s;let a=new Ed(i);return di.qrToImageData(a.data,e,o),a};Pe.renderToDataURL=function(e,t,o){typeof o>"u"&&(o=t,t=void 0),Pe.renderToBuffer(e,t,function(i,s){i&&o(i);let a="data:image/png;base64,";a+=s.toString("base64"),o(null,a)})};Pe.renderToBuffer=function(e,t,o){typeof o>"u"&&(o=t,t=void 0);let i=Pe.render(e,t),s=[];i.on("error",o),i.on("data",function(a){s.push(a)}),i.on("end",function(){o(null,Buffer.concat(s))}),i.pack()};Pe.renderToFile=function(e,t,o,i){typeof i>"u"&&(i=o,o=void 0);let s=!1,a=(...c)=>{s||(s=!0,i.apply(null,c))},r=Od.createWriteStream(e);r.on("error",a),r.on("close",a),Pe.renderToFileStream(r,t,o)};Pe.renderToFileStream=function(e,t,o){Pe.render(t,o).pack().pipe(e)}});var rc=A(Mt=>{var jd=at(),$d={WW:" ",WB:"\u2584",BB:"\u2588",BW:"\u2580"},Fd={BB:" ",BW:"\u2584",WW:"\u2588",WB:"\u2580"};function Dd(n,e,t){return n&&e?t.BB:n&&!e?t.BW:!n&&e?t.WB:t.WW}Mt.render=function(n,e,t){let o=jd.getOptions(e),i=$d;(o.color.dark.hex==="#ffffff"||o.color.light.hex==="#000000")&&(i=Fd);let s=n.modules.size,a=n.modules.data,r="",c=Array(s+o.margin*2+1).join(i.WW);c=Array(o.margin/2+1).join(c+`
|
|
8
|
+
`);let u=Array(o.margin+1).join(i.WW);r+=c;for(let p=0;p<s;p+=2){r+=u;for(let d=0;d<s;d++){let m=a[p*s+d],f=a[(p+1)*s+d];r+=Dd(m,f,i)}r+=u+`
|
|
9
|
+
`}return r+=c.slice(0,-1),typeof t=="function"&&t(null,r),r};Mt.renderToFile=function(e,t,o,i){typeof i>"u"&&(i=o,o=void 0);let s=z("fs"),a=Mt.render(t,o);s.writeFile(e,a,i)}});var lc=A(cc=>{cc.render=function(n,e,t){let o=n.modules.size,i=n.modules.data,s="\x1B[40m \x1B[0m",a="\x1B[47m \x1B[0m",r="",c=Array(o+3).join(a),u=Array(2).join(a);r+=c+`
|
|
10
|
+
`;for(let p=0;p<o;++p){r+=a;for(let d=0;d<o;d++)r+=i[p*o+d]?s:a;r+=u+`
|
|
11
11
|
`}return r+=c+`
|
|
12
|
-
`,typeof
|
|
13
|
-
`+a,d=a;for(let m=-1;m<
|
|
14
|
-
`;return typeof
|
|
15
|
-
`),y=setInterval(()=>{v.readyState===lc.OPEN&&v.send("2")},f)}if(C.startsWith("42"))try{let b=JSON.parse(C.substring(2)),S=b[0],T=b[1];if(S==="ready"&&!w){w=!0,i("Auth ready, subscribing to scan events...");let R=`/onstat/mail/${a}/op_app_scanqrcode`;v.send(`42["subscribe",{"topic":"${R}"}]`)}if(S==="message"&&T?.payload){let R=typeof T.payload=="string"?JSON.parse(T.payload):T.payload;if(i(`Scan status: ${R.status}`),R.status==="verify"&&console.log(l("login.qrcode_scanned")),R.status==="auth"){i(`Confirmed: ${R.user?.email}`);let q=R.user?.email,B={uid:q,authSid:a,authToken:R.token};i("Calling checkVersionAndLogin..."),jo("/lunkr/s/json","cim.user:checkVersionAndLogin",B).then(N=>{let O=N.data,V=N.cookies;if(i(`Login result: ${JSON.stringify(O)}`),O.code==="S_OK"&&O.var?.sid){let oe=O.var.sid,pe=q,Oe=O.var.self_uid;i(`Login successful, sid: ${oe}, email: ${pe}, selfUid: ${Oe}`),i("Calling getApiToken...");let Ee=t||{device_uuid:uc(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};jo("/lunkr/s/json","cim.user:getApiToken",Ee,{sid:oe,baseUrl:"betaweb.lunkr.cn",cookies:V}).then(ao=>{let ls=ao.data;i(`Token result: ${JSON.stringify(ls)}`),clearTimeout(g),clearInterval(y),v.close(),x({success:!0,apiToken:ls.var?.api_token,email:pe,selfUid:Oe,deviceUuid:Ee.device_uuid})}).catch(ao=>{console.error(`getApiToken failed: ${ao.message}`),clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:`getApiToken failed: ${ao.message}`})})}else clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:`Login failed: ${JSON.stringify(O)}`})}).catch(N=>{clearTimeout(g),clearInterval(y),v.close(),x({success:!1,error:N.message})})}}}catch(b){i(`Event parse failed: ${b.message}`)}C==="2"&&v.send("3")}),v.on("error",k=>{i(`WebSocket error: ${k.message}`),clearTimeout(g),clearInterval(y),x({success:!1,error:k.message})}),v.on("close",()=>{i("WebSocket closed"),clearTimeout(g),clearInterval(y)})})}catch(s){return{success:!1,error:s.message}}}async function Le(n,e,o,t={}){let{debug:i=!1}=t,s=a=>{i&&console.log(`[API Token Login] ${a}`)};try{s("Calling getLunkrSid..."),s(`email: ${n}`),s(`deviceUuid: ${o}`);let a=Date.now().toString(),r=pc.createHash("sha256").update(`${a}:${o}:${e}`).digest("base64");s(`timestamp: ${a}`),s(`token_hash: ${r}`);let c=await jo("/lunkr/s/json","cim.user:getLunkrSid",{email:n,timestamp:a,device_uuid:o,token_hash:r},{baseUrl:"betaweb.lunkr.cn"});if(s(`Result: ${JSON.stringify(c.data)}`),c.data.code==="S_OK"&&c.data.var?.sid){let u=c.data.var.cookie?`Cim=${c.data.var.cookie}`:c.cookies?.Cim?`Cim=${c.cookies.Cim}`:void 0;return{success:!0,sid:c.data.var.sid,email:n,selfUid:c.data.var.uid,cookie:u}}else return c.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:l("login.clock_error")}:{success:!1,error:`getLunkrSid failed: ${c.data.code} - ${c.data.msg||"Unknown error"}`}}catch(a){return{success:!1,error:a.message}}}var dc,no,Ud,Rn=se(()=>{dc=Jo(cc(),1);U();no="lunkr.coremail.cn",Ud={Accept:"text/x-json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/x-json; charset=UTF-8"}});import*as qo from"path";function mc(n,e){return l("message.prefix",{sender:n||"Unknown",bot:e||"Bot"})}function qe(n,e,o,t=!1){return t?n:mc(e,o)+n}function ai(n){return Od.test(n.trim())}function ri(n){return Ed.test(n.trim())}function $o(n){return jd.test(n.trim())}function ci(n){return Fd.test(n.trim())}function Ie(n){let e=n.trim();return ai(e)||ri(e)||$o(e)||ci(e)}function Do(n){let e=n.trim();return ai(e)||ci(e)&&!$o(e)?"user":ri(e)||$o(e)?"group":"unknown"}function li(n){let e=n.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let o=qo.extname(e);e=qo.basename(e,o).substring(0,200-o.length)+o}return e||"download"}function ue(n){if(!n)return"";let e;if(typeof n=="string"?e=new Date(n):e=new Date(n<=1e10?n*1e3:n),isNaN(e.getTime()))return"";try{return e.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return""}}function dn(n){if(n==null)return"";let e=["B","KB","MB","GB"],o=n,t=0;for(;o>=1024&&t<e.length-1;)o/=1024,t++;return`${o.toFixed(1)} ${e[t]}`}function $d(n){let e=0;for(let o of n){let t=o.codePointAt(0);e+=t>=11904&&t<=40959||t>=63744&&t<=64255||t>=65072&&t<=65103||t>=65280&&t<=65376||t>=131072&&t<=195103?2:1}return e}function I(n,e){let o=Math.max(0,e-$d(n));return n+" ".repeat(o)}var Od,Ed,jd,Fd,De=se(()=>{U();Od=/^#\d+#U$/,Ed=/^#\d+#T$/,jd=/^t\.\./i,Fd=/^[^\s@]+@[^\s@]+\.[^\s@]+$/});function Ln(n){return qd.includes(n)}function fc(n){let e=["ETIMEDOUT","ECONNREFUSED","ECONNRESET","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE","socket hang up","network","timeout","fetch failed"],o=n.toLowerCase();return e.some(t=>o.includes(t.toLowerCase()))?"network":"rejected"}async function he(n,e){let o=L(),t=o.accounts?.find(c=>c.accountId===n);if(!t)return{success:!1,error:`Account not found: ${n}`,reason:"no_credentials"};if(!t.apiToken)return{success:!1,error:"No apiToken available for refresh",reason:"no_credentials"};let i=e||o.device_uuid;if(!i)return{success:!1,error:"No device UUID available",reason:"no_credentials"};let s=t.email||n,a;try{a=await Le(s,t.apiToken,i)}catch(c){let u=c instanceof Error?c.message:String(c);return{success:!1,error:u,reason:fc(u)}}if(a.success&&a.sid&&a.cookie){let c={sid:a.sid,cookie:a.cookie,baseUrl:t.session?.baseUrl||"https://lunkr.coremail.cn",apiPath:t.session?.apiPath||"/lunkr/s/json",selfUid:a.selfUid||t.session?.selfUid||"",senderName:t.session?.senderName},u=o.accounts?.findIndex(p=>p.accountId===n)??-1;return u>=0&&o.accounts&&(o.accounts[u].session=c,E(o)),{success:!0,session:c}}let r=a.error||"Unknown error during token login";return{success:!1,error:r,reason:fc(r)}}var qd,oo=se(()=>{re();Rn();qd=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID","FA_INVALID_SESSION"]});import*as we from"fs";import*as In from"path";import*as Rc from"os";function Wd(n){let e={...n,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return Vd=e,e}function Lc(n){Wd(n)}function Pc(n,e){Ic.set(n,{...e,lastAccess:Date.now()})}function Mo(){let n;for(let[e,o]of Ic)(!n||o.lastAccess>n.context.lastAccess)&&(n={key:e,context:o});if(n)return{workspaceKey:n.key,workspaceDir:n.context.workspaceDir,filesDir:n.context.filesDir,accountId:n.context.accountId}}function Tc(n,e,o){if(!(!n||o.length===0)&&(Ne.set(n,{mid:n,time:e,attachments:o.map(t=>({fileId:t.fileId,uid:t.uid,title:t.title,contentType:t.contentType||null,fileSize:t.fileSize||null,type:t.type||null,inline:t.inline||!1})),cachedAt:Date.now()}),Ne.size>pi)){let t=Date.now();for(let[i,s]of Ne)t-s.cachedAt>Uc&&Ne.delete(i);if(Ne.size>pi){let i=[...Ne.entries()].sort((s,a)=>s[1].cachedAt-a[1].cachedAt);for(let s=0;s<i.length-pi/2;s++)Ne.delete(i[s][0])}}}function Oc(n){let e=Ne.get(n);return e?Date.now()-e.cachedAt>Uc?(Ne.delete(n),null):e.attachments:null}function di(){return In.join(Rc.homedir(),".lunkr")}function mi(n){return n.replace(/#/g,"").replace(/:/g,"_")}function Ec(n){let e=mi(n),o=In.join(di(),"session-workspaces",e);return we.existsSync(o)||we.mkdirSync(o,{recursive:!0}),o}function jc(n){let e=mi(n),o=In.join(di(),"session-workspaces",e);if(we.existsSync(o))for(let t of we.readdirSync(o))we.rmSync(In.join(o,t),{recursive:!0,force:!0})}function Fc(n){let e=mi(n),o=In.join(di(),"session-files",e);return we.existsSync(o)||we.mkdirSync(o,{recursive:!0}),o}var Vd,Ic,Ne,Uc,pi,mn=se(()=>{re();Vd=null;Ic=new Map;Ne=new Map,Uc=1440*60*1e3,pi=1e3});import*as ce from"fs";import*as Ce from"path";import*as Wc from"os";import*as Jc from"crypto";function M(n){let e=ie.fromConfig(n);if(!e)throw new Error(l("api.no_account"));return e}var hi,ie,en=se(()=>{hi=Jo(lt(),1);U();vn();tn();yo();Rn();De();re();mn();ie=class n{client;sid;session;botName;senderName;role;cookies;constructor(e){this.session=e.session,this.sid=e.session.sid,this.botName=e.botName||"Bot",this.senderName=e.senderName||"",this.role=e.role||"standard",this.client=new F(e.session.baseUrl,{apiPath:e.session.apiPath}),this.cookies={};for(let o of e.session.cookie.split(";")){let t=o.trim();if(t.includes("=")){let i=t.indexOf("="),s=t.substring(0,i).trim(),a=t.substring(i+1).trim();this.cookies[s]=a}}this.client.setCookies(this.cookies)}static fromConfig(e){let o=L(),t=e?o.accounts?.find(i=>i.accountId===e&&i.session):mo(o);return t?.session?new n({session:t.session,botName:o.bot_name,senderName:t.session.senderName||"",role:t.role}):null}static fromAccount(e,o){if(!e.session)return null;let t=o||L();return new n({session:e.session,botName:t.bot_name,senderName:e.session.senderName||"",role:e.role})}async checkSession(){try{if((await this.client.postJson({func:"cim.common:getOrgInfo",sid:this.sid})).code==="S_OK")return!0}catch{}let e=await this.tryApiTokenRelogin();return e||(console.error(""),console.error(l("api.session_expired_relogin")),console.error(l("api.session_expired_qrcode")),console.error(l("api.session_expired_password"))),e}async tryApiTokenRelogin(){let e=L(),o=e.accounts.find(a=>a.session?.selfUid===this.session.selfUid);if(!o?.apiToken)return!1;let t=o.email||o.accountId,i=await Le(t,o.apiToken,e.device_uuid);if(!i.success||!i.sid||!i.cookie)return!1;o.session={...o.session,sid:i.sid,cookie:i.cookie,selfUid:i.selfUid||o.session.selfUid},E(e),this.sid=i.sid,this.session=o.session;let s={};for(let a of i.cookie.split(";")){let r=a.trim();if(r.includes("=")){let c=r.indexOf("="),u=r.substring(0,c).trim(),p=r.substring(c+1).trim();s[u]=p}}return this.cookies=s,this.client.setCookies(this.cookies),!0}getSelfUid(){return this.session.selfUid}async callApi(e){return this.client.postJson({func:e.func,sid:this.sid,query:e.query,payload:e.payload})}async fetchSenderName(){try{let e=await this.client.postJson({func:"cim.common:getCimPrefAttr",sid:this.sid,payload:{return_field:"nickname,true_name,name"}});if(e.code==="S_OK"&&e.var){let o=e.var,t=o.nickname||o.true_name||o.name;return t?String(t).trim():null}}catch{}return null}async ensureSenderName(){if(this.senderName)return this.senderName;let e=await this.fetchSenderName();if(e)return this.senderName=e,e;let o=this.session.selfUid;return o&&o.includes("@")?o.split("@")[0]:o||"Unknown"}async searchContacts(e,o=20){let t=[],i=new Set;try{let s=await this.client.postJson({func:"cim.pab:getRecentContacts",sid:this.sid});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||""),u=String(r.email||"").toLowerCase(),p=String(r.true_name||"").toLowerCase();if(u.includes(e.toLowerCase())||p.includes(e.toLowerCase())){if(i.has(c))continue;i.add(c),r.email&&i.add(String(r.email)),t.push({uid:c,email:r.email,trueName:r.true_name,name:r.name})}}}catch{}try{let s=await this.client.postJson({func:"cim.container:searchContacts",sid:this.sid,payload:{keyword:e,windowSize:o}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||"");i.has(c)||(i.add(c),r.email&&i.add(String(r.email)),t.push({uid:c,email:r.email,trueName:r.true_name,name:r.name}))}}catch{}try{let s=await this.client.postJson({func:"oab:autoMatch",sid:this.sid,payload:{keyword:e,limit:o}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.email||"");!c||i.has(c)||(i.add(c),t.push({uid:c,email:c,trueName:r.true_name,name:r.true_name}))}}catch{}return t.slice(0,o)}async searchGroups(e,o=20){try{let t=await this.client.postJson({func:"cim.group:search",sid:this.sid,payload:{keyword:e,limit:o,return_field:"uid,email,true_name,name,description"}});if(t.code==="S_OK"&&Array.isArray(t.var))return t.var.map(i=>({uid:String(i.uid||""),name:i.name,trueName:i.true_name,email:i.email,description:i.description}))}catch{}return[]}async resolveRecipient(e){let o=e.trim();if(Ie(o)){let s=Do(o);return{uid:o,type:s==="group"?"group":"user",name:o}}let t=await this.searchContacts(o,5);if(t.length>0){let s=t[0];return{uid:s.uid,type:"user",name:s.trueName||s.name||o,email:s.email||void 0}}let i=await this.searchGroups(o,5);if(i.length>0){let s=i[0];return{uid:s.uid,type:"group",name:s.name||s.trueName||o,email:s.email||void 0}}throw new Error(l("api.recipient_not_found",{name:o}))}async resolveRecipientInteractive(e,o){let t=e.trim();if(Ie(t)){let a=Do(t);return{uid:t,type:a==="group"?"group":"user",name:t}}let i=await this.searchContacts(t,10);if(i.length>0){let a=i.filter(u=>u.name===t||u.trueName===t);if(a.length===1){let u=a[0];return{uid:u.uid,type:"user",name:u.trueName||u.name||t,email:u.email||void 0}}let r=0;if(i.length>1&&o){let u=i.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"}));r=o(u)}r<0&&(r=0);let c=i[r];return{uid:c.uid,type:"user",name:c.trueName||c.name||t,email:c.email||void 0}}let s=await this.searchGroups(t,10);if(s.length>0){let a=s.filter(u=>u.name===t||u.trueName===t);if(a.length===1){let u=a[0];return{uid:u.uid,type:"group",name:u.name||u.trueName||t,email:u.email||void 0}}let r=0;if(s.length>1&&o){let u=s.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}));r=o(u)}r<0&&(r=0);let c=s[r];return{uid:c.uid,type:"group",name:c.name||c.trueName||t,email:c.email||void 0}}throw new Error(l("api.recipient_not_found",{name:t}))}async listMessages(e,o={}){let{limit:t=20,latestFirst:i=!0}=o,s={limit:t,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"};e.type==="user"?(s.uid=this.session.selfUid,s.filter={chatWithAddress:e.uid}):s.uid=e.uid,i&&(s.order="date",s.desc=!0,s.listOrder="desc");let r=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:s});if(r.code!=="S_OK"||!Array.isArray(r.var))return[];let c=[];for(let d of r.var){if(typeof d!="object"||!d)continue;let m=d,f=m.data,h=f&&typeof f=="object"&&!Array.isArray(f)&&Object.keys(f).length>0?f:m,x=h.from||{},g=[],v=m.attachments||h.attachments;if(Array.isArray(v))for(let k of v){let C=String(k.uid||"");g.push({file_id:String(k.fileId||k.file_id||""),uid:C||null,title:String(k.title||k.filename||"")||null,content_type:k.content_type||k.ctype,file_size:Number(k.file_size||k.size||0)||null,type:Number(k.t||k.type||0)||null,inline:k.inline===!0})}let w=String(h.mid||h.uid||""),y=g;if(g.length===0){let k=Oc(w);k&&(y=k.map(C=>({file_id:C.fileId,uid:C.uid,title:C.title,content_type:C.contentType,file_size:C.fileSize,type:C.type,inline:C.inline})))}c.push({mid:w,time:ue(h.time),subject:h.subject||h.content||"",content:h.content,senderUid:x.uid||h.sender_uid||h.fromUid,senderName:x.true_name||x.email||h.sender_name||h.fromName,senderEmail:x.email||h.sender_email||h.fromEmail,attachments:y})}let u=5,p=c.filter(d=>d.attachments.length===0&&d.mid);for(let d=0;d<p.length;d+=u)await Promise.all(p.slice(d,d+u).map(async m=>{let f=await this.getMessage(m.mid);f&&f.attachments.length>0&&(m.attachments=f.attachments)}));return c}async getMessage(e){let o=await this.client.postJson({func:"cim.msg:getInfo",sid:this.sid,payload:{mid:e,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"}});if(o.code!=="S_OK"||!o.var)return null;let t=o.var,i=t.data||t,s=i.from||{},a=[],r=i.attachments;if(Array.isArray(r))for(let c of r){let u=String(c.uid||"");a.push({file_id:String(c.fileId||c.file_id||""),uid:u||null,title:String(c.title||c.filename||"")||null,content_type:c.content_type||c.ctype,file_size:Number(c.file_size||c.size||0)||null,type:Number(c.t||c.type||0)||null,inline:c.inline===!0})}return{mid:String(i.mid||i.uid||e),time:ue(i.time),subject:i.subject||i.content||"",content:i.content,sender_uid:s.uid||i.sender_uid||i.fromUid,sender_name:s.true_name||s.email||i.sender_name||i.fromName,sender_email:s.email||i.sender_email||i.fromEmail,source_id:i.gid,source_name:null,attachments:a,raw:t}}async sendMessage(e,o,t={}){let i=t.botName||this.botName,s=t.senderName||await this.ensureSenderName(),a=t.skipPrefix??(this.role==="agent"||this.role==="standard+agent"),r=qe(o,s,i,a),c=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:r,type:"text"}});if(c.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:c.code,msg:c.msg||"Unknown error"}));let u=c.var?.[0];return{mid:String(u?.mid||""),to:e.uid,type:e.type}}async sendFile(e,o,t={}){let i=t.botName||this.botName,s=t.senderName||await this.ensureSenderName(),a=t.skipPrefix??(this.role==="agent"||this.role==="standard+agent"),r=qe(t.content||"",s,i,a),c=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,u=Jc.randomUUID(),d=e.type==="user"?this.session.selfUid:e.uid,m=[];for(let x of o){let g=await this.uploadFileWithFlow(x,d,c);m.push({fileId:g.fileId,uid:g.fileUid})}let f=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:r,type:"text",clientMid:u,attachments:m}});if(f.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:f.code,msg:f.msg||"Unknown error"}));let h=f.var?.[0];return{mid:String(h?.mid||""),to:e.uid,files:o}}async uploadFile(e,o,t){let i=Ce.resolve(e),s=Ce.basename(i);if(!ce.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=ce.statSync(i),r=hi.lookup(i)||"application/octet-stream",c=ce.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:t,fileName:s,uid:o,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(t)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(o)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([b,S])=>`${b}=${S}`).join("; ")},x=await on(m,c,h,6e4),g=x.headers["set-cookie"];if(g)for(let b of g.split(",")){let S=b.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:v.code}));let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:t,fileName:s,item:"fileName",attachmentId:d,uid:o}});if(w.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:w.code}));let y=w.var,k=y?.fileId,C=y?.uid;if(!k)throw new Error(l("api.upload_no_file_id"));return{fileId:k,fileUid:C||"",fileName:s}}async uploadFileWithFlow(e,o,t){let i=Ce.resolve(e),s=Ce.basename(i);if(!ce.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=ce.statSync(i),r=hi.lookup(i)||"application/octet-stream",c=ce.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:t,fileName:s,uid:o,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(t)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(o)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([b,S])=>`${b}=${S}`).join("; ")},x=await on(m,c,h,6e4),g=x.headers["set-cookie"];if(g)for(let b of g.split(",")){let S=b.match(/^([^=]+)=([^;]+)/);S&&(this.cookies[S[1].trim()]=S[2].trim())}let v;try{v=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(v.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:v.code}));let w=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:t,fileName:s,item:"fileName",attachmentId:d,uid:o}});if(w.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:w.code}));let y=w.var,k=y?.fileId,C=y?.uid;if(!k)throw new Error(l("api.upload_no_file_id"));return{fileId:k,fileUid:C||"",fileName:s}}async downloadFile(e,o,t,i){let s=`${this.session.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(o)}&mid=${encodeURIComponent(e)}&sid=${encodeURIComponent(this.sid)}&fallback=false`,a={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},r=await hn(s,a);if(r.status!==200){let m=r.data.toString("utf-8").substring(0,500);throw new Error(l("api.download_http_failed",{status:r.status,body:m}))}if(r.data.length<1e3)try{let m=JSON.parse(r.data.toString("utf-8"));if(m.code&&m.code!=="S_OK")throw new Error(l("api.download_failed",{error:`${m.code} - ${m.msg||""}`}))}catch(m){if(!(m instanceof SyntaxError))throw m}if(!i)throw new Error(l("api.filename_required"));let c=li(i),u=t?Ce.resolve(t):Ce.join(Wc.tmpdir(),c),p=Ce.dirname(u);ce.existsSync(p)||ce.mkdirSync(p,{recursive:!0});let d=r.data;if(c.endsWith(".ilbc")&&!r.data.subarray(0,6).equals(Buffer.from("#!iLBC"))){let m=r.data.length%38===0?"20":"30",f=Buffer.from(`#!iLBC${m}
|
|
16
|
-
`);d=Buffer.concat([f,r.data])}return ce.writeFileSync(u,d),{filePath:u,fileName:c,fileSize:d.length}}async convertAudio(e,o="wav"){let t=o.startsWith(".")?o:`.${o}`,i=e.replace(/\.[^.]+$/,t),a=await import(["child","process"].join("_")),{promisify:r}=await import("util"),c=r(a.execFile);try{await c("ffmpeg",["-y","-i",e,"-ar","16000","-ac","1",i],{timeout:3e4})}catch(u){throw new Error(l("api.audio_convert_failed",{error:u.message||String(u)}))}return{filePath:i,format:o}}async createGroup(e,o){let t=await this.searchGroups(e,1);if(t.length>0&&t[0].name===e)return{uid:t[0].uid,name:t[0].name||e};let i={true_name:e,group_type:"topic"};o&&(i.description=o);let s=await this.client.postJson({func:"cim.group:create",sid:this.sid,payload:i});if(s.code!=="S_OK")throw new Error(l("api.create_group_failed",{code:s.code,msg:s.msg||""}));let a=s.var;return{uid:String(a.uid||""),name:e}}async deleteGroup(e){let o=await this.client.postJson({func:"cim.group:discard",sid:this.sid,payload:{uid:e}});if(o.code!=="S_OK")throw new Error(l("api.delete_group_failed",{code:o.code,msg:o.msg||""}));return!0}createSocketClient(e){return sn.fromLunkrConfig(this.session.baseUrl,this.sid,this.session.cookie,{uid:this.session.selfUid,username:this.senderName,eventCallbacks:{connect:()=>e.onConnect?.(),disconnect:()=>e.onDisconnect?.(),ready:()=>e.onReady?.(),message:o=>e.onMessage?.(o),error:o=>{let t=o&&typeof o=="object"&&"message"in o?String(o.message):"Unknown error";e.onError?.(new Error(t))}}})}}});var K=se(()=>{re();oo();De();en()});var Qc={};us(Qc,{loginCommand:()=>Pn,loginCommandMeta:()=>Yc});async function cm(n){try{let e=new F(n.baseUrl,{apiPath:n.apiPath}),o={};for(let t of n.cookie.split(";")){let i=t.trim();if(i.includes("=")){let s=i.indexOf("="),a=i.substring(0,s).trim(),r=i.substring(s+1).trim();o[a]=r}}return e.setCookies(o),await e.checkSessionValid(n.sid)}catch{return!1}}async function xi(n){try{let e=new F(n.baseUrl,{apiPath:n.apiPath}),o={};for(let i of n.cookie.split(";")){let s=i.trim();if(s.includes("=")){let a=s.indexOf("="),r=s.substring(0,a).trim(),c=s.substring(a+1).trim();o[r]=c}}e.setCookies(o);let t=await e.postJson({func:"cim.common:getCimPrefAttr",sid:n.sid,payload:{return_field:"nickname,true_name,name"}});if(t.code==="S_OK"&&t.var){let i=t.var,s=i.nickname||i.true_name||i.name;return s?String(s).trim():null}}catch{}return null}async function Pn(n,e){let o=e.verbose??!1,t=e.debug??!1,i=e.force??!1,s=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.qrcode_login_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(s?` ${l("messages.mode_temporary_desc")}`:` ${l("messages.mode_persistent_desc")}`),console.log("");let a=L();if(i)console.log(l("messages.force_relogin"));else{let g=a.accounts?.[0];if(g?.session?.sid){if(await cm(g.session)){let w=await xi(g.session);w&&(g.session.senderName=w,E(a)),console.log(l("messages.already_logged_in")),w&&console.log(`${l("labels.name")}: ${w}`),console.log(`UID: ${g.session.selfUid}`),console.log("");return}o&&(console.log(l("errors.session_expired_login")),console.log(""),console.log(l("status.login_hint")))}}let r=a.accounts?.[0];if(r?.apiToken&&!i){console.log(l("messages.authenticating_token"));let g=await Le(r.email||r.accountId,r.apiToken,a.device_uuid,{debug:t});if(g.success&&g.sid&&g.cookie){let v=g.selfUid||r.session?.selfUid;r.session={sid:g.sid,cookie:g.cookie,baseUrl:vo,apiPath:xn,selfUid:v};let w=await xi(r.session);w&&(r.session.senderName=w),E(a);let y=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_token")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),w&&console.log(` ${I(l("labels.name")+":",y)} ${w}`),console.log(` ${I(l("labels.email")+":",y)} ${g.email}`),console.log(` ${I(l("labels.bot")+":",y)} ${ae()}`),console.log(""),console.log(` ${I(l("labels.config")+":",y)} ${de()}`),console.log("");return}console.log(l("login.token_expired_need_rescan")),t&&console.log(l("login.token_login_error",{error:g.error||"Unknown"}))}let c=await si({device:{device_uuid:a.device_uuid,device_os:a.device_os,device_model:a.device_model,device_name:a.device_name},debug:t});c.success||(console.error(""),console.error(l("login.qrcode_login_failed",{error:c.error||"Unknown"})),process.exit(1)),(!c.apiToken||!c.email)&&(console.error(""),console.error(l("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(l("messages.authenticating_with_token"));let u=await Le(c.email,c.apiToken,c.deviceUuid||a.device_uuid,{debug:t});u.success||(console.error(""),console.error(l("login.token_login_failed",{error:u.error||"Unknown"})),process.exit(1)),(!u.sid||!u.cookie)&&(console.error(""),console.error(l("login.token_login_no_session")),process.exit(1));let p=u.selfUid||c.selfUid,d={sid:u.sid,cookie:u.cookie,baseUrl:vo,apiPath:xn,selfUid:p},m=await xi(d);m&&(d.senderName=m);let f={accountId:c.email,email:c.email,enabled:!0,session:d,apiToken:s?void 0:c.apiToken};a=L();let h=a.accounts?.findIndex(g=>g.accountId===c.email)??-1;if(h>=0&&a.accounts){let g=a.accounts[h];g.session=f.session,g.enabled=!0,f.apiToken!==void 0&&(g.apiToken=f.apiToken)}else a.accounts||(a.accounts=[]),a.accounts.push(f);E(a);let x=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_qrcode")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),m&&console.log(` ${I(l("labels.name")+":",x)} ${m}`),console.log(` ${I(l("labels.email")+":",x)} ${c.email}`),console.log(` ${I(l("labels.bot")+":",x)} ${ae()}`),console.log(` ${I("UID:",x)} ${p}`),console.log(s?` ${I(l("labels.mode")+":",x)} ${l("messages.mode_temporary")}`:` ${I(l("labels.mode")+":",x)} ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${I(l("labels.config")+":",x)} ${de()}`),console.log("")}var Yc,zo=se(()=>{K();vn();Rn();U();Yc={name:"login",description:"Login to Lunkr using QR code",options:[{name:"verbose",alias:"v",description:"Verbose output",type:"boolean",required:!1},{name:"debug",alias:"d",description:"Debug output (show network requests)",type:"boolean",required:!1},{name:"force",alias:"f",description:"Force re-login even if session is valid",type:"boolean",required:!1},{name:"temp",alias:"t",description:"Temporary login (do not save api_token)",type:"boolean",required:!1}]}});fn();U();function hs(n){return{}}function xs(n){return{accountId:n.accountId}}function vs(n){return{}}import{Type as _}from"@sinclair/typebox";import{Value as Jm}from"@sinclair/typebox/value";var Ml=_.Object({name:_.String({minLength:1,description:"Discussion name is required"}),agentId:_.Optional(_.String()),creatorUid:_.String({minLength:1,description:"Creator UID is required"}),createdAt:_.Union([_.String(),_.Number()],{description:"Creation timestamp"})}),Bl=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),bs=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),Gl=_.Object({enabled:_.Optional(_.Boolean()),allowFrom:_.Optional(_.Array(_.String())),policy:_.Optional(bs),requireMention:_.Optional(_.Boolean())}),zl=_.Object({policy:_.Union([_.Literal("disabled"),_.Literal("mentionOnly"),_.Literal("open")])}),Zo=_.Object({enabled:_.Optional(_.Boolean({default:!0})),commandPrefix:_.Optional(_.String({minLength:1,default:"/"})),botDiscussions:_.Optional(_.Record(_.String(),Ml)),dmPolicy:_.Optional(Bl),allowFrom:_.Optional(_.Array(_.String())),groupPolicy:_.Optional(bs),groups:_.Optional(_.Array(_.String())),discussions:_.Optional(_.Record(_.String(),Gl)),groupTypeRules:_.Optional(_.Record(_.String(),zl))}),Kl=_.Object({email:_.String({minLength:1,description:"Email is required"}),password:_.String({minLength:1,description:"Password is required"}),deviceUuid:_.Optional(_.String()),deviceName:_.Optional(_.String())}),Hl=_.Object({sid:_.String(),selfUid:_.String(),cookie:_.String(),baseUrl:_.String(),apiPath:_.String()}),Vl=_.Object({accountId:_.String({minLength:1,description:"Account ID is required"}),name:_.Optional(_.String()),enabled:_.Optional(_.Boolean({default:!0})),credentials:Kl,config:Zo,session:_.Optional(Hl)}),Ym=_.Record(_.String(),Vl);var Se="default";re();var be="agent:";function Xl(n){let e=L(),o=e.accounts||[];if(n&&n.startsWith(be)){let i=n.slice(be.length),s=o.find(a=>a.email===i&&a.role==="agent");return s?{accountId:s.accountId,name:s.name,enabled:s.enabled,session:s.session,config:s.config,apiToken:s.apiToken,role:s.role,agentId:s.agentId}:null}if(!n||n===Se){let i=W(e);if(!i)return null;let s=o.find(a=>a.accountId===i.accountId||a.email===i.email);return{accountId:i.accountId,name:s?.name,enabled:i.enabled,session:i.session,config:s?.config,apiToken:i.apiToken,role:i.role,agentId:i.agentId}}let t=o.find(i=>i.accountId===n);return t?{accountId:t.accountId,name:t.name,enabled:t.enabled,session:t.session,config:t.config,apiToken:t.apiToken,role:t.role,agentId:t.agentId}:null}function Ps(n){return n.channels?.["lunkr-openclaw"]}var Zl={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]};function Ls(n){switch(n){case"allow":case"any":case"pairing":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function Is(n){switch(n){case"allow":case"any":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function eu(n,e){let o={...Zl,...n};return e?{...o,...e,dmPolicy:Ls(e.dmPolicy??o.dmPolicy),groupPolicy:Is(e.groupPolicy??o.groupPolicy),botDiscussions:{...o.botDiscussions,...e.botDiscussions},discussions:{...o.discussions,...e.discussions},groupTypeRules:{...o.groupTypeRules,...e.groupTypeRules},allowFrom:e.allowFrom??o.allowFrom,groups:e.groups??o.groups}:{...o,dmPolicy:Ls(o.dmPolicy),groupPolicy:Is(o.groupPolicy)}}function me(n,e){let o=Ps(n),i=Xl(e??Se);if(!i?.session||o?.enabled===!1)return null;let s=o?.enabled??!0,a=eu(o,i.config),r=i.session;return{accountId:i.accountId,name:i.name??ae(),enabled:s,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:ae(),commandPrefix:a.commandPrefix,botDiscussions:a.botDiscussions,senderName:r.senderName,config:a,lunkrConfig:i.session,hasApiToken:!!i.apiToken,role:i.role||"standard",agentId:i.agentId}}function $n(n,e){return{...n,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||n.selfUid,lunkrConfig:e}}var Us={listAccountIds:n=>{let e=[],o=L();W(o)?.session&&e.push(Se);let i=Fn(o);for(let s of i)s.session?.sid&&e.push(`${be}${s.email}`);return e},resolveAccount:(n,e)=>me(n,e),defaultAccountId:()=>Se,isConfigured:n=>n?!!((n.sid||n.hasApiToken)&&n.selfUid):!1,isEnabled:n=>n?n.enabled??!0:!1,describeAccount:n=>{if(!n)return{accountId:"default",configured:!1,enabled:!1};let e=!!((n.sid||n.hasApiToken)&&n.selfUid);return{accountId:n.accountId,name:n.name,enabled:n.enabled,configured:e}},setAccountEnabled:n=>{let{cfg:e,enabled:o}=n,t=Ps(e)??{};return{...e,channels:{...e.channels,lunkr:{...t,enabled:o}}}},unconfiguredReason:n=>n?n.sid?n.selfUid?"Account not configured":"Lunkr user ID not available. Please re-authenticate.":"Lunkr session not configured. Run: openclaw lunkr login":"Lunkr account not configured. Run: openclaw lunkr login"};function Ts(n){return n.replace(/^lunkr:/i,"")}function nu(n,e,o){let t=o.config.dmPolicy??"open",i=o.config.allowFrom??[];return{policy:t,allowFrom:i.map(Ts),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:Ts}}async function ou(n){let e=[],{account:o}=n;return o.config.groupPolicy==="allowlist"&&!o.config.groups?.length&&e.push('Group policy is set to "allowlist" but no groups are configured. Bot will not respond in any group.'),o.config.dmPolicy==="allowlist"&&!o.config.allowFrom?.length&&e.push('DM policy is set to "allowlist" but allowFrom is empty. Bot will not respond to any DM.'),e}var Os={resolveDmPolicy:n=>{let{cfg:e,accountId:o,account:t}=n;return nu(e,o??Se,t)},collectWarnings:n=>ou(n)};var yc=Jo(lt(),1);import*as xe from"fs";import*as Ze from"path";import*as bc from"os";tn();uo();vn();yo();var Zs={"cim.cal:createEvents":{func:"cim.cal:createEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:createEventsForLunkr":{func:"cim.cal:createEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEvents":{func:"cim.cal:deleteEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEventsForLunkr":{func:"cim.cal:deleteEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteReminder":{func:"cim.cal:deleteReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getMeetingRooms":{func:"cim.cal:getMeetingRooms",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminder":{func:"cim.cal:getReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminderWithAutoCheck":{func:"cim.cal:getReminderWithAutoCheck",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminder":{func:"cim.cal:setReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminderForLunkr":{func:"cim.cal:setReminderForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEvents":{func:"cim.cal:updateEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEventsForLunkr":{func:"cim.cal:updateEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:api":{func:"cim.common:api",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:autoKeepSession":{func:"cim.common:autoKeepSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkModuleVersion":{func:"cim.common:checkModuleVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkVersion":{func:"cim.common:checkVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:clickLog":{func:"cim.common:clickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:customOpLog":{func:"cim.common:customOpLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:delayClickLog":{func:"cim.common:delayClickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:feedback":{func:"cim.common:feedback",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:flashMailLog":{func:"cim.common:flashMailLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAdminFunctionSetting":{func:"cim.common:getAdminFunctionSetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAttrs":{func:"cim.common:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAvatar":{func:"cim.common:getAvatar",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getBigAvatar":{func:"cim.common:getBigAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCimPrefAttr":{func:"cim.common:getCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getConfig":{func:"cim.common:getConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCustomDomain":{func:"cim.common:getCustomDomain",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getEnfDetail":{func:"cim.common:getEnfDetail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getInitConfig":{func:"cim.common:getInitConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getLastLoginStatus":{func:"cim.common:getLastLoginStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getMaterial":{func:"cim.common:getMaterial",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getNSISDownloadURL":{func:"cim.common:getNSISDownloadURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getOrgInfo":{func:"cim.common:getOrgInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRemindList":{func:"cim.common:getRemindList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRevision":{func:"cim.common:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getSysUserInfo":{func:"cim.common:getSysUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getUserType":{func:"cim.common:getUserType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getValueByKey":{func:"cim.common:getValueByKey",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getWebSocketURL":{func:"cim.common:getWebSocketURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:iosHotfix":{func:"cim.common:iosHotfix",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listAuthDevice":{func:"cim.common:listAuthDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listFlagUser":{func:"cim.common:listFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logCollapse":{func:"cim.common:logCollapse",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logRecord":{func:"cim.common:logRecord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:onlineStatus":{func:"cim.common:onlineStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:resetTopicAvatar":{func:"cim.common:resetTopicAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:searchFlagUser":{func:"cim.common:searchFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendNetDiskOperateNotice":{func:"cim.common:sendNetDiskOperateNotice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendShake":{func:"cim.common:sendShake",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setApplePushSwitch":{func:"cim.common:setApplePushSwitch",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setAvatar":{func:"cim.common:setAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setCimPrefAttr":{func:"cim.common:setCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setFlag":{func:"cim.common:setFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setMiscFlag":{func:"cim.common:setMiscFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setRevision":{func:"cim.common:setRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sioSubscribe":{func:"cim.common:sioSubscribe",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:transEmail":{func:"cim.common:transEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:verify":{func:"cim.common:verify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getCompanyInfoById":{func:"cim.company:getCompanyInfoById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getSensitiveWord":{func:"cim.company:getSensitiveWord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:listCompanyInfo":{func:"cim.company:listCompanyInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.container:searchContacts":{func:"cim.container:searchContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:opRedpacket":{func:"cim.extSys:opRedpacket",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:push":{func:"cim.extSys:push",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:pushRegister":{func:"cim.extSys:pushRegister",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:addCollect":{func:"cim.file:addCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:cancelCollect":{func:"cim.file:cancelCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:directData":{func:"cim.file:directData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getFileData":{func:"cim.file:getFileData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getSearchResult":{func:"cim.file:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getThumbnail":{func:"cim.file:getThumbnail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:listCollect":{func:"cim.file:listCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:moveToNetFolder":{func:"cim.file:moveToNetFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:prepare":{func:"cim.file:prepare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:search":{func:"cim.file:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:searchCollect":{func:"cim.file:searchCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadPost":{func:"cim.file:uploadPost",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadSnippet":{func:"cim.file:uploadSnippet",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadVoice":{func:"cim.file:uploadVoice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:viewFile":{func:"cim.file:viewFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:attendance":{func:"cim.group:attendance",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:create":{func:"cim.group:create",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:delete":{func:"cim.group:delete",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:discard":{func:"cim.group:discard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getInfo":{func:"cim.group:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getMembersInfo":{func:"cim.group:getMembersInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getRelate":{func:"cim.group:getRelate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:invite":{func:"cim.group:invite",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:listVipUserTopic":{func:"cim.group:listVipUserTopic",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:notifyFlag":{func:"cim.group:notifyFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:search":{func:"cim.group:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:transfer":{func:"cim.group:transfer",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateDescription":{func:"cim.group:updateDescription",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateName":{func:"cim.group:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:generate":{func:"cim.link:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:getInfo":{func:"cim.link:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:prolong":{func:"cim.link:prolong",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:sendInviteMail":{func:"cim.link:sendInviteMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:shorten":{func:"cim.link:shorten",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:compose":{func:"cim.mail:compose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getPushFolder":{func:"cim.mail:getPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getShareNF":{func:"cim.mail:getShareNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readMail":{func:"cim.mail:readMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readShare":{func:"cim.mail:readShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:refreshToken":{func:"cim.mail:refreshToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteCompose":{func:"cim.mail:remoteCompose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteRequest":{func:"cim.mail:remoteRequest",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:searchMessages":{func:"cim.mail:searchMessages",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setAllRead":{func:"cim.mail:setAllRead",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setPushFolder":{func:"cim.mail:setPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:share":{func:"cim.mail:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:ssoLunkr":{func:"cim.mail:ssoLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:uploadToPersonalNF":{func:"cim.mail:uploadToPersonalNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:batchReply":{func:"cim.msg:batchReply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:broadcast":{func:"cim.msg:broadcast",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:clearUnread":{func:"cim.msg:clearUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:collect":{func:"cim.msg:collect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:deleteUploadFile":{func:"cim.msg:deleteUploadFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getInfo":{func:"cim.msg:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByType":{func:"cim.msg:getLastMsgByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByUID":{func:"cim.msg:getLastMsgByUID",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getSearchResult":{func:"cim.msg:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getShare":{func:"cim.msg:getShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:list":{func:"cim.msg:list",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:operate":{func:"cim.msg:operate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:p2p":{func:"cim.msg:p2p",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:reply":{func:"cim.msg:reply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:search":{func:"cim.msg:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:searchByGroup":{func:"cim.msg:searchByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:setVip":{func:"cim.msg:setVip",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:share":{func:"cim.msg:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:stats":{func:"cim.msg:stats",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateLastMsg":{func:"cim.msg:updateLastMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateRcptMsg":{func:"cim.msg:updateRcptMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getAttrs":{func:"cim.oabEx:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getUserInfo":{func:"cim.oabEx:getUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:setAttrs":{func:"cim.oabEx:setAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteLotterySetting":{func:"cim.operation:deleteLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteOperateActivityById":{func:"cim.operation:deleteOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:exportUserLottery":{func:"cim.operation:exportUserLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getCommentByCode":{func:"cim.operation:getCommentByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getLotteryResultByCode":{func:"cim.operation:getLotteryResultByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getOperateActivityById":{func:"cim.operation:getOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getPrizeInfoByCode":{func:"cim.operation:getPrizeInfoByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listActiveOperateActivity":{func:"cim.operation:listActiveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listLotterySetting":{func:"cim.operation:listLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveComment":{func:"cim.operation:saveComment",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveLotterySetting":{func:"cim.operation:saveLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveOperateActivity":{func:"cim.operation:saveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveUserCommentForPrize":{func:"cim.operation:saveUserCommentForPrize",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:sendGreetingCard":{func:"cim.operation:sendGreetingCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:startLottery":{func:"cim.operation:startLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:updateOperateActivity":{func:"cim.operation:updateOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addContact":{func:"cim.pab:addContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addGroup":{func:"cim.pab:addGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addToBlacklist":{func:"cim.pab:addToBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:deleteGroup":{func:"cim.pab:deleteGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getAllContacts":{func:"cim.pab:getAllContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getBlacklist":{func:"cim.pab:getBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getCombinedContacts":{func:"cim.pab:getCombinedContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getRecentContacts":{func:"cim.pab:getRecentContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getWholeContacts":{func:"cim.pab:getWholeContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:removeFromBlacklist":{func:"cim.pab:removeFromBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:searchContact":{func:"cim.pab:searchContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:updateContact":{func:"cim.pab:updateContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:generate":{func:"cim.qrcode:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:qrcodeInfo":{func:"cim.qrcode:qrcodeInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:register":{func:"cim.qrcode:register",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:get":{func:"cim.remind:get",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:getMobile":{func:"cim.remind:getMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:set":{func:"cim.remind:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:setMobile":{func:"cim.remind:setMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.revision:getRevision":{func:"cim.revision:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:getNotify":{func:"cim.state:getNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:query":{func:"cim.state:query",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryHasLogin":{func:"cim.state:queryHasLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryUserState":{func:"cim.state:queryUserState",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:set":{func:"cim.state:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:setNotify":{func:"cim.state:setNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:checkToken":{func:"cim.third:checkToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:genLinkNonce":{func:"cim.third:genLinkNonce",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:listApp":{func:"cim.third:listApp",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:getThreadInfo":{func:"cim.thread:getThreadInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listBulletin":{func:"cim.thread:listBulletin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listRevision":{func:"cim.thread:listRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listThreadNew":{func:"cim.thread:listThreadNew",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:setTop":{func:"cim.thread:setTop",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:changePassword":{func:"cim.user:changePassword",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:checkVersionAndLogin":{func:"cim.user:checkVersionAndLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:genTempSession":{func:"cim.user:genTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getCard":{func:"cim.user:getCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getEmojiList":{func:"cim.user:getEmojiList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getLunkrMailData":{func:"cim.user:getLunkrMailData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getRecentUnread":{func:"cim.user:getRecentUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempSession":{func:"cim.user:getTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempShareSession":{func:"cim.user:getTempShareSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOffLine":{func:"cim.user:kickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineDevice":{func:"cim.user:kickOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineUserForAdmin":{func:"cim.user:kickOnlineUserForAdmin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listKickOffLineLog":{func:"cim.user:listKickOffLineLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listLoginHistory":{func:"cim.user:listLoginHistory",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:logout":{func:"cim.user:logout",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:queryOnlineDevice":{func:"cim.user:queryOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:removeKickOffLine":{func:"cim.user:removeKickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveCard":{func:"cim.user:saveCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveEmoji":{func:"cim.user:saveEmoji",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:shareCard":{func:"cim.user:shareCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateName":{func:"cim.user:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateOrgUserLastModified":{func:"cim.user:updateOrgUserLastModified",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateTempSession":{func:"cim.user:updateTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"nfEx:getFileData":{func:"nfEx:getFileData",path:"/crux/adm_api/filePreview",requiresFunc:!0,defaultUseGet:!0},"nfEx:getShareFile":{func:"nfEx:getShareFile",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"oab:autoMatch":{func:"oab:autoMatch",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:get":{func:"oab:get",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:getDirectories":{func:"oab:getDirectories",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:listEx":{func:"oab:listEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:searchEx":{func:"oab:searchEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:createContact":{func:"pab:createContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:deleteContact":{func:"pab:deleteContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getAllContactsByType":{func:"pab:getAllContactsByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactByEmail":{func:"pab:getContactByEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactsByGroup":{func:"pab:getContactsByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"user:config":{func:"user:config",path:"/lunkr/common/config",requiresFunc:!1,defaultUseGet:!0},"user:init":{func:"user:init",path:"/lunkr/init",requiresFunc:!1,defaultUseGet:!0}},fu=Object.keys(Zs);tn();Rn();De();U();oo();var gc=1e3;async function hc(n,e){try{let o=await n.postJson({func:"cim.common:getCimPrefAttr",sid:e,payload:{return_field:"nickname,true_name,name"}});if(o.code==="S_OK"&&o.var){let t=o.var,i=t.nickname||t.true_name||t.name;return i?String(i).trim():null}}catch{}return null}async function xc(n,e){let o=me(n,e);if(!o)throw new Error(l("errors.account_not_configured"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let s of o.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return t.setCookies(i),{client:t,account:o}}async function Dd(n,e){let{to:o,content:t,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:o,content:t,type:"text"}});if(r.code!=="S_OK"&&Ln(String(r.code))){let u=await he(s);if(u.success&&u.session){let p=new F(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,g]=h.split("=",2);d[x.trim()]=g.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:o,content:t,type:"text"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`msg-${Date.now()}`};throw new Error(l("api.send_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`msg-${Date.now()}`}}async function Nd(n,e){let{to:o,content:t,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:o,content:t,type:"post"}});if(r.code!=="S_OK"&&Ln(String(r.code))){let u=await he(s);if(u.success&&u.session){let p=new F(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,g]=h.split("=",2);d[x.trim()]=g.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:o,content:t,type:"post"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`post-${Date.now()}`};throw new Error(l("api.send_post_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_post_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`post-${Date.now()}`}}function vc(n){let e=n.replace(/^lunkr:/i,"");return e.startsWith("discussion:")?{chatId:e.replace("discussion:",""),chatType:"group"}:e.startsWith("channel:")?{chatId:e.replace("channel:",""),chatType:"channel"}:{chatId:e,chatType:"p2p"}}async function Md(n){if(n.startsWith("http://")||n.startsWith("https://")){let o=bc.tmpdir(),t=`lunkr-media-${Date.now()}-${Ze.basename(new URL(n).pathname)||"file"}`,i=Ze.join(o,t),s=await hn(n,{},6e4);return xe.writeFileSync(i,s.data),{filePath:i,cleanup:()=>{try{xe.existsSync(i)&&xe.unlinkSync(i)}catch{}}}}let e=Ze.resolve(n);if(!xe.existsSync(e))throw new Error(l("errors.file_not_found",{path:n}));return{filePath:e,cleanup:()=>{}}}async function Bd(n,e){let{filePath:o,sid:t,uploadUid:i,cookies:s,baseUrl:a,apiPath:r}=e,c=Ze.resolve(o),u=Ze.basename(c);if(!xe.existsSync(c))throw new Error(l("errors.file_not_found",{path:o}));let p=xe.statSync(c),d=yc.lookup(c)||"application/octet-stream",m=xe.readFileSync(c),f=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,h=await n.postJson({func:"cim.file:prepare",sid:t,payload:{size:p.size,composeId:f,fileName:u,uid:i,contentType:d}});if(h.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:String(h.code)}));let g=h.var?.attachmentId;if(!g)throw new Error(l("api.upload_no_attachment_id"));let v=`${a}${r}?func=cim.file:directData&sid=${encodeURIComponent(t)}&composeId=${encodeURIComponent(f)}&attachmentId=${g}&offset=0&uid=${encodeURIComponent(i)}`,y={"Content-Type":"application/octet-stream",Cookie:Object.entries(s).map(([q,B])=>`${q}=${B}`).join("; ")},k=await on(v,m,y,6e4),C;try{C=JSON.parse(k.data)}catch{throw new Error(l("api.upload_invalid_response",{data:k.data?.substring?.(0,200)}))}if(C.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:String(C.code)}));let b=await n.postJson({func:"cim.file:moveToNetFolder",sid:t,payload:{composeId:f,fileName:u,item:"fileName",attachmentId:g,uid:i}});if(b.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:String(b.code)}));let S=b.var,T=S?.fileId,R=S?.uid;if(!T)throw new Error(l("api.upload_no_file_id"));return{fileId:T,fileUid:R||""}}var kc={deliveryMode:"direct",textChunkLimit:gc,sendText:async n=>{let{cfg:e,to:o,text:t,replyToId:i,accountId:s}=n,{client:a,account:r}=await xc(e,s),{chatId:c,chatType:u}=vc(o),p=r.botName??"Bot",d=r.senderName;d||(d=await hc(a,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=r.role==="agent",f=qe(t,d,p,m),h;return f.length>gc?h=await Nd(a,{to:c,content:f,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}):h=await Dd(a,{to:c,content:f,sid:r.sid,accountId:r.accountId,lunkrConfig:r.lunkrConfig}),{ok:!0,channel:"lunkr-openclaw",messageId:h.msgId}},sendMedia:async n=>{let{cfg:e,to:o,text:t,mediaUrl:i,accountId:s}=n;if(!i)throw new Error(l("errors.media_url_required"));let{client:a,account:r}=await xc(e,s),{chatId:c,chatType:u}=vc(o),p=r.botName??"Bot",d=r.senderName;d||(d=await hc(a,r.sid)),d||(d=r.selfUid?.includes("@")?r.selfUid.split("@")[0]:"User");let m=r.role==="agent",f=qe(t||"",d,p,m),h={"Cim.sid":r.sid};for(let k of r.cookie.split(";")){let C=k.trim();if(C.includes("=")){let[b,S]=C.split("=",2);h[b.trim()]=S.trim()}}let x=a,g=r.sid;if((await a.postJson({func:"cim.common:getOrgInfo",sid:r.sid})).code!=="S_OK"){let k=await he(r.accountId);if(!k.success||!k.session)throw new Error(l("errors.session_expired"));g=k.session.sid,x=new F(r.lunkrConfig.baseUrl,{apiPath:r.lunkrConfig.apiPath}),h={"Cim.sid":g};for(let C of k.session.cookie.split(";")){let b=C.trim();if(b.includes("=")){let[S,T]=b.split("=",2);h[S.trim()]=T.trim()}}x.setCookies(h)}let w,y;try{let k=await Md(i);w=k.filePath,y=k.cleanup;let C=u==="p2p"?r.selfUid:c,{fileId:b,fileUid:S}=await Bd(x,{filePath:w,sid:g,uploadUid:C,cookies:h,baseUrl:r.lunkrConfig.baseUrl,apiPath:r.lunkrConfig.apiPath}),T=await x.postJson({func:"cim.msg:reply",sid:g,payload:{uid:c,content:f,type:"text",attachments:[{fileId:b,uid:S}]}});if(T.code!=="S_OK")throw new Error(l("api.send_media_failed",{code:String(T.code)}));return{ok:!0,channel:"lunkr-openclaw",messageId:T.var?.msgId??`media-${Date.now()}`}}finally{y&&y()}}};yo();function _c(n,e){let o=n.chatType==="group"?n.chatId:null;return o&&(e.botDiscussions||{})[o]||null}function ui(n,e){return _c(n,e)!==null}function Gd(n,e){return n.trim().toLowerCase().startsWith(e.toLowerCase())}function wc(n,e){let o=n.fromUid===e.selfUid,t=o&&/^\[@!.+?\]/.test(n.content),i=o&&!t;if(t)return{isBotMention:!1,isFromBot:!0,isFromSelf:!1};let s=_c(n,e);return s?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:s.agentId}:o&&Gd(n.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function Cc(n,e){let o=n.fromUid===e.selfUid;return o&&/^\[@!.+?\]/.test(n.content)?{isBotMention:!1,isFromBot:!0,isFromSelf:!1}:o?{isBotMention:!1,isFromBot:!1,isFromSelf:!0}:n.chatType==="p2p"?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.fromUid}`}:{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.chatId}`}}function zd(n,e){let o=n.trim();return o.toLowerCase().startsWith(e.toLowerCase())?o.slice(e.length).trim():n}function Sc(n,e){let o=e.role||"standard",t;if(o==="agent")t=Cc(n,e);else if(o==="standard+agent"){let r=Cc(n,e),c=wc(n,e);r.isBotMention?t=r:(c.isBotMention,t=c)}else t=wc(n,e);let s=ui(n,e)?n.content:zd(n.content,e.commandPrefix),a=n.chatType==="p2p"?"direct":n.chatType;return{externalId:n.msgId,channel:"lunkr-openclaw",chatType:a,peerId:n.chatId,senderId:n.fromUid,text:s,timestamp:n.timestamp,replyTo:n.threadId,mentions:n.mentionedUids,isBotMention:t.isBotMention,isFromBot:t.isFromBot,isFromSelf:t.isFromSelf,agentId:t.agentId,workspaceKey:t.workspaceKey,contentType:n.contentType,attachments:n.attachments}}function Kd(n){let e=n.indexOf("(");return e>0?n.substring(0,e):n}function No(n,e){if(!e||e.length===0)return!1;let o=n.replace(/^lunkr:/i,"");return e.some(t=>Kd(t).replace(/^lunkr:/i,"")===o)}function Hd(n){let e=n.match(/(#[A-Z])$/);return e?e[1]:null}function Ac(n,e,o){let t=e.config;if(n.chatType!=="direct"){let c={chatType:"group",chatId:n.peerId};if(ui(c,e))return{allowed:!0,reason:"bot discussion"}}if(n.chatType==="direct"){let c=t.dmPolicy||"open";return c==="disabled"?{allowed:!1,reason:"DM blocked: policy is disabled"}:c==="allowlist"?No(n.senderId,t.allowFrom)?{allowed:!0,reason:"sender in DM allowlist"}:{allowed:!1,reason:`DM blocked: sender ${n.senderId} not in allowFrom`}:{allowed:!0,reason:"DM policy is open"}}let i=n.peerId,s=t.discussions?.[i];if(s?.enabled===!1)return{allowed:!1,reason:`group blocked: discussion ${i} is disabled`};if(!(s&&(s.policy!==void 0||s.allowFrom!==void 0||s.requireMention!==void 0))){let c=Hd(i);if(c){let u=t.groupTypeRules?.[c];if(u){if(u.policy==="disabled")return{allowed:!1,reason:`group blocked: type rule ${c} is disabled`};if(u.policy==="mentionOnly"&&!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: type rule ${c} requires mention`}}}}if(s?.requireMention===!0&&!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: discussion ${i} requires mention`};let r=s?.policy||t.groupPolicy||"open";if(r==="disabled")return{allowed:!1,reason:"group blocked: policy is disabled"};if(r==="allowlist"){let c=No(i,t.groups);return s?.allowFrom&&s.allowFrom.length>0?No(n.senderId,s.allowFrom)?{allowed:!0,reason:"sender in discussion allowFrom"}:{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${i}`}:c?{allowed:!0,reason:"group in allowlist"}:{allowed:!1,reason:`group blocked: ${i} not in groups allowlist`}}return s?.allowFrom&&s.allowFrom.length>0&&!No(n.senderId,s.allowFrom)?{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${i}`}:{allowed:!0,reason:"group policy is open"}}De();U();oo();mn();var Pe=new Map,to=new Map,$c=5e3;function Jd(n){let e=Date.now(),o=to.get(n);if(o&&e-o<$c)return!0;if(to.set(n,e),to.size>1e3)for(let[t,i]of to)e-i>$c*2&&to.delete(t);return!1}function Yd(n,e){let o=e.role||"standard";return o==="agent"||o==="standard+agent"?n.chatType==="direct"?!0:n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")||!1:n.isFromSelf}function Qd(n){let o=n.replace(/^(@\S+\s+)*/g,"").trim().toLowerCase();return o==="/help"||o.startsWith("/help ")?"/help":o==="/new"||o.startsWith("/new ")?"/new":null}var qc=1e3;async function Dc(n,e,o){let{to:t,text:i,chatType:s}=e;o?.debug?.(`[sendLunkrReply] to=${t}, chatType=${s}, textLen=${i.length}`);let a=n.botName??"Bot",r=n.senderName;r||(r=n.selfUid?.includes("@")?n.selfUid.split("@")[0]:"User");let c=e.skipPrefix??n.role==="agent",u=qe(i,r,a,c),p=n.sid,d=n.cookie,m=n;if(p){let f=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),h={"Cim.sid":p};for(let g of d.split(";")){let v=g.trim();if(v.includes("=")){let[w,y]=v.split("=",2);h[w.trim()]=y.trim()}}f.setCookies(h);let x=await f.postJson({func:"cim.msg:reply",sid:p,payload:{uid:t,content:u,type:u.length>qc?"post":"text"}});if(o?.debug?.(`[sendLunkrReply] Response: code=${x.code}`),x.code==="S_OK"){let g=x.var?.msgId;return o?.info(`[sendLunkrReply] Message sent successfully${g?`: msgId=${g}`:""}`),{msgId:g??`msg-${Date.now()}`,account:m}}if(Ln(String(x.code)))o?.info(`[${n.accountId}] Session expired, clearing sid...`),p="",d="";else throw new Error(l("api.send_reply_failed",{code:String(x.code),msg:String(x.msg||"Unknown")}))}if(!p){o?.info(`[${n.accountId}] No valid session, attempting refresh with apiToken...`);let f=await he(n.accountId);if(f.success&&f.session){o?.info(`[${n.accountId}] Session refreshed, sending message...`),p=f.session.sid,d=f.session.cookie;let h=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),x={"Cim.sid":p};for(let v of d.split(";")){let w=v.trim();if(w.includes("=")){let[y,k]=w.split("=",2);x[y.trim()]=k.trim()}}h.setCookies(x);let g=await h.postJson({func:"cim.msg:reply",sid:p,payload:{uid:t,content:u,type:u.length>qc?"post":"text"}});if(g.code==="S_OK"){let v=$n(n,f.session),w=g.var?.msgId;return o?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${w}`),{msgId:w??`msg-${Date.now()}`,account:v}}throw o?.warn?.(`[${n.accountId}] Send failed after refresh: ${g.code}. Will retry later.`),new Error(l("api.send_reply_failed",{code:String(g.code),msg:String(g.msg||"Unknown")}))}throw o?.warn?.(`[${n.accountId}] Session refresh failed: ${f.error}. Will retry later.`),new Error(l("api.no_session"))}throw new Error(l("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function Bo(n,e){let{log:o}=e;return sn.fromLunkrConfig(n.lunkrConfig.baseUrl,n.sid,n.cookie,{uid:n.selfUid,username:n.botName,autoReconnect:e.autoReconnect,eventCallbacks:{message:i=>{try{let s=Xd(i,o);if(s){s.attachments&&s.attachments.length>0&&(Tc(s.msgId,s.timestamp,s.attachments.map(r=>({fileId:r.fileId,uid:r.uid,title:r.title,contentType:r.contentType,fileSize:r.fileSize,type:r.type,inline:r.inline}))),o?.debug?.(`[gateway] Cached ${s.attachments.length} attachments for message ${s.msgId}`));let a=Sc(s,n);e.onMessage(a)}}catch(s){e.onError(s instanceof Error?s:new Error(String(s)))}},reaction:i=>{if(e.onReaction&&i&&typeof i=="object"){let s=i;e.onReaction({msgId:String(s.msgId??""),userId:String(s.fromUid??""),emoji:String(s.emoji??"")})}},disconnect:()=>{e.onDisconnect()},error:i=>{let s=i&&typeof i=="object"&&"message"in i?String(i.message):"Unknown socket error";e.onError(new Error(s))}}})}function Xd(n,e){if(!n||typeof n!="object")return null;let o=n,t=o.topic||"",i=o.payload||"",s;try{s=JSON.parse(i)}catch{return null}if(!s.mid&&!s.subject)return null;let a=Object.keys(s),r=s.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${a.join(", ")}], attachments=${JSON.stringify(r)?.substring(0,200)}`);let c=String(s.mid||""),u=s.from||{},p=s.to||{},d=String(u.uid||""),m=String(u.true_name||u.email||""),f=String(s.subject||"");try{f=decodeURIComponent(f.replace(/\+/g," "))}catch{}let h=String(s.type||s.group_type||"p2p"),x=String(s.uid||p.uid||""),g;x.endsWith("#U")?g="p2p":x.endsWith("#T")?g="group":g=h==="p2p"?"p2p":h==="topic"||h==="group"?"group":"channel";let v=s.attachments||[],w=v.map(R=>{let q=String(R.uid||"");return{fileId:String(R.fileId||R.file_id||""),uid:q,title:String(R.title||""),fileSize:Number(R.file_size||R.fileSize||0),type:Number(R.t||R.type||0),ctype:R.ctype?String(R.ctype):void 0,inline:!!R.inline,duration:R.duration?Number(R.duration):void 0}});if(w.length===0){let R=Object.keys(s),q=R.some(O=>O.toLowerCase().includes("file")||O.toLowerCase().includes("att")||O.toLowerCase().includes("attach")||O.toLowerCase().includes("media")||O.toLowerCase().includes("image")||O.toLowerCase().includes("audio")),B=String(s.type||""),N=["file","image","audio","video","attachment"].some(O=>B.toLowerCase().includes(O));if(q||N){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${B}", keys=${R.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${B}", msg keys: ${R.join(", ")}`);for(let O of R){let V=O.toLowerCase();if(V.includes("file")||V.includes("att")||V.includes("attach")||V.includes("media")||V.includes("image")||V.includes("audio")){let oe=s[O];e?.debug?.(`[parseSocketMessage] Field "${O}": ${JSON.stringify(oe).substring(0,500)}`)}}}}let y="text",k=w[0];if(k){let R=k.title?.split(".").pop()?.toLowerCase();R==="ilbc"?y="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(R||"")?y="image":["mp4","mov","avi","mkv"].includes(R||"")?y="video":y="file"}let C=f;if(w.length>0){let R=[];for(let B of w){let N=B.title?.split(".").pop()?.toLowerCase();N==="ilbc"?R.push(l("attachment.voice",{duration:B.duration||""})):["jpg","jpeg","png","gif","bmp","webp"].includes(N||"")?R.push(l("attachment.image",{title:B.title})):["mp4","mov","avi","mkv"].includes(N||"")?R.push(l("attachment.video",{title:B.title})):R.push(l("attachment.file",{title:B.title}))}let q=R.join(" ");f.trim()?C=`${f}
|
|
17
|
-
${q}`:C=q}if(w.length>0){e?.info(`[parseSocketMessage] Parsed ${w.length} attachment(s): ${w.map(q=>`${q.title}(uid=${q.uid||"EMPTY!"})`).join(", ")}`),v[0]&&(e?.debug(`[parseSocketMessage] Raw attachment[0] keys: ${Object.keys(v[0]).join(", ")}`),e?.debug(`[parseSocketMessage] Raw attachment[0]: ${JSON.stringify(v[0])}`));let R=w.filter(q=>!q.uid);R.length>0&&(e?.warn?.(`[parseSocketMessage] \u26A0\uFE0F ${R.length} attachment(s) have empty uid - download will fail!`),v[0]&&e?.warn?.(`[parseSocketMessage] Available fields in raw attachment: ${Object.keys(v[0]).join(", ")}`))}let b,S=s.at_uid;typeof S=="string"&&S&&(S==="all"?b=["all"]:S.includes(",")?b=S.split(",").map(R=>R.trim()).filter(Boolean):b=[S]);let T=b?b.length>0:!1;return{msgId:c,threadId:s.threadId?String(s.threadId):void 0,parentId:s.parentId?String(s.parentId):void 0,fromUid:d,fromName:m||void 0,toUid:String(p.uid||""),chatType:g,chatId:x||(g==="p2p"?d:""),content:C,contentType:y,timestamp:typeof s.time=="number"?s.time:Date.now(),mentioned:T,mentionedUids:b,attachments:w.length>0?w:void 0}}async function Zd(n){let{msg:e,account:o,sessionFilesDir:t,log:i}=n,s=e.attachments?.[0];if(s?.fileId)try{let a=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),r={"Cim.sid":o.sid};for(let v of o.cookie.split(";")){let w=v.trim();if(w.includes("=")){let[y,k]=w.split("=",2);r[y.trim()]=k.trim()}}a.setCookies(r);let c=s.title||`file-${s.fileId}`,u=`${t}/${c}`,p=s.uid||e.peerId,d=`${o.lunkrConfig.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(p)}&mid=${encodeURIComponent(s.fileId)}&sid=${encodeURIComponent(o.sid)}&fallback=false`,m={Cookie:`Cim.sid=${o.sid}; Cim=${r.Cim||""}`},{default:f}=await import("fs"),{default:h}=await import("path"),{httpsGetBuffer:x}=await Promise.resolve().then(()=>(tn(),Ys)),g=await x(d,m);if(g.status!==200){i?.warn?.(`[autoDownload] HTTP ${g.status} for ${c}`);return}if(g.data.length<1e3)try{let v=JSON.parse(g.data.toString("utf-8"));if(v.code&&v.code!=="S_OK"){i?.warn?.(`[autoDownload] API error: ${v.code}`);return}}catch{}return f.mkdirSync(h.dirname(u),{recursive:!0}),f.writeFileSync(u,g.data),i?.info(`[autoDownload] Saved ${c} (${g.data.length} bytes) \u2192 ${u}`),u}catch(a){i?.warn?.(`[autoDownload] Failed: ${a instanceof Error?a.message:String(a)}`);return}}async function em(n){let{msg:e,account:o,sessionKey:t,accountId:i,log:s}=n,a=e.chatType!=="direct",r=a?`group:${e.peerId}`:e.senderId,c=a?"group":"direct",u=e.attachments?.[0],p;u&&(e.contentType==="audio"?p="audio/ilbc":e.contentType==="image"?p=`image/${u.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?p=`video/${u.title?.split(".").pop()||"mp4"}`:p="application/octet-stream");let d=t,m=Ec(d),f=Fc(d);Pc(d,{workspaceDir:m,filesDir:f,accountId:i});let h;return u&&(h=await Zd({msg:e,account:o,sessionFilesDir:f,log:s})),{Body:e.text,BodyForAgent:e.text,RawBody:e.text,CommandBody:e.text,From:a?`lunkr:group:${e.peerId}`:`lunkr:${e.senderId}`,To:`lunkr:${e.peerId}`,SessionKey:t,AccountId:i,ChatType:c,ConversationLabel:r,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:h,MediaType:p,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`,LunkrSessionWorkspaceDir:m,LunkrSessionFilesDir:f,LunkrWorkspaceKey:d}}var Nc={startAccount:async n=>{let{account:e,abortSignal:o,log:t}=n,i=e,s=new Map;t?.info(`[${i.accountId}] Starting Lunkr gateway`);let a=!i.sid;if(i.sid&&(await new F(i.lunkrConfig.baseUrl).checkSessionValid(i.sid)||(t?.warn?.(`[${i.accountId}] Session invalid on startup, will refresh...`),a=!0)),a){t?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let g=await he(i.accountId);g.success&&g.session?(i=$n(i,g.session),t?.info(`[${i.accountId}] Session refreshed on startup`)):t?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${g.error}. Will retry when sending messages.`)}let r,c=3,u=5e3,p=12e4,d=0,m=0,f={onMessage:async g=>{if(!g.isBotMention)return;if(Jd(g.externalId)){t?.debug?.(`[${i.accountId}] Skipping duplicate message: ${g.externalId}`);return}let v=g.chatType==="direct"?"DM":"Group";if(t?.info(`[${i.accountId}] [${v}:${g.peerId}] Received msg from ${g.senderId}: ${g.text?.substring(0,50)}...`),t?.debug?.(`[${i.accountId}] Attachments check: count=${g.attachments?.length||0}, contentType=${g.contentType}`),g.attachments&&g.attachments.length>0){let C=g.attachments.map(b=>{let S=b.title?.split(".").pop()?.toLowerCase();return S==="ilbc"?l("attachment.voice_short",{duration:b.duration||"?"}):["jpg","jpeg","png","gif","bmp","webp"].includes(S||"")?l("attachment.image_short",{title:b.title}):["mp4","mov","avi","mkv"].includes(S||"")?l("attachment.video_short",{title:b.title}):l("attachment.file_short",{title:b.title})}).join(", ");t?.info(`[${i.accountId}] [${v}:${g.peerId}] Attachments: ${C}`)}let w=Ac(g,i,t);if(!w.allowed){t?.info(`[${i.accountId}] Message discarded: ${w.reason}`);return}let y=i.role||"standard",k=y==="agent"||y==="standard+agent"&&!g.isFromSelf;if(Yd(g,i)){let C=Qd(g.text);if(C){let b=g.workspaceKey||`${i.selfUid}:${g.peerId}`,S;C==="/help"?S=l("commands.help.text"):(s.set(b,(s.get(b)||0)+1),jc(b),S=l("commands.new.done")),t?.info(`[${i.accountId}] Built-in command ${C} from ${g.senderId}`);try{let T=await Dc(i,{to:g.peerId,chatType:g.chatType,text:S,skipPrefix:k},t);T.account!==i&&(i=T.account)}catch(T){t?.error?.(`[${i.accountId}] Command reply failed: ${T instanceof Error?T.message:String(T)}`)}return}}if(!n.channelRuntime){t?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let C=new Set,b=g.chatType!=="direct",S=n.channelRuntime.routing.buildAgentSessionKey({peerId:g.peerId,channelId:"lunkr-openclaw",accountId:n.accountId}),T=n.channelRuntime.routing.resolveAgentRoute({cfg:n.cfg,channel:"lunkr-openclaw",peer:{kind:b?"group":"direct",id:g.peerId},accountId:n.accountId}),R=g.workspaceKey||T.sessionKey,q=s.get(R)||0,B=q>0?`${R}:r${q}`:R,N=await em({msg:g,account:i,sessionKey:B,accountId:T.accountId,log:t}),V=n.cfg.session?.store;V&&await n.channelRuntime.session.recordInboundSession({storePath:V,sessionKey:N.SessionKey,ctx:N,onRecordError:oe=>{t?.error?.(`[${i.accountId}] Failed to record session: ${String(oe)}`)}}),await n.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:N,cfg:n.cfg,dispatcherOptions:{deliver:async(oe,pe)=>{let Oe=oe.text??"";if(Oe.trim()){if(pe.kind==="block"){t?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(pe.kind==="final"&&C.has(Oe)){t?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}pe.kind==="final"&&C.add(Oe),t?.info(`[${i.accountId}] Deliver ${pe.kind} reply to ${g.peerId}: ${Oe.substring(0,50)}...`);try{let Ee=await Dc(i,{to:g.peerId,chatType:g.chatType,text:Oe,skipPrefix:k},t);Ee.account!==i&&(i=Ee.account,t?.info(`[${i.accountId}] Session updated after refresh`))}catch(Ee){t?.error?.(`[${i.accountId}] Failed to send reply: ${Ee instanceof Error?Ee.message:String(Ee)}`)}}},onError:(oe,pe)=>{t?.error?.(`[${i.accountId}] AI ${pe.kind} failed: ${String(oe)}`)}}})}catch(C){t?.error?.(`[${i.accountId}] Message dispatch error: ${C instanceof Error?C.message:String(C)}`)}},onReaction:g=>{t?.debug(`[${i.accountId}] Received reaction: ${g.emoji} on ${g.msgId}`)},onError:g=>{t?.error(`[${i.accountId}] Socket error: ${g.message}`)},onDisconnect:async()=>{if(t?.info(`[${i.accountId}] Socket disconnected`),Pe.delete(i.accountId),o.aborted)return;d++;let g=Math.min(u*Math.pow(2,d-1),p);if(t?.warn?.(`[${i.accountId}] Reconnect attempt ${d}, delay ${g/1e3}s...`),await new Promise(y=>setTimeout(y,g)),o.aborted)return;let v=await he(i.accountId);if(v.success&&v.session){if(i=$n(i,v.session),t?.info(`[${i.accountId}] Session refreshed, reconnecting...`),h=Bo(i,f),await h.connect()){t?.info(`[${i.accountId}] Reconnected with refreshed session`),d=0,m=0,r.socket=h,Pe.set(i.accountId,r);return}t?.warn?.(`[${i.accountId}] Reconnect with refreshed session failed`)}else{let y=v.reason||"rejected";if(t?.warn?.(`[${i.accountId}] Session refresh failed (${y}): ${v.error}`),y==="no_credentials"){t?.error?.(`[${i.accountId}] Missing credentials \u2014 giving up reconnect. Fix config and restart.`);return}if(y==="rejected"&&(m++,m>=c)){t?.error?.(`[${i.accountId}] Server rejected ${m} consecutive refreshes \u2014 giving up. Check apiToken and restart.`);return}}if(o.aborted)return;h=Bo(i,f),await h.connect()?(t?.info(`[${i.accountId}] Reconnected with existing session`),d=0,m=0,r.socket=h,Pe.set(i.accountId,r)):(t?.warn?.(`[${i.accountId}] Reconnect attempt ${d} failed, will retry on next disconnect`),o.aborted||f.onDisconnect())},log:t,autoReconnect:!1},h=Bo(i,f),x=await h.connect();if(!x){t?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let g=await he(i.accountId);g.success&&g.session&&(i=$n(i,g.session),t?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),h=Bo(i,f),x=await h.connect())}if(!x)throw new Error(l("api.socket_connect_failed",{accountId:i.accountId}));return t?.info(`[${i.accountId}] Lunkr gateway connected`),r={socket:h,connected:!0,startedAt:Date.now()},Pe.set(i.accountId,r),o.addEventListener("abort",()=>{t?.info(`[${i.accountId}] Stopping Lunkr gateway`),h.disconnect(),Pe.delete(i.accountId)}),new Promise(g=>{let v=()=>{o.removeEventListener("abort",w),g(r)},w=()=>{t?.info(`[${i.accountId}] Gateway abort signal received`),v()};o.addEventListener("abort",w),h.onDisconnect(()=>{t?.info(`[${e.accountId}] Socket disconnected`),Pe.delete(e.accountId),v()})})},stopAccount:async n=>{let{account:e,log:o}=n;o?.info(`[${e.accountId}] Stopping Lunkr gateway`);let t=Pe.get(e.accountId);t&&(t.socket.disconnect(),Pe.delete(e.accountId))},logoutAccount:async n=>{let{account:e,log:o}=n;o?.info(`[${e.accountId}] Logging out Lunkr account`);let t=Pe.get(e.accountId);return t&&(t.socket.disconnect(),Pe.delete(e.accountId)),{cleared:!0,loggedOut:!0}}};oo();U();async function Mc(n,e=5e3){let o=Date.now();if(!n)return{ok:!1,error:l("errors.account_not_configured"),elapsedMs:Date.now()-o};if(!n.sid||!n.lunkrConfig){if(n.hasApiToken){let t=await he(n.accountId);if(t.success&&t.session){let i={...n,sid:t.session.sid,lunkrConfig:t.session};return Mc(i,e)}}return{ok:!1,error:l("errors.session_not_configured"),elapsedMs:Date.now()-o}}try{let t=new F(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":n.sid};for(let a of n.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}t.setCookies(i);let s=await t.checkSessionValid(n.sid);return{ok:s,sessionValid:s,elapsedMs:Date.now()-o}}catch(t){return{ok:!1,error:t instanceof Error?t.message:String(t),elapsedMs:Date.now()-o}}}function nm(n){let e=[];for(let o of n){let t=o.accountId??Se;o.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"config",message:l("status.session_not_configured_fix"),fix:l("status.run_login")}),o.lastError&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"runtime",message:l("status.channel_error",{error:o.lastError})});let i=o.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:t,kind:"auth",message:l("errors.session_expired"),fix:l("status.run_login_refresh")})}return e}function om(n){return vs({configured:n.snapshot.configured,running:n.snapshot.running,lastStartAt:n.snapshot.lastStartAt,lastStopAt:n.snapshot.lastStopAt,lastError:n.snapshot.lastError,probe:n.snapshot.probe,lastProbeAt:n.snapshot.lastProbeAt,tokenSource:n.snapshot.configured?"session":null})}function tm(n){let{account:e,runtime:o,probe:t}=n,i=!!((e.sid||e.hasApiToken)&&e.selfUid);return xs({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:o,probe:t})}var Bc={defaultRuntime:{accountId:Se,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:nm,buildChannelSummary:({snapshot:n})=>om({snapshot:n}),probeAccount:async({account:n,timeoutMs:e})=>Mc(n??null,e??5e3),buildAccountSnapshot:({account:n,runtime:e,probe:o})=>tm({account:n,runtime:e,probe:o}),logSelfId:({account:n,includeChannelPrefix:e})=>{console.log(`Self ID: ${e?"lunkr:":""}${n.selfUid}`)},resolveAccountState:({configured:n,enabled:e})=>n?e?"configured":"disabled":"not configured"};U();async function io(n,e){let o=me(n,e);if(!o)throw new Error(l("errors.account_not_configured"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let s of o.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return t.setCookies(i),{client:t,account:o}}function fi(n){return{kind:"user",id:`lunkr:${n.uid}`,name:n.name??n.uid,email:n.email,avatarUrl:n.avatar}}function Gc(n){return{kind:n.type==="channel"?"channel":"group",id:`lunkr:discussion:${n.gid}`,name:n.name??n.gid,avatarUrl:n.avatar}}async function zc(n,e,o,t){let i=await n.postJson({func:"cim.contacts:search",sid:e,query:{keyword:o,limit:t}});return i.code!=="S_OK"?[]:i.var?.users??[]}async function Kc(n,e){let o=await n.postJson({func:"cim.discussion:list",sid:e});if(o.code!=="S_OK")return[];let t=o.var?.discussions;return t?t.map(i=>({gid:String(i.id??i.gid??""),name:i.name?String(i.name):void 0,memberCount:typeof i.memberCount=="number"?i.memberCount:void 0,avatar:i.avatar?String(i.avatar):void 0,type:i.type??"group"})):[]}async function im(n,e,o,t){let i=await n.postJson({func:"cim.discussion:getMembers",sid:e,query:{gid:o,limit:t}});if(i.code!=="S_OK")return[];let s=i.var?.members;return s?s.map(a=>({uid:String(a.uid??""),name:a.name?String(a.name):void 0,email:a.email?String(a.email):void 0,avatar:a.avatar?String(a.avatar):void 0,department:a.department?String(a.department):void 0})):[]}var Hc={self:async({cfg:n,accountId:e})=>{let o=me(n,e);return o?.selfUid?{kind:"user",id:`lunkr:${o.selfUid}`,name:o.name??o.selfUid}:null},listPeers:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await io(n,e),a=o?.trim()??"",r=t&&t>0?t:20;return a?(await zc(i,s.sid,a,r)).map(fi):[]},listPeersLive:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await io(n,e),a=o?.trim()??"",r=t&&t>0?t:20;return a?(await zc(i,s.sid,a,r)).map(fi):[]},listGroups:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await io(n,e),a=await Kc(i,s.sid),r=a;if(o){let c=o.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return t&&t>0&&(r=r.slice(0,t)),r.map(Gc)},listGroupsLive:async({cfg:n,accountId:e,query:o,limit:t})=>{let{client:i,account:s}=await io(n,e),a=await Kc(i,s.sid),r=a;if(o){let c=o.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return t&&t>0&&(r=r.slice(0,t)),r.map(Gc)},listGroupMembers:async({cfg:n,accountId:e,groupId:o,limit:t})=>{let{client:i,account:s}=await io(n,e),a=o.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await im(i,s.sid,a,t??100)).map(fi)}};function Vc(n){let{cfg:e,accountId:o,groupId:t}=n,i=me(e,o);if(!i||!t)return!1;let s=t.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return!1;let a=i.config.discussions?.[s];if(a?.requireMention!==void 0)return a.requireMention;let r=s.match(/(#[A-Z])$/)?.[1];return r&&i.config.groupTypeRules?.[r]?.policy==="mentionOnly",!0}function sm(n){let{cfg:e,accountId:o,groupId:t}=n,i=me(e,o);if(!i||!t)return;let s=t.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return"Bot discussion - all messages will trigger the bot";let a=i.config.groups??[];if(a.includes(s)||a.includes("*"))return Vc({cfg:e,accountId:o,groupId:t})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function am(n){let{cfg:e,accountId:o,groupId:t}=n;me(e,o)}var gi={resolveRequireMention:Vc,resolveGroupIntroHint:sm,resolveToolPolicy:am};U();var rm={id:"lunkr-openclaw",label:"Lunkr",get selectionLabel(){return l("meta.selection_label")},get detailLabel(){return l("meta.detail_label")},docsPath:"/channels/lunkr",docsLabel:"lunkr",get blurb(){return l("meta.blurb")}},Go={id:"lunkr-openclaw",meta:{...rm,quickstartAllowFrom:!0},capabilities:{chatTypes:["direct","group"],polls:!1,reactions:!0,edit:!0,unsend:!0,reply:!0,effects:!1,groupManagement:!1,threads:!1,media:!0,nativeCommands:!1,blockStreaming:!0},reload:{configPrefixes:["channels.lunkr-openclaw"]},configSchema:hs(Zo),config:Us,security:Os,group:gi,groups:gi,messaging:{normalizeTarget:n=>{let e=n.trim();if(e)return e.replace(/^lunkr:(?:discussion:)?/i,"")},targetResolver:{looksLikeId:n=>{let e=n?.trim();return e?/^#[0-9]+#[UT]$/.test(e)||/^[a-zA-Z0-9_-]+$/.test(e)||/^lunkr:/i.test(e):!1},hint:"<uid|gid>"}},directory:Hc,outbound:kc,status:Bc,gateway:Nc,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:n=>n.replace(/^lunkr:/i,"")}};mn();zo();fn();import*as ki from"readline";import*as Zc from"readline";mn();U();var yi=class extends Error{constructor(o,t,i){super(o);this.sid=t;this.authType=i;this.name="OtpRequiredError"}};var vi="https://lunkr.coremail.cn",bi="/lunkr/s/json",$x=300*1e3;function el(n){let e={};for(let o of n.split(";")){let[t,i]=o.trim().split("=");t&&i&&(e[t]=i)}return e}async function nl(n,e){try{let o=e?.verbose??!1,t=e?.debug??!1;(o||t)&&console.log(`Discovering server for: ${n.email}`);let[i,s]=await Mn.discoverAvailableServer(n.email);(o||t)&&(console.log(`Found server: ${i.apiUrl}`),console.log(`Auth type: ${s.authType}`),console.log(`RSA sid: ${s.sid}`));let a=new F(i.baseUrl,{apiPath:i.apiPath}),r=ut({device_uuid:e?.deviceUuid||n.deviceUuid,device_name:e?.deviceName||n.deviceName});return t&&console.log(`Device info: ${JSON.stringify(r,null,2)}`),{success:!0,session:await lm(a,n.email,n.password,s,r,i,o,t)}}catch(o){return o instanceof yi?{success:!1,requiresOtp:!0,otpSid:o.sid,error:o.message}:{success:!1,error:o instanceof Error?o.message:String(o)}}}async function lm(n,e,o,t,i,s,a,r=!1){let c={type:t.authType,e:t.rsaE,n:t.rsaN},u=c.type;r&&(console.log(`[Login] authType: ${u}`),console.log(`[Login] RSA e: ${c.e?c.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${c.n?c.n.substring(0,40)+"...":"(empty)"}`));let p;u&&u.toLowerCase()==="rsa"&&c?.e&&c?.n?((a||r)&&console.log("Encrypting password with RSA"),p=nt(o,c.e,c.n),r&&console.log(`[Login] Encrypted password length: ${p.length}`)):(r&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${u})`),p=o);let d=Math.floor(Date.now()/1e3).toString(),m=pt(i.uuid,e,i.friendlyName),f=dt(m),h=mt(m,d,f,"");r&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${h.substring(0,20)}...`));let x={uid:e,password:p,authType:u,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(r){let b={...x},S=String(b.password||"");b.password=S.length>10?S.substring(0,20)+`...(length: ${S.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(b,null,2)}`)}let g=await n.postJson({func:"user:login",sid:t.sid,payload:x,debug:r||a});r&&console.log(`[Login] Response: ${JSON.stringify(g,null,2)}`);let v=g.code,w=g.var||{};if(v==="FA_NEED_VERIFY_CODE"||v==="FA_USER_IN_GRAYLIST"){let b=s.uri||`${s.baseUrl}/coremail/`;throw new j(l("auth.captcha_required",{code:v,uri:b}))}if(v==="FA_NEED_DYNAMIC_PWD"){console.log(`
|
|
18
|
-
${
|
|
19
|
-
|
|
20
|
-
[
|
|
12
|
+
`,typeof t=="function"&&t(null,r),r}});var mc=A(dc=>{var qd="\x1B[47m",Nd="\x1B[40m",mi="\x1B[37m",fi="\x1B[30m",hn="\x1B[0m",Md=qd+fi,Bd=Nd+mi,Gd=function(n,e,t){return{"00":hn+" "+n,"01":hn+e+"\u2584"+n,"02":hn+t+"\u2584"+n,10:hn+e+"\u2580"+n,11:" ",12:"\u2584",20:hn+t+"\u2580"+n,21:"\u2580",22:"\u2588"}},uc=function(n,e,t,o){let i=e+1;if(t>=i||o>=i||o<-1||t<-1)return"0";if(t>=e||o>=e||o<0||t<0)return"1";let s=o*e+t;return n[s]?"2":"1"},pc=function(n,e,t,o){return uc(n,e,t,o)+uc(n,e,t,o+1)};dc.render=function(n,e,t){let o=n.modules.size,i=n.modules.data,s=!!(e&&e.inverse),a=e&&e.inverse?Bd:Md,u=Gd(a,s?fi:mi,s?mi:fi),p=hn+`
|
|
13
|
+
`+a,d=a;for(let m=-1;m<o+1;m+=2){for(let f=-1;f<o;f++)d+=u[pc(i,o,f,m)];d+=u[pc(i,o,o,m)]+p}return d+=hn,typeof t=="function"&&t(null,d),d}});var gc=A(fc=>{var zd=lc(),Kd=mc();fc.render=function(n,e,t){return e&&e.small?Kd.render(n,e,t):zd.render(n,e,t)}});var hi=A(xc=>{var Hd=at();function hc(n,e){let t=n.a/255,o=e+'="'+n.hex+'"';return t<1?o+" "+e+'-opacity="'+t.toFixed(2).slice(1)+'"':o}function gi(n,e,t){let o=n+e;return typeof t<"u"&&(o+=" "+t),o}function Vd(n,e,t){let o="",i=0,s=!1,a=0;for(let r=0;r<n.length;r++){let c=Math.floor(r%e),u=Math.floor(r/e);!c&&!s&&(s=!0),n[r]?(a++,r>0&&c>0&&n[r-1]||(o+=s?gi("M",c+t,.5+u+t):gi("m",i,0),i=0,s=!1),c+1<e&&n[r+1]||(o+=gi("h",a),a=0)):i++}return o}xc.render=function(e,t,o){let i=Hd.getOptions(t),s=e.modules.size,a=e.modules.data,r=s+i.margin*2,c=i.color.light.a?"<path "+hc(i.color.light,"fill")+' d="M0 0h'+r+"v"+r+'H0z"/>':"",u="<path "+hc(i.color.dark,"stroke")+' d="'+Vd(a,s,i.margin)+'"/>',p='viewBox="0 0 '+r+" "+r+'"',m='<svg xmlns="http://www.w3.org/2000/svg" '+(i.width?'width="'+i.width+'" height="'+i.width+'" ':"")+p+' shape-rendering="crispEdges">'+c+u+`</svg>
|
|
14
|
+
`;return typeof o=="function"&&o(null,m),m}});var vc=A(Bt=>{var Wd=hi();Bt.render=Wd.render;Bt.renderToFile=function(e,t,o,i){typeof i>"u"&&(i=o,o=void 0);let s=z("fs"),r='<?xml version="1.0" encoding="utf-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">'+Bt.render(t,o);s.writeFile(e,r,i)}});var bc=A(Gt=>{var xi=at();function Jd(n,e,t){n.clearRect(0,0,e.width,e.height),e.style||(e.style={}),e.height=t,e.width=t,e.style.height=t+"px",e.style.width=t+"px"}function Yd(){try{return document.createElement("canvas")}catch{throw new Error("You need to specify a canvas element")}}Gt.render=function(e,t,o){let i=o,s=t;typeof i>"u"&&(!t||!t.getContext)&&(i=t,t=void 0),t||(s=Yd()),i=xi.getOptions(i);let a=xi.getImageWidth(e.modules.size,i),r=s.getContext("2d"),c=r.createImageData(a,a);return xi.qrToImageData(c.data,e,i),Jd(r,s,a),r.putImageData(c,0,0),s};Gt.renderToDataURL=function(e,t,o){let i=o;typeof i>"u"&&(!t||!t.getContext)&&(i=t,t=void 0),i||(i={});let s=Gt.render(e,t,i),a=i.type||"image/png",r=i.rendererOpts||{};return s.toDataURL(a,r.quality)}});var kc=A(rt=>{var Qd=Uo(),vi=Yo(),yc=bc(),Xd=hi();function bi(n,e,t,o,i){let s=[].slice.call(arguments,1),a=s.length,r=typeof s[a-1]=="function";if(!r&&!Qd())throw new Error("Callback required as last argument");if(r){if(a<2)throw new Error("Too few arguments provided");a===2?(i=t,t=e,e=o=void 0):a===3&&(e.getContext&&typeof i>"u"?(i=o,o=void 0):(i=o,o=t,t=e,e=void 0))}else{if(a<1)throw new Error("Too few arguments provided");return a===1?(t=e,e=o=void 0):a===2&&!e.getContext&&(o=t,t=e,e=void 0),new Promise(function(c,u){try{let p=vi.create(t,o);c(n(p,e,o))}catch(p){u(p)}})}try{let c=vi.create(t,o);i(null,n(c,e,o))}catch(c){i(c)}}rt.create=vi.create;rt.toCanvas=bi.bind(null,yc.render);rt.toDataURL=bi.bind(null,yc.renderToDataURL);rt.toString=bi.bind(null,function(n,e,t){return Xd.render(n,t)})});var Sc=A(Ze=>{var wc=Uo(),yi=Yo(),Zd=ac(),Cc=rc(),em=gc(),_c=vc();function ct(n,e,t){if(typeof n>"u")throw new Error("String required as first argument");if(typeof t>"u"&&(t=e,e={}),typeof t!="function")if(wc())e=t||{},t=null;else throw new Error("Callback required as last argument");return{opts:e,cb:t}}function nm(n){return n.slice((n.lastIndexOf(".")-1>>>0)+2).toLowerCase()}function zt(n){switch(n){case"svg":return _c;case"txt":case"utf8":return Cc;case"png":case"image/png":default:return Zd}}function tm(n){switch(n){case"svg":return _c;case"terminal":return em;case"utf8":default:return Cc}}function lt(n,e,t){if(!t.cb)return new Promise(function(o,i){try{let s=yi.create(e,t.opts);return n(s,t.opts,function(a,r){return a?i(a):o(r)})}catch(s){i(s)}});try{let o=yi.create(e,t.opts);return n(o,t.opts,t.cb)}catch(o){t.cb(o)}}Ze.create=yi.create;Ze.toCanvas=kc().toCanvas;Ze.toString=function(e,t,o){let i=ct(e,t,o),s=i.opts?i.opts.type:void 0,a=tm(s);return lt(a.render,e,i)};Ze.toDataURL=function(e,t,o){let i=ct(e,t,o),s=zt(i.opts.type);return lt(s.renderToDataURL,e,i)};Ze.toBuffer=function(e,t,o){let i=ct(e,t,o),s=zt(i.opts.type);return lt(s.renderToBuffer,e,i)};Ze.toFile=function(e,t,o,i){if(typeof e!="string"||!(typeof t=="string"||typeof t=="object"))throw new Error("Invalid argument");if(arguments.length<3&&!wc())throw new Error("Too few arguments provided");let s=ct(t,o,i),a=s.opts.type||nm(e),c=zt(a).renderToFile.bind(null,e);return lt(c,t,s)};Ze.toFileStream=function(e,t,o){if(arguments.length<2)throw new Error("Too few arguments provided");let i=ct(t,o,e.emit.bind(e,"error")),a=zt("png").renderToFileStream.bind(null,e);lt(a,t,i)}});var Rc=A((rh,Ac)=>{Ac.exports=Sc()});import*as Ht from"https";import*as Pc from"crypto";import{WebSocket as Lc}from"ws";import{v4 as Ic}from"uuid";async function Kt(n,e,t,o){return new Promise((i,s)=>{let a=JSON.stringify(t),r=`${n}?func=${e}`;o?.sid&&(r+=`&sid=${encodeURIComponent(o.sid)}`);let c=o?.baseUrl||ut,u={...om,"Content-Length":Buffer.byteLength(a)};o?.cookies&&Object.keys(o.cookies).length>0&&(u.Cookie=Object.entries(o.cookies).map(([m,f])=>`${m}=${f}`).join("; "));let d=Ht.request({hostname:c,port:443,path:r,method:"POST",headers:u},m=>{let f="",h={},x=m.headers["set-cookie"];if(x)for(let v of x){let g=v.match(/^([^=]+)=([^;]+)/);g&&(h[g[1].trim()]=g[2].trim())}m.on("data",v=>f+=v),m.on("end",()=>{try{i({data:JSON.parse(f),cookies:h})}catch{s(new Error(`Invalid JSON: ${f}`))}})});d.on("error",s),d.write(a),d.end()})}async function im(n){return new Promise((e,t)=>{Ht.get(n,o=>{let i="";o.on("data",s=>i+=s),o.on("end",()=>e(i))}).on("error",t)})}async function ki(n={}){let{debug:e=!1,timeout:t=12e4,device:o}=n,i=s=>{e&&console.log(`[QR Login] ${s}`)};try{i("[1] Generating temporary session...");let s=await Kt("/lunkr/s/json","cim.user:genTempSession",{type:"qrLogin"});if(s.data.code!=="S_OK")return{success:!1,error:`genTempSession failed: ${s.data.code} - ${s.data.msg||s.data.reason}`};let a=s.data.var?.sid;if(!a)return{success:!1,error:"No sid in response"};i(`Temporary session ID: ${a}`),i("[2] Socket.IO HTTP handshake...");let r=`https://${ut}/socket.io/1/?t=${Date.now()}&EIO=3&transport=polling`,c=await im(r),u=c.indexOf('0{"sid"'),p=u>=0?c.substring(u):c;if(!p.startsWith("0{"))return{success:!1,error:"Handshake format error"};let d=JSON.parse(p.substring(1)),m=d.sid,f=d.pingInterval??25e3;i(`eioSid: ${m}, pingInterval: ${f}`),i("[3] WebSocket connection...");let h=`wss://${ut}/socket.io/1/websocket/?EIO=3&transport=websocket&sid=${encodeURIComponent(m)}`;return new Promise(x=>{let v=setTimeout(()=>{g.close(),x({success:!1,error:"Timeout waiting for QR scan"})},t),g=new Lc(h,{headers:{Host:ut,Origin:`https://${ut}`,"User-Agent":"Mozilla/5.0"}}),k=!1,w;g.on("open",()=>{i("WebSocket connected, sending 2probe..."),g.send("2probe")}),g.on("message",b=>{let S=b.toString();if(i(`Received: ${S.substring(0,100)}`),S.includes("3probe")){i("Received 3probe, sending 5 and auth"),g.send("5");let y={clientId:`webmail:${a}`,sid:a,msg_v:100,uuid:Ic(),TmpSes:1};g.send(`42["auth",${JSON.stringify(y)}]`);let C=`https://www.coremail.cn/app/poster.html?action=qrLogin&sid=${encodeURIComponent(a)}`;console.log(""),console.log(` ${l("login.qrcode_title")}`),console.log(""),Uc.toString(C,{type:"terminal",small:!0},(I,E)=>{I?console.error("QR code generation failed:",I.message):console.log(E)}),console.log(` ${l("login.qrcode_scan_prompt")}`),console.log(""),e&&console.log(`QR URL: ${C}
|
|
15
|
+
`),w=setInterval(()=>{g.readyState===Lc.OPEN&&g.send("2")},f)}if(S.startsWith("42"))try{let y=JSON.parse(S.substring(2)),C=y[0],I=y[1];if(C==="ready"&&!k){k=!0,i("Auth ready, subscribing to scan events...");let E=`/onstat/mail/${a}/op_app_scanqrcode`;g.send(`42["subscribe",{"topic":"${E}"}]`)}if(C==="message"&&I?.payload){let E=typeof I.payload=="string"?JSON.parse(I.payload):I.payload;if(i(`Scan status: ${E.status}`),E.status==="verify"&&console.log(l("login.qrcode_scanned")),E.status==="auth"){i(`Confirmed: ${E.user?.email}`);let J=E.user?.email,L={uid:J,authSid:a,authToken:E.token};i("Calling checkVersionAndLogin..."),Kt("/lunkr/s/json","cim.user:checkVersionAndLogin",L).then(F=>{let O=F.data,G=F.cookies;if(i(`Login result: ${JSON.stringify(O)}`),O.code==="S_OK"&&O.var?.sid){let M=O.var.sid,ie=J,$e=O.var.self_uid;i(`Login successful, sid: ${M}, email: ${ie}, selfUid: ${$e}`),i("Calling getApiToken...");let ft=o||{device_uuid:Ic(),device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"};Kt("/lunkr/s/json","cim.user:getApiToken",ft,{sid:M,baseUrl:"betaweb.lunkr.cn",cookies:G}).then(on=>{let Gn=on.data;i(`Token result: ${JSON.stringify(Gn)}`),clearTimeout(v),clearInterval(w),g.close(),x({success:!0,apiToken:Gn.var?.api_token,email:ie,selfUid:$e,deviceUuid:ft.device_uuid})}).catch(on=>{console.error(`getApiToken failed: ${on.message}`),clearTimeout(v),clearInterval(w),g.close(),x({success:!1,error:`getApiToken failed: ${on.message}`})})}else clearTimeout(v),clearInterval(w),g.close(),x({success:!1,error:`Login failed: ${JSON.stringify(O)}`})}).catch(F=>{clearTimeout(v),clearInterval(w),g.close(),x({success:!1,error:F.message})})}}}catch(y){i(`Event parse failed: ${y.message}`)}S==="2"&&g.send("3")}),g.on("error",b=>{i(`WebSocket error: ${b.message}`),clearTimeout(v),clearInterval(w),x({success:!1,error:b.message})}),g.on("close",()=>{i("WebSocket closed"),clearTimeout(v),clearInterval(w)})})}catch(s){return{success:!1,error:s.message}}}async function Ue(n,e,t,o={}){let{debug:i=!1}=o,s=a=>{i&&console.log(`[API Token Login] ${a}`)};try{s("Calling getLunkrSid..."),s(`email: ${n}`),s(`deviceUuid: ${t}`);let a=Date.now().toString(),r=Pc.createHash("sha256").update(`${a}:${t}:${e}`).digest("base64");s(`timestamp: ${a}`),s(`token_hash: ${r}`);let c=await Kt("/lunkr/s/json","cim.user:getLunkrSid",{email:n,timestamp:a,device_uuid:t,token_hash:r,scope:"p2p"},{baseUrl:"betaweb.lunkr.cn"});if(s(`Result: ${JSON.stringify(c.data)}`),c.data.code==="S_OK"&&c.data.var?.sid){let u=c.data.var.cookie?`Cim=${c.data.var.cookie}`:c.cookies?.Cim?`Cim=${c.cookies.Cim}`:void 0;return{success:!0,sid:c.data.var.sid,email:n,selfUid:c.data.var.uid,cookie:u}}else return c.data.code==="FA_REQUEST_EXPIRED"?{success:!1,error:l("login.clock_error")}:{success:!1,error:`getLunkrSid failed: ${c.data.code} - ${c.data.msg||"Unknown error"}`}}catch(a){return{success:!1,error:a.message}}}var Uc,ut,om,Fn=ce(()=>{Uc=ro(Rc(),1);T();ut="lunkr.coremail.cn",om={Accept:"text/x-json","Accept-Language":"zh-CN,zh;q=0.9,en;q=0.8","Cache-Control":"no-cache",Connection:"keep-alive","Content-Type":"text/x-json; charset=UTF-8"}});import*as Wt from"path";function Tc(n,e){return l("message.prefix",{sender:n||"Unknown",bot:e||"Bot"})}function qe(n,e,t,o=!1){return o?n:Tc(e,t)+n}function wi(n){return sm.test(n.trim())}function Ci(n){return am.test(n.trim())}function Vt(n){return rm.test(n.trim())}function _i(n){return cm.test(n.trim())}function Te(n){let e=n.trim();return wi(e)||Ci(e)||Vt(e)||_i(e)}function Jt(n){let e=n.trim();return wi(e)||_i(e)&&!Vt(e)?"user":Ci(e)||Vt(e)?"group":"unknown"}function Si(n){let e=n.replace(/[<>:"/\\|?*\x00-\x1f]/g,"_").replace(/\.\./g,"_").replace(/^\.+/,"_").replace(/\.+$/,"_").trim();if(e.length>200){let t=Wt.extname(e);e=Wt.basename(e,t).substring(0,200-t.length)+t}return e||"download"}function me(n){if(!n)return"";let e;if(typeof n=="string"?e=new Date(n):e=new Date(n<=1e10?n*1e3:n),isNaN(e.getTime()))return"";try{return e.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit"})}catch{return""}}function xn(n){if(n==null)return"";let e=["B","KB","MB","GB"],t=n,o=0;for(;t>=1024&&o<e.length-1;)t/=1024,o++;return`${t.toFixed(1)} ${e[o]}`}function lm(n){let e=0;for(let t of n){let o=t.codePointAt(0);e+=o>=11904&&o<=40959||o>=63744&&o<=64255||o>=65072&&o<=65103||o>=65280&&o<=65376||o>=131072&&o<=195103?2:1}return e}function P(n,e){let t=Math.max(0,e-lm(n));return n+" ".repeat(t)}var sm,am,rm,cm,Ne=ce(()=>{T();sm=/^#\d+#U$/,am=/^#\d+#T$/,rm=/^t\.\./i,cm=/^[^\s@]+@[^\s@]+\.[^\s@]+$/});function en(n){return um.includes(n)}function Oc(n){let e=["ETIMEDOUT","ECONNREFUSED","ECONNRESET","ENOTFOUND","EAI_AGAIN","EHOSTUNREACH","ENETUNREACH","EPIPE","socket hang up","network","timeout","fetch failed"],t=n.toLowerCase();return e.some(o=>t.includes(o.toLowerCase()))?"network":"rejected"}async function ve(n,e){let t=R(),o=t.accounts?.find(c=>c.accountId===n);if(!o)return{success:!1,error:`Account not found: ${n}`,reason:"no_credentials"};if(!o.apiToken)return{success:!1,error:"No apiToken available for refresh",reason:"no_credentials"};let i=e||t.device_uuid;if(!i)return{success:!1,error:"No device UUID available",reason:"no_credentials"};let s=o.email||n,a;try{a=await Ue(s,o.apiToken,i)}catch(c){let u=c instanceof Error?c.message:String(c);return{success:!1,error:u,reason:Oc(u)}}if(a.success&&a.sid&&a.cookie){let c={sid:a.sid,cookie:a.cookie,baseUrl:o.session?.baseUrl||"https://lunkr.coremail.cn",apiPath:o.session?.apiPath||"/lunkr/s/json",selfUid:a.selfUid||o.session?.selfUid||"",senderName:o.session?.senderName};if(!c.senderName)try{let p=await pm(c);p&&(c.senderName=p)}catch{}let u=t.accounts?.findIndex(p=>p.accountId===n)??-1;return u>=0&&t.accounts&&(t.accounts[u].session=c,$(t)),{success:!0,session:c}}let r=a.error||"Unknown error during token login";return{success:!1,error:r,reason:Oc(r)}}async function pm(n){let e=new j(n.baseUrl,{apiPath:n.apiPath}),t={};for(let i of n.cookie.split(";")){let s=i.trim();if(s.includes("=")){let a=s.indexOf("=");t[s.substring(0,a).trim()]=s.substring(a+1).trim()}}e.setCookies(t);let o=await e.postJson({func:"cim.common:getCimPrefAttr",sid:n.sid,payload:{return_field:"nickname,true_name,name"}});if(o.code==="S_OK"&&o.var){let i=o.var,s=i.nickname||i.true_name||i.name;return s?String(s).trim():null}return null}var um,Dn=ce(()=>{te();Fn();ln();um=["FA_SESSION_EXPIRED","FA_AUTH_FAILED","FA_NO_SESSION","FA_SID_INVALID","FA_INVALID_SESSION"]});import*as fe from"fs";import*as vn from"path";import*as Pi from"os";function wm(n){let e={...n,_clients:new Map,_lastValidation:new Map,_validationInterval:3e5};return km=e,e}function Wc(n){wm(n)}function Yc(n,e){Jc.set(n,{...e,lastAccess:Date.now()})}function Qt(){let n;for(let[e,t]of Jc)(!n||t.lastAccess>n.context.lastAccess)&&(n={key:e,context:t});if(n)return{workspaceKey:n.key,workspaceDir:n.context.workspaceDir,filesDir:n.context.filesDir,accountId:n.context.accountId}}function Xc(n,e,t){if(!(!n||t.length===0)&&(Me.set(n,{mid:n,time:e,attachments:t.map(o=>({fileId:o.fileId,uid:o.uid,title:o.title,contentType:o.contentType||null,fileSize:o.fileSize||null,type:o.type||null,inline:o.inline||!1})),cachedAt:Date.now()}),Me.size>Ii)){let o=Date.now();for(let[i,s]of Me)o-s.cachedAt>Qc&&Me.delete(i);if(Me.size>Ii){let i=[...Me.entries()].sort((s,a)=>s[1].cachedAt-a[1].cachedAt);for(let s=0;s<i.length-Ii/2;s++)Me.delete(i[s][0])}}}function Zc(n){let e=Me.get(n);return e?Date.now()-e.cachedAt>Qc?(Me.delete(n),null):e.attachments:null}function Ui(){return vn.join(Pi.homedir(),".lunkr")}function Xt(n){return n.replace(/#/g,"").replace(/:/g,"_")}function el(n){let e=Xt(n),t=vn.join(Ui(),"session-workspaces",e);return fe.existsSync(t)||fe.mkdirSync(t,{recursive:!0}),t}function nl(n){let e=Xt(n),t=vn.join(Ui(),"session-workspaces",e);if(fe.existsSync(t))for(let o of fe.readdirSync(t))fe.rmSync(vn.join(t,o),{recursive:!0,force:!0})}function tl(n){let e=Xt(n),t=vn.join(Ui(),"session-files",e);return fe.existsSync(t)||fe.mkdirSync(t,{recursive:!0}),t}function ol(n){let e=Xt(n),t=vn.join(Pi.homedir(),".openclaw","media","lunkr",e);return fe.existsSync(t)||fe.mkdirSync(t,{recursive:!0}),t}var km,Jc,Me,Qc,Ii,bn=ce(()=>{te();km=null;Jc=new Map;Me=new Map,Qc=1440*60*1e3,Ii=1e3});import*as pe from"fs";import*as _e from"path";import*as bl from"os";import*as yl from"crypto";function B(n){let e=re.fromConfig(n);if(!e)throw new Error(l("api.no_account"));return e}var Ei,re,tn=ce(()=>{Ei=ro(So(),1);T();ln();cn();Pt();Fn();Ne();te();bn();re=class n{client;sid;session;botName;senderName;role;cookies;constructor(e){this.session=e.session,this.sid=e.session.sid,this.botName=e.botName||"Bot",this.senderName=e.senderName||"",this.role=e.role||"standard",this.client=new j(e.session.baseUrl,{apiPath:e.session.apiPath}),this.cookies={};for(let t of e.session.cookie.split(";")){let o=t.trim();if(o.includes("=")){let i=o.indexOf("="),s=o.substring(0,i).trim(),a=o.substring(i+1).trim();this.cookies[s]=a}}this.client.setCookies(this.cookies)}static fromConfig(e){let t=R(),o=e?t.accounts?.find(i=>i.accountId===e&&i.session):sn(t);return o?.session?new n({session:o.session,botName:t.bot_name,senderName:o.session.senderName||"",role:o.role}):null}static fromAccount(e,t){if(!e.session)return null;let o=t||R();return new n({session:e.session,botName:o.bot_name,senderName:e.session.senderName||"",role:e.role})}async checkSession(){try{if((await this.client.postJson({func:"cim.common:getOrgInfo",sid:this.sid})).code==="S_OK")return!0}catch{}let e=await this.tryApiTokenRelogin();return e||(console.error(""),console.error(l("api.session_expired_relogin")),console.error(l("api.session_expired_qrcode")),console.error(l("api.session_expired_password"))),e}async tryApiTokenRelogin(){let e=R(),t=e.accounts.find(a=>a.session?.selfUid===this.session.selfUid);if(!t?.apiToken)return!1;let o=t.email||t.accountId,i=await Ue(o,t.apiToken,e.device_uuid);if(!i.success||!i.sid||!i.cookie)return!1;t.session={...t.session,sid:i.sid,cookie:i.cookie,selfUid:i.selfUid||t.session.selfUid},$(e),this.sid=i.sid,this.session=t.session;let s={};for(let a of i.cookie.split(";")){let r=a.trim();if(r.includes("=")){let c=r.indexOf("="),u=r.substring(0,c).trim(),p=r.substring(c+1).trim();s[u]=p}}return this.cookies=s,this.client.setCookies(this.cookies),!0}getSelfUid(){return this.session.selfUid}async callApi(e){return this.client.postJson({func:e.func,sid:this.sid,query:e.query,payload:e.payload})}async fetchSenderName(){try{let e=await this.client.postJson({func:"cim.common:getCimPrefAttr",sid:this.sid,payload:{return_field:"nickname,true_name,name"}});if(e.code==="S_OK"&&e.var){let t=e.var,o=t.nickname||t.true_name||t.name;return o?String(o).trim():null}}catch{}return null}async ensureSenderName(){if(this.senderName)return this.senderName;let e=await this.fetchSenderName();if(e)return this.senderName=e,e;let t=this.session.selfUid;return t&&t.includes("@")?t.split("@")[0]:t||"Unknown"}async searchContacts(e,t=20){let o=[],i=new Set;try{let s=await this.client.postJson({func:"cim.pab:getRecentContacts",sid:this.sid});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||""),u=String(r.email||"").toLowerCase(),p=String(r.true_name||"").toLowerCase();if(u.includes(e.toLowerCase())||p.includes(e.toLowerCase())){if(i.has(c))continue;i.add(c),r.email&&i.add(String(r.email)),o.push({uid:c,email:r.email,trueName:r.true_name,name:r.name})}}}catch{}try{let s=await this.client.postJson({func:"cim.container:searchContacts",sid:this.sid,payload:{keyword:e,windowSize:t}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.uid||"");i.has(c)||(i.add(c),r.email&&i.add(String(r.email)),o.push({uid:c,email:r.email,trueName:r.true_name,name:r.name}))}}catch{}try{let s=await this.client.postJson({func:"oab:autoMatch",sid:this.sid,payload:{keyword:e,limit:t}});if(s.code==="S_OK"&&Array.isArray(s.var))for(let a of s.var){if(typeof a!="object"||!a)continue;let r=a,c=String(r.email||"");!c||i.has(c)||(i.add(c),o.push({uid:c,email:c,trueName:r.true_name,name:r.true_name}))}}catch{}return o.slice(0,t)}async searchGroups(e,t=20){try{let o=await this.client.postJson({func:"cim.group:search",sid:this.sid,payload:{keyword:e,limit:t,return_field:"uid,email,true_name,name,description"}});if(o.code==="S_OK"&&Array.isArray(o.var))return o.var.map(i=>({uid:String(i.uid||""),name:i.name,trueName:i.true_name,email:i.email,description:i.description}))}catch{}return[]}async resolveRecipient(e){let t=e.trim();if(Te(t)){let s=Jt(t);return{uid:t,type:s==="group"?"group":"user",name:t}}let o=await this.searchContacts(t,5);if(o.length>0){let s=o[0];return{uid:s.uid,type:"user",name:s.trueName||s.name||t,email:s.email||void 0}}let i=await this.searchGroups(t,5);if(i.length>0){let s=i[0];return{uid:s.uid,type:"group",name:s.name||s.trueName||t,email:s.email||void 0}}throw new Error(l("api.recipient_not_found",{name:t}))}async resolveRecipientInteractive(e,t){let o=e.trim();if(Te(o)){let a=Jt(o);return{uid:o,type:a==="group"?"group":"user",name:o}}let i=await this.searchContacts(o,10);if(i.length>0){let a=i.filter(u=>u.name===o||u.trueName===o);if(a.length===1){let u=a[0];return{uid:u.uid,type:"user",name:u.trueName||u.name||o,email:u.email||void 0}}let r=0;if(i.length>1&&t){let u=i.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"}));r=t(u)}r<0&&(r=0);let c=i[r];return{uid:c.uid,type:"user",name:c.trueName||c.name||o,email:c.email||void 0}}let s=await this.searchGroups(o,10);if(s.length>0){let a=s.filter(u=>u.name===o||u.trueName===o);if(a.length===1){let u=a[0];return{uid:u.uid,type:"group",name:u.name||u.trueName||o,email:u.email||void 0}}let r=0;if(s.length>1&&t){let u=s.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}));r=t(u)}r<0&&(r=0);let c=s[r];return{uid:c.uid,type:"group",name:c.name||c.trueName||o,email:c.email||void 0}}throw new Error(l("api.recipient_not_found",{name:o}))}async listMessages(e,t={}){let{limit:o=20,latestFirst:i=!0}=t,s={limit:o,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"};e.type==="user"?(s.uid=this.session.selfUid,s.filter={chatWithAddress:e.uid}):s.uid=e.uid,i&&(s.order="date",s.desc=!0,s.listOrder="desc");let r=await this.client.postJson({func:"cim.msg:list",sid:this.sid,payload:s});if(r.code!=="S_OK"||!Array.isArray(r.var))return[];let c=[];for(let d of r.var){if(typeof d!="object"||!d)continue;let m=d,f=m.data,h=f&&typeof f=="object"&&!Array.isArray(f)&&Object.keys(f).length>0?f:m,x=h.from||{},v=[],g=m.attachments||h.attachments;if(Array.isArray(g))for(let b of g){let S=String(b.uid||"");v.push({file_id:String(b.fileId||b.file_id||""),uid:S||null,title:String(b.title||b.filename||"")||null,content_type:b.content_type||b.ctype,file_size:Number(b.file_size||b.size||0)||null,type:Number(b.t||b.type||0)||null,inline:b.inline===!0})}let k=String(h.mid||h.uid||""),w=v;if(v.length===0){let b=Zc(k);b&&(w=b.map(S=>({file_id:S.fileId,uid:S.uid,title:S.title,content_type:S.contentType,file_size:S.fileSize,type:S.type,inline:S.inline})))}c.push({mid:k,time:me(h.time),subject:h.subject||h.content||"",content:h.content,senderUid:x.uid||h.sender_uid||h.fromUid,senderName:x.true_name||x.email||h.sender_name||h.fromName,senderEmail:x.email||h.sender_email||h.fromEmail,attachments:w})}let u=5,p=c.filter(d=>d.attachments.length===0&&d.mid);for(let d=0;d<p.length;d+=u)await Promise.all(p.slice(d,d+u).map(async m=>{let f=await this.getMessage(m.mid);f&&f.attachments.length>0&&(m.attachments=f.attachments)}));return c}async getMessage(e){let t=await this.client.postJson({func:"cim.msg:getInfo",sid:this.sid,payload:{mid:e,export_field:"rf,cim,data,mail,attachments,flags,flags_detail,template,card,action,refer"}});if(t.code!=="S_OK"||!t.var)return null;let o=t.var,i=o.data||o,s=i.from||{},a=[],r=i.attachments;if(Array.isArray(r))for(let c of r){let u=String(c.uid||"");a.push({file_id:String(c.fileId||c.file_id||""),uid:u||null,title:String(c.title||c.filename||"")||null,content_type:c.content_type||c.ctype,file_size:Number(c.file_size||c.size||0)||null,type:Number(c.t||c.type||0)||null,inline:c.inline===!0})}return{mid:String(i.mid||i.uid||e),time:me(i.time),subject:i.subject||i.content||"",content:i.content,sender_uid:s.uid||i.sender_uid||i.fromUid,sender_name:s.true_name||s.email||i.sender_name||i.fromName,sender_email:s.email||i.sender_email||i.fromEmail,source_id:i.gid,source_name:null,attachments:a,raw:o}}async sendMessage(e,t,o={}){let i=o.botName||this.botName,s=o.senderName||await this.ensureSenderName(),a=o.skipPrefix??(this.role==="agent"||this.role==="standard+agent"),r=qe(t,s,i,a),c=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:r,type:"text"}});if(c.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:c.code,msg:c.msg||"Unknown error"}));let u=c.var?.[0];return{mid:String(u?.mid||""),to:e.uid,type:e.type}}async sendFile(e,t,o={}){let i=o.botName||this.botName,s=o.senderName||await this.ensureSenderName(),a=o.skipPrefix??(this.role==="agent"||this.role==="standard+agent"),r=qe(o.content||"",s,i,a),c=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,u=yl.randomUUID(),d=e.type==="user"?this.session.selfUid:e.uid,m=[];for(let x of t){let v=await this.uploadFileWithFlow(x,d,c);m.push({fileId:v.fileId,uid:v.fileUid})}let f=await this.client.postJson({func:"cim.msg:reply",sid:this.sid,payload:{uid:e.uid,content:r,type:"text",clientMid:u,attachments:m}});if(f.code!=="S_OK")throw new Error(l("api.send_reply_failed",{code:f.code,msg:f.msg||"Unknown error"}));let h=f.var?.[0];return{mid:String(h?.mid||""),to:e.uid,files:t}}async uploadFile(e,t,o){let i=_e.resolve(e),s=_e.basename(i);if(!pe.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=pe.statSync(i),r=Ei.lookup(i)||"application/octet-stream",c=pe.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:o,fileName:s,uid:t,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(o)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(t)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([y,C])=>`${y}=${C}`).join("; ")},x=await rn(m,c,h,6e4),v=x.headers["set-cookie"];if(v)for(let y of v.split(",")){let C=y.match(/^([^=]+)=([^;]+)/);C&&(this.cookies[C[1].trim()]=C[2].trim())}let g;try{g=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(g.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:g.code}));let k=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:o,fileName:s,item:"fileName",attachmentId:d,uid:t}});if(k.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:k.code}));let w=k.var,b=w?.fileId,S=w?.uid;if(!b)throw new Error(l("api.upload_no_file_id"));return{fileId:b,fileUid:S||"",fileName:s}}async uploadFileWithFlow(e,t,o){let i=_e.resolve(e),s=_e.basename(i);if(!pe.existsSync(i))throw new Error(l("errors.file_not_found",{path:e}));let a=pe.statSync(i),r=Ei.lookup(i)||"application/octet-stream",c=pe.readFileSync(i),u=await this.client.postJson({func:"cim.file:prepare",sid:this.sid,payload:{size:a.size,composeId:o,fileName:s,uid:t,contentType:r}});if(u.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:u.code}));let d=u.var?.attachmentId;if(!d)throw new Error(l("api.upload_no_attachment_id"));let m=`${this.session.baseUrl}${this.session.apiPath}?func=cim.file:directData&sid=${encodeURIComponent(this.sid)}&composeId=${encodeURIComponent(o)}&attachmentId=${d}&offset=0&uid=${encodeURIComponent(t)}`,h={"Content-Type":"application/octet-stream",Cookie:Object.entries(this.cookies).map(([y,C])=>`${y}=${C}`).join("; ")},x=await rn(m,c,h,6e4),v=x.headers["set-cookie"];if(v)for(let y of v.split(",")){let C=y.match(/^([^=]+)=([^;]+)/);C&&(this.cookies[C[1].trim()]=C[2].trim())}let g;try{g=JSON.parse(x.data)}catch{throw new Error(l("api.upload_invalid_response",{data:x.data?.substring?.(0,400)}))}if(g.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:g.code}));let k=await this.client.postJson({func:"cim.file:moveToNetFolder",sid:this.sid,payload:{composeId:o,fileName:s,item:"fileName",attachmentId:d,uid:t}});if(k.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:k.code}));let w=k.var,b=w?.fileId,S=w?.uid;if(!b)throw new Error(l("api.upload_no_file_id"));return{fileId:b,fileUid:S||"",fileName:s}}async downloadFile(e,t,o,i){let s=`${this.session.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(t)}&mid=${encodeURIComponent(e)}&sid=${encodeURIComponent(this.sid)}&fallback=false`,a={Cookie:`Cim.sid=${this.sid}; Cim=${this.cookies.Cim||""}`},r=await Rn(s,a);if(r.status!==200){let m=r.data.toString("utf-8").substring(0,500);throw new Error(l("api.download_http_failed",{status:r.status,body:m}))}if(r.data.length<1e3)try{let m=JSON.parse(r.data.toString("utf-8"));if(m.code&&m.code!=="S_OK")throw new Error(l("api.download_failed",{error:`${m.code} - ${m.msg||""}`}))}catch(m){if(!(m instanceof SyntaxError))throw m}if(!i)throw new Error(l("api.filename_required"));let c=Si(i),u=o?_e.resolve(o):_e.join(bl.tmpdir(),c),p=_e.dirname(u);pe.existsSync(p)||pe.mkdirSync(p,{recursive:!0});let d=r.data;if(c.endsWith(".ilbc")&&!r.data.subarray(0,6).equals(Buffer.from("#!iLBC"))){let m=r.data.length%38===0?"20":"30",f=Buffer.from(`#!iLBC${m}
|
|
16
|
+
`);d=Buffer.concat([f,r.data])}return pe.writeFileSync(u,d),{filePath:u,fileName:c,fileSize:d.length}}async convertAudio(e,t="wav"){let o=t.startsWith(".")?t:`.${t}`,i=e.replace(/\.[^.]+$/,o),a=await import(["child","process"].join("_")),{promisify:r}=await import("util"),c=r(a.execFile);try{await c("ffmpeg",["-y","-i",e,"-ar","16000","-ac","1",i],{timeout:3e4})}catch(u){throw new Error(l("api.audio_convert_failed",{error:u.message||String(u)}))}return{filePath:i,format:t}}async createGroup(e,t){let o=await this.searchGroups(e,1);if(o.length>0&&o[0].name===e)return{uid:o[0].uid,name:o[0].name||e};let i={true_name:e,group_type:"topic"};t&&(i.description=t);let s=await this.client.postJson({func:"cim.group:create",sid:this.sid,payload:i});if(s.code!=="S_OK")throw new Error(l("api.create_group_failed",{code:s.code,msg:s.msg||""}));let a=s.var;return{uid:String(a.uid||""),name:e}}async deleteGroup(e){let t=await this.client.postJson({func:"cim.group:discard",sid:this.sid,payload:{uid:e}});if(t.code!=="S_OK")throw new Error(l("api.delete_group_failed",{code:t.code,msg:t.msg||""}));return!0}createSocketClient(e){return un.fromLunkrConfig(this.session.baseUrl,this.sid,this.session.cookie,{uid:this.session.selfUid,username:this.senderName,eventCallbacks:{connect:()=>e.onConnect?.(),disconnect:()=>e.onDisconnect?.(),ready:()=>e.onReady?.(),message:t=>e.onMessage?.(t),error:t=>{let o=t&&typeof t=="object"&&"message"in t?String(t.message):"Unknown error";e.onError?.(new Error(o))}}})}}});var V=ce(()=>{te();Dn();Ne();tn()});var wl={};ao(wl,{loginCommand:()=>qn,loginCommandMeta:()=>kl});async function qm(n){try{let e=new j(n.baseUrl,{apiPath:n.apiPath}),t={};for(let o of n.cookie.split(";")){let i=o.trim();if(i.includes("=")){let s=i.indexOf("="),a=i.substring(0,s).trim(),r=i.substring(s+1).trim();t[a]=r}}return e.setCookies(t),await e.checkSessionValid(n.sid)}catch{return!1}}async function ji(n){try{let e=new j(n.baseUrl,{apiPath:n.apiPath}),t={};for(let i of n.cookie.split(";")){let s=i.trim();if(s.includes("=")){let a=s.indexOf("="),r=s.substring(0,a).trim(),c=s.substring(a+1).trim();t[r]=c}}e.setCookies(t);let o=await e.postJson({func:"cim.common:getCimPrefAttr",sid:n.sid,payload:{return_field:"nickname,true_name,name"}});if(o.code==="S_OK"&&o.var){let i=o.var,s=i.nickname||i.true_name||i.name;return s?String(s).trim():null}}catch{}return null}async function qn(n,e){let t=e.verbose??!1,o=e.debug??!1,i=e.force??!1,s=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.qrcode_login_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(s?` ${l("messages.mode_temporary_desc")}`:` ${l("messages.mode_persistent_desc")}`),console.log("");let a=R();if(i)console.log(l("messages.force_relogin"));else{let v=a.accounts?.[0];if(v?.session?.sid){if(await qm(v.session)){let k=await ji(v.session);k&&(v.session.senderName=k,$(a)),console.log(l("messages.already_logged_in")),k&&console.log(`${l("labels.name")}: ${k}`),console.log(`UID: ${v.session.selfUid}`),console.log("");return}t&&(console.log(l("errors.session_expired_login")),console.log(""),console.log(l("status.login_hint")))}}let r=a.accounts?.[0];if(r?.apiToken&&!i){console.log(l("messages.authenticating_token"));let v=await Ue(r.email||r.accountId,r.apiToken,a.device_uuid,{debug:o});if(v.success&&v.sid&&v.cookie){let g=v.selfUid||r.session?.selfUid;r.session={sid:v.sid,cookie:v.cookie,baseUrl:Lt,apiPath:Ln,selfUid:g};let k=await ji(r.session);k&&(r.session.senderName=k),$(a);let w=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_token")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),k&&console.log(` ${P(l("labels.name")+":",w)} ${k}`),console.log(` ${P(l("labels.email")+":",w)} ${v.email}`),console.log(` ${P(l("labels.bot")+":",w)} ${se()}`),console.log(""),console.log(` ${P(l("labels.config")+":",w)} ${le()}`),console.log("");return}console.log(l("login.token_expired_need_rescan")),o&&console.log(l("login.token_login_error",{error:v.error||"Unknown"}))}let c=await ki({device:{device_uuid:a.device_uuid,device_os:a.device_os,device_model:a.device_model,device_name:a.device_name},debug:o});c.success||(console.error(""),console.error(l("login.qrcode_login_failed",{error:c.error||"Unknown"})),process.exit(1)),(!c.apiToken||!c.email)&&(console.error(""),console.error(l("login.qrcode_login_no_token")),process.exit(1)),console.log(""),console.log(l("messages.authenticating_with_token"));let u=await Ue(c.email,c.apiToken,c.deviceUuid||a.device_uuid,{debug:o});u.success||(console.error(""),console.error(l("login.token_login_failed",{error:u.error||"Unknown"})),process.exit(1)),(!u.sid||!u.cookie)&&(console.error(""),console.error(l("login.token_login_no_session")),process.exit(1));let p=u.selfUid||c.selfUid,d={sid:u.sid,cookie:u.cookie,baseUrl:Lt,apiPath:Ln,selfUid:p},m=await ji(d);m&&(d.senderName=m);let f={accountId:c.email,email:c.email,enabled:!0,session:d,apiToken:s?void 0:c.apiToken};a=R();let h=a.accounts?.findIndex(v=>v.accountId===c.email)??-1;if(h>=0&&a.accounts){let v=a.accounts[h];v.session=f.session,v.enabled=!0,f.apiToken!==void 0&&(v.apiToken=f.apiToken)}else a.accounts||(a.accounts=[]),a.accounts.push(f);$(a);let x=10;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful_qrcode")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),m&&console.log(` ${P(l("labels.name")+":",x)} ${m}`),console.log(` ${P(l("labels.email")+":",x)} ${c.email}`),console.log(` ${P(l("labels.bot")+":",x)} ${se()}`),console.log(` ${P("UID:",x)} ${p}`),console.log(s?` ${P(l("labels.mode")+":",x)} ${l("messages.mode_temporary")}`:` ${P(l("labels.mode")+":",x)} ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${P(l("labels.config")+":",x)} ${le()}`),console.log("")}var kl,no=ce(()=>{V();ln();Fn();T();kl={name:"login",description:"Login to Lunkr using QR code",options:[{name:"verbose",alias:"v",description:"Verbose output",type:"boolean",required:!1},{name:"debug",alias:"d",description:"Debug output (show network requests)",type:"boolean",required:!1},{name:"force",alias:"f",description:"Force re-login even if session is valid",type:"boolean",required:!1},{name:"temp",alias:"t",description:"Temporary login (do not save api_token)",type:"boolean",required:!1}]}});Cn();T();function Es(n){return{}}function js(n){return{accountId:n.accountId}}function $s(n){return{}}import{Type as _}from"@sinclair/typebox";import{Value as Rf}from"@sinclair/typebox/value";var mu=_.Object({name:_.String({minLength:1,description:"Discussion name is required"}),agentId:_.Optional(_.String()),creatorUid:_.String({minLength:1,description:"Creator UID is required"}),createdAt:_.Union([_.String(),_.Number()],{description:"Creation timestamp"})}),fu=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),Fs=_.Union([_.Literal("open"),_.Literal("allowlist"),_.Literal("disabled")]),gu=_.Object({enabled:_.Optional(_.Boolean()),allowFrom:_.Optional(_.Array(_.String())),policy:_.Optional(Fs),requireMention:_.Optional(_.Boolean())}),hu=_.Object({policy:_.Union([_.Literal("disabled"),_.Literal("mentionOnly"),_.Literal("open")])}),po=_.Object({enabled:_.Optional(_.Boolean({default:!0})),commandPrefix:_.Optional(_.String({minLength:1,default:"/"})),botDiscussions:_.Optional(_.Record(_.String(),mu)),dmPolicy:_.Optional(fu),allowFrom:_.Optional(_.Array(_.String())),groupPolicy:_.Optional(Fs),groups:_.Optional(_.Array(_.String())),discussions:_.Optional(_.Record(_.String(),gu)),groupTypeRules:_.Optional(_.Record(_.String(),hu))}),xu=_.Object({email:_.String({minLength:1,description:"Email is required"}),password:_.String({minLength:1,description:"Password is required"}),deviceUuid:_.Optional(_.String()),deviceName:_.Optional(_.String())}),vu=_.Object({sid:_.String(),selfUid:_.String(),cookie:_.String(),baseUrl:_.String(),apiPath:_.String()}),bu=_.Object({accountId:_.String({minLength:1,description:"Account ID is required"}),name:_.Optional(_.String()),enabled:_.Optional(_.Boolean({default:!0})),credentials:xu,config:po,session:_.Optional(vu)}),Lf=_.Record(_.String(),bu);var Ae="default";te();var ke="agent:";function _u(n){let e=R(),t=e.accounts||[];if(n&&n.startsWith(ke)){let i=n.slice(ke.length),s=t.find(a=>a.email===i&&a.role==="agent");return s?{accountId:s.accountId,name:s.name,enabled:s.enabled,session:s.session,config:s.config,apiToken:s.apiToken,role:s.role,agentId:s.agentId}:null}if(!n||n===Ae){let i=K(e);if(!i)return null;let s=t.find(a=>a.accountId===i.accountId||a.email===i.email);return{accountId:i.accountId,name:s?.name,enabled:i.enabled,session:i.session,config:s?.config,apiToken:i.apiToken,role:i.role,agentId:i.agentId}}let o=t.find(i=>i.accountId===n);return o?{accountId:o.accountId,name:o.name,enabled:o.enabled,session:o.session,config:o.config,apiToken:o.apiToken,role:o.role,agentId:o.agentId}:null}function Js(n){return n.channels?.["lunkr-openclaw"]}var Su={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]};function Vs(n){switch(n){case"allow":case"any":case"pairing":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function Ws(n){switch(n){case"allow":case"any":return"open";case"deny":return"disabled";case"whitelist":return"allowlist";case"open":case"allowlist":case"disabled":return n;default:return"open"}}function Au(n,e){let t={...Su,...n};return e?{...t,...e,dmPolicy:Vs(e.dmPolicy??t.dmPolicy),groupPolicy:Ws(e.groupPolicy??t.groupPolicy),botDiscussions:{...t.botDiscussions,...e.botDiscussions},discussions:{...t.discussions,...e.discussions},groupTypeRules:{...t.groupTypeRules,...e.groupTypeRules},allowFrom:e.allowFrom??t.allowFrom,groups:e.groups??t.groups}:{...t,dmPolicy:Vs(t.dmPolicy),groupPolicy:Ws(t.groupPolicy)}}function ue(n,e){let t=Js(n),i=_u(e??Ae);if(!i?.session||t?.enabled===!1)return null;let s=t?.enabled??!0,a=Au(t,i.config),r=i.session;return{accountId:i.accountId,name:i.name??se(),enabled:s,selfUid:i.session.selfUid,sid:i.session.sid,cookie:i.session.cookie,botName:se(),commandPrefix:a.commandPrefix,botDiscussions:a.botDiscussions,senderName:r.senderName,config:a,lunkrConfig:i.session,hasApiToken:!!i.apiToken,role:i.role||"standard",agentId:i.agentId}}function Hn(n,e){return{...n,sid:e.sid,cookie:e.cookie,selfUid:e.selfUid||n.selfUid,lunkrConfig:e}}var Ys={listAccountIds:n=>{let e=[],t=R();K(t)?.session&&e.push(Ae);let i=ze(t);for(let s of i)s.session?.sid&&e.push(`${ke}${s.email}`);return e},resolveAccount:(n,e)=>ue(n,e),defaultAccountId:()=>Ae,isConfigured:n=>n?!!((n.sid||n.hasApiToken)&&n.selfUid):!1,isEnabled:n=>n?n.enabled??!0:!1,describeAccount:n=>{if(!n)return{accountId:"default",configured:!1,enabled:!1};let e=!!((n.sid||n.hasApiToken)&&n.selfUid);return{accountId:n.accountId,name:n.name,enabled:n.enabled,configured:e}},setAccountEnabled:n=>{let{cfg:e,enabled:t}=n,o=Js(e)??{};return{...e,channels:{...e.channels,lunkr:{...o,enabled:t}}}},unconfiguredReason:n=>n?n.sid?n.selfUid?"Account not configured":"Lunkr user ID not available. Please re-authenticate.":"Lunkr session not configured. Run: openclaw lunkr login":"Lunkr account not configured. Run: openclaw lunkr login"};function Qs(n){return n.replace(/^lunkr:/i,"")}function Ru(n,e,t){let o=t.config.dmPolicy??"open",i=t.config.allowFrom??[];return{policy:o,allowFrom:i.map(Qs),policyPath:"channels.lunkr-openclaw.dmPolicy",allowFromPath:"channels.lunkr-openclaw.allowFrom",approveHint:"openclaw pairing approve lunkr <code>",normalizeEntry:Qs}}async function Lu(n){let e=[],{account:t}=n;return t.config.groupPolicy==="allowlist"&&!t.config.groups?.length&&e.push('Group policy is set to "allowlist" but no groups are configured. Bot will not respond in any group.'),t.config.dmPolicy==="allowlist"&&!t.config.allowFrom?.length&&e.push('DM policy is set to "allowlist" but allowFrom is empty. Bot will not respond to any DM.'),e}var Xs={resolveDmPolicy:n=>{let{cfg:e,accountId:t,account:o}=n;return Ru(e,t??Ae,o)},collectWarnings:n=>Lu(n)};var qc=ro(So(),1);import*as be from"fs";import*as nn from"path";import*as Dc from"os";cn();bt();ln();Pt();var va={"cim.cal:createEvents":{func:"cim.cal:createEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:createEventsForLunkr":{func:"cim.cal:createEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEvents":{func:"cim.cal:deleteEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteEventsForLunkr":{func:"cim.cal:deleteEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:deleteReminder":{func:"cim.cal:deleteReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getMeetingRooms":{func:"cim.cal:getMeetingRooms",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminder":{func:"cim.cal:getReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:getReminderWithAutoCheck":{func:"cim.cal:getReminderWithAutoCheck",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminder":{func:"cim.cal:setReminder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:setReminderForLunkr":{func:"cim.cal:setReminderForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEvents":{func:"cim.cal:updateEvents",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.cal:updateEventsForLunkr":{func:"cim.cal:updateEventsForLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:api":{func:"cim.common:api",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:autoKeepSession":{func:"cim.common:autoKeepSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkModuleVersion":{func:"cim.common:checkModuleVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:checkVersion":{func:"cim.common:checkVersion",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:clickLog":{func:"cim.common:clickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:customOpLog":{func:"cim.common:customOpLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:delayClickLog":{func:"cim.common:delayClickLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:feedback":{func:"cim.common:feedback",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:flashMailLog":{func:"cim.common:flashMailLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAdminFunctionSetting":{func:"cim.common:getAdminFunctionSetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAttrs":{func:"cim.common:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getAvatar":{func:"cim.common:getAvatar",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getBigAvatar":{func:"cim.common:getBigAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCimPrefAttr":{func:"cim.common:getCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getConfig":{func:"cim.common:getConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getCustomDomain":{func:"cim.common:getCustomDomain",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getEnfDetail":{func:"cim.common:getEnfDetail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getInitConfig":{func:"cim.common:getInitConfig",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getLastLoginStatus":{func:"cim.common:getLastLoginStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getMaterial":{func:"cim.common:getMaterial",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"cim.common:getNSISDownloadURL":{func:"cim.common:getNSISDownloadURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getOrgInfo":{func:"cim.common:getOrgInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRemindList":{func:"cim.common:getRemindList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getRevision":{func:"cim.common:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getSysUserInfo":{func:"cim.common:getSysUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getUserType":{func:"cim.common:getUserType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getValueByKey":{func:"cim.common:getValueByKey",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:getWebSocketURL":{func:"cim.common:getWebSocketURL",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:iosHotfix":{func:"cim.common:iosHotfix",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listAuthDevice":{func:"cim.common:listAuthDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:listFlagUser":{func:"cim.common:listFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logCollapse":{func:"cim.common:logCollapse",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:logRecord":{func:"cim.common:logRecord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:onlineStatus":{func:"cim.common:onlineStatus",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:resetTopicAvatar":{func:"cim.common:resetTopicAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:searchFlagUser":{func:"cim.common:searchFlagUser",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendNetDiskOperateNotice":{func:"cim.common:sendNetDiskOperateNotice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sendShake":{func:"cim.common:sendShake",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setApplePushSwitch":{func:"cim.common:setApplePushSwitch",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setAvatar":{func:"cim.common:setAvatar",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setCimPrefAttr":{func:"cim.common:setCimPrefAttr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setFlag":{func:"cim.common:setFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setMiscFlag":{func:"cim.common:setMiscFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:setRevision":{func:"cim.common:setRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:sioSubscribe":{func:"cim.common:sioSubscribe",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:transEmail":{func:"cim.common:transEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.common:verify":{func:"cim.common:verify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getCompanyInfoById":{func:"cim.company:getCompanyInfoById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:getSensitiveWord":{func:"cim.company:getSensitiveWord",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.company:listCompanyInfo":{func:"cim.company:listCompanyInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.container:searchContacts":{func:"cim.container:searchContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:opRedpacket":{func:"cim.extSys:opRedpacket",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:push":{func:"cim.extSys:push",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.extSys:pushRegister":{func:"cim.extSys:pushRegister",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:addCollect":{func:"cim.file:addCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:cancelCollect":{func:"cim.file:cancelCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:directData":{func:"cim.file:directData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getFileData":{func:"cim.file:getFileData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getSearchResult":{func:"cim.file:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:getThumbnail":{func:"cim.file:getThumbnail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:listCollect":{func:"cim.file:listCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:moveToNetFolder":{func:"cim.file:moveToNetFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:prepare":{func:"cim.file:prepare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:search":{func:"cim.file:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:searchCollect":{func:"cim.file:searchCollect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadPost":{func:"cim.file:uploadPost",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadSnippet":{func:"cim.file:uploadSnippet",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:uploadVoice":{func:"cim.file:uploadVoice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.file:viewFile":{func:"cim.file:viewFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:attendance":{func:"cim.group:attendance",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:create":{func:"cim.group:create",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:delete":{func:"cim.group:delete",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:discard":{func:"cim.group:discard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getInfo":{func:"cim.group:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getMembersInfo":{func:"cim.group:getMembersInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:getRelate":{func:"cim.group:getRelate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:invite":{func:"cim.group:invite",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:listVipUserTopic":{func:"cim.group:listVipUserTopic",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:notifyFlag":{func:"cim.group:notifyFlag",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:search":{func:"cim.group:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:transfer":{func:"cim.group:transfer",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateDescription":{func:"cim.group:updateDescription",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.group:updateName":{func:"cim.group:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:generate":{func:"cim.link:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:getInfo":{func:"cim.link:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:prolong":{func:"cim.link:prolong",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:sendInviteMail":{func:"cim.link:sendInviteMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.link:shorten":{func:"cim.link:shorten",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:compose":{func:"cim.mail:compose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getPushFolder":{func:"cim.mail:getPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:getShareNF":{func:"cim.mail:getShareNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readMail":{func:"cim.mail:readMail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:readShare":{func:"cim.mail:readShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:refreshToken":{func:"cim.mail:refreshToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteCompose":{func:"cim.mail:remoteCompose",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:remoteRequest":{func:"cim.mail:remoteRequest",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:searchMessages":{func:"cim.mail:searchMessages",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setAllRead":{func:"cim.mail:setAllRead",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:setPushFolder":{func:"cim.mail:setPushFolder",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:share":{func:"cim.mail:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:ssoLunkr":{func:"cim.mail:ssoLunkr",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.mail:uploadToPersonalNF":{func:"cim.mail:uploadToPersonalNF",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:batchReply":{func:"cim.msg:batchReply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:broadcast":{func:"cim.msg:broadcast",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:clearUnread":{func:"cim.msg:clearUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:collect":{func:"cim.msg:collect",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:deleteUploadFile":{func:"cim.msg:deleteUploadFile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getInfo":{func:"cim.msg:getInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByType":{func:"cim.msg:getLastMsgByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getLastMsgByUID":{func:"cim.msg:getLastMsgByUID",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getSearchResult":{func:"cim.msg:getSearchResult",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:getShare":{func:"cim.msg:getShare",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:list":{func:"cim.msg:list",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:operate":{func:"cim.msg:operate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:p2p":{func:"cim.msg:p2p",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:reply":{func:"cim.msg:reply",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:search":{func:"cim.msg:search",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:searchByGroup":{func:"cim.msg:searchByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:setVip":{func:"cim.msg:setVip",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:share":{func:"cim.msg:share",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:stats":{func:"cim.msg:stats",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateLastMsg":{func:"cim.msg:updateLastMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.msg:updateRcptMsg":{func:"cim.msg:updateRcptMsg",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getAttrs":{func:"cim.oabEx:getAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:getUserInfo":{func:"cim.oabEx:getUserInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.oabEx:setAttrs":{func:"cim.oabEx:setAttrs",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteLotterySetting":{func:"cim.operation:deleteLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:deleteOperateActivityById":{func:"cim.operation:deleteOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:exportUserLottery":{func:"cim.operation:exportUserLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getCommentByCode":{func:"cim.operation:getCommentByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getLotteryResultByCode":{func:"cim.operation:getLotteryResultByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getOperateActivityById":{func:"cim.operation:getOperateActivityById",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:getPrizeInfoByCode":{func:"cim.operation:getPrizeInfoByCode",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listActiveOperateActivity":{func:"cim.operation:listActiveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:listLotterySetting":{func:"cim.operation:listLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveComment":{func:"cim.operation:saveComment",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveLotterySetting":{func:"cim.operation:saveLotterySetting",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveOperateActivity":{func:"cim.operation:saveOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:saveUserCommentForPrize":{func:"cim.operation:saveUserCommentForPrize",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:sendGreetingCard":{func:"cim.operation:sendGreetingCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:startLottery":{func:"cim.operation:startLottery",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.operation:updateOperateActivity":{func:"cim.operation:updateOperateActivity",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addContact":{func:"cim.pab:addContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addGroup":{func:"cim.pab:addGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:addToBlacklist":{func:"cim.pab:addToBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:deleteGroup":{func:"cim.pab:deleteGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getAllContacts":{func:"cim.pab:getAllContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getBlacklist":{func:"cim.pab:getBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getCombinedContacts":{func:"cim.pab:getCombinedContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getRecentContacts":{func:"cim.pab:getRecentContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:getWholeContacts":{func:"cim.pab:getWholeContacts",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:removeFromBlacklist":{func:"cim.pab:removeFromBlacklist",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:searchContact":{func:"cim.pab:searchContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.pab:updateContact":{func:"cim.pab:updateContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:generate":{func:"cim.qrcode:generate",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:qrcodeInfo":{func:"cim.qrcode:qrcodeInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.qrcode:register":{func:"cim.qrcode:register",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:get":{func:"cim.remind:get",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:getMobile":{func:"cim.remind:getMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:set":{func:"cim.remind:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.remind:setMobile":{func:"cim.remind:setMobile",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.revision:getRevision":{func:"cim.revision:getRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:getNotify":{func:"cim.state:getNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:query":{func:"cim.state:query",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryHasLogin":{func:"cim.state:queryHasLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:queryUserState":{func:"cim.state:queryUserState",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:set":{func:"cim.state:set",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.state:setNotify":{func:"cim.state:setNotify",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:checkToken":{func:"cim.third:checkToken",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:genLinkNonce":{func:"cim.third:genLinkNonce",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.third:listApp":{func:"cim.third:listApp",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:getThreadInfo":{func:"cim.thread:getThreadInfo",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listBulletin":{func:"cim.thread:listBulletin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listRevision":{func:"cim.thread:listRevision",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:listThreadNew":{func:"cim.thread:listThreadNew",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.thread:setTop":{func:"cim.thread:setTop",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:changePassword":{func:"cim.user:changePassword",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:checkVersionAndLogin":{func:"cim.user:checkVersionAndLogin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:genTempSession":{func:"cim.user:genTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getCard":{func:"cim.user:getCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getEmojiList":{func:"cim.user:getEmojiList",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getLunkrMailData":{func:"cim.user:getLunkrMailData",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getRecentUnread":{func:"cim.user:getRecentUnread",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempSession":{func:"cim.user:getTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:getTempShareSession":{func:"cim.user:getTempShareSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOffLine":{func:"cim.user:kickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineDevice":{func:"cim.user:kickOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:kickOnlineUserForAdmin":{func:"cim.user:kickOnlineUserForAdmin",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listKickOffLineLog":{func:"cim.user:listKickOffLineLog",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:listLoginHistory":{func:"cim.user:listLoginHistory",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:logout":{func:"cim.user:logout",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:queryOnlineDevice":{func:"cim.user:queryOnlineDevice",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:removeKickOffLine":{func:"cim.user:removeKickOffLine",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveCard":{func:"cim.user:saveCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:saveEmoji":{func:"cim.user:saveEmoji",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:shareCard":{func:"cim.user:shareCard",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateName":{func:"cim.user:updateName",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateOrgUserLastModified":{func:"cim.user:updateOrgUserLastModified",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"cim.user:updateTempSession":{func:"cim.user:updateTempSession",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"nfEx:getFileData":{func:"nfEx:getFileData",path:"/crux/adm_api/filePreview",requiresFunc:!0,defaultUseGet:!0},"nfEx:getShareFile":{func:"nfEx:getShareFile",path:"/lunkr/f",requiresFunc:!0,defaultUseGet:!0},"oab:autoMatch":{func:"oab:autoMatch",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:get":{func:"oab:get",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:getDirectories":{func:"oab:getDirectories",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:listEx":{func:"oab:listEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"oab:searchEx":{func:"oab:searchEx",path:"/coremail/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:createContact":{func:"pab:createContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:deleteContact":{func:"pab:deleteContact",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getAllContactsByType":{func:"pab:getAllContactsByType",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactByEmail":{func:"pab:getContactByEmail",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"pab:getContactsByGroup":{func:"pab:getContactsByGroup",path:"/lunkr/s/json",requiresFunc:!0,defaultUseGet:!1},"user:config":{func:"user:config",path:"/lunkr/common/config",requiresFunc:!1,defaultUseGet:!0},"user:init":{func:"user:init",path:"/lunkr/init",requiresFunc:!1,defaultUseGet:!0}},Nu=Object.keys(va);cn();Fn();Ne();te();T();Dn();var Ec=1e3;async function jc(n,e){try{let t=await n.postJson({func:"cim.common:getCimPrefAttr",sid:e,payload:{return_field:"nickname,true_name,name"}});if(t.code==="S_OK"&&t.var){let o=t.var,i=o.nickname||o.true_name||o.name;return i?String(i).trim():null}}catch{}return null}async function $c(n,e){let t=null;if(e)t=ue(n,e);else{let s=ze();s.length>0&&(t=ue(n,s[0].accountId)),t||(t=ue(n))}if(!t)throw new Error(l("errors.account_not_configured"));let o=new j(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),i={"Cim.sid":t.sid};for(let s of t.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return o.setCookies(i),{client:o,account:t}}async function dm(n,e){let{to:t,content:o,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:t,content:o,type:"text"}});if(r.code!=="S_OK"&&en(String(r.code))){let u=await ve(s);if(u.success&&u.session){let p=new j(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,v]=h.split("=",2);d[x.trim()]=v.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:t,content:o,type:"text"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`msg-${Date.now()}`};throw new Error(l("api.send_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`msg-${Date.now()}`}}async function mm(n,e){let{to:t,content:o,sid:i,accountId:s,lunkrConfig:a}=e,r=await n.postJson({func:"cim.msg:reply",sid:i,payload:{uid:t,content:o,type:"post"}});if(r.code!=="S_OK"&&en(String(r.code))){let u=await ve(s);if(u.success&&u.session){let p=new j(a.baseUrl,{apiPath:a.apiPath}),d={"Cim.sid":u.session.sid};for(let f of u.session.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,v]=h.split("=",2);d[x.trim()]=v.trim()}}p.setCookies(d);let m=await p.postJson({func:"cim.msg:reply",sid:u.session.sid,payload:{uid:t,content:o,type:"post"}});if(m.code==="S_OK")return{msgId:m.var?.msgId??`post-${Date.now()}`};throw new Error(l("api.send_post_failed",{code:String(m.code)}))}else console.error(`[${s}] Session refresh failed: ${u.error}. Please run: lunkr login`)}if(r.code!=="S_OK")throw new Error(l("api.send_post_failed",{code:String(r.code)}));return{msgId:r.var?.msgId??`post-${Date.now()}`}}function Ai(n){let e=n.replace(/^lunkr:/i,"");return e.startsWith("discussion:")?{chatId:e.replace("discussion:",""),chatType:"group"}:e.startsWith("channel:")?{chatId:e.replace("channel:",""),chatType:"channel"}:{chatId:e,chatType:"p2p"}}async function fm(n){if(n.startsWith("http://")||n.startsWith("https://")){let t=Dc.tmpdir(),o=`lunkr-media-${Date.now()}-${nn.basename(new URL(n).pathname)||"file"}`,i=nn.join(t,o),s=await Rn(n,{},6e4);return be.writeFileSync(i,s.data),{filePath:i,cleanup:()=>{try{be.existsSync(i)&&be.unlinkSync(i)}catch{}}}}let e=nn.resolve(n);if(!be.existsSync(e))throw new Error(l("errors.file_not_found",{path:n}));return{filePath:e,cleanup:()=>{}}}async function gm(n,e){let{filePath:t,sid:o,uploadUid:i,cookies:s,baseUrl:a,apiPath:r}=e,c=nn.resolve(t),u=nn.basename(c);if(!be.existsSync(c))throw new Error(l("errors.file_not_found",{path:t}));let p=be.statSync(c),d=qc.lookup(c)||"application/octet-stream",m=be.readFileSync(c),f=`c:nf:cim${Math.floor(Math.random()*9999)+1}`,h=await n.postJson({func:"cim.file:prepare",sid:o,payload:{size:p.size,composeId:f,fileName:u,uid:i,contentType:d}});if(h.code!=="S_OK")throw new Error(l("api.upload_prepare_failed",{code:String(h.code)}));let v=h.var?.attachmentId;if(!v)throw new Error(l("api.upload_no_attachment_id"));let g=`${a}${r}?func=cim.file:directData&sid=${encodeURIComponent(o)}&composeId=${encodeURIComponent(f)}&attachmentId=${v}&offset=0&uid=${encodeURIComponent(i)}`,w={"Content-Type":"application/octet-stream",Cookie:Object.entries(s).map(([J,L])=>`${J}=${L}`).join("; ")},b=await rn(g,m,w,6e4),S;try{S=JSON.parse(b.data)}catch{throw new Error(l("api.upload_invalid_response",{data:b.data?.substring?.(0,200)}))}if(S.code!=="S_OK")throw new Error(l("api.upload_data_failed",{code:String(S.code)}));let y=await n.postJson({func:"cim.file:moveToNetFolder",sid:o,payload:{composeId:f,fileName:u,item:"fileName",attachmentId:v,uid:i}});if(y.code!=="S_OK")throw new Error(l("api.upload_move_failed",{code:String(y.code)}));let C=y.var,I=C?.fileId,E=C?.uid;if(!I)throw new Error(l("api.upload_no_file_id"));return{fileId:I,fileUid:E||""}}function Fc(n,e){let{chatId:t}=Ai(n);if((e.role||"standard")==="agent"||t!==e.selfUid)return n;let i=Object.keys(e.botDiscussions||{});if(i.length>0)return i[0];let s=Object.keys(e.config.discussions||{});return s.length>0?s[0]:n}var Nc={deliveryMode:"direct",textChunkLimit:Ec,sendText:async n=>{let{cfg:e,text:t,replyToId:o,accountId:i}=n,{client:s,account:a}=await $c(e,i),r=Fc(n.to,a),{chatId:c}=Ai(r),u=a.botName??"Bot",p=a.senderName;p||(p=await jc(s,a.sid)),p||(p=a.selfUid?.includes("@")?a.selfUid.split("@")[0]:"User");let d=a.role==="agent",m=qe(t,p,u,d),f;return m.length>Ec?f=await mm(s,{to:c,content:m,sid:a.sid,accountId:a.accountId,lunkrConfig:a.lunkrConfig}):f=await dm(s,{to:c,content:m,sid:a.sid,accountId:a.accountId,lunkrConfig:a.lunkrConfig}),{channel:"lunkr-openclaw",messageId:f.msgId}},sendMedia:async n=>{let{cfg:e,text:t,mediaUrl:o,accountId:i}=n;if(!o)throw new Error(l("errors.media_url_required"));let{client:s,account:a}=await $c(e,i),r=Fc(n.to,a),{chatId:c,chatType:u}=Ai(r),p=a.botName??"Bot",d=a.senderName;d||(d=await jc(s,a.sid)),d||(d=a.selfUid?.includes("@")?a.selfUid.split("@")[0]:"User");let m=a.role==="agent",f=qe(t||"",d,p,m),h={"Cim.sid":a.sid};for(let b of a.cookie.split(";")){let S=b.trim();if(S.includes("=")){let[y,C]=S.split("=",2);h[y.trim()]=C.trim()}}let x=s,v=a.sid;if((await s.postJson({func:"cim.common:getOrgInfo",sid:a.sid})).code!=="S_OK"){let b=await ve(a.accountId);if(!b.success||!b.session)throw new Error(l("errors.session_expired"));v=b.session.sid,x=new j(a.lunkrConfig.baseUrl,{apiPath:a.lunkrConfig.apiPath}),h={"Cim.sid":v};for(let S of b.session.cookie.split(";")){let y=S.trim();if(y.includes("=")){let[C,I]=y.split("=",2);h[C.trim()]=I.trim()}}x.setCookies(h)}let k,w;try{let b=await fm(o);k=b.filePath,w=b.cleanup;let S=u==="p2p"?a.selfUid:c,{fileId:y,fileUid:C}=await gm(x,{filePath:k,sid:v,uploadUid:S,cookies:h,baseUrl:a.lunkrConfig.baseUrl,apiPath:a.lunkrConfig.apiPath}),I=await x.postJson({func:"cim.msg:reply",sid:v,payload:{uid:c,content:f,type:"text",attachments:[{fileId:y,uid:C}]}});if(I.code!=="S_OK")throw new Error(l("api.send_media_failed",{code:String(I.code)}));return{channel:"lunkr-openclaw",messageId:I.var?.msgId??`media-${Date.now()}`}}finally{w&&w()}}};Pt();function Gc(n,e){let t=n.chatType==="group"?n.chatId:null;return t&&(e.botDiscussions||{})[t]||null}function Ri(n,e){return Gc(n,e)!==null}function hm(n,e){return n.trim().toLowerCase().startsWith(e.toLowerCase())}function Mc(n,e){let t=n.fromUid===e.selfUid,o=t&&/^\[@!.+?\]/.test(n.content),i=t&&!o;if(o)return{isBotMention:!1,isFromBot:!0,isFromSelf:!1};let s=Gc(n,e);return s?{isBotMention:!0,isFromBot:!1,isFromSelf:i,agentId:s.agentId}:t&&hm(n.content,e.commandPrefix)?{isBotMention:!0,isFromBot:!1,isFromSelf:!0}:{isBotMention:!1,isFromBot:!1,isFromSelf:i}}function Bc(n,e){let t=n.fromUid===e.selfUid;return t&&/^\[@!.+?\]/.test(n.content)?{isBotMention:!1,isFromBot:!0,isFromSelf:!1}:t?{isBotMention:!1,isFromBot:!1,isFromSelf:!0}:n.chatType==="p2p"?{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.fromUid}`}:{isBotMention:!0,isFromBot:!1,isFromSelf:!1,agentId:e.agentId,workspaceKey:`${e.selfUid}:${n.chatId}`}}function xm(n,e){let t=n.trim();return t.toLowerCase().startsWith(e.toLowerCase())?t.slice(e.length).trim():n}function zc(n,e){let t=e.role||"standard",o;if(t==="agent")o=Bc(n,e);else if(t==="standard+agent"){let r=Bc(n,e),c=Mc(n,e);r.isBotMention?o=r:(c.isBotMention,o=c)}else o=Mc(n,e);let s=Ri(n,e)?n.content:xm(n.content,e.commandPrefix),a=n.chatType==="p2p"?"direct":n.chatType;return{externalId:n.msgId,channel:"lunkr-openclaw",chatType:a,peerId:n.chatId,senderId:n.fromUid,text:s,timestamp:n.timestamp,replyTo:n.threadId,mentions:n.mentionedUids,isBotMention:o.isBotMention,isFromBot:o.isFromBot,isFromSelf:o.isFromSelf,agentId:o.agentId,workspaceKey:o.workspaceKey,contentType:n.contentType,attachments:n.attachments}}function vm(n){let e=n.indexOf("(");return e>0?n.substring(0,e):n}function Yt(n,e){if(!e||e.length===0)return!1;let t=n.replace(/^lunkr:/i,"");return e.some(o=>vm(o).replace(/^lunkr:/i,"")===t)}function bm(n){let e=n.match(/(#[A-Z])$/);return e?e[1]:null}function Kc(n,e,t){let o=e.config;if(n.chatType!=="direct"){let u={chatType:"group",chatId:n.peerId};if(Ri(u,e))return{allowed:!0,reason:"bot discussion"}}if(n.chatType==="direct"){let u=o.dmPolicy||"open";return u==="disabled"?{allowed:!1,reason:"DM blocked: policy is disabled"}:u==="allowlist"?Yt(n.senderId,o.allowFrom)?{allowed:!0,reason:"sender in DM allowlist"}:{allowed:!1,reason:`DM blocked: sender ${n.senderId} not in allowFrom`}:{allowed:!0,reason:"DM policy is open"}}let i=!1,s=n.peerId,a=o.discussions?.[s];if(a?.enabled===!1)return{allowed:!1,reason:`group blocked: discussion ${s} is disabled`};if(!(a&&(a.policy!==void 0||a.allowFrom!==void 0||a.requireMention!==void 0))){let u=bm(s);if(u){let p=o.groupTypeRules?.[u];if(p){if(p.policy==="disabled")return{allowed:!1,reason:`group blocked: type rule ${u} is disabled`};if(p.policy==="mentionOnly"){if(!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: type rule ${u} requires mention`};i=!0}}}}if(a?.requireMention===!0){if(!(n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")))return{allowed:!1,reason:`group blocked: discussion ${s} requires mention`};i=!0}let c=a?.policy||o.groupPolicy||"open";if(c==="disabled")return{allowed:!1,reason:"group blocked: policy is disabled"};if(c==="allowlist"){let u=Yt(s,o.groups);return a?.allowFrom&&a.allowFrom.length>0?Yt(n.senderId,a.allowFrom)?{allowed:!0,reason:"sender in discussion allowFrom",mentionTriggered:i}:{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${s}`}:u?{allowed:!0,reason:"group in allowlist",mentionTriggered:i}:{allowed:!1,reason:`group blocked: ${s} not in groups allowlist`}}return a?.allowFrom&&a.allowFrom.length>0&&!Yt(n.senderId,a.allowFrom)?{allowed:!1,reason:`group blocked: sender ${n.senderId} not in discussion allowFrom for ${s}`}:{allowed:!0,reason:"group policy is open",mentionTriggered:i}}Dn();var ym="https://betaweb.lunkr.cn";async function Li(n,e,t){let{role:o,toUID:i,senderUID:s,nType:a,strContent:r}=e,c=o==="standard"||o==="standard+agent",u=c?s:i,p=c?i:"",d=new j(ym,{apiPath:n.lunkrConfig.apiPath}),m={"Cim.sid":n.sid};for(let h of n.cookie.split(";")){let x=h.trim();if(x.includes("=")){let[v,g]=x.split("=",2);m[v.trim()]=g.trim()}}d.setCookies(m),t?.info?.(`[notifyUser] p2p t=${a} peer=${u} att.uid=${p||"(empty)"} title=${r} sid=${n.sid?.substring(0,8)}... selfUid=${n.selfUid}`);let f=await d.postJson({func:"cim.msg:p2p",sid:n.sid,payload:{uid:u,action:"start",generate_msg:!1,p2p_type:"",attachments:[{t:a,title:r,uid:p}]}});f.code!=="S_OK"&&(en(String(f.code))?t?.warn?.("[notifyUser] Session expired"):t?.warn?.(`[notifyUser] p2p failed: ${f.code}`))}async function Hc(n,e,t){await Li(n,{role:e.role,toUID:e.toUID,senderUID:e.senderUID,nType:23,strContent:JSON.stringify(e.payload)},t)}function Vc(n,e){let t=n.botName||"Bot",o=n.senderName||(n.selfUid?.includes("@")?n.selfUid.split("@")[0]:"User");return n.role==="agent"||n.role==="standard+agent"&&!e?o:`${o}\u7684${t}`}Ne();T();Dn();bn();var Oe=new Map,pt=new Map,il=5e3,sl=new Map,al=new Map;function Cm(n){let e=al.get(n.request_id);e&&(clearTimeout(e.timeout),al.delete(n.request_id),e.resolve(n))}function _m(n){let e=Date.now(),t=pt.get(n);if(t&&e-t<il)return!0;if(pt.set(n,e),pt.size>1e3)for(let[o,i]of pt)e-i>il*2&&pt.delete(o);return!1}function Sm(n,e){let t=e.role||"standard";return t==="agent"||t==="standard+agent"?n.chatType==="direct"?!0:n.mentions?.includes(e.selfUid)||n.mentions?.includes("all")||!1:n.isFromSelf}function Am(n){let t=n.replace(/^(@\S+\s+)*/g,"").trim().toLowerCase();return t==="/help"||t.startsWith("/help ")?"/help":t==="/new"||t.startsWith("/new ")?"/new":null}var rl=1e3;async function cl(n,e,t){let{to:o,text:i,chatType:s}=e;t?.debug?.(`[sendLunkrReply] to=${o}, chatType=${s}, textLen=${i.length}`);let a=n.botName??"Bot",r=n.senderName;r||(r=n.selfUid?.includes("@")?n.selfUid.split("@")[0]:"User");let c=e.skipPrefix??n.role==="agent",u=qe(i,r,a,c),p=n.sid,d=n.cookie,m=n;if(p){let f=new j(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),h={"Cim.sid":p};for(let v of d.split(";")){let g=v.trim();if(g.includes("=")){let[k,w]=g.split("=",2);h[k.trim()]=w.trim()}}f.setCookies(h);let x=await f.postJson({func:"cim.msg:reply",sid:p,payload:{uid:o,content:u,type:u.length>rl?"post":"text"}});if(t?.debug?.(`[sendLunkrReply] Response: code=${x.code}`),x.code==="S_OK"){let v=x.var?.msgId;return t?.info(`[sendLunkrReply] Message sent successfully${v?`: msgId=${v}`:""}`),{msgId:v??`msg-${Date.now()}`,account:m}}if(en(String(x.code)))t?.info(`[${n.accountId}] Session expired, clearing sid...`),p="",d="";else throw new Error(l("api.send_reply_failed",{code:String(x.code),msg:String(x.msg||"Unknown")}))}if(!p){t?.info(`[${n.accountId}] No valid session, attempting refresh with apiToken...`);let f=await ve(n.accountId);if(f.success&&f.session){t?.info(`[${n.accountId}] Session refreshed, sending message...`),p=f.session.sid,d=f.session.cookie;let h=new j(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath}),x={"Cim.sid":p};for(let g of d.split(";")){let k=g.trim();if(k.includes("=")){let[w,b]=k.split("=",2);x[w.trim()]=b.trim()}}h.setCookies(x);let v=await h.postJson({func:"cim.msg:reply",sid:p,payload:{uid:o,content:u,type:u.length>rl?"post":"text"}});if(v.code==="S_OK"){let g=Hn(n,f.session),k=v.var?.msgId;return t?.info(`[sendLunkrReply] Message sent successfully after refresh: msgId=${k}`),{msgId:k??`msg-${Date.now()}`,account:g}}throw t?.warn?.(`[${n.accountId}] Send failed after refresh: ${v.code}. Will retry later.`),new Error(l("api.send_reply_failed",{code:String(v.code),msg:String(v.msg||"Unknown")}))}throw t?.warn?.(`[${n.accountId}] Session refresh failed: ${f.error}. Will retry later.`),new Error(l("api.no_session"))}throw new Error(l("api.send_reply_failed",{code:"UNKNOWN",msg:"Unexpected state"}))}function Rm(n){let t=(n.role||"standard")==="agent",o=t?n.senderName||n.botName||"Bot":n.senderName?`${n.senderName}\u7684${n.botName||"Bot"}`:n.botName||"Bot",i=[{name:"status",description:"Check agent status"},{name:"new",description:"Start new session"},{name:"models",description:"List available models"},{name:"help",description:"Show help"}];var s;if(t)s=[n.selfUid];else{let a=Object.keys(n.config.discussions||{}),r=Object.keys(n.botDiscussions||{});s=Array.from(new Set([...a,...r]))}return{sender_uid:n.selfUid,sender_name:o,commands:i,scopes:s}}async function ll(n,e,t){let o=n.role||"standard",i=Rm(n);if(i.scopes.length===0){t?.debug?.(`[${n.accountId}] No scopes for slash commands, skipping push`);return}t?.info(`[${n.accountId}] Pushing slash commands (${i.commands.length} cmds, scopes=${i.scopes.join(",")})`);try{await Hc(n,{role:o,toUID:e,senderUID:n.selfUid,payload:i},t)}catch(s){t?.warn?.(`[${n.accountId}] Failed to push slash commands: ${s instanceof Error?s.message:String(s)}`)}}function Zt(n,e){let{log:t}=e;return un.fromLunkrConfig(n.lunkrConfig.baseUrl,n.sid,n.cookie,{uid:n.selfUid,username:n.botName,autoReconnect:e.autoReconnect,eventCallbacks:{message:i=>{try{let s=Lm(i,t);if(s){s.attachments&&s.attachments.length>0&&(Xc(s.msgId,s.timestamp,s.attachments.map(r=>({fileId:r.fileId,uid:r.uid,title:r.title,contentType:r.contentType,fileSize:r.fileSize,type:r.type,inline:r.inline}))),t?.debug?.(`[gateway] Cached ${s.attachments.length} attachments for message ${s.msgId}`));let a=zc(s,n);e.onMessage(a)}}catch(s){e.onError(s instanceof Error?s:new Error(String(s)))}},reaction:i=>{if(e.onReaction&&i&&typeof i=="object"){let s=i;e.onReaction({msgId:String(s.msgId??""),userId:String(s.fromUid??""),emoji:String(s.emoji??"")})}},disconnect:()=>{e.onDisconnect()},error:i=>{let s=i&&typeof i=="object"&&"message"in i?String(i.message):"Unknown socket error";e.onError(new Error(s))}}})}function Lm(n,e){if(!n||typeof n!="object")return null;let t=n,o=t.topic||"",i=t.payload||"",s;try{s=JSON.parse(i)}catch{return null}let a=s.attachments;if(a&&a.length>0&&Number(a[0]?.t)===22){let L=String(a[0]?.title||"");e?.info?.(`[parseSocketMessage] Inline keyboard response: ${L.substring(0,200)}`);let F=s.from||{},O=String(F.uid||"");return{msgId:"ikr-"+Date.now(),fromUid:O,fromName:String(F.true_name||""),chatType:"p2p",chatId:O,content:L,contentType:"inline_keyboard_response",timestamp:Date.now()}}let r=Number(s.fid||0);if(r>=1211&&r<=1217){if(r===1211){let L=s.attachments;if((L&&L.length>0?Number(L[0]?.t??-1):-1)===0){let O=s.from||{},G=String(O.uid||"");if(G)return e?.debug?.(`[parseSocketMessage] P2P ping from ${G}`),{msgId:"p2p-start-"+Date.now(),fromUid:G,fromName:String(O.true_name||""),chatType:"p2p",chatId:G,content:"",contentType:"p2p_start",timestamp:Date.now()}}}return e?.debug?.(`[parseSocketMessage] Skipping p2p signaling message (fid=${r})`),null}if(!s.mid&&!s.subject)return null;let c=Object.keys(s),u=s.attachments;e?.debug?.(`[parseSocketMessage] MSG keys=[${c.join(", ")}], attachments=${JSON.stringify(u)?.substring(0,200)}`);let p=String(s.mid||""),d=s.from||{},m=s.to||{},f=String(d.uid||""),h=String(d.true_name||d.email||""),x=String(s.subject||"");try{x=decodeURIComponent(x.replace(/\+/g," "))}catch{}let v=String(s.type||s.group_type||"p2p"),g=String(s.uid||m.uid||""),k;g.endsWith("#U")?k="p2p":g.endsWith("#T")?k="group":k=v==="p2p"?"p2p":v==="topic"||v==="group"?"group":"channel";let w=s.attachments||[],b=w.map(L=>{let F=String(L.uid||"");return{fileId:String(L.fileId||L.file_id||""),uid:F,title:String(L.title||""),fileSize:Number(L.file_size||L.fileSize||0),type:Number(L.t||L.type||0),ctype:L.ctype?String(L.ctype):void 0,inline:!!L.inline,duration:L.duration?Number(L.duration):void 0}});if(b.length===0){let L=Object.keys(s),F=L.some(M=>M.toLowerCase().includes("file")||M.toLowerCase().includes("att")||M.toLowerCase().includes("attach")||M.toLowerCase().includes("media")||M.toLowerCase().includes("image")||M.toLowerCase().includes("audio")),O=String(s.type||""),G=["file","image","audio","video","attachment"].some(M=>O.toLowerCase().includes(M));if(F||G){e?.info(`[parseSocketMessage] \u26A0\uFE0F No attachments parsed but message has file-related fields. type="${O}", keys=${L.join(", ")}`),e?.debug?.("[parseSocketMessage] No attachments found, but message might have file content"),e?.debug?.(`[parseSocketMessage] msg.type="${O}", msg keys: ${L.join(", ")}`);for(let M of L){let ie=M.toLowerCase();if(ie.includes("file")||ie.includes("att")||ie.includes("attach")||ie.includes("media")||ie.includes("image")||ie.includes("audio")){let $e=s[M];e?.debug?.(`[parseSocketMessage] Field "${M}": ${JSON.stringify($e).substring(0,500)}`)}}}}let S="text",y=b[0];if(y){let L=y.title?.split(".").pop()?.toLowerCase();L==="ilbc"?S="audio":["jpg","jpeg","png","gif","bmp","webp"].includes(L||"")?S="image":["mp4","mov","avi","mkv"].includes(L||"")?S="video":S="file"}let C=x;if(b.length>0){let L=[];for(let O of b){let G=O.title?.split(".").pop()?.toLowerCase();G==="ilbc"?L.push(l("attachment.voice",{duration:O.duration||""})):["jpg","jpeg","png","gif","bmp","webp"].includes(G||"")?L.push(l("attachment.image",{title:O.title})):["mp4","mov","avi","mkv"].includes(G||"")?L.push(l("attachment.video",{title:O.title})):L.push(l("attachment.file",{title:O.title}))}let F=L.join(" ");x.trim()?C=`${x}
|
|
17
|
+
${F}`:C=F}if(b.length>0){e?.info(`[parseSocketMessage] Parsed ${b.length} attachment(s): ${b.map(F=>`${F.title}(uid=${F.uid||"EMPTY!"})`).join(", ")}`),w[0]&&(e?.debug(`[parseSocketMessage] Raw attachment[0] keys: ${Object.keys(w[0]).join(", ")}`),e?.debug(`[parseSocketMessage] Raw attachment[0]: ${JSON.stringify(w[0])}`));let L=b.filter(F=>!F.uid);L.length>0&&(e?.warn?.(`[parseSocketMessage] \u26A0\uFE0F ${L.length} attachment(s) have empty uid - download will fail!`),w[0]&&e?.warn?.(`[parseSocketMessage] Available fields in raw attachment: ${Object.keys(w[0]).join(", ")}`))}let I,E=s.at_uid;typeof E=="string"&&E&&(E==="all"?I=["all"]:E.includes(",")?I=E.split(",").map(L=>L.trim()).filter(Boolean):I=[E]);let J=I?I.length>0:!1;return{msgId:p,threadId:s.threadId?String(s.threadId):void 0,parentId:s.parentId?String(s.parentId):void 0,fromUid:f,fromName:h||void 0,toUid:String(m.uid||""),chatType:k,chatId:g||(k==="p2p"?f:""),content:C,contentType:S,timestamp:typeof s.time=="number"?s.time:Date.now(),mentioned:J,mentionedUids:I,attachments:b.length>0?b:void 0}}async function Im(n){let{msg:e,account:t,sessionFilesDir:o,log:i}=n,s=e.attachments?.[0];if(s?.fileId)try{let a=new j(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),r={"Cim.sid":t.sid};for(let g of t.cookie.split(";")){let k=g.trim();if(k.includes("=")){let[w,b]=k.split("=",2);r[w.trim()]=b.trim()}}a.setCookies(r);let c=s.title||`file-${s.fileId}`,u=`${o}/${c}`,p=s.uid||e.peerId,d=`${t.lunkrConfig.baseUrl}/lunkr/f?func=cim.file:getFileData&mode=download&uid=${encodeURIComponent(p)}&mid=${encodeURIComponent(s.fileId)}&sid=${encodeURIComponent(t.sid)}&fallback=false`,m={Cookie:`Cim.sid=${t.sid}; Cim=${r.Cim||""}`},{default:f}=await import("fs"),{default:h}=await import("path"),{httpsGetBuffer:x}=await Promise.resolve().then(()=>(cn(),ga)),v=await x(d,m);if(v.status!==200){i?.warn?.(`[autoDownload] HTTP ${v.status} for ${c}`);return}if(v.data.length<1e3)try{let g=JSON.parse(v.data.toString("utf-8"));if(g.code&&g.code!=="S_OK"){i?.warn?.(`[autoDownload] API error: ${g.code}`);return}}catch{}return f.mkdirSync(h.dirname(u),{recursive:!0}),f.writeFileSync(u,v.data),i?.info(`[autoDownload] Saved ${c} (${v.data.length} bytes) \u2192 ${u}`),u}catch(a){i?.warn?.(`[autoDownload] Failed: ${a instanceof Error?a.message:String(a)}`);return}}var ul=20;async function Pm(n){let{account:e,peerId:t,selfUid:o,currentMsgId:i,log:s}=n;try{let a=new j(e.lunkrConfig.baseUrl,{apiPath:e.lunkrConfig.apiPath}),r={};for(let f of e.cookie.split(";")){let h=f.trim();if(h.includes("=")){let[x,v]=h.split("=",2);r[x.trim()]=v.trim()}}a.setCookies(r);let c=t.endsWith("#T")||t.endsWith("#C")||t.endsWith("#D"),u={limit:ul,export_field:"rf,cim,data",order:"date",desc:!0,listOrder:"desc"};c?u.uid=t:(u.uid=o,u.filter={chatWithAddress:t});let p=await a.postJson({func:"cim.msg:list",sid:e.sid,payload:u});if(p.code!=="S_OK"||!Array.isArray(p.var))return"";let d=p.var.filter(f=>String(f.mid||f.uid||"")!==i).reverse();if(d.length===0)return"";let m=d.map(f=>{let h=f.data&&typeof f.data=="object"&&Object.keys(f.data).length>0?f.data:f,x=f.from,v=x?.true_name||x?.name||x?.email||h.sender_name||h.fromName||"unknown",g=String(h.subject||h.content||f.subject||f.content||"");return`[${String(f.time||"")}] ${v}: ${g}`});return`--- Recent conversation history (${m.length} messages) ---
|
|
18
|
+
${m.join(`
|
|
19
|
+
`)}
|
|
20
|
+
--- End of history ---`}catch(a){return s?.warn?.(`[fetchMentionHistory] Failed: ${a instanceof Error?a.message:String(a)}`),""}}async function Um(n){let{msg:e,account:t,sessionKey:o,accountId:i,log:s}=n,a=e.chatType!=="direct",r=a?`group:${e.peerId}`:e.senderId,c=a?"group":"direct",u=e.attachments?.[0],p;u&&(e.contentType==="audio"?p="audio/ilbc":e.contentType==="image"?p=`image/${u.title?.split(".").pop()||"jpeg"}`:e.contentType==="video"?p=`video/${u.title?.split(".").pop()||"mp4"}`:p="application/octet-stream");let d=o,m=el(d),f=tl(d);Yc(d,{workspaceDir:m,filesDir:f,accountId:i});let h;if(u){let x=ol(d);h=await Im({msg:e,account:t,sessionFilesDir:x,log:s})}return{Body:e.text,BodyForAgent:e.text,RawBody:e.text,CommandBody:e.text,From:a?`lunkr:group:${e.peerId}`:`lunkr:${e.senderId}`,To:`lunkr:${e.peerId}`,SessionKey:o,AccountId:i,ChatType:c,ConversationLabel:r,SenderName:void 0,SenderId:e.senderId,CommandAuthorized:!0,Provider:"lunkr",Surface:"lunkr",MessageSid:e.externalId,MediaPath:h,MediaType:p,MediaUrl:void 0,Attachments:e.attachments,OriginatingChannel:"lunkr",OriginatingTo:`lunkr:${e.peerId}`,LunkrSessionWorkspaceDir:m,LunkrSessionFilesDir:f,LunkrWorkspaceKey:d}}var pl={startAccount:async n=>{let{account:e,abortSignal:t,log:o}=n,i=e,s=new Map;o?.info(`[${i.accountId}] Starting Lunkr gateway`);let a=!i.sid;if(i.sid&&(await new j(i.lunkrConfig.baseUrl).checkSessionValid(i.sid)||(o?.warn?.(`[${i.accountId}] Session invalid on startup, will refresh...`),a=!0)),a){o?.info(`[${i.accountId}] No valid session on startup, attempting refresh...`);let g=await ve(i.accountId);g.success&&g.session?(i=Hn(i,g.session),o?.info(`[${i.accountId}] Session refreshed on startup`)):o?.warn?.(`[${i.accountId}] Session refresh failed on startup: ${g.error}. Will retry when sending messages.`)}let r,c=3,u=5e3,p=12e4,d=0,m=0,f={onMessage:async g=>{if(g.contentType==="p2p_start"){if(g.senderId===i.selfUid)return;let y=i.role||"standard";if(y==="agent"||y==="standard+agent"){let C="slash:"+g.senderId,I=Date.now(),E=sl.get(C)||0;if(I-E<6e4)return;sl.set(C,I),o?.info(`[${i.accountId}] P2P start from ${g.senderId}, pushing slash commands`),ll(i,g.senderId,o)}return}if(g.contentType==="inline_keyboard_response"){if(g.senderId===i.selfUid)return;try{let y=JSON.parse(g.text||"{}");o?.info(`[${i.accountId}] Keyboard response: request_id=${y.request_id} callback_data=${y.callback_data}`),Cm(y)}catch(y){o?.warn?.(`[${i.accountId}] Failed to parse keyboard response: ${y}`)}return}if(!g.isBotMention)return;if(_m(g.externalId)){o?.debug?.(`[${i.accountId}] Skipping duplicate message: ${g.externalId}`);return}let k=g.chatType==="direct"?"DM":"Group";if(o?.info(`[${i.accountId}] [${k}:${g.peerId}] Received msg from ${g.senderId}: ${g.text?.substring(0,50)}...`),o?.debug?.(`[${i.accountId}] Attachments check: count=${g.attachments?.length||0}, contentType=${g.contentType}`),g.attachments&&g.attachments.length>0){let y=g.attachments.map(C=>{let I=C.title?.split(".").pop()?.toLowerCase();return I==="ilbc"?l("attachment.voice_short",{duration:C.duration||"?"}):["jpg","jpeg","png","gif","bmp","webp"].includes(I||"")?l("attachment.image_short",{title:C.title}):["mp4","mov","avi","mkv"].includes(I||"")?l("attachment.video_short",{title:C.title}):l("attachment.file_short",{title:C.title})}).join(", ");o?.info(`[${i.accountId}] [${k}:${g.peerId}] Attachments: ${y}`)}let w=Kc(g,i,o);if(!w.allowed){o?.info(`[${i.accountId}] Message discarded: ${w.reason}`);return}if(w.mentionTriggered&&g.chatType!=="direct"){o?.info(`[${i.accountId}] Mention-triggered: fetching chat history for context`);let y=await Pm({account:i,peerId:g.peerId,selfUid:i.selfUid,currentMsgId:g.externalId,log:o});y&&(g.text=`${y}
|
|
21
|
+
|
|
22
|
+
${g.text}`,o?.info(`[${i.accountId}] Injected ${ul} messages of history context`))}let b=i.role||"standard",S=b==="agent"||b==="standard+agent"&&!g.isFromSelf;if(Sm(g,i)){let y=Am(g.text);if(y){let C=g.workspaceKey||`${i.selfUid}:${g.peerId}`,I;y==="/help"?I=l("commands.help.text"):(s.set(C,(s.get(C)||0)+1),nl(C),I=l("commands.new.done")),o?.info(`[${i.accountId}] Built-in command ${y} from ${g.senderId}`);try{let E=await cl(i,{to:g.peerId,chatType:g.chatType,text:I,skipPrefix:S},o);E.account!==i&&(i=E.account)}catch(E){o?.error?.(`[${i.accountId}] Command reply failed: ${E instanceof Error?E.message:String(E)}`)}return}}if(!n.channelRuntime){o?.warn?.(`[${i.accountId}] channelRuntime not available - skipping AI dispatch`);return}try{let y=new Set,C=g.chatType!=="direct",I=n.channelRuntime.routing.buildAgentSessionKey({peerId:g.peerId,channelId:"lunkr-openclaw",accountId:n.accountId}),E=n.channelRuntime.routing.resolveAgentRoute({cfg:n.cfg,channel:"lunkr-openclaw",peer:{kind:C?"group":"direct",id:g.peerId},accountId:n.accountId}),J=g.workspaceKey||E.sessionKey,L=s.get(J)||0,F=L>0?`${J}:r${L}`:J,O=await Um({msg:g,account:i,sessionKey:F,accountId:E.accountId,log:o}),M=n.cfg.session?.store;M&&await n.channelRuntime.session.recordInboundSession({storePath:M,sessionKey:O.SessionKey,ctx:O,onRecordError:Fe=>{o?.error?.(`[${i.accountId}] Failed to record session: ${String(Fe)}`)}});let ie=b==="agent"||b==="standard+agent"&&!g.isFromSelf,$e=ie&&C,ft=Vc(i,g.isFromSelf),on=g.peerId,Gn=ie?"agent":"standard",yn,gt=!1,Rs=async()=>{try{await Li(i,{role:Gn,toUID:on,senderUID:i.selfUid,nType:20,strContent:ft},o)}catch(Fe){o?.warn?.(`[${i.accountId}] Typing start error: ${Fe instanceof Error?Fe.message:String(Fe)}`)}},Ls=()=>{gt||(gt=!0,yn&&(clearInterval(yn),yn=void 0))},Zl={onReplyStart:async()=>{$e||(gt=!1,o?.info(`[${i.accountId}] Typing start \u2192 ${Gn} toUID=${on}`),await Rs(),yn&&clearInterval(yn),yn=setInterval(()=>{gt||Rs()},3e3))},onIdle:()=>{$e||Ls()},onCleanup:()=>{$e||Ls()}};await n.channelRuntime.reply.dispatchReplyWithBufferedBlockDispatcher({ctx:O,cfg:n.cfg,dispatcherOptions:{typingCallbacks:Zl,deliver:async(Fe,kn)=>{let zn=Fe.text??"";if(zn.trim()){if(kn.kind==="block"){o?.debug?.(`[${i.accountId}] Skipping block chunk (waiting for final)`);return}if(kn.kind==="final"&&y.has(zn)){o?.debug?.(`[${i.accountId}] Skipping duplicate final reply`);return}kn.kind==="final"&&y.add(zn),o?.info(`[${i.accountId}] Deliver ${kn.kind} reply to ${g.peerId}: ${zn.substring(0,50)}...`);try{let wn=await cl(i,{to:g.peerId,chatType:g.chatType,text:zn,skipPrefix:S},o);wn.account!==i&&(i=wn.account,o?.info(`[${i.accountId}] Session updated after refresh`))}catch(wn){o?.error?.(`[${i.accountId}] Failed to send reply: ${wn instanceof Error?wn.message:String(wn)}`)}}},onError:(Fe,kn)=>{o?.error?.(`[${i.accountId}] AI ${kn.kind} failed: ${String(Fe)}`)}}})}catch(y){o?.error?.(`[${i.accountId}] Message dispatch error: ${y instanceof Error?y.message:String(y)}`)}},onReaction:g=>{o?.debug(`[${i.accountId}] Received reaction: ${g.emoji} on ${g.msgId}`)},onError:g=>{o?.error(`[${i.accountId}] Socket error: ${g.message}`)},onDisconnect:async()=>{if(o?.info(`[${i.accountId}] Socket disconnected`),Oe.delete(i.accountId),t.aborted)return;d++;let g=Math.min(u*Math.pow(2,d-1),p);if(o?.warn?.(`[${i.accountId}] Reconnect attempt ${d}, delay ${g/1e3}s...`),await new Promise(b=>setTimeout(b,g)),t.aborted)return;let k=await ve(i.accountId);if(k.success&&k.session){if(i=Hn(i,k.session),o?.info(`[${i.accountId}] Session refreshed, reconnecting...`),h=Zt(i,f),await h.connect()){o?.info(`[${i.accountId}] Reconnected with refreshed session`),d=0,m=0,r.socket=h,Oe.set(i.accountId,r);return}o?.warn?.(`[${i.accountId}] Reconnect with refreshed session failed`)}else{let b=k.reason||"rejected";if(o?.warn?.(`[${i.accountId}] Session refresh failed (${b}): ${k.error}`),b==="no_credentials"){o?.error?.(`[${i.accountId}] Missing credentials \u2014 giving up reconnect. Fix config and restart.`);return}if(b==="rejected"&&(m++,m>=c)){o?.error?.(`[${i.accountId}] Server rejected ${m} consecutive refreshes \u2014 giving up. Check apiToken and restart.`);return}}if(t.aborted)return;h=Zt(i,f),await h.connect()?(o?.info(`[${i.accountId}] Reconnected with existing session`),d=0,m=0,r.socket=h,Oe.set(i.accountId,r)):(o?.warn?.(`[${i.accountId}] Reconnect attempt ${d} failed, will retry on next disconnect`),t.aborted||f.onDisconnect())},log:o,autoReconnect:!1},h=Zt(i,f),x=await h.connect();if(!x){o?.warn?.(`[${i.accountId}] Socket connect failed, attempting session refresh...`);let g=await ve(i.accountId);g.success&&g.session&&(i=Hn(i,g.session),o?.info(`[${i.accountId}] Session refreshed, retrying socket connection...`),h=Zt(i,f),x=await h.connect())}if(!x)throw new Error(l("api.socket_connect_failed",{accountId:i.accountId}));o?.info(`[${i.accountId}] Lunkr gateway connected`);let v=i.role||"standard";return(v==="standard"||v==="standard+agent")&&ll(i,i.selfUid,o),r={socket:h,connected:!0,startedAt:Date.now()},Oe.set(i.accountId,r),t.addEventListener("abort",()=>{o?.info(`[${i.accountId}] Stopping Lunkr gateway`),h.disconnect(),Oe.delete(i.accountId)}),new Promise(g=>{let k=()=>{t.removeEventListener("abort",w),g(r)},w=()=>{o?.info(`[${i.accountId}] Gateway abort signal received`),k()};t.addEventListener("abort",w),h.onDisconnect(()=>{o?.info(`[${e.accountId}] Socket disconnected`),Oe.delete(e.accountId),k()})})},stopAccount:async n=>{let{account:e,log:t}=n;t?.info(`[${e.accountId}] Stopping Lunkr gateway`);let o=Oe.get(e.accountId);o&&(o.socket.disconnect(),Oe.delete(e.accountId))},logoutAccount:async n=>{let{account:e,log:t}=n;t?.info(`[${e.accountId}] Logging out Lunkr account`);let o=Oe.get(e.accountId);return o&&(o.socket.disconnect(),Oe.delete(e.accountId)),{cleared:!0,loggedOut:!0}}};Dn();T();async function dl(n,e=5e3){let t=Date.now();if(!n)return{ok:!1,error:l("errors.account_not_configured"),elapsedMs:Date.now()-t};if(!n.sid||!n.lunkrConfig){if(n.hasApiToken){let o=await ve(n.accountId);if(o.success&&o.session){let i={...n,sid:o.session.sid,lunkrConfig:o.session};return dl(i,e)}}return{ok:!1,error:l("errors.session_not_configured"),elapsedMs:Date.now()-t}}try{let o=new j(n.lunkrConfig.baseUrl,{apiPath:n.lunkrConfig.apiPath,timeout:e/1e3}),i={"Cim.sid":n.sid};for(let a of n.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}o.setCookies(i);let s=await o.checkSessionValid(n.sid);return{ok:s,sessionValid:s,elapsedMs:Date.now()-t}}catch(o){return{ok:!1,error:o instanceof Error?o.message:String(o),elapsedMs:Date.now()-t}}}function Tm(n){let e=[];for(let t of n){let o=t.accountId??Ae;t.configured===!1&&e.push({channel:"lunkr-openclaw",accountId:o,kind:"config",message:l("status.session_not_configured_fix"),fix:l("status.run_login")}),t.lastError&&e.push({channel:"lunkr-openclaw",accountId:o,kind:"runtime",message:l("status.channel_error",{error:t.lastError})});let i=t.probe;i&&!i.ok&&i.sessionValid===!1&&e.push({channel:"lunkr-openclaw",accountId:o,kind:"auth",message:l("errors.session_expired"),fix:l("status.run_login_refresh")})}return e}function Om(n){return $s({configured:n.snapshot.configured,running:n.snapshot.running,lastStartAt:n.snapshot.lastStartAt,lastStopAt:n.snapshot.lastStopAt,lastError:n.snapshot.lastError,probe:n.snapshot.probe,lastProbeAt:n.snapshot.lastProbeAt,tokenSource:n.snapshot.configured?"session":null})}function Em(n){let{account:e,runtime:t,probe:o}=n,i=!!((e.sid||e.hasApiToken)&&e.selfUid);return js({accountId:e.accountId,name:e.name,enabled:e.enabled,configured:i,runtime:t,probe:o})}var ml={defaultRuntime:{accountId:Ae,running:!1,lastStartAt:null,lastStopAt:null,lastError:null},collectStatusIssues:Tm,buildChannelSummary:({snapshot:n})=>Om({snapshot:n}),probeAccount:async({account:n,timeoutMs:e})=>dl(n??null,e??5e3),buildAccountSnapshot:({account:n,runtime:e,probe:t})=>Em({account:n,runtime:e,probe:t}),logSelfId:({account:n,includeChannelPrefix:e})=>{console.log(`Self ID: ${e?"lunkr:":""}${n.selfUid}`)},resolveAccountState:({configured:n,enabled:e})=>n?e?"configured":"disabled":"not configured"};T();async function dt(n,e){let t=ue(n,e);if(!t)throw new Error(l("errors.account_not_configured"));let o=new j(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),i={"Cim.sid":t.sid};for(let s of t.cookie.split(";")){let a=s.trim();if(a.includes("=")){let[r,c]=a.split("=",2);i[r.trim()]=c.trim()}}return o.setCookies(i),{client:o,account:t}}function Ti(n){return{kind:"user",id:`lunkr:${n.uid}`,name:n.name??n.uid,email:n.email,avatarUrl:n.avatar}}function fl(n){return{kind:n.type==="channel"?"channel":"group",id:`lunkr:discussion:${n.gid}`,name:n.name??n.gid,avatarUrl:n.avatar}}async function gl(n,e,t,o){let i=await n.postJson({func:"cim.contacts:search",sid:e,query:{keyword:t,limit:o}});return i.code!=="S_OK"?[]:i.var?.users??[]}async function hl(n,e){let t=await n.postJson({func:"cim.discussion:list",sid:e});if(t.code!=="S_OK")return[];let o=t.var?.discussions;return o?o.map(i=>({gid:String(i.id??i.gid??""),name:i.name?String(i.name):void 0,memberCount:typeof i.memberCount=="number"?i.memberCount:void 0,avatar:i.avatar?String(i.avatar):void 0,type:i.type??"group"})):[]}async function jm(n,e,t,o){let i=await n.postJson({func:"cim.discussion:getMembers",sid:e,query:{gid:t,limit:o}});if(i.code!=="S_OK")return[];let s=i.var?.members;return s?s.map(a=>({uid:String(a.uid??""),name:a.name?String(a.name):void 0,email:a.email?String(a.email):void 0,avatar:a.avatar?String(a.avatar):void 0,department:a.department?String(a.department):void 0})):[]}var xl={self:async({cfg:n,accountId:e})=>{let t=ue(n,e);return t?.selfUid?{kind:"user",id:`lunkr:${t.selfUid}`,name:t.name??t.selfUid}:null},listPeers:async({cfg:n,accountId:e,query:t,limit:o})=>{let{client:i,account:s}=await dt(n,e),a=t?.trim()??"",r=o&&o>0?o:20;return a?(await gl(i,s.sid,a,r)).map(Ti):[]},listPeersLive:async({cfg:n,accountId:e,query:t,limit:o})=>{let{client:i,account:s}=await dt(n,e),a=t?.trim()??"",r=o&&o>0?o:20;return a?(await gl(i,s.sid,a,r)).map(Ti):[]},listGroups:async({cfg:n,accountId:e,query:t,limit:o})=>{let{client:i,account:s}=await dt(n,e),a=await hl(i,s.sid),r=a;if(t){let c=t.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return o&&o>0&&(r=r.slice(0,o)),r.map(fl)},listGroupsLive:async({cfg:n,accountId:e,query:t,limit:o})=>{let{client:i,account:s}=await dt(n,e),a=await hl(i,s.sid),r=a;if(t){let c=t.toLowerCase();r=a.filter(u=>u.name?.toLowerCase().includes(c)||u.gid.toLowerCase().includes(c))}return o&&o>0&&(r=r.slice(0,o)),r.map(fl)},listGroupMembers:async({cfg:n,accountId:e,groupId:t,limit:o})=>{let{client:i,account:s}=await dt(n,e),a=t.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");return(await jm(i,s.sid,a,o??100)).map(Ti)}};function vl(n){let{cfg:e,accountId:t,groupId:o}=n,i=ue(e,t);if(!i||!o)return!1;let s=o.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return!1;let a=i.config.discussions?.[s];if(a?.requireMention!==void 0)return a.requireMention;let r=s.match(/(#[A-Z])$/)?.[1];return r&&i.config.groupTypeRules?.[r]?.policy==="mentionOnly",!0}function $m(n){let{cfg:e,accountId:t,groupId:o}=n,i=ue(e,t);if(!i||!o)return;let s=o.replace(/^lunkr:discussion:/,"").replace(/^lunkr:/,"");if(i.botDiscussions[s])return"Bot discussion - all messages will trigger the bot";let a=i.config.groups??[];if(a.includes(s)||a.includes("*"))return vl({cfg:e,accountId:t,groupId:o})?"Mention the bot to trigger a response":"Bot will respond to all messages"}function Fm(n){let{cfg:e,accountId:t,groupId:o}=n;ue(e,t)}var Oi={resolveRequireMention:vl,resolveGroupIntroHint:$m,resolveToolPolicy:Fm};T();var Dm={id:"lunkr-openclaw",label:"Lunkr",get selectionLabel(){return l("meta.selection_label")},get detailLabel(){return l("meta.detail_label")},docsPath:"/channels/lunkr",docsLabel:"lunkr",get blurb(){return l("meta.blurb")}},eo={id:"lunkr-openclaw",meta:{...Dm,quickstartAllowFrom:!0},capabilities:{chatTypes:["direct","group"],polls:!1,reactions:!0,edit:!0,unsend:!0,reply:!0,effects:!1,groupManagement:!1,threads:!1,media:!0,nativeCommands:!1,blockStreaming:!0},reload:{configPrefixes:["channels.lunkr-openclaw"]},configSchema:Es(po),config:Ys,security:Xs,group:Oi,groups:Oi,messaging:{normalizeTarget:n=>{let e=n.trim();if(e)return e.replace(/^lunkr:(?:discussion:)?/i,"")},targetResolver:{looksLikeId:n=>{let e=n?.trim();return e?/^#[0-9]+#[UT]$/.test(e)||/^[a-zA-Z0-9_-]+$/.test(e)||/^lunkr:/i.test(e):!1},hint:"<uid|gid>"}},directory:xl,outbound:Nc,status:ml,gateway:pl,pairing:{idLabel:"lunkrUserId",normalizeAllowEntry:n=>n.replace(/^lunkr:/i,"")}};bn();no();Cn();import*as qi from"readline";import*as _l from"readline";bn();T();var Di=class extends Error{constructor(t,o,i){super(t);this.sid=o;this.authType=i;this.name="OtpRequiredError"}};var $i="https://lunkr.coremail.cn",Fi="/lunkr/s/json",dv=300*1e3;function Sl(n){let e={};for(let t of n.split(";")){let[o,i]=t.trim().split("=");o&&i&&(e[o]=i)}return e}async function Al(n,e){try{let t=e?.verbose??!1,o=e?.debug??!1;(t||o)&&console.log(`Discovering server for: ${n.email}`);let[i,s]=await Yn.discoverAvailableServer(n.email);(t||o)&&(console.log(`Found server: ${i.apiUrl}`),console.log(`Auth type: ${s.authType}`),console.log(`RSA sid: ${s.sid}`));let a=new j(i.baseUrl,{apiPath:i.apiPath}),r=Ao({device_uuid:e?.deviceUuid||n.deviceUuid,device_name:e?.deviceName||n.deviceName});return o&&console.log(`Device info: ${JSON.stringify(r,null,2)}`),{success:!0,session:await Nm(a,n.email,n.password,s,r,i,t,o)}}catch(t){return t instanceof Di?{success:!1,requiresOtp:!0,otpSid:t.sid,error:t.message}:{success:!1,error:t instanceof Error?t.message:String(t)}}}async function Nm(n,e,t,o,i,s,a,r=!1){let c={type:o.authType,e:o.rsaE,n:o.rsaN},u=c.type;r&&(console.log(`[Login] authType: ${u}`),console.log(`[Login] RSA e: ${c.e?c.e.substring(0,20)+"...":"(empty)"}`),console.log(`[Login] RSA n: ${c.n?c.n.substring(0,40)+"...":"(empty)"}`));let p;u&&u.toLowerCase()==="rsa"&&c?.e&&c?.n?((a||r)&&console.log("Encrypting password with RSA"),p=fo(t,c.e,c.n),r&&console.log(`[Login] Encrypted password length: ${p.length}`)):(r&&console.log(`[Login] WARNING: Password NOT encrypted (authType=${u})`),p=t);let d=Math.floor(Date.now()/1e3).toString(),m=Ro(i.uuid,e,i.friendlyName),f=Lo(m),h=Io(m,d,f,"");r&&(console.log(`[Login] timestamp: ${d}`),console.log(`[Login] accessToken: ${m.substring(0,20)}...`),console.log(`[Login] signature: ${h.substring(0,20)}...`));let x={uid:e,password:p,authType:u,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1};if(r){let y={...x},C=String(y.password||"");y.password=C.length>10?C.substring(0,20)+`...(length: ${C.length})`:"***",console.log(`[Login] Payload: ${JSON.stringify(y,null,2)}`)}let v=await n.postJson({func:"user:login",sid:o.sid,payload:x,debug:r||a});r&&console.log(`[Login] Response: ${JSON.stringify(v,null,2)}`);let g=v.code,k=v.var||{};if(g==="FA_NEED_VERIFY_CODE"||g==="FA_USER_IN_GRAYLIST"){let y=s.uri||`${s.baseUrl}/coremail/`;throw new D(l("auth.captcha_required",{code:g,uri:y}))}if(g==="FA_NEED_DYNAMIC_PWD"){console.log(`
|
|
23
|
+
${l("auth.otp_required")}`);let y={tempSid:o.sid,trans:"login",device:{token:m,secret:f,uuid:i.uuid,friendlyName:i.friendlyName,model:i.model,os:i.os,deviceType:i.deviceType},type:"OTP"},C=await n.postJson({func:"user:triggerSecondAuth",sid:o.sid,payload:y});if(C.code!=="S_OK")throw new D(l("auth.otp_trigger_failed",{code:C.code}));console.log(` ${l("auth.otp_verify_prompt")}`),console.log(` ${l("auth.otp_trust_hint")}`),await Mm(` ${l("auth.otp_press_enter")}`);let I=await n.postJson({func:"user:querySecondAuthValidateStage",sid:o.sid,payload:{tempSid:o.sid,trans:"login"}});if(I.code!=="S_OK")throw new D(l("auth.otp_query_failed",{code:I.code}));let J=(I.var||{}).stage;if(J!=="VALIDATED")throw new D(l("auth.otp_not_completed",{stage:J}));console.log(` ${l("auth.otp_success")}`),(a||r)&&console.log(`
|
|
24
|
+
${l("auth.relogin")}`);let L={uid:e,password:"",authType:u,device:{uuid:i.uuid,os:i.os,model:i.model,friendlyName:i.friendlyName},locale:"zh_CN",timestamp:d,accessToken:m,signature:h,supportDynamicPwd:!0,supportBind2FA:!0,supportPermDomains:!0,supportSms:1,forceIPCheck:!1,forceCookieCheck:!0,returnCookie:!0,returnMainURL:!1},F=await n.postJson({func:"user:login",sid:o.sid,payload:L,debug:r||a});r&&console.log(`[Login] Re-login Response: ${JSON.stringify(F,null,2)}`);let O=F.code,G=F.var||{};if(O!=="S_OK"&&O!=="FA_NEED_ACCESS_SECRET")throw new D(l("auth.relogin_failed",{code:O}));let M=G.sid;if(!M)throw new D(l("auth.relogin_no_sid"));let ie=n.cookies.Coremail||"";if(!ie)throw new D(l("auth.relogin_no_cookie"));return(a||r)&&console.log(l("auth.otp_verified_getting_session")),await Cl(M,ie,e,i,a,r)}if(g!=="S_OK"&&g!=="FA_NEED_ACCESS_SECRET"){let y=String(k.error||k.msg||v.msg||g);throw y.includes("\u5BC6\u7801")||y.toLowerCase().includes("password")||["PASSWORD_ERROR","AUTH_FAILED"].includes(g)?new Jn(`Password error: ${y}`):new D(`Login failed: ${y}`)}let w=k.sid;if(!w)throw new D("Login response missing sid");r&&console.log(`[Login] Client cookies: ${JSON.stringify(n.cookies)}`);let b=n.cookies.Coremail||"";if(!b){let y=Object.keys(n.cookies);throw new D(`Login succeeded but no Coremail cookie received. Available cookies: ${y.join(", ")||"none"}`)}return(a||r)&&(console.log(`Coremail login succeeded, sid: ${w.substring(0,20)}...`),console.log(`Coremail cookie: ${b.substring(0,30)}...`),console.log("Now getting Lunkr session...")),await Cl(w,b,e,i,a,r)}async function Cl(n,e,t,o,i,s){(i||s)&&console.log(`
|
|
25
|
+
[getLunkrSession] Step 1: Calling cim.common:verify...`);let a=`${$i}${Fi}?func=cim.common:verify`,r={"Content-Type":"text/x-json; charset=UTF-8",Cookie:`Coremail=${e}`},c=await we(a,"{}",r,3e4);if(s&&console.log(`[getLunkrSession] verify status: ${c.status}`),c.status!==200)throw new D(`cim.common:verify request failed: ${c.status}`);let u=JSON.parse(c.data);if(u.code!=="S_OK")throw new D(`cim.common:verify failed: ${u.code}`);let p=u.var||{},d=p.login_key,m=p.login_index;if(!d)throw new D("cim.common:verify did not return login_key");s&&(console.log(`[getLunkrSession] login_index: ${m}`),console.log(`[getLunkrSession] login_key length: ${d.length}`)),(i||s)&&console.log("[getLunkrSession] Step 2: Generating X-CM-TOKEN...");let f=`${n}:${e}`,h=Buffer.from(f,"utf8").toString("base64"),x=go(h,d);s&&console.log(`[getLunkrSession] X-CM-TOKEN length: ${x.length}`),(i||s)&&console.log("[getLunkrSession] Step 3: Calling cim.user:login...");let v=`${$i}${Fi}?func=cim.user:login`,g={"Content-Type":"text/x-json; charset=UTF-8","X-CM-TOKEN":x},k={uid:t,forceCookieCheck:!0,bindingRemoteCoremail:!0,setCookieKey:!0,version:"2.0.5.8",open:!0,device:{uuid:o.uuid,os:o.os,model:o.model,friendlyName:o.friendlyName}};m&&(k.login_index=m);let w=await we(v,JSON.stringify(k),g,3e4);if(s&&console.log(`[getLunkrSession] login status: ${w.status}`),![200,202].includes(w.status))throw new D(`cim.user:login request failed: ${w.status}, response: ${w.data.substring(0,500)}`);let b=JSON.parse(w.data),S=b.code;if(S!=="S_OK"&&S!=="FA_NEED_ACCESS_SECRET")throw new D(`cim.user:login failed: ${S}`);let y=b.var||{},C=y.sid,I=y.self_uid||y.uid;if(!C)throw new D("cim.user:login did not return sid");let E=null,J=w.headers["set-cookie"];if(J)for(let O of J.split(",")){let G=O.trim().match(/^Cim=([^;]+)/);G&&(E=G[1],s&&console.log(`[getLunkrSession] Received cookie: Cim=${E.substring(0,20)}...`))}let L=E||e;return(i||s)&&(console.log(`[getLunkrSession] Lunkr SID: ${C.substring(0,20)}...`),console.log(`[getLunkrSession] selfUid: ${I}`)),{sid:C,selfUid:I||t,cookie:`Cim=${L}`,baseUrl:$i,apiPath:Fi}}function Mm(n){return new Promise(e=>{let t=_l.createInterface({input:process.stdin,output:process.stdout});t.question(n,()=>{t.close(),e()})})}V();V();ln();ln();Fn();var Bm="https://betaweb.lunkr.cn";async function Gm(n,e,t,o,i,s){let a=new j(Bm,{apiPath:Ln});a.setCookies(i),s&&console.log("[getApiTokenAndSession] Calling cim.user:getApiToken...");let r=await a.postJson({func:"cim.user:getApiToken",sid:n,payload:{device_uuid:t,device_os:"Unknown",device_model:"pc",device_name:"OpenClaw"},debug:s});if(r.code!=="S_OK"||!r.var?.api_token)throw new Error(`getApiToken failed: ${r.code} - ${r.msg||"No token returned"}`);let c=r.var.api_token;s&&console.log(`[getApiTokenAndSession] Got API token: ${c.substring(0,20)}...`);let u=await Ue(e,c,t,{debug:s});if(!u.success)throw new Error(u.error||"apiTokenLogin failed");let p=u.sid,d=u.cookie;if(!d)throw new Error("apiTokenLogin did not return cookie");return s&&console.log(`[getApiTokenAndSession] New SID: ${p.substring(0,20)}...`),{apiToken:c,newSid:p,newCookie:d,selfUid:u.selfUid}}async function Rl(n){let{email:e,sid:t,cookie:o,emailForAccountId:i,baseUrl:s,apiPath:a,deviceUuid:r,cookies:c,temp:u=!1,debug:p=!1}=n;p&&(console.log(`[saveSessionWithToken] Starting for ${e}...`),console.log(`[saveSessionWithToken] temp mode: ${u}`));let d=await Gm(t,i,r,s,c,p),m=R(),f={accountId:i,email:e,enabled:!0,session:{sid:d.newSid,cookie:d.newCookie,baseUrl:s,apiPath:a,selfUid:d.selfUid}};u?p&&console.log("[saveSessionWithToken] Temporary login - NOT saving apiToken"):(f.apiToken=d.apiToken,p&&console.log("[saveSessionWithToken] Saving apiToken to config"));let h=m.accounts?.findIndex(x=>x.accountId===i)??-1;if(h>=0&&m.accounts){let x=m.accounts[h];x.session=f.session,x.enabled=!0,f.apiToken!==void 0&&(x.apiToken=f.apiToken)}else m.accounts||(m.accounts=[]),m.accounts.push(f);return $(m),p&&console.log("[saveSessionWithToken] Config saved"),{accountId:i,apiToken:u?void 0:d.apiToken}}T();function Ll(n,e=!1){return new Promise((t,o)=>{if(e&&process.stdin.isTTY){process.stdout.write(n);let i="",s=process.stdin;s.setRawMode(!0),s.resume(),s.setEncoding("utf8");let a=r=>{let c=r;switch(c){case`
|
|
21
26
|
`:case"\r":case"":s.setRawMode(!1),s.pause(),s.removeListener("data",a),process.stdout.write(`
|
|
22
|
-
`),
|
|
23
|
-
`),process.exit(1);break;case"\x7F":case"\b":i.length>0&&(i=i.slice(0,-1),process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(n+"*".repeat(i.length)));break;default:c.charCodeAt(0)>=32&&(i+=c,process.stdout.write("*"));break}};s.on("data",a)}else if(e){process.stdout.write(n.replace("Password:","Password (visible): "));let i=ki.createInterface({input:process.stdin,output:process.stdout});i.question("",s=>{i.close(),o(s.trim())})}else{let i=ki.createInterface({input:process.stdin,output:process.stdout});i.question(n,s=>{i.close(),o(s.trim())})}})}async function so(n,e){let o=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Login (Password)"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(o?" Mode: Temporary (api_token will NOT be saved)":" Mode: Persistent (api_token will be saved)"),console.log("");let t=e.email;t||(t=Y("LUNKR_EMAIL")||Y("LUNKR_USERNAME")),t||(t=await tl("Email: ")),t||(console.error(l("errors.email_required")),process.exit(1));let i=e.password;i||(i=Y("LUNKR_PASSWORD")),i||(i=await tl(l("login.password_prompt"),!0)),i||(console.error(l("errors.password_required")),process.exit(1)),console.log(""),console.log(l("messages.authenticating"));let s=e.verbose??!1,a=e.debug??!1,r=L(),c={email:t,password:i,deviceUuid:r.device_uuid,deviceName:r.device_name};try{let u=await nl(c,{deviceUuid:r.device_uuid,deviceName:r.device_name,verbose:s,debug:a});u.success||(console.error(l("login.login_failed",{error:u.error})),process.exit(1)),u.session||(console.error(l("login.login_success_no_session")),process.exit(1));let p=el(u.session.cookie);console.log(""),console.log(l("messages.getting_token"));try{await ol({email:t,sid:u.session.sid,cookie:u.session.cookie,emailForAccountId:t,baseUrl:u.session.baseUrl,apiPath:u.session.apiPath,deviceUuid:r.device_uuid,cookies:p,temp:o,debug:a})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(l("login.token_login_failed_warn",{error:m})),console.log(l("login.session_saved_without_token"));let f={accountId:t,email:t,enabled:!0,session:u.session},h=r.accounts?.findIndex(x=>x.accountId===t)??-1;if(h>=0&&r.accounts){let x=r.accounts[h];x.session=f.session,x.enabled=!0}else r.accounts||(r.accounts=[]),r.accounts.push(f);E(r)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("login.result_email",{email:t})),console.log(l("login.result_uid",{uid:u.session.selfUid})),console.log(l("login.result_server",{server:u.session.baseUrl})),console.log(o?` ${l("labels.mode")}: ${l("messages.mode_temporary")}`:` ${l("labels.mode")}: ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${l("messages.config_saved_to",{path:de()})}`),console.log("")}catch(u){let p=u instanceof Error?u.message:String(u);console.error(l("login.login_failed",{error:p})),process.exit(1)}}K();U();async function wi(n,e){if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.logout_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),e.all){let t=jn(),i=await import("fs");i.existsSync(t)?(i.rmSync(t,{recursive:!0,force:!0}),console.log(l("messages.session_data_removed")),console.log(` ${l("messages.deleted",{path:t})}`)):console.log(l("messages.session_data_not_found")),console.log("");return}let o=L();if(!o.accounts||o.accounts.length===0){console.log(l("messages.session_not_found_logged_out")),console.log("");return}try{if(e.email){let t=o.accounts.findIndex(i=>i.accountId===e.email||i.session?.selfUid===e.email||i.email===e.email);if(t>=0){let i=o.accounts.splice(t,1)[0];E(o),console.log(l("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(l("errors.account_not_found_with_id",{accountId:e.email}))}else o.accounts=[],E(o),console.log(l("messages.logged_out_all")),console.log(` ${l("messages.config_preserved",{path:de()})}`)}catch(t){let i=t instanceof Error?t.message:String(t);console.error(l("login.logout_failed",{error:i})),process.exit(1)}console.log("")}en();re();De();U();var ve=12;async function Ci(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Status"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let o=L();if(!o.accounts||o.accounts.length===0){console.log(l("status.not_logged_in")),console.log(""),console.log(l("status.login_hint")),console.log("");return}for(let t of o.accounts){let i=t.session,s=t.role||"standard";if(console.log(` ${I(l("labels.email")+":",ve)} ${t.email||t.accountId}`),console.log(` ${I(l("agent.list_role")+":",ve)} ${s}`),console.log(` ${I(l("labels.bot")+":",ve)} ${ae(o)}`),console.log(` ${I("UID:",ve)} ${i?.selfUid||"N/A"}`),console.log(` ${I(l("labels.mode")+":",ve)} ${t.enabled?l("messages.mode_persistent"):l("messages.mode_temporary")}`),console.log(` ${I(l("labels.server")+":",ve)} ${i?.baseUrl||"N/A"}`),t.agentId&&console.log(` ${I(l("agent.list_agent_id")+":",ve)} ${t.agentId}`),i?.senderName&&console.log(` ${I(l("labels.name")+":",ve)} ${i.senderName}`),i&&t.enabled)try{let a=ie.fromConfig(t.accountId);if(a){let r=await a.checkSession();if(console.log(` ${I(l("agent.list_session")+":",ve)} ${r?"\u2713 "+l("agent.list_session_valid"):"\u2717 "+l("agent.list_session_expired")}`),e.verbose){let c=await a.fetchSenderName();c&&console.log(` ${I(l("labels.name")+":",ve)} ${c}`)}}}catch(a){console.log(` ${I(l("agent.list_session")+":",ve)} \u2717 ${l("api.send_failed",{code:a instanceof Error?a.message:"unknown"})}`)}console.log("")}console.log(` ${I(l("labels.config")+":",ve)} ${de()}`),console.log("")}K();U();async function _i(n,e){let o=e.keyword;o||(console.error(l("errors.keyword_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_groups",{keyword:o})),console.log("");try{let a=await i.searchGroups(o,t);if(a.length===0){console.log(l("messages.no_groups_found")),console.log("");return}console.log(l("messages.found_groups",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;if(console.log(` ${u}. ${c.name||c.trueName||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),c.description){let p=c.description.length>60?c.description.substring(0,57)+"...":c.description;console.log(` Desc: ${p}`)}console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}K();U();async function Si(n,e){let o=e.keyword;o||(console.error(l("errors.keyword_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_contacts",{keyword:o})),console.log("");try{let a=await i.searchContacts(o,t);if(a.length===0){console.log(l("messages.no_contacts_found")),console.log("");return}console.log(l("messages.found_contacts",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;console.log(` ${u}. ${c.trueName||c.name||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}K();U();function mm(n,e){return e?n.filter(o=>o.senderUid===e):n}async function Ai(n,e){let o=e.to;o||(console.error(l("errors.recipient_required")),process.exit(1));let t=e.limit||20,i=M();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.listing_messages_with",{name:o})),console.log("");try{let a=await i.resolveRecipient(o);console.log(`${l("labels.conversation")}: ${a.name} (${a.type})`),console.log("");let r=await i.listMessages(a,{limit:t,latestFirst:!0});if(e.sender&&(r=mm(r,e.sender),console.log(l("messages.filter_by_sender",{sender:e.sender,count:r.length})),console.log("")),r.length===0){console.log(l("messages.no_messages_found")),console.log("");return}if(e.json){console.log(JSON.stringify({success:!0,data:{chat:{uid:a.uid,name:a.name,type:a.type},messages:r.map(c=>({mid:c.mid,time:c.time,subject:c.subject,sender_uid:c.senderUid,sender_name:c.senderName,sender_email:c.senderEmail,attachments:c.attachments}))}},null,2));return}console.log(l("messages.recent_messages",{count:r.length})),console.log("");for(let c of r){let u=c.senderName||c.senderEmail||c.senderUid||l("labels.unknown");if(console.log(` \u250C\u2500 ${u} @ ${c.time||"N/A"}`),c.subject){let p=c.subject.length>200?c.subject.substring(0,197)+"...":c.subject;console.log(` \u2502 ${p.replace(/\n/g,`
|
|
24
|
-
\u2502 `)}`)}if(c.attachments&&c.attachments.length>0){console.log(` \u2502 ${l("labels.attachments")}:`);for(let p of c.attachments){let d=p.file_size?
|
|
27
|
+
`),t(i);break;case"":process.stdout.write(`
|
|
28
|
+
`),process.exit(1);break;case"\x7F":case"\b":i.length>0&&(i=i.slice(0,-1),process.stdout.clearLine(0),process.stdout.cursorTo(0),process.stdout.write(n+"*".repeat(i.length)));break;default:c.charCodeAt(0)>=32&&(i+=c,process.stdout.write("*"));break}};s.on("data",a)}else if(e){process.stdout.write(n.replace("Password:","Password (visible): "));let i=qi.createInterface({input:process.stdin,output:process.stdout});i.question("",s=>{i.close(),t(s.trim())})}else{let i=qi.createInterface({input:process.stdin,output:process.stdout});i.question(n,s=>{i.close(),t(s.trim())})}})}async function mt(n,e){let t=e.temp??!1;console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Login (Password)"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(t?" Mode: Temporary (api_token will NOT be saved)":" Mode: Persistent (api_token will be saved)"),console.log("");let o=e.email;o||(o=Q("LUNKR_EMAIL")||Q("LUNKR_USERNAME")),o||(o=await Ll("Email: ")),o||(console.error(l("errors.email_required")),process.exit(1));let i=e.password;i||(i=Q("LUNKR_PASSWORD")),i||(i=await Ll(l("login.password_prompt"),!0)),i||(console.error(l("errors.password_required")),process.exit(1)),console.log(""),console.log(l("messages.authenticating"));let s=e.verbose??!1,a=e.debug??!1,r=R(),c={email:o,password:i,deviceUuid:r.device_uuid,deviceName:r.device_name};try{let u=await Al(c,{deviceUuid:r.device_uuid,deviceName:r.device_name,verbose:s,debug:a});u.success||(console.error(l("login.login_failed",{error:u.error})),process.exit(1)),u.session||(console.error(l("login.login_success_no_session")),process.exit(1));let p=Sl(u.session.cookie);console.log(""),console.log(l("messages.getting_token"));try{await Rl({email:o,sid:u.session.sid,cookie:u.session.cookie,emailForAccountId:o,baseUrl:u.session.baseUrl,apiPath:u.session.apiPath,deviceUuid:r.device_uuid,cookies:p,temp:t,debug:a})}catch(d){let m=d instanceof Error?d.message:String(d);console.warn(l("login.token_login_failed_warn",{error:m})),console.log(l("login.session_saved_without_token"));let f={accountId:o,email:o,enabled:!0,session:u.session},h=r.accounts?.findIndex(x=>x.accountId===o)??-1;if(h>=0&&r.accounts){let x=r.accounts[h];x.session=f.session,x.enabled=!0}else r.accounts||(r.accounts=[]),r.accounts.push(f);$(r)}console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.login_successful")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("login.result_email",{email:o})),console.log(l("login.result_uid",{uid:u.session.selfUid})),console.log(l("login.result_server",{server:u.session.baseUrl})),console.log(t?` ${l("labels.mode")}: ${l("messages.mode_temporary")}`:` ${l("labels.mode")}: ${l("messages.mode_persistent")}`),console.log(""),console.log(` ${l("messages.config_saved_to",{path:le()})}`),console.log("")}catch(u){let p=u instanceof Error?u.message:String(u);console.error(l("login.login_failed",{error:p})),process.exit(1)}}V();T();async function Ni(n,e){if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("login.logout_intro")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),e.all){let o=An(),i=await import("fs");i.existsSync(o)?(i.rmSync(o,{recursive:!0,force:!0}),console.log(l("messages.session_data_removed")),console.log(` ${l("messages.deleted",{path:o})}`)):console.log(l("messages.session_data_not_found")),console.log("");return}let t=R();if(!t.accounts||t.accounts.length===0){console.log(l("messages.session_not_found_logged_out")),console.log("");return}try{if(e.email){let o=t.accounts.findIndex(i=>i.accountId===e.email||i.session?.selfUid===e.email||i.email===e.email);if(o>=0){let i=t.accounts.splice(o,1)[0];$(t),console.log(l("messages.logged_out_with",{account:i.accountId||e.email}))}else console.log(l("errors.account_not_found_with_id",{accountId:e.email}))}else t.accounts=[],$(t),console.log(l("messages.logged_out_all")),console.log(` ${l("messages.config_preserved",{path:le()})}`)}catch(o){let i=o instanceof Error?o.message:String(o);console.error(l("login.logout_failed",{error:i})),process.exit(1)}console.log("")}tn();te();Ne();T();var ye=12;async function Mi(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr Status"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let t=R();if(!t.accounts||t.accounts.length===0){console.log(l("status.not_logged_in")),console.log(""),console.log(l("status.login_hint")),console.log("");return}for(let o of t.accounts){let i=o.session,s=o.role||"standard";if(console.log(` ${P(l("labels.email")+":",ye)} ${o.email||o.accountId}`),console.log(` ${P(l("agent.list_role")+":",ye)} ${s}`),console.log(` ${P(l("labels.bot")+":",ye)} ${se(t)}`),console.log(` ${P("UID:",ye)} ${i?.selfUid||"N/A"}`),console.log(` ${P(l("labels.mode")+":",ye)} ${o.enabled?l("messages.mode_persistent"):l("messages.mode_temporary")}`),console.log(` ${P(l("labels.server")+":",ye)} ${i?.baseUrl||"N/A"}`),o.agentId&&console.log(` ${P(l("agent.list_agent_id")+":",ye)} ${o.agentId}`),i?.senderName&&console.log(` ${P(l("labels.name")+":",ye)} ${i.senderName}`),i&&o.enabled)try{let a=re.fromConfig(o.accountId);if(a){let r=await a.checkSession();if(console.log(` ${P(l("agent.list_session")+":",ye)} ${r?"\u2713 "+l("agent.list_session_valid"):"\u2717 "+l("agent.list_session_expired")}`),e.verbose){let c=await a.fetchSenderName();c&&console.log(` ${P(l("labels.name")+":",ye)} ${c}`)}}}catch(a){console.log(` ${P(l("agent.list_session")+":",ye)} \u2717 ${l("api.send_failed",{code:a instanceof Error?a.message:"unknown"})}`)}console.log("")}console.log(` ${P(l("labels.config")+":",ye)} ${le()}`),console.log("")}V();T();async function Bi(n,e){let t=e.keyword;t||(console.error(l("errors.keyword_required")),process.exit(1));let o=e.limit||20,i=B();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_groups",{keyword:t})),console.log("");try{let a=await i.searchGroups(t,o);if(a.length===0){console.log(l("messages.no_groups_found")),console.log("");return}console.log(l("messages.found_groups",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;if(console.log(` ${u}. ${c.name||c.trueName||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),c.description){let p=c.description.length>60?c.description.substring(0,57)+"...":c.description;console.log(` Desc: ${p}`)}console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}V();T();async function Gi(n,e){let t=e.keyword;t||(console.error(l("errors.keyword_required")),process.exit(1));let o=e.limit||20,i=B();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.searching_contacts",{keyword:t})),console.log("");try{let a=await i.searchContacts(t,o);if(a.length===0){console.log(l("messages.no_contacts_found")),console.log("");return}console.log(l("messages.found_contacts",{count:a.length})),console.log("");for(let r=0;r<a.length;r++){let c=a[r],u=r+1;console.log(` ${u}. ${c.trueName||c.name||"Unnamed"}`),console.log(` ${l("labels.uid")}: ${c.uid}`),c.email&&console.log(` ${l("labels.email")}: ${c.email}`),console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.search_failed",{error:r})),process.exit(1)}}V();T();function zm(n,e){return e?n.filter(t=>t.senderUid===e):n}async function zi(n,e){let t=e.to;t||(console.error(l("errors.recipient_required")),process.exit(1));let o=e.limit||20,i=B();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.listing_messages_with",{name:t})),console.log("");try{let a=await i.resolveRecipient(t);console.log(`${l("labels.conversation")}: ${a.name} (${a.type})`),console.log("");let r=await i.listMessages(a,{limit:o,latestFirst:!0});if(e.sender&&(r=zm(r,e.sender),console.log(l("messages.filter_by_sender",{sender:e.sender,count:r.length})),console.log("")),r.length===0){console.log(l("messages.no_messages_found")),console.log("");return}if(e.json){console.log(JSON.stringify({success:!0,data:{chat:{uid:a.uid,name:a.name,type:a.type},messages:r.map(c=>({mid:c.mid,time:c.time,subject:c.subject,sender_uid:c.senderUid,sender_name:c.senderName,sender_email:c.senderEmail,attachments:c.attachments}))}},null,2));return}console.log(l("messages.recent_messages",{count:r.length})),console.log("");for(let c of r){let u=c.senderName||c.senderEmail||c.senderUid||l("labels.unknown");if(console.log(` \u250C\u2500 ${u} @ ${c.time||"N/A"}`),c.subject){let p=c.subject.length>200?c.subject.substring(0,197)+"...":c.subject;console.log(` \u2502 ${p.replace(/\n/g,`
|
|
29
|
+
\u2502 `)}`)}if(c.attachments&&c.attachments.length>0){console.log(` \u2502 ${l("labels.attachments")}:`);for(let p of c.attachments){let d=p.file_size?xn(p.file_size):"",m=p.file_id||"",f=p.uid||"";console.log(` \u2502 - ${p.title||l("labels.unnamed")} ${d}`),m&&console.log(` \u2502 file_id: ${m}`),f&&console.log(` \u2502 uid: ${f}`)}}console.log(` \u2514\u2500 MID: ${c.mid}`),console.log("")}}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.list_failed",{error:r})),process.exit(1)}}V();T();import*as Hi from"readline";function Km(n){return new Promise(e=>{console.log(l("messages.multiple_matches")),console.log("");for(let o=0;o<n.length;o++)console.log(` ${o+1}. ${n[o].name} (${n[o].uid})`);console.log("");let t=Hi.createInterface({input:process.stdin,output:process.stdout});t.question(l("messages.enter_number",{max:n.length}),o=>{t.close();let i=parseInt(o.trim(),10);i>=1&&i<=n.length?e(i-1):(console.error(l("errors.invalid_selection")),process.exit(1))})})}async function Vi(n,e){let t=e.to;t||(console.error(l("errors.recipient_required")),process.exit(1));let o=B();await o.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1));try{let s=await o.resolveRecipientInteractive(t,Te(t)?void 0:a=>a.length>1?-1:0);if(!Te(t)){let a=await o.searchContacts(t,10),r=await o.searchGroups(t,10),c=[...a.map(p=>({uid:p.uid,name:p.trueName||p.name||p.email||p.uid,type:"user"})),...r.map(p=>({uid:p.uid,name:p.name||p.trueName||p.email||p.uid,type:"group"}))],u=c.filter(p=>p.name===t);if(u.length===1){let p=u[0],d=await o.resolveRecipient(p.uid);console.log(""),console.log(l("messages.sending_to",{name:d.name,type:d.type})),console.log(""),await Ki(o,d.uid,e.message);return}if(c.length>1){let p=await Km(c),d=c[p],m=await o.resolveRecipient(d.uid);console.log(""),console.log(l("messages.sending_to",{name:m.name,type:m.type})),console.log(""),await Ki(o,m.uid,e.message);return}}console.log(""),console.log(l("messages.sending_to",{name:s.name,type:s.type})),console.log(""),await Ki(o,s.uid,e.message)}catch(s){let a=s instanceof Error?s.message:String(s);console.error(l("api.send_failed",{code:a})),process.exit(1)}}async function Ki(n,e,t){let o=t;if(!o&&!process.stdin.isTTY){let a=[];for await(let r of process.stdin)a.push(r);o=Buffer.concat(a).toString("utf-8").trim()}o||(o=await new Promise(a=>{let r=Hi.createInterface({input:process.stdin,output:process.stdout});r.question(l("labels.message")+"\uFF1A",c=>{r.close(),a(c.trim())})})),o||(console.error(l("errors.message_required")),process.exit(1));let i=await n.resolveRecipient(e),s=await n.sendMessage(i,o);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.message_sent")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.to")}: ${i.name}`),console.log(` ${l("labels.type")}: ${i.type}`),console.log(` ${l("labels.mid")}: ${s.mid}`),console.log("")}V();T();import*as Il from"readline";function Hm(n){return new Promise(e=>{console.log(l("messages.multiple_matches")),console.log("");for(let o=0;o<n.length;o++)console.log(` ${o+1}. ${n[o].name} (${n[o].uid})`);console.log("");let t=Il.createInterface({input:process.stdin,output:process.stdout});t.question(l("messages.enter_number",{max:n.length}),o=>{t.close();let i=parseInt(o.trim(),10);i>=1&&i<=n.length?e(i-1):(console.error(l("errors.invalid_selection")),process.exit(1))})})}async function Wi(n,e){let t=e.to;t||(console.error(l("errors.recipient_required")),process.exit(1));let o=e.file;(!o||o.length===0)&&(console.error(l("errors.file_required")),process.exit(1));let i=B();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1));try{let a=await i.resolveRecipientInteractive(t,Te(t)?void 0:u=>u.length>1?-1:0);if(!Te(t)){let u=await i.searchContacts(t,10),p=await i.searchGroups(t,10),d=[...u.map(f=>({uid:f.uid,name:f.trueName||f.name||f.email||f.uid,type:"user"})),...p.map(f=>({uid:f.uid,name:f.name||f.trueName||f.email||f.uid,type:"group"}))],m=d.filter(f=>f.name===t);if(m.length===1){let f=m[0];a=await i.resolveRecipient(f.uid)}else if(d.length>1){let f=await Hm(d),h=d[f];a=await i.resolveRecipient(h.uid)}}console.log(""),console.log(l("messages.sending_files_to",{count:o.length,name:a.name,type:a.type})),console.log("");let r=await import("fs");for(let u=0;u<o.length;u++){let p=o[u],d="N/A";try{let m=r.statSync(p);d=xn(m.size)}catch{d=l("messages.file_not_found")}console.log(` ${u+1}. ${p} (${d})`)}console.log("");let c=await i.sendFile(a,o,{content:e.message});console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.files_sent")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.to")}: ${a.name}`),console.log(` ${l("labels.type")}: ${a.type}`),console.log(` ${l("labels.mid")}: ${c.mid}`),console.log(` ${l("labels.files")}: ${c.files.length}`),console.log("")}catch(a){let r=a instanceof Error?a.message:String(a);console.error(l("api.send_failed",{code:r})),process.exit(1)}}V();T();async function Ji(n,e){let t=e["file-id"];t||(console.error(l("errors.file_id_required")),process.exit(1));let o=e.uid;o||(console.error(l("errors.uid_required")),process.exit(1));let i=B();await i.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log(l("messages.downloading_file")),console.log("");try{let a=await i.downloadFile(t,o,e.output,e.name);console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("messages.download_complete")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(` ${l("labels.name")}: ${a.fileName}`),console.log(` ${l("labels.size")}: ${xn(a.fileSize)}`),console.log(` ${l("labels.path")}: ${a.filePath}`),console.log("")}catch(a){let r=a instanceof Error?a.message:String(a);console.error(`${l("api.download_failed")}
|
|
25
30
|
|
|
26
|
-
${r}`),process.exit(1)}}
|
|
31
|
+
${r}`),process.exit(1)}}V();T();async function Yi(n,e){let t=B();await t.checkSession()||(console.error(l("errors.session_expired_login")),process.exit(1)),console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(" Lunkr WebSocket Listener"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("messages.connecting_websocket")),console.log(l("messages.press_ctrlc")),console.log("");let i=t.createSocketClient({onConnect:()=>{console.log(`[${me(Date.now())}] Connected to Lunkr`)},onDisconnect:()=>{console.log(`[${me(Date.now())}] Disconnected from Lunkr`)},onReady:()=>{console.log(`[${me(Date.now())}] Ready to receive messages`),console.log("")},onMessage:a=>{if(e.raw){console.log(`[${me(Date.now())}] RAW:`),console.log(JSON.stringify(a,null,2)),console.log("");return}if(!a||typeof a!="object"){console.log(`[${me(Date.now())}] Unknown message:`,a);return}let r=a,c=r.topic||"",u=r.payload||"",p;try{p=JSON.parse(u)}catch{console.log(`[${me(Date.now())}] Non-JSON payload on topic: ${c}`);return}if(!p.mid&&!p.subject)return;let d=p.mid||"",m=p.from||{},f=p.to||{},h=m.uid||"",x=m.true_name||m.email||h,v=f.true_name||f.email||"",g=p.subject||"";try{g=decodeURIComponent(g.replace(/\+/g," "))}catch{}let k=p.type||p.group_type||"p2p",w=p.uid||f.uid||"",b=p.time||"";console.log(`[${me(Date.now())}] Message from ${x}:`),console.log(` ID: ${d}`),console.log(` From: ${x} (${h})`),k!=="p2p"&&v?(console.log(` To: ${v} (${w})`),console.log(` Type: ${k}`)):console.log(` Type: ${k}`),b&&console.log(` Time: ${b}`),console.log(` Text: ${g.substring(0,200)}${g.length>200?"...":""}`),console.log("")},onError:a=>{console.error(`[${me(Date.now())}] Error: ${a.message}`)}});await i.connect()||(console.error(l("api.socket_connect_failed",{accountId:"N/A"})),process.exit(1)),process.on("SIGINT",()=>{console.log(""),console.log(l("messages.disconnecting")),i.disconnect(),process.exit(0)}),await new Promise(()=>{})}V();T();async function Vm(n,e,t,o){let i=`\u{1F916} ${l("create.welcome_title")}
|
|
27
32
|
|
|
28
|
-
\u{1F4CB} ${l("create.discussion_name")}: ${
|
|
33
|
+
\u{1F4CB} ${l("create.discussion_name")}: ${o.name}
|
|
29
34
|
\u{1F194} ${l("create.discussion_id")}: ${e}
|
|
30
|
-
${
|
|
35
|
+
${o.agentId?`\u{1F916} ${l("create.linked_agent")}: ${o.agentId}
|
|
31
36
|
`:""}\u{1F4A1} ${l("create.instructions")}:
|
|
32
37
|
\u2022 ${l("create.instruction_1")}
|
|
33
38
|
\u2022 ${l("create.instruction_2")}
|
|
34
39
|
\u2022 ${l("create.instruction_3")}
|
|
35
40
|
|
|
36
|
-
\u2705 ${l("create.ready_to_chat")}`,s=`[@!${
|
|
37
|
-
`);for(let[c,u]of r)console.log(` ${u.name}`),console.log(` GID: ${c}`),u.agentId&&console.log(` Agent: ${u.agentId}`),console.log("")}var
|
|
38
|
-
`))console.log(o?e+o:"")}async function Ni(n,e){let o="lunkr-openclaw",t="lunkr-openclaw",i="lunkr";if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),!e.yes){if(console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),vm(l("setup.disclaimer")),console.log(""),!await xm(l("setup.confirm_continue"))){console.log(` ${l("setup.cancelled")}`),console.log("");return}console.log("")}let a=await n.runtime.config.loadConfig(),r=!1,c=a.plugins||{},u=c.allow||[];if(u.includes(o))console.log(` \u2713 ${l("setup.plugin_already_registered",{id:o})}`);else{let O=[...u,o];a.plugins={...c,allow:O},r=!0,console.log(` \u2713 ${l("setup.plugin_registered",{id:o})}`)}let p=a.channels||{},d=p[o];d&&Object.keys(d).some(O=>O!=="enabled")?console.log(` \u2713 ${l("setup.channel_already_registered",{id:o})}`):(a.channels={...p,[o]:{...d,enabled:!0,dmPolicy:"allow"}},r=!0,console.log(` \u2713 ${l("setup.channel_registered",{id:o})}`));let f=a.tools||{},h=f.alsoAllow||[];h.includes(t)?console.log(` \u2713 ${l("setup.tool_already_registered",{name:t})}`):(a.tools={...f,alsoAllow:[...h,t]},r=!0,console.log(` \u2713 ${l("setup.tool_registered",{name:t})}`));let g=(a.plugins||{}).entries||{},v=g[o]||{},w=a.skills||{},y=w.entries||{},k=y[i]||{},C=w.load||{},b=C.extraDirs||[],S=fl.join(fl.dirname(n.source),"skills"),T=v.enabled===!0,R=k.enabled===!0,q=b.includes(S);if(T&&R&&q)console.log(` \u2713 ${l("setup.skill_already_registered",{name:i})}`);else{let O=q?b:[...b.filter(V=>!V.includes(`/${i}/skills`)),S];a.plugins={...a.plugins,entries:{...g,[o]:{...v,enabled:!0}}},a.skills={...w,load:{...C,extraDirs:O},entries:{...y,[i]:{...k,enabled:!0}}},r=!0,console.log(` \u2713 ${l("setup.skill_registered",{name:i})}`)}if(r&&(await n.runtime.config.writeConfigFile(a),console.log(""),console.log(` ${l("setup.config_updated")}`)),console.log(""),e.skipLogin){console.log(` \u23ED ${l("setup.skip_login")}`),console.log("");return}let N=L().accounts?.[0];if(N?.session?.sid)try{let O=ie.fromConfig(N.accountId);if(O&&await O.checkSession()){let oe=N.session.senderName||N.email||N.accountId;console.log(` \u2713 ${l("setup.already_logged_in",{name:oe})}`),gl();return}}catch{}console.log(` ${l("setup.start_login")}`),await Pn(n,{}),gl()}function gl(){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.done_title")}`),console.log(""),console.log(` ${l("setup.done_gateway_cmd")}`),console.log(""),console.log(` ${l("setup.done_rename_hint")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}K();U();async function Mi(n,e){let o=e.trim()||"Bot",t=ae(),i=rt(o);E(i),console.log(""),console.log(l("rename.bot_name_changed",{oldName:t,name:o})),console.log(""),console.log(l("rename.restart_hint")),console.log(" openclaw gateway restart"),console.log("")}K();U();function Un(n){n.config||(n.config={});let e=n.config,o=!1;return(!e.groupPolicy||e.groupPolicy==="open")&&(e.groupPolicy="allowlist",o=!0),(!e.dmPolicy||e.dmPolicy==="open")&&(e.dmPolicy="disabled",o=!0),o}function bm(n){if(!n?.config)return;let e=n.config.agents;if(!e)return;let o=e.list;return Array.isArray(o)?o.find(i=>i.default===!0)?.id:void 0}function Tn(n,e){if(e)return e;let o=bm(n);return o&&console.log(`Using default agent: ${o}`),o}async function Ue(n,e,o){if(n)try{let i=await n.runtime.config.loadConfig(),a=(i.bindings||[]).filter(r=>r.match?.channel!=="lunkr-openclaw"?!0:(r.match?.accountId||"default")!==e);o&&a.push({agentId:o,comment:`lunkr ${e}`,match:{channel:"lunkr-openclaw",accountId:e}}),i.bindings=a,await n.runtime.config.writeConfigFile(i),console.log(o?` \u2713 OpenClaw binding: lunkr-openclaw:${e} \u2192 agent:${o}`:` \u2713 OpenClaw binding removed for lunkr-openclaw:${e}`)}catch(t){console.warn(` \u26A0 Failed to update OpenClaw bindings: ${t instanceof Error?t.message:String(t)}`)}}async function Bi(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("agent.add_title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let o=L();if(e.bypwd||e.email){if(!e.email){let c=(await import("readline")).createInterface({input:process.stdin,output:process.stdout}),u=await new Promise(p=>{c.question("Email: ",d=>{c.close(),p(d.trim())})});if(!u){console.error(l("errors.email_required")),process.exitCode=1;return}e.email=u}if(ee(e.email,o)){console.error(l("agent.add_already_exists",{email:e.email})),process.exitCode=1;return}await so(n,{email:e.email,password:e.password,verbose:e.verbose,debug:e.debug});let s=L(),a=s.accounts?.find(r=>r.email===e.email);if(a){a.role="agent";let r=Tn(n,e.agentId);a.agentId=r,Un(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Fe(a,s),r&&await Ue(n,`${be}${a.email}`,r),console.log(l("agent.add_success",{email:e.email}))}}else{let{loginCommand:t}=await Promise.resolve().then(()=>(zo(),Qc)),i=new Set(o.accounts?.map(r=>r.email)||[]);await t(n,{verbose:e.verbose,force:!0});let s=L(),a=s.accounts?.find(r=>!i.has(r.email));if(a){if(i.has(a.email)){console.error(l("agent.add_already_exists",{email:a.email})),process.exitCode=1;return}a.role="agent";let r=Tn(n,e.agentId);a.agentId=r,Un(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Fe(a,s),r&&await Ue(n,`${be}${a.email}`,r),console.log(l("agent.add_success",{email:a.email}))}}console.log("")}K();en();De();U();async function Gi(n,e){let o=L(),t=Fn(o),i=W(o),s=[];if(i&&i.role==="standard+agent"){let r=l("agent.list_session_none");if(i.session?.sid)try{let c=ie.fromConfig(i.accountId);c&&(r=await c.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{r=l("agent.list_session_expired")}s.push({email:i.email,role:i.role,agentId:i.agentId||"-",sessionStatus:r})}for(let r of t){let c=l("agent.list_session_none");if(r.session?.sid)try{let u=ie.fromConfig(r.accountId);u&&(c=await u.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{c=l("agent.list_session_expired")}s.push({email:r.email,role:r.role||"agent",agentId:r.agentId||"-",sessionStatus:c})}if(e.json){console.log(JSON.stringify(s,null,2));return}if(console.log(""),s.length===0){console.log(l("agent.list_empty")),console.log("");return}console.log(l("agent.list_title",{count:String(s.length)})),console.log("");let a=12;for(let r of s)console.log(` ${I(l("labels.email")+":",a)} ${r.email}`),console.log(` ${I(l("agent.list_role")+":",a)} ${r.role}`),console.log(` ${I(l("agent.list_agent_id")+":",a)} ${r.agentId}`),console.log(` ${I(l("agent.list_session")+":",a)} ${r.sessionStatus}`),console.log("")}K();U();async function zi(n,e){let{email:o}=e,t=ee(o);if(!t){console.error(l("agent.remove_not_found",{email:o})),process.exitCode=1;return}if(t.role!=="agent"){console.error(l("agent.remove_not_agent",{email:o,role:t.role||"standard"})),process.exitCode=1;return}at(o)?(await Ue(n,`${be}${o}`,void 0),console.log(l("agent.remove_success",{email:o}))):(console.error(l("agent.remove_not_found",{email:o})),process.exitCode=1)}K();U();async function Ki(n,e){let o=L();if(e.self){let a=W(o);if(!a){console.error(l("agent.bind_not_found",{email:"standard"})),process.exitCode=1;return}if(e.unbind){a.role==="standard+agent"?(a.role="standard",a.agentId=void 0,Fe(a,o),await Ue(n,"default",void 0),console.log(l("agent.bind_self_downgrade")),console.log(l("agent.bind_unbind_success",{email:a.email}))):console.log(l("agent.bind_self_downgrade"));return}let r=Tn(n,e.agentId);if(!r){console.error("No --agent-id specified and no default agent found in OpenClaw config."),console.error("Set an agent as default in openclaw.json: agents.list[].default = true"),process.exitCode=1;return}a.role="standard+agent",a.agentId=r,Un(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Fe(a,o),await Ue(n,"default",r),console.log(l("agent.bind_self_upgrade")),console.log(l("agent.bind_success",{email:a.email,agentId:r}));return}if(!e.email){console.error(l("agent.bind_email_required")),process.exitCode=1;return}let t=ee(e.email,o);if(!t){console.error(l("agent.bind_not_found",{email:e.email})),process.exitCode=1;return}if(e.unbind){t.agentId=void 0,Fe(t,o);let a=t.role==="agent"?`${be}${t.email}`:"default";await Ue(n,a,void 0),console.log(l("agent.bind_unbind_success",{email:t.email}));return}let i=Tn(n,e.agentId);if(!i){console.error("No --agent-id specified and no default agent found in OpenClaw config."),console.error("Set an agent as default in openclaw.json: agents.list[].default = true"),process.exitCode=1;return}t.agentId=i,Un(t)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Fe(t,o);let s=t.role==="agent"?`${be}${t.email}`:"default";await Ue(n,s,i),console.log(l("agent.bind_success",{email:e.email,agentId:i}))}re();De();U();var Me=20;async function Hi(n,e){let o=L(),t=e.account?ee(e.account,o):W(o);if(!t)throw new Error(l("errors.account_not_found"));let s=o.accounts?.find(m=>m.accountId===t.accountId||m.email===t.email)?.config||{};if(e.json){console.log(JSON.stringify({account:t.email||t.accountId,dmPolicy:s.dmPolicy??"open",allowFrom:s.allowFrom??[],groupPolicy:s.groupPolicy??"open",groups:s.groups??[],groupTypeRules:s.groupTypeRules??{},discussions:s.discussions??{}},null,2));return}console.log(""),console.log(l("policy.title")),console.log(""),console.log(` ${I(l("policy.account")+":",Me)} ${t.email||t.accountId}`),console.log(""),console.log(` ${I(l("policy.dm_policy")+":",Me)} ${s.dmPolicy??"open"}`);let a=s.allowFrom??[];if(a.length>0){console.log(` ${I(l("policy.allow_from")+":",Me)}`);for(let m of a)console.log(` - ${m}`)}else console.log(` ${I(l("policy.allow_from")+":",Me)} ${l("policy.none")}`);console.log(""),console.log(` ${I(l("policy.group_policy")+":",Me)} ${s.groupPolicy??"open"}`);let r=s.groups??[];if(r.length>0){console.log(` ${I(l("policy.groups")+":",Me)}`);for(let m of r)console.log(` - ${m}`)}else console.log(` ${I(l("policy.groups")+":",Me)} ${l("policy.none")}`);console.log("");let c=s.groupTypeRules??{},u=Object.entries(c);if(u.length>0){console.log(` ${l("policy.group_type_rules")}:`);for(let[m,f]of u)console.log(` ${m}: ${f.policy}`)}else console.log(` ${I(l("policy.group_type_rules")+":",Me)} ${l("policy.none")}`);console.log("");let p=s.discussions??{},d=Object.entries(p);if(d.length>0){console.log(` ${l("policy.discussions")}:`);for(let[m,f]of d){let h=f,x=[];h.enabled!==void 0&&x.push(`enabled=${h.enabled}`),h.policy&&x.push(`policy=${h.policy}`),h.requireMention!==void 0&&x.push(`requireMention=${h.requireMention}`),h.allowFrom?.length&&x.push(`allowFrom=[${h.allowFrom.join(", ")}]`),console.log(` ${m}: ${x.join(", ")||l("policy.no_overrides")}`)}}else console.log(` ${I(l("policy.discussions")+":",Me)} ${l("policy.none")}`);console.log("")}re();en();U();var Vi=/^#\d+#[A-Z]+$/;function On(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function xl(n,e){let o=n.trim();if(Vi.test(o))return o;let t=ie.fromConfig();if(!t)throw new Error(l("errors.session_expired_login"));return`${(await t.resolveRecipient(o)).uid}(${o})`}function Wi(n){let e=L(),o=n.account?ee(n.account,e):W(e);if(!o)throw new Error(l("errors.account_not_found"));let t=e.accounts?.findIndex(s=>s.accountId===o.accountId||s.email===o.email)??-1;if(t<0||!e.accounts)throw new Error(l("errors.account_not_found"));let i=e.accounts[t];return i.config||(i.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]}),{config:e,accountIdx:t,channelConfig:i.config}}async function Ji(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.set_requires_option"));let{config:o,channelConfig:t}=Wi(e);if(e.dm){if(!["open","allowlist","disabled"].includes(e.dm))throw new Error(l("policy.invalid_dm_policy",{value:e.dm}));t.dmPolicy=e.dm,console.log(l("policy.dm_policy_set",{value:e.dm}))}if(e.group){if(!["open","allowlist","disabled"].includes(e.group))throw new Error(l("policy.invalid_group_policy",{value:e.group}));t.groupPolicy=e.group,console.log(l("policy.group_policy_set",{value:e.group}))}E(o),console.log(l("policy.config_saved"))}async function Yi(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.allow_requires_option"));let{config:o,channelConfig:t}=Wi(e);if(e.dm){let i=await xl(e.dm,"user");t.allowFrom||(t.allowFrom=[]);let s=On(i);if(t.allowFrom.some(r=>On(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}t.allowFrom.push(i),console.log(l("policy.added_to_dm_allowlist",{uid:i}))}if(e.group){let i=await xl(e.group,"group");t.groups||(t.groups=[]);let s=On(i);if(t.groups.some(r=>On(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}t.groups.push(i),console.log(l("policy.added_to_group_allowlist",{uid:i}))}E(o),console.log(l("policy.config_saved"))}async function Qi(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.deny_requires_option"));let{config:o,channelConfig:t}=Wi(e);if(e.dm){let i=e.dm.trim(),s=Vi.test(i)?i:null;if(!t.allowFrom||t.allowFrom.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=t.allowFrom.length;if(t.allowFrom=t.allowFrom.filter(r=>{let c=On(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),t.allowFrom.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_dm_allowlist",{uid:i}))}if(e.group){let i=e.group.trim(),s=Vi.test(i)?i:null;if(!t.groups||t.groups.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=t.groups.length;if(t.groups=t.groups.filter(r=>{let c=On(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),t.groups.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_group_allowlist",{uid:i}))}E(o),console.log(l("policy.config_saved"))}re();en();De();U();var vl=/^#\d+#[A-Z]+$/;function Xi(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function ym(n){let e=n.trim();if(vl.test(e))return e;let o=ie.fromConfig();if(!o)throw new Error(l("errors.session_expired_login"));return`${(await o.resolveRecipient(e)).uid}(${e})`}var Zi=18;async function es(n,e,o){if(!e)throw new Error(l("policy.gid_required"));let t=L(),i=o.account?ee(o.account,t):W(t);if(!i)throw new Error(l("errors.account_not_found"));let s=t.accounts?.findIndex(p=>p.accountId===i.accountId||p.email===i.email)??-1;if(s<0||!t.accounts)throw new Error(l("errors.account_not_found"));let a=t.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(!(o.setPolicy||o.enable||o.disable||o.allow||o.deny||o.requireMention!==void 0||o.noRequireMention||o.remove)){let p=r.discussions?.[e];if(!p){console.log(l("policy.no_discussion_rules",{gid:e}));return}console.log(""),console.log(l("policy.discussion_rules_title",{gid:e})),console.log(""),p.enabled!==void 0&&console.log(` ${I(l("policy.enabled")+":",Zi)} ${p.enabled}`),p.policy&&console.log(` ${I(l("policy.policy")+":",Zi)} ${p.policy}`),p.requireMention!==void 0&&console.log(` ${I(l("policy.require_mention")+":",Zi)} ${p.requireMention}`);let d=p.allowFrom??[];if(d.length>0){console.log(` ${l("policy.allow_from")}:`);for(let m of d)console.log(` - ${m}`)}console.log("");return}if(o.remove){r.discussions?.[e]?(delete r.discussions[e],r.discussions&&Object.keys(r.discussions).length===0&&delete r.discussions,console.log(l("policy.discussion_removed",{gid:e}))):console.log(l("policy.no_discussion_rules",{gid:e})),E(t),console.log(l("policy.config_saved"));return}r.discussions||(r.discussions={}),r.discussions[e]||(r.discussions[e]={});let u=r.discussions[e];if(o.setPolicy){if(!["open","allowlist","disabled"].includes(o.setPolicy))throw new Error(l("policy.invalid_group_policy",{value:o.setPolicy}));u.policy=o.setPolicy,console.log(l("policy.discussion_policy_set",{gid:e,value:o.setPolicy}))}if(o.enable&&(u.enabled=!0,console.log(l("policy.discussion_enabled",{gid:e}))),o.disable&&(u.enabled=!1,console.log(l("policy.discussion_disabled",{gid:e}))),o.requireMention&&(u.requireMention=!0,console.log(l("policy.discussion_require_mention",{gid:e,value:"true"}))),o.noRequireMention&&(u.requireMention=!1,console.log(l("policy.discussion_require_mention",{gid:e,value:"false"}))),o.allow){let p=await ym(o.allow);u.allowFrom||(u.allowFrom=[]);let d=Xi(p);u.allowFrom.some(f=>Xi(f)===d)?console.log(l("policy.already_in_allowlist",{uid:p})):(u.allowFrom.push(p),console.log(l("policy.added_to_discussion_allowlist",{gid:e,uid:p})))}if(o.deny){let p=o.deny.trim(),d=vl.test(p)?p:null;if(!u.allowFrom||u.allowFrom.length===0)console.log(l("policy.not_in_allowlist",{uid:p}));else{let m=u.allowFrom.length;u.allowFrom=u.allowFrom.filter(f=>{let h=Xi(f);return!(d&&h===d||f===p||f.includes(`(${p})`))}),u.allowFrom.length===m?console.log(l("policy.not_in_allowlist",{uid:p})):console.log(l("policy.removed_from_discussion_allowlist",{gid:e,uid:p}))}}E(t),console.log(l("policy.config_saved"))}re();U();async function ns(n,e,o){if(!e)throw new Error(l("policy.suffix_required"));let t=L(),i=o.account?ee(o.account,t):W(t);if(!i)throw new Error(l("errors.account_not_found"));let s=t.accounts?.findIndex(u=>u.accountId===i.accountId||u.email===i.email)??-1;if(s<0||!t.accounts)throw new Error(l("errors.account_not_found"));let a=t.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(o.remove){r.groupTypeRules?.[e]?(delete r.groupTypeRules[e],r.groupTypeRules&&Object.keys(r.groupTypeRules).length===0&&delete r.groupTypeRules,console.log(l("policy.type_rule_removed",{suffix:e}))):console.log(l("policy.no_type_rule",{suffix:e})),E(t),console.log(l("policy.config_saved"));return}if(o.set){if(!["disabled","mentionOnly","open"].includes(o.set))throw new Error(l("policy.invalid_type_policy",{value:o.set}));r.groupTypeRules||(r.groupTypeRules={}),r.groupTypeRules[e]={policy:o.set},console.log(l("policy.type_rule_set",{suffix:e,value:o.set})),E(t),console.log(l("policy.config_saved"));return}let c=r.groupTypeRules?.[e];console.log(c?l("policy.type_rule_current",{suffix:e,value:c.policy}):l("policy.no_type_rule",{suffix:e}))}re();U();import*as bl from"readline";function km(n){return new Promise(e=>{let o=bl.createInterface({input:process.stdin,output:process.stdout});o.question(n,t=>{o.close();let i=t.trim().toLowerCase();e(i==="y"||i==="yes")})})}async function os(n,e){let o=L(),t=e.account?ee(e.account,o):W(o);if(!t)throw new Error(l("errors.account_not_found"));let i=o.accounts?.findIndex(a=>a.accountId===t.accountId||a.email===t.email)??-1;if(i<0||!o.accounts)throw new Error(l("errors.account_not_found"));if(!e.yes){let a=t.email||t.accountId;if(!await km(l("policy.reset_confirm",{account:a})+" ")){console.log(l("policy.reset_cancelled"));return}}let s=o.accounts[i];delete s.config,E(o),console.log(l("policy.reset_done",{account:t.email||t.accountId}))}import{appendFileSync as Cm}from"fs";import{Type as P}from"@sinclair/typebox";import*as yl from"path";en();re();U();mn();function ts(){return L()}function le(n){return{success:!0,data:n}}function H(n){return{success:!1,error:n}}async function Te(){try{let n=M();return await n.checkSession()?{api:n}:{error:H(l("errors.session_expired_login"))}}catch(n){return{error:H(n instanceof Error?n.message:String(n))}}}async function is(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.sendMessage(t,n.content);return le({to:i.to,type:i.type,mid:i.mid})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function ss(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.searchGroups(n.keyword,n.limit||10);return le({groups:t.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function as(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.searchContacts(n.keyword,n.limit||10);return le({contacts:t.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function kl(n){let e=await Te();return"error"in e?e.error:H("getGroupInfo not yet implemented")}async function wl(n){let e=await Te();return"error"in e?e.error:H("getUserInfo not yet implemented")}async function Cl(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=n.save_path;if(!t){let s=Mo();s&&(t=yl.join(s.filesDir,n.file_name||"download"))}let i=await o.downloadFile(n.file_id,n.uid,t,n.file_name);return console.log(`[lunkr_download_file] ${i.fileName} (${i.fileSize} bytes) \u2192 ${i.filePath}`),le({file_name:i.fileName,file_size:i.fileSize,saved_to:i.filePath})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function _l(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.convertAudio(n.input_path,n.output_format);return le({converted_file:t.filePath,format:t.format})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function Sl(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.getMessage(n.message_id);return t?le({mid:t.mid,time:t.time,subject:t.subject,content:t.content,sender_uid:t.sender_uid,sender_name:t.sender_name,sender_email:t.sender_email,source_id:t.source_id,attachments:t.attachments}):H(`Message not found: ${n.message_id}`)}catch(t){return H(t instanceof Error?t.message:String(t))}}async function rs(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.listMessages(t,{limit:n.limit||20});return le({messages:i.map(s=>({mid:s.mid,time:s.time,subject:s.subject,sender_uid:s.senderUid,sender_name:s.senderName,sender_email:s.senderEmail,attachments:s.attachments}))})}catch(t){return H(t instanceof Error?t.message:String(t))}}async function Al(n){let e=await Te();if("error"in e)return e.error;let{api:o}=e;try{let t=await o.resolveRecipient(n.to),i=await o.sendFile(t,n.file_paths,{content:n.message});return le({to:i.to,mid:i.mid,files:i.files})}catch(t){return H(t instanceof Error?t.message:String(t))}}mn();function cs(n){Cm("/tmp/lunkr-tools.log",`${new Date().toISOString()} ${n}
|
|
39
|
-
`)}function _e(n){return{content:[{type:"text",text:JSON.stringify(n,null,2)}],details:n}}function _m(){let n=Mo();if(!n)return null;let t=ts()?.accounts?.find(s=>s.accountId===n.accountId)?.role||"standard";if(t!=="agent"&&t!=="standard+agent")return null;let i=n.workspaceKey.indexOf(":");return i===-1?null:n.workspaceKey.slice(i+1)}var Sm=P.Object({to:P.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:P.String({description:"Message content to send"}),type:P.Optional(P.Union([P.Literal("text"),P.Literal("markdown")],{description:"Message type (default: text)"}))}),Am=P.Object({keyword:P.String({description:"Search keyword for group name"}),limit:P.Optional(P.Number({description:"Max results (default: 10)"}))}),Rm=P.Object({keyword:P.String({description:"Search keyword for contact name or email"}),limit:P.Optional(P.Number({description:"Max results (default: 10)"}))}),Lm=P.Object({group_id:P.String({description:"Group ID (e.g., #26783249#T)"})}),Im=P.Object({user_id:P.String({description:"User ID (e.g., #835#U) or email"})}),Pm=P.Object({to:P.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:P.Array(P.String(),{description:"Array of absolute file paths to send"}),message:P.Optional(P.String({description:"Optional text message to accompany the files"}))}),Um=P.Object({file_id:P.String({description:"File ID from message"}),uid:P.String({description:"Mailbox owner UID from attachment.uid field (e.g., #835#U for DM, group UID for group messages)"}),save_path:P.Optional(P.String({description:"Path to save file (default: temp directory)"})),file_name:P.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),Tm=P.Object({input_path:P.String({description:"Path to the audio file (e.g., downloaded .ilbc file)"}),output_format:P.Optional(P.String({description:"Target format: wav (default), mp3, ogg, etc."}))}),Om=P.Object({message_id:P.String({description:"Message ID to retrieve"})}),Em=P.Object({to:P.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:P.Optional(P.Number({description:"Max messages to retrieve (default: 20)"}))}),jm=P.Object({command:P.String({description:"Raw command arguments"}),commandName:P.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:P.String({description:"Skill name"})});function Fm(n){let{commandName:e,command:o}=n,t=o.trim().split(/\s+/),i=t[0]?.toLowerCase();switch(i){case"send":case"s":{if(t.length<3)return H("Usage: /lunkr send <to> <message>");let s=t[1],a=t.slice(2).join(" ");return le({action:"send",to:s,content:a})}case"search-groups":case"sg":{if(t.length<2)return H("Usage: /lunkr search-groups <keyword> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):10;return le({action:"searchGroups",keyword:s,limit:a})}case"search-contacts":case"sc":{if(t.length<2)return H("Usage: /lunkr search-contacts <keyword> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):10;return le({action:"searchContacts",keyword:s,limit:a})}case"list-messages":case"lm":case"msgs":{if(t.length<2)return H("Usage: /lunkr list-messages <to> [limit]");let s=t[1],a=t[2]?parseInt(t[2],10):20;return le({action:"listMessages",to:s,limit:a})}case"help":case void 0:return le({help:!0,usage:["/lunkr send <to> <message> - Send message","/lunkr search-groups <keyword> [limit] - Search groups","/lunkr search-contacts <keyword> [limit] - Search contacts","/lunkr list-messages <to> [limit] - List messages from chat"]});default:return H(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function $m(n){if(!n.success||!n.data)return n;let e=n.data;switch(e.action){case"send":return is({to:e.to,content:e.content});case"searchGroups":return ss({keyword:e.keyword,limit:e.limit});case"searchContacts":return as({keyword:e.keyword,limit:e.limit});case"listMessages":return rs({to:e.to,limit:e.limit});default:return H(`Unknown action: ${e.action}`)}}function Rl(n){let e=ts();if(!e?.accounts?.length){n.logger?.debug?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(t=>t.session)){n.logger?.debug?.("lunkr: No accounts with valid session found, skipping tool registration");return}n.logger?.debug?.(`lunkr: Found ${e.accounts.length} account(s), registering tools`),n.registerTool({name:"lunkr_send_message",label:"Send Lunkr Message",description:'Send a message to a Lunkr user or group. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T). Always use this tool for sending Lunkr messages, NOT the generic "message" tool.',parameters:Sm,async execute(t,i){let s=await is(i);return _e(s)}},{name:"lunkr_send_message"}),n.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:Am,async execute(t,i){let s=await ss(i);return _e(s)}},{name:"lunkr_search_groups"}),n.registerTool({name:"lunkr_search_contacts",label:"Search Lunkr Contacts",description:"Search for Lunkr contacts by name or email.",parameters:Rm,async execute(t,i){let s=await as(i);return _e(s)}},{name:"lunkr_search_contacts"}),n.registerTool({name:"lunkr_get_group_info",label:"Get Lunkr Group Info",description:"Get detailed information about a Lunkr discussion group.",parameters:Lm,async execute(t,i){let s=await kl(i);return _e(s)}},{name:"lunkr_get_group_info"}),n.registerTool({name:"lunkr_get_user_info",label:"Get Lunkr User Info",description:"Get detailed information about a Lunkr user.",parameters:Im,async execute(t,i){let s=await wl(i);return _e(s)}},{name:"lunkr_get_user_info"}),n.registerTool({name:"lunkr_send_file",label:"Send Lunkr File",description:"Send one or more files to a Lunkr user or group. Automatically resolves recipient names to UIDs. Files must be local absolute paths.",parameters:Pm,async execute(t,i){let s=await Al(i);return _e(s)}},{name:"lunkr_send_file"}),n.registerTool({name:"lunkr_download_file",label:"Download Lunkr File",description:"Download a file from a Lunkr message to local disk. For voice messages (.ilbc), the iLBC header is auto-prepended during download. After downloading voice files, use lunkr_convert_audio to convert to wav, then decide whether to use speech-to-text or handle the audio as needed.",parameters:Um,async execute(t,i){let s=await Cl(i);return _e(s)}},{name:"lunkr_download_file"}),n.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:Om,async execute(t,i){let s=await Sl(i);return _e(s)}},{name:"lunkr_get_message"}),n.registerTool({name:"lunkr_list_messages",label:"List Lunkr Messages",description:"List messages from a Lunkr chat (user or group). Use this to retrieve chat history. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T).",parameters:Em,async execute(t,i){let s=i,a=_m(),r=a||s.to;cs(`[lunkr_list_messages] params=${JSON.stringify(s)} channelTo=${a} effectiveTo=${r}`);let c=await rs({...s,to:r}),u=c?.data?.messages;if(cs(`[lunkr_list_messages] result: ${Array.isArray(u)?u.length:"N/A"} msgs, withAttachments=${Array.isArray(u)?u.filter(p=>p.attachments?.length>0).length:"N/A"}`),Array.isArray(u))for(let p of u)cs(`[lunkr_list_messages] mid=${p.mid} sender=${p.sender_email} atts=${JSON.stringify(p.attachments)}`);return _e(c)}},{name:"lunkr_list_messages"}),n.registerTool({name:"lunkr_convert_audio",label:"Convert Audio File",description:"Convert audio files to common formats using ffmpeg (e.g., iLBC voice messages \u2192 wav). Use this when you receive a voice message (.ilbc) and need to process it. After conversion, you can use the resulting wav file for speech-to-text or other processing as needed.",parameters:Tm,async execute(t,i){let s=await _l(i);return _e(s)}},{name:"lunkr_convert_audio"}),n.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:jm,async execute(t,i){let s=Fm(i),a=await $m(s);return _e(a)}},{name:"lunkr_command"}),n.logger?.debug?.("lunkr: Registered 11 Lunkr tools (10 API tools + 1 command dispatcher)")}var qm={type:"object",properties:{}},Dm={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:qm,register(n){let e={channel:{lunkr:{resolveAccount:async o=>{let t=await n.runtime.config.loadConfig();return me(t,o)},ensureAuthenticated:async o=>{if(!o.sid||!o.cookie)throw new Error(l("errors.account_not_authenticated"));let t=new F(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),i={"Cim.sid":o.sid};for(let a of o.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}if(t.setCookies(i),!await t.checkSessionValid(o.sid))throw new Error(l("errors.session_expired"))},sendMessage:async o=>{let t=await e.channel.lunkr.resolveAccount(o.accountId);if(!t)throw new Error(l("errors.account_not_found_with_id",{accountId:o.accountId}));await e.channel.lunkr.ensureAuthenticated(t);let i=new F(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),s={"Cim.sid":t.sid};for(let p of t.cookie.split(";")){let d=p.trim();if(d.includes("=")){let[m,f]=d.split("=",2);s[m.trim()]=f.trim()}}i.setCookies(s);let a=o.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",r=o.chatType==="p2p"?{to:o.chatId}:{gid:o.chatId},c={content:o.content,type:"text"};o.replyTo&&(c.replyTo=o.replyTo);let u=await i.postJson({func:a,sid:t.sid,query:r,payload:c});if(u.code!=="S_OK")throw new Error(l("api.send_failed",{code:u.code}))},probeAccount:async(o,t)=>{let i=await e.channel.lunkr.resolveAccount(o);if(!i)return{valid:!1,error:l("errors.account_not_found")};try{let s=new F(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath,timeout:t?t/1e3:5}),a={"Cim.sid":i.sid};for(let c of i.cookie.split(";")){let u=c.trim();if(u.includes("=")){let[p,d]=u.split("=",2);a[p.trim()]=d.trim()}}s.setCookies(a);let r=await s.checkSessionValid(i.sid);return{valid:r,session:r?i.lunkrConfig:void 0}}catch(s){return{valid:!1,error:s instanceof Error?s.message:String(s)}}}}},config:{readConfigFile:async()=>n.runtime.config.loadConfig(),writeConfigFile:async o=>n.runtime.config.writeConfigFile(o)},logging:{shouldLogVerbose:()=>Y("LUNKR_VERBOSE")==="1"}};Lc(e),"registrationMode"in n?n.registerChannel({plugin:Go}):n.registerChannel(Go),Rl(n),n.registerCli(({program:o})=>{let t=o.command("lunkr").description("Lunkr channel commands").option("-v, --verbose","Verbose output").option("--as <email>","Execute as a specific account (by email)").addHelpText("after",`
|
|
41
|
+
\u2705 ${l("create.ready_to_chat")}`,s=`[@!${t}] ${i}`,a=await n.callApi({func:"cim.msg:reply",payload:{uid:e,content:s,type:"text"}});if(a.code!=="S_OK")throw new Error(l("api.welcome_failed",{code:String(a.code)}))}async function to(n,e){let{name:t,agentId:o,force:i,welcome:s=!0,account:a}=e;if(!t||t.trim().length===0)throw new Error(l("errors.discussion_name_required"));if(a){let{getAccountById:b}=await Promise.resolve().then(()=>(te(),Hs)),S=b(a);if(!S)throw new Error(l("errors.account_not_found",{account:a}));let y=S.role||"standard";if(y==="agent")throw new Error(l("errors.account_not_standard",{account:a,role:y}))}let r=B(a);if(!await r.checkSession())throw new Error(l("errors.session_expired_login"));let u=`[Bot-${t.trim()}]`,p=se(),d;if(i){console.log(l("create.creating_discussion",{name:u}));try{d=(await r.createGroup(u)).uid,console.log(l("create.discussion_created",{gid:d}))}catch(b){let S=b instanceof Error?b.message:String(b);throw S.includes("\u5DF2\u5B58\u5728")||S.includes("exist")?new Error(l("create.discussion_exists",{name:u})):b}}else{let b=u.replace(/^\[|\]$/g,""),y=(await r.searchGroups(b,20)).find(C=>C.name===u||C.trueName===u);if(y)d=y.uid,console.log(l("create.reusing_discussion",{name:u})),console.log(` GID: ${d}`);else{console.log(l("create.creating_discussion",{name:u}));try{d=(await r.createGroup(u)).uid,console.log(l("create.discussion_created",{gid:d}))}catch(C){let I=C instanceof Error?C.message:String(C);throw I.includes("\u5DF2\u5B58\u5728")||I.includes("exist")?new Error(l("create.discussion_exists",{name:u})):C}}}if(s)try{await Vm(r,d,p,{name:t.trim(),agentId:o}),console.log(" \u2705 "+l("create.welcome_sent"))}catch(b){console.warn(" \u26A0\uFE0F "+l("create.welcome_failed",{error:b instanceof Error?b.message:String(b)}))}let f=await n.runtime.config.loadConfig(),h=f.channels||{},x=h["lunkr-openclaw"]||{},v=r.getSelfUid(),g={name:t.trim(),agentId:o,creatorUid:v,createdAt:Date.now()},k=x.botDiscussions||{};k[d]=g;let w={...f,channels:{...h,"lunkr-openclaw":{...x,botDiscussions:k}}};await n.runtime.config.writeConfigFile(w),console.log(""),console.log(l("messages.bot_discussion_configured",{name:u})),console.log(` GID: ${d}`),o&&console.log(` ${l("create.linked_agent")}: ${o}`),console.log(""),console.log(l("create.can_chat_now")),console.log(l("create.change_agent_hint")),console.log(""),console.log(l("create.config_auto_reload"))}var Pl={name:"bot-create",description:"Create a new Bot discussion group",options:[{name:"name",alias:"n",description:"Name for the bot discussion",type:"string",required:!0},{name:"agent-id",alias:"a",description:"Agent ID to associate with this discussion",type:"string",required:!1},{name:"force",alias:"f",description:"Force create a new discussion even if one exists",type:"boolean",required:!1}]};T();async function oo(n,e){let a=(((await n.runtime.config.loadConfig()).channels||{})["lunkr-openclaw"]||{}).botDiscussions||{};if(e.json){console.log(JSON.stringify(a,null,2));return}let r=Object.entries(a);if(r.length===0){console.log(l("messages.no_bot_discussions"));return}console.log(`${l("bot_list.title",{count:r.length})}
|
|
42
|
+
`);for(let[c,u]of r)console.log(` ${u.name}`),console.log(` GID: ${c}`),u.agentId&&console.log(` Agent: ${u.agentId}`),console.log("")}var Ul={name:"bot-list",description:"List all configured bot discussions",options:[{name:"json",alias:"j",description:"Output as JSON",type:"boolean",required:!1}]};V();T();import*as Ol from"readline";function Tl(n,e=!0){return new Promise(t=>{let o=Ol.createInterface({input:process.stdin,output:process.stdout});o.question(n,i=>{o.close();let s=i.trim().toLowerCase();t(e?s==="y"||s==="yes":s!=="n"&&s!=="no")})})}async function io(n,e){let{name:t,gid:o}=e;if(!t&&!o)throw new Error(l("bot_delete.name_or_gid_required"));let i=B();if(!await i.checkSession())throw new Error(l("errors.session_expired_login"));let r=await n.runtime.config.loadConfig(),c=r.channels||{},u=c["lunkr-openclaw"]||{},p=u.botDiscussions||{},d,m;if(o)d=o,m=p[o];else if(t){for(let[x,v]of Object.entries(p))if(v.name===t.trim()){d=x,m=v;break}}if(!d||!m){console.log(l("bot_delete.not_found"));return}if(console.log(""),console.log(l("bot_delete.found",{name:m.name,gid:d})),!e.yes&&!await Tl(l("bot_delete.confirm")+" ")){console.log(l("bot_delete.cancelled"));return}let f=!1;if(e.yes||(f=await Tl(l("bot_delete.dissolve_prompt")+" ")),f){console.log(l("bot_delete.deleting_from_server",{name:m.name}));try{await i.deleteGroup(d),console.log(" "+l("bot_delete.deleted_from_server"))}catch(x){console.warn(" \u26A0\uFE0F "+l("bot_delete.delete_from_server_failed",{error:x instanceof Error?x.message:String(x)}))}}delete p[d];let h={...r,channels:{...c,"lunkr-openclaw":{...u,botDiscussions:p}}};await n.runtime.config.writeConfigFile(h),console.log(l("bot_delete.removed_from_config",{name:m.name})),console.log(` GID: ${d}`),f||(console.log(""),console.log(l("bot_delete.reuse_hint"))),console.log(""),console.log(l("create.config_auto_reload"))}var El={name:"bot-delete",description:"Delete a Bot discussion from server and configuration",arguments:[{name:"name",description:"Name of the bot discussion to remove",required:!1}],options:[{name:"gid",alias:"g",description:"GID of the bot discussion to remove",type:"string",required:!1},{name:"yes",alias:"y",description:"Skip confirmation prompt",type:"boolean",required:!1}]};V();T();T();import{homedir as Qi}from"os";import{join as Xi}from"path";import{existsSync as jl,rmSync as $l}from"fs";async function Zi(n,e){let{purge:t=!1}=e,o="lunkr-openclaw",i="lunkr-openclaw",s="lunkr";console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("uninstall.uninstalling")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),console.log(l("uninstall.step1"));try{let r=await n.runtime.config.loadConfig(),c=!1,u=r.plugins||{},p=u.allow||[],d=p.filter(y=>y!==o);d.length<p.length?(u.allow=d,c=!0,console.log(` \u2713 ${l("uninstall.removed_plugin_allow",{id:o})}`)):console.log(` \u2139 ${l("uninstall.plugin_allow_not_found",{id:o})}`);let m=u.entries||{};m[o]?(delete m[o],u.entries=m,c=!0,console.log(` \u2713 ${l("uninstall.removed_plugin_entry",{id:o})}`)):console.log(` \u2139 ${l("uninstall.plugin_entry_not_found",{id:o})}`),r.plugins=u;let f=r.tools||{},h=f.alsoAllow||[],x=h.filter(y=>y!==i);x.length<h.length?(f.alsoAllow=x,c=!0,console.log(` \u2713 ${l("uninstall.removed_tool",{name:i})}`)):console.log(` \u2139 ${l("uninstall.tool_not_found",{name:i})}`),r.tools=f;let v=r.skills||{},g=v.entries||{};g[s]?(delete g[s],v.entries=g,c=!0,console.log(` \u2713 ${l("uninstall.removed_skill_entry",{name:s})}`)):console.log(` \u2139 ${l("uninstall.skill_entry_not_found",{name:s})}`);let k=v.load||{},w=k.extraDirs||[],b=w.filter(y=>!y.includes(`/${o}/skills`)&&!y.includes(`/${s}/skills`));b.length<w.length?(k.extraDirs=b,v.load=k,c=!0,console.log(` \u2713 ${l("uninstall.removed_skill_dir")}`)):console.log(` \u2139 ${l("uninstall.skill_dir_not_found")}`),r.skills=v;let S=r.channels||{};S[o]?(delete S[o],r.channels=S,c=!0,console.log(` \u2713 ${l("uninstall.removed_channel",{id:o})}`)):console.log(` \u2139 ${l("uninstall.channel_not_found",{id:o})}`),c&&await n.runtime.config.writeConfigFile(r)}catch(a){console.log(` \u26A0 ${l("uninstall.update_config_failed")}`,a instanceof Error?a.message:String(a))}if(t){console.log(""),console.log(l("uninstall.step2"));let a=Xi(Qi(),".lunkr");if(jl(a))try{$l(a,{recursive:!0,force:!0}),console.log(` \u2713 ${l("uninstall.removed_session",{path:a})}`)}catch(c){console.log(` \u26A0 ${l("uninstall.remove_session_failed")}`,c instanceof Error?c.message:String(c))}else console.log(` \u2139 ${l("uninstall.not_found_dir",{path:a})}`);let r=Xi(Qi(),".lunkr-mcp");if(jl(r))try{$l(r,{recursive:!0,force:!0}),console.log(` \u2713 ${l("uninstall.removed_legacy",{path:r})}`)}catch(c){console.log(` \u26A0 ${l("uninstall.remove_legacy_failed")}`,c instanceof Error?c.message:String(c))}}else console.log(""),console.log(l("uninstall.step2_skip")),console.log(` ${l("uninstall.session_location",{path:Xi(Qi(),".lunkr")})}`);console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("uninstall.done")}`),console.log(""),console.log(` ${l("uninstall.purge_hint")}`),console.log(" openclaw plugins uninstall lunkr-openclaw"),console.log(""),console.log(` ${l("uninstall.reinstall")}`),console.log(" openclaw lunkr setup"),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}T();async function es(n,e){let t=e.name||"lunkr-openclaw",i=await n.runtime.config.loadConfig(),s=i.tools||{},a=s.alsoAllow||[];if(a.includes(t)){console.log(l("tools.already_installed",{name:t}));return}let r={...i,tools:{...s,alsoAllow:[...a,t]}};await n.runtime.config.writeConfigFile(r),console.log(l("tools.install_success",{name:t})),console.log(l("tools.restart_session"))}T();async function ns(n,e){let t=e.name||"lunkr-openclaw",i=await n.runtime.config.loadConfig(),s=i.tools||{},a=s.alsoAllow||[];if(!a.includes(t)){console.log(l("tools.not_installed",{name:t}));return}let r={...i,tools:{...s,alsoAllow:a.filter(c=>c!==t)}};await n.runtime.config.writeConfigFile(r),console.log(l("tools.uninstall_success",{name:t})),console.log(l("tools.restart_session"))}T();import Fl from"node:path";async function ts(n,e){let t=e.name||"lunkr",o="lunkr-openclaw",s=await n.runtime.config.loadConfig(),a=s.plugins||{},r=a.entries||{},c=r[o]||{},u=s.skills||{},p=u.entries||{},d=p[t]||{},m=u.load||{},f=m.extraDirs||[],h=Fl.join(Fl.dirname(n.source),"skills"),x=c.enabled===!0&&d.enabled===!0,v=f.includes(h);if(x&&v){console.log(l("skills.already_installed",{name:t}));return}let g=v?f:[...f.filter(w=>!w.includes(`/${t}/skills`)),h],k={...s,plugins:{...a,entries:{...r,[o]:{...c,enabled:!0}}},skills:{...u,load:{...m,extraDirs:g},entries:{...p,[t]:{...d,enabled:!0}}}};await n.runtime.config.writeConfigFile(k),console.log(l("skills.install_success",{name:t})),console.log(l("skills.directory",{path:h})),console.log(l("skills.restart_session"))}T();import Dl from"node:path";async function os(n,e){let t=e.name||"lunkr",i=await n.runtime.config.loadConfig(),s=i.skills||{},a=s.entries||{},r=a[t]||{};if(!r.enabled){console.log(l("skills.not_installed",{name:t}));return}let c=s.load||{},u=c.extraDirs||[],p=Dl.join(Dl.dirname(n.source),"skills"),d=u.filter(f=>f!==p),m={...i,skills:{...s,load:{...c,extraDirs:d.length>0?d:void 0},entries:{...a,[t]:{...r,enabled:!1}}}};d.length===0&&delete m.skills.load,await n.runtime.config.writeConfigFile(m),console.log(l("skills.uninstall_success",{name:t})),console.log(l("skills.restart_session"))}te();tn();no();T();import ql from"node:path";import*as Ml from"readline";function Wm(n){return new Promise(e=>{let t=Ml.createInterface({input:process.stdin,output:process.stdout});t.question(n,o=>{t.close();let i=o.trim().toLowerCase();e(i==="y"||i==="yes")})})}function Jm(n,e=" "){for(let t of n.split(`
|
|
43
|
+
`))console.log(t?e+t:"")}async function is(n,e){let t="lunkr-openclaw",o="lunkr-openclaw",i="lunkr";if(console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(""),!e.yes){if(console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),Jm(l("setup.disclaimer")),console.log(""),!await Wm(l("setup.confirm_continue"))){console.log(` ${l("setup.cancelled")}`),console.log("");return}console.log("")}let a=await n.runtime.config.loadConfig(),r=!1,c=a.plugins||{},u=c.allow||[];if(u.includes(t))console.log(` \u2713 ${l("setup.plugin_already_registered",{id:t})}`);else{let O=[...u,t];a.plugins={...c,allow:O},r=!0,console.log(` \u2713 ${l("setup.plugin_registered",{id:t})}`)}let p=a.channels||{},d=p[t];d&&Object.keys(d).some(O=>O!=="enabled")?console.log(` \u2713 ${l("setup.channel_already_registered",{id:t})}`):(a.channels={...p,[t]:{...d,enabled:!0,dmPolicy:"allow"}},r=!0,console.log(` \u2713 ${l("setup.channel_registered",{id:t})}`));let f=a.tools||{},h=f.alsoAllow||[];h.includes(o)?console.log(` \u2713 ${l("setup.tool_already_registered",{name:o})}`):(a.tools={...f,alsoAllow:[...h,o]},r=!0,console.log(` \u2713 ${l("setup.tool_registered",{name:o})}`));let v=(a.plugins||{}).entries||{},g=v[t]||{},k=a.skills||{},w=k.entries||{},b=w[i]||{},S=k.load||{},y=S.extraDirs||[],C=ql.join(ql.dirname(n.source),"skills"),I=g.enabled===!0,E=b.enabled===!0,J=y.includes(C);if(I&&E&&J)console.log(` \u2713 ${l("setup.skill_already_registered",{name:i})}`);else{let O=J?y:[...y.filter(G=>!G.includes(`/${i}/skills`)),C];a.plugins={...a.plugins,entries:{...v,[t]:{...g,enabled:!0}}},a.skills={...k,load:{...S,extraDirs:O},entries:{...w,[i]:{...b,enabled:!0}}},r=!0,console.log(` \u2713 ${l("setup.skill_registered",{name:i})}`)}if(r&&(await n.runtime.config.writeConfigFile(a),console.log(""),console.log(` ${l("setup.config_updated")}`)),console.log(""),e.skipLogin){console.log(` \u23ED ${l("setup.skip_login")}`),console.log("");return}let F=R().accounts?.[0];if(F?.session?.sid)try{let O=re.fromConfig(F.accountId);if(O&&await O.checkSession()){let M=F.session.senderName||F.email||F.accountId;console.log(` \u2713 ${l("setup.already_logged_in",{name:M})}`),Nl();return}}catch{}console.log(` ${l("setup.start_login")}`),await qn(n,{}),Nl()}function Nl(){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("setup.done_title")}`),console.log(""),console.log(` ${l("setup.done_gateway_cmd")}`),console.log(""),console.log(` ${l("setup.done_rename_hint")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("")}V();T();async function ss(n,e){let t=e.trim()||"Bot",o=se(),i=Ct(t);$(i),console.log(""),console.log(l("rename.bot_name_changed",{oldName:o,name:t})),console.log(""),console.log(l("rename.restart_hint")),console.log(" openclaw gateway restart"),console.log("")}V();T();function Nn(n){n.config||(n.config={});let e=n.config,t=!1;return(!e.groupPolicy||e.groupPolicy==="open")&&(e.groupPolicy="allowlist",t=!0),(!e.dmPolicy||e.dmPolicy==="open")&&(e.dmPolicy="disabled",t=!0),t}function Ym(n){if(!n?.config)return;let e=n.config.agents;if(!e)return;let t=e.list;return Array.isArray(t)?t.find(i=>i.default===!0)?.id:void 0}function Mn(n,e){if(e)return e;let t=Ym(n);return t&&console.log(`Using default agent: ${t}`),t}async function Ee(n,e,t){if(n)try{let i=await n.runtime.config.loadConfig(),a=(i.bindings||[]).filter(r=>r.match?.channel!=="lunkr-openclaw"?!0:(r.match?.accountId||"default")!==e);t&&a.push({agentId:t,comment:`lunkr ${e}`,match:{channel:"lunkr-openclaw",accountId:e}}),i.bindings=a,await n.runtime.config.writeConfigFile(i),console.log(t?` \u2713 OpenClaw binding: lunkr-openclaw:${e} \u2192 agent:${t}`:` \u2713 OpenClaw binding removed for lunkr-openclaw:${e}`)}catch(o){console.warn(` \u26A0 Failed to update OpenClaw bindings: ${o instanceof Error?o.message:String(o)}`)}}async function as(n,e){console.log(""),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log(` ${l("agent.add_title")}`),console.log("\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501\u2501"),console.log("");let t=R();if(e.bypwd||e.email){if(!e.email){let c=(await import("readline")).createInterface({input:process.stdin,output:process.stdout}),u=await new Promise(p=>{c.question("Email: ",d=>{c.close(),p(d.trim())})});if(!u){console.error(l("errors.email_required")),process.exitCode=1;return}e.email=u}if(X(e.email,t)){console.error(l("agent.add_already_exists",{email:e.email})),process.exitCode=1;return}await mt(n,{email:e.email,password:e.password,verbose:e.verbose,debug:e.debug});let s=R(),a=s.accounts?.find(r=>r.email===e.email);if(a){a.role="agent";let r=Mn(n,e.agentId);a.agentId=r,Nn(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Le(a,s),r&&await Ee(n,`${ke}${a.email}`,r),console.log(l("agent.add_success",{email:e.email}))}}else{let{loginCommand:o}=await Promise.resolve().then(()=>(no(),wl)),i=new Set(t.accounts?.map(r=>r.email)||[]);await o(n,{verbose:e.verbose,force:!0});let s=R(),a=s.accounts?.find(r=>!i.has(r.email));if(a){if(i.has(a.email)){console.error(l("agent.add_already_exists",{email:a.email})),process.exitCode=1;return}a.role="agent";let r=Mn(n,e.agentId);a.agentId=r,Nn(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Le(a,s),r&&await Ee(n,`${ke}${a.email}`,r),console.log(l("agent.add_success",{email:a.email}))}}console.log("")}V();tn();Ne();T();async function rs(n,e){let t=R(),o=ze(t),i=K(t),s=[];if(i&&i.role==="standard+agent"){let r=l("agent.list_session_none");if(i.session?.sid)try{let c=re.fromConfig(i.accountId);c&&(r=await c.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{r=l("agent.list_session_expired")}s.push({email:i.email,role:i.role,agentId:i.agentId||"-",sessionStatus:r})}for(let r of o){let c=l("agent.list_session_none");if(r.session?.sid)try{let u=re.fromConfig(r.accountId);u&&(c=await u.checkSession()?l("agent.list_session_valid"):l("agent.list_session_expired"))}catch{c=l("agent.list_session_expired")}s.push({email:r.email,role:r.role||"agent",agentId:r.agentId||"-",sessionStatus:c})}if(e.json){console.log(JSON.stringify(s,null,2));return}if(console.log(""),s.length===0){console.log(l("agent.list_empty")),console.log("");return}console.log(l("agent.list_title",{count:String(s.length)})),console.log("");let a=12;for(let r of s)console.log(` ${P(l("labels.email")+":",a)} ${r.email}`),console.log(` ${P(l("agent.list_role")+":",a)} ${r.role}`),console.log(` ${P(l("agent.list_agent_id")+":",a)} ${r.agentId}`),console.log(` ${P(l("agent.list_session")+":",a)} ${r.sessionStatus}`),console.log("")}V();T();async function cs(n,e){let{email:t}=e,o=X(t);if(!o){console.error(l("agent.remove_not_found",{email:t})),process.exitCode=1;return}if(o.role!=="agent"){console.error(l("agent.remove_not_agent",{email:t,role:o.role||"standard"})),process.exitCode=1;return}wt(t)?(await Ee(n,`${ke}${t}`,void 0),console.log(l("agent.remove_success",{email:t}))):(console.error(l("agent.remove_not_found",{email:t})),process.exitCode=1)}V();T();async function ls(n,e){let t=R();if(e.self){let a=K(t);if(!a){console.error(l("agent.bind_not_found",{email:"standard"})),process.exitCode=1;return}if(e.unbind){a.role==="standard+agent"?(a.role="standard",a.agentId=void 0,Le(a,t),await Ee(n,"default",void 0),console.log(l("agent.bind_self_downgrade")),console.log(l("agent.bind_unbind_success",{email:a.email}))):console.log(l("agent.bind_self_downgrade"));return}let r=Mn(n,e.agentId);if(!r){console.error("No --agent-id specified and no default agent found in OpenClaw config."),console.error("Set an agent as default in openclaw.json: agents.list[].default = true"),process.exitCode=1;return}a.role="standard+agent",a.agentId=r,Nn(a)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Le(a,t),await Ee(n,"default",r),console.log(l("agent.bind_self_upgrade")),console.log(l("agent.bind_success",{email:a.email,agentId:r}));return}if(!e.email){console.error(l("agent.bind_email_required")),process.exitCode=1;return}let o=X(e.email,t);if(!o){console.error(l("agent.bind_not_found",{email:e.email})),process.exitCode=1;return}if(e.unbind){o.agentId=void 0,Le(o,t);let a=o.role==="agent"?`${ke}${o.email}`:"default";await Ee(n,a,void 0),console.log(l("agent.bind_unbind_success",{email:o.email}));return}let i=Mn(n,e.agentId);if(!i){console.error("No --agent-id specified and no default agent found in OpenClaw config."),console.error("Set an agent as default in openclaw.json: agents.list[].default = true"),process.exitCode=1;return}o.agentId=i,Nn(o)&&console.log("Applied secure defaults: groupPolicy=allowlist, dmPolicy=disabled"),Le(o,t);let s=o.role==="agent"?`${ke}${o.email}`:"default";await Ee(n,s,i),console.log(l("agent.bind_success",{email:e.email,agentId:i}))}te();Ne();T();var Be=20;async function us(n,e){let t=R(),o=e.account?X(e.account,t):K(t);if(!o)throw new Error(l("errors.account_not_found"));let s=t.accounts?.find(m=>m.accountId===o.accountId||m.email===o.email)?.config||{};if(e.json){console.log(JSON.stringify({account:o.email||o.accountId,dmPolicy:s.dmPolicy??"open",allowFrom:s.allowFrom??[],groupPolicy:s.groupPolicy??"open",groups:s.groups??[],groupTypeRules:s.groupTypeRules??{},discussions:s.discussions??{}},null,2));return}console.log(""),console.log(l("policy.title")),console.log(""),console.log(` ${P(l("policy.account")+":",Be)} ${o.email||o.accountId}`),console.log(""),console.log(` ${P(l("policy.dm_policy")+":",Be)} ${s.dmPolicy??"open"}`);let a=s.allowFrom??[];if(a.length>0){console.log(` ${P(l("policy.allow_from")+":",Be)}`);for(let m of a)console.log(` - ${m}`)}else console.log(` ${P(l("policy.allow_from")+":",Be)} ${l("policy.none")}`);console.log(""),console.log(` ${P(l("policy.group_policy")+":",Be)} ${s.groupPolicy??"open"}`);let r=s.groups??[];if(r.length>0){console.log(` ${P(l("policy.groups")+":",Be)}`);for(let m of r)console.log(` - ${m}`)}else console.log(` ${P(l("policy.groups")+":",Be)} ${l("policy.none")}`);console.log("");let c=s.groupTypeRules??{},u=Object.entries(c);if(u.length>0){console.log(` ${l("policy.group_type_rules")}:`);for(let[m,f]of u)console.log(` ${m}: ${f.policy}`)}else console.log(` ${P(l("policy.group_type_rules")+":",Be)} ${l("policy.none")}`);console.log("");let p=s.discussions??{},d=Object.entries(p);if(d.length>0){console.log(` ${l("policy.discussions")}:`);for(let[m,f]of d){let h=f,x=[];h.enabled!==void 0&&x.push(`enabled=${h.enabled}`),h.policy&&x.push(`policy=${h.policy}`),h.requireMention!==void 0&&x.push(`requireMention=${h.requireMention}`),h.allowFrom?.length&&x.push(`allowFrom=[${h.allowFrom.join(", ")}]`),console.log(` ${m}: ${x.join(", ")||l("policy.no_overrides")}`)}}else console.log(` ${P(l("policy.discussions")+":",Be)} ${l("policy.none")}`);console.log("")}te();tn();T();var ps=/^#\d+#[A-Z]+$/;function Bn(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function Bl(n,e){let t=n.trim();if(ps.test(t))return t;let o=re.fromConfig();if(!o)throw new Error(l("errors.session_expired_login"));return`${(await o.resolveRecipient(t)).uid}(${t})`}function ds(n){let e=R(),t=n.account?X(n.account,e):K(e);if(!t)throw new Error(l("errors.account_not_found"));let o=e.accounts?.findIndex(s=>s.accountId===t.accountId||s.email===t.email)??-1;if(o<0||!e.accounts)throw new Error(l("errors.account_not_found"));let i=e.accounts[o];return i.config||(i.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]}),{config:e,accountIdx:o,channelConfig:i.config}}async function ms(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.set_requires_option"));let{config:t,channelConfig:o}=ds(e);if(e.dm){if(!["open","allowlist","disabled"].includes(e.dm))throw new Error(l("policy.invalid_dm_policy",{value:e.dm}));o.dmPolicy=e.dm,console.log(l("policy.dm_policy_set",{value:e.dm}))}if(e.group){if(!["open","allowlist","disabled"].includes(e.group))throw new Error(l("policy.invalid_group_policy",{value:e.group}));o.groupPolicy=e.group,console.log(l("policy.group_policy_set",{value:e.group}))}$(t),console.log(l("policy.config_saved"))}async function fs(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.allow_requires_option"));let{config:t,channelConfig:o}=ds(e);if(e.dm){let i=await Bl(e.dm,"user");o.allowFrom||(o.allowFrom=[]);let s=Bn(i);if(o.allowFrom.some(r=>Bn(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}o.allowFrom.push(i),console.log(l("policy.added_to_dm_allowlist",{uid:i}))}if(e.group){let i=await Bl(e.group,"group");o.groups||(o.groups=[]);let s=Bn(i);if(o.groups.some(r=>Bn(r)===s)){console.log(l("policy.already_in_allowlist",{uid:i}));return}o.groups.push(i),console.log(l("policy.added_to_group_allowlist",{uid:i}))}$(t),console.log(l("policy.config_saved"))}async function gs(n,e){if(!e.dm&&!e.group)throw new Error(l("policy.deny_requires_option"));let{config:t,channelConfig:o}=ds(e);if(e.dm){let i=e.dm.trim(),s=ps.test(i)?i:null;if(!o.allowFrom||o.allowFrom.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=o.allowFrom.length;if(o.allowFrom=o.allowFrom.filter(r=>{let c=Bn(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),o.allowFrom.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_dm_allowlist",{uid:i}))}if(e.group){let i=e.group.trim(),s=ps.test(i)?i:null;if(!o.groups||o.groups.length===0){console.log(l("policy.not_in_allowlist",{uid:i}));return}let a=o.groups.length;if(o.groups=o.groups.filter(r=>{let c=Bn(r);return!(s&&c===s||r===i||r.includes(`(${i})`))}),o.groups.length===a){console.log(l("policy.not_in_allowlist",{uid:i}));return}console.log(l("policy.removed_from_group_allowlist",{uid:i}))}$(t),console.log(l("policy.config_saved"))}te();tn();Ne();T();var Gl=/^#\d+#[A-Z]+$/;function hs(n){let e=n.indexOf("(");return e>=0?n.substring(0,e):n}async function Qm(n){let e=n.trim();if(Gl.test(e))return e;let t=re.fromConfig();if(!t)throw new Error(l("errors.session_expired_login"));return`${(await t.resolveRecipient(e)).uid}(${e})`}var xs=18;async function vs(n,e,t){if(!e)throw new Error(l("policy.gid_required"));let o=R(),i=t.account?X(t.account,o):K(o);if(!i)throw new Error(l("errors.account_not_found"));let s=o.accounts?.findIndex(p=>p.accountId===i.accountId||p.email===i.email)??-1;if(s<0||!o.accounts)throw new Error(l("errors.account_not_found"));let a=o.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(!(t.setPolicy||t.enable||t.disable||t.allow||t.deny||t.requireMention!==void 0||t.noRequireMention||t.remove)){let p=r.discussions?.[e];if(!p){console.log(l("policy.no_discussion_rules",{gid:e}));return}console.log(""),console.log(l("policy.discussion_rules_title",{gid:e})),console.log(""),p.enabled!==void 0&&console.log(` ${P(l("policy.enabled")+":",xs)} ${p.enabled}`),p.policy&&console.log(` ${P(l("policy.policy")+":",xs)} ${p.policy}`),p.requireMention!==void 0&&console.log(` ${P(l("policy.require_mention")+":",xs)} ${p.requireMention}`);let d=p.allowFrom??[];if(d.length>0){console.log(` ${l("policy.allow_from")}:`);for(let m of d)console.log(` - ${m}`)}console.log("");return}if(t.remove){r.discussions?.[e]?(delete r.discussions[e],r.discussions&&Object.keys(r.discussions).length===0&&delete r.discussions,console.log(l("policy.discussion_removed",{gid:e}))):console.log(l("policy.no_discussion_rules",{gid:e})),$(o),console.log(l("policy.config_saved"));return}r.discussions||(r.discussions={}),r.discussions[e]||(r.discussions[e]={});let u=r.discussions[e];if(t.setPolicy){if(!["open","allowlist","disabled"].includes(t.setPolicy))throw new Error(l("policy.invalid_group_policy",{value:t.setPolicy}));u.policy=t.setPolicy,console.log(l("policy.discussion_policy_set",{gid:e,value:t.setPolicy}))}if(t.enable&&(u.enabled=!0,console.log(l("policy.discussion_enabled",{gid:e}))),t.disable&&(u.enabled=!1,console.log(l("policy.discussion_disabled",{gid:e}))),t.requireMention&&(u.requireMention=!0,console.log(l("policy.discussion_require_mention",{gid:e,value:"true"}))),t.noRequireMention&&(u.requireMention=!1,console.log(l("policy.discussion_require_mention",{gid:e,value:"false"}))),t.allow){let p=await Qm(t.allow);u.allowFrom||(u.allowFrom=[]);let d=hs(p);u.allowFrom.some(f=>hs(f)===d)?console.log(l("policy.already_in_allowlist",{uid:p})):(u.allowFrom.push(p),console.log(l("policy.added_to_discussion_allowlist",{gid:e,uid:p})))}if(t.deny){let p=t.deny.trim(),d=Gl.test(p)?p:null;if(!u.allowFrom||u.allowFrom.length===0)console.log(l("policy.not_in_allowlist",{uid:p}));else{let m=u.allowFrom.length;u.allowFrom=u.allowFrom.filter(f=>{let h=hs(f);return!(d&&h===d||f===p||f.includes(`(${p})`))}),u.allowFrom.length===m?console.log(l("policy.not_in_allowlist",{uid:p})):console.log(l("policy.removed_from_discussion_allowlist",{gid:e,uid:p}))}}$(o),console.log(l("policy.config_saved"))}te();T();async function bs(n,e,t){if(!e)throw new Error(l("policy.suffix_required"));let o=R(),i=t.account?X(t.account,o):K(o);if(!i)throw new Error(l("errors.account_not_found"));let s=o.accounts?.findIndex(u=>u.accountId===i.accountId||u.email===i.email)??-1;if(s<0||!o.accounts)throw new Error(l("errors.account_not_found"));let a=o.accounts[s];a.config||(a.config={enabled:!0,commandPrefix:"/bot",botDiscussions:{},dmPolicy:"open",allowFrom:[],groupPolicy:"open",groups:[]});let r=a.config;if(t.remove){r.groupTypeRules?.[e]?(delete r.groupTypeRules[e],r.groupTypeRules&&Object.keys(r.groupTypeRules).length===0&&delete r.groupTypeRules,console.log(l("policy.type_rule_removed",{suffix:e}))):console.log(l("policy.no_type_rule",{suffix:e})),$(o),console.log(l("policy.config_saved"));return}if(t.set){if(!["disabled","mentionOnly","open"].includes(t.set))throw new Error(l("policy.invalid_type_policy",{value:t.set}));r.groupTypeRules||(r.groupTypeRules={}),r.groupTypeRules[e]={policy:t.set},console.log(l("policy.type_rule_set",{suffix:e,value:t.set})),$(o),console.log(l("policy.config_saved"));return}let c=r.groupTypeRules?.[e];console.log(c?l("policy.type_rule_current",{suffix:e,value:c.policy}):l("policy.no_type_rule",{suffix:e}))}te();T();import*as zl from"readline";function Xm(n){return new Promise(e=>{let t=zl.createInterface({input:process.stdin,output:process.stdout});t.question(n,o=>{t.close();let i=o.trim().toLowerCase();e(i==="y"||i==="yes")})})}async function ys(n,e){let t=R(),o=e.account?X(e.account,t):K(t);if(!o)throw new Error(l("errors.account_not_found"));let i=t.accounts?.findIndex(a=>a.accountId===o.accountId||a.email===o.email)??-1;if(i<0||!t.accounts)throw new Error(l("errors.account_not_found"));if(!e.yes){let a=o.email||o.accountId;if(!await Xm(l("policy.reset_confirm",{account:a})+" ")){console.log(l("policy.reset_cancelled"));return}}let s=t.accounts[i];delete s.config,$(t),console.log(l("policy.reset_done",{account:o.email||o.accountId}))}import{appendFileSync as ef}from"fs";import{Type as U}from"@sinclair/typebox";import*as Kl from"path";tn();te();T();bn();function ks(){return R()}function de(n){return{success:!0,data:n}}function W(n){return{success:!1,error:n}}async function je(){try{let n=B();return await n.checkSession()?{api:n}:{error:W(l("errors.session_expired_login"))}}catch(n){return{error:W(n instanceof Error?n.message:String(n))}}}async function ws(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.resolveRecipient(n.to),i=await t.sendMessage(o,n.content);return de({to:i.to,type:i.type,mid:i.mid})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Cs(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.searchGroups(n.keyword,n.limit||10);return de({groups:o.map(i=>({uid:i.uid,name:i.name||i.trueName,email:i.email,description:i.description}))})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function _s(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.searchContacts(n.keyword,n.limit||10);return de({contacts:o.map(i=>({uid:i.uid,name:i.trueName||i.name,email:i.email}))})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Hl(n){let e=await je();return"error"in e?e.error:W("getGroupInfo not yet implemented")}async function Vl(n){let e=await je();return"error"in e?e.error:W("getUserInfo not yet implemented")}async function Wl(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=n.save_path;if(!o){let s=Qt();s&&(o=Kl.join(s.filesDir,n.file_name||"download"))}let i=await t.downloadFile(n.file_id,n.uid,o,n.file_name);return console.log(`[lunkr_download_file] ${i.fileName} (${i.fileSize} bytes) \u2192 ${i.filePath}`),de({file_name:i.fileName,file_size:i.fileSize,saved_to:i.filePath})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Jl(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.convertAudio(n.input_path,n.output_format);return de({converted_file:o.filePath,format:o.format})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Yl(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.getMessage(n.message_id);return o?de({mid:o.mid,time:o.time,subject:o.subject,content:o.content,sender_uid:o.sender_uid,sender_name:o.sender_name,sender_email:o.sender_email,source_id:o.source_id,attachments:o.attachments}):W(`Message not found: ${n.message_id}`)}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Ss(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.resolveRecipient(n.to),i=await t.listMessages(o,{limit:n.limit||20});return de({messages:i.map(s=>({mid:s.mid,time:s.time,subject:s.subject,sender_uid:s.senderUid,sender_name:s.senderName,sender_email:s.senderEmail,attachments:s.attachments}))})}catch(o){return W(o instanceof Error?o.message:String(o))}}async function Ql(n){let e=await je();if("error"in e)return e.error;let{api:t}=e;try{let o=await t.resolveRecipient(n.to),i=await t.sendFile(o,n.file_paths,{content:n.message});return de({to:i.to,mid:i.mid,files:i.files})}catch(o){return W(o instanceof Error?o.message:String(o))}}bn();function As(n){ef("/tmp/lunkr-tools.log",`${new Date().toISOString()} ${n}
|
|
44
|
+
`)}function Se(n){return{content:[{type:"text",text:JSON.stringify(n,null,2)}],details:n}}function nf(){let n=Qt();if(!n)return null;let o=ks()?.accounts?.find(s=>s.accountId===n.accountId)?.role||"standard";if(o!=="agent"&&o!=="standard+agent")return null;let i=n.workspaceKey.indexOf(":");return i===-1?null:n.workspaceKey.slice(i+1)}var tf=U.Object({to:U.String({description:"Recipient: user ID, group ID, email, or group email (t..xxx@coremail.cn)"}),content:U.String({description:"Message content to send"}),type:U.Optional(U.Union([U.Literal("text"),U.Literal("markdown")],{description:"Message type (default: text)"}))}),of=U.Object({keyword:U.String({description:"Search keyword for group name"}),limit:U.Optional(U.Number({description:"Max results (default: 10)"}))}),sf=U.Object({keyword:U.String({description:"Search keyword for contact name or email"}),limit:U.Optional(U.Number({description:"Max results (default: 10)"}))}),af=U.Object({group_id:U.String({description:"Group ID (e.g., #26783249#T)"})}),rf=U.Object({user_id:U.String({description:"User ID (e.g., #835#U) or email"})}),cf=U.Object({to:U.String({description:"Recipient: user ID, group ID, email, or name (auto-resolved)"}),file_paths:U.Array(U.String(),{description:"Array of absolute file paths to send"}),message:U.Optional(U.String({description:"Optional text message to accompany the files"}))}),lf=U.Object({file_id:U.String({description:"File ID from message"}),uid:U.String({description:"Mailbox owner UID from attachment.uid field (e.g., #835#U for DM, group UID for group messages)"}),save_path:U.Optional(U.String({description:"Path to save file (default: temp directory)"})),file_name:U.String({description:"Filename (REQUIRED: get from message attachment.title to ensure correct Chinese encoding)"})}),uf=U.Object({input_path:U.String({description:"Path to the audio file (e.g., downloaded .ilbc file)"}),output_format:U.Optional(U.String({description:"Target format: wav (default), mp3, ogg, etc."}))}),pf=U.Object({message_id:U.String({description:"Message ID to retrieve"})}),df=U.Object({to:U.String({description:"Recipient: user ID, group ID, or email to list messages from"}),limit:U.Optional(U.Number({description:"Max messages to retrieve (default: 20)"}))}),mf=U.Object({command:U.String({description:"Raw command arguments"}),commandName:U.String({description:"Slash command name (e.g., /lunkr-send)"}),skillName:U.String({description:"Skill name"})});function ff(n){let{commandName:e,command:t}=n,o=t.trim().split(/\s+/),i=o[0]?.toLowerCase();switch(i){case"send":case"s":{if(o.length<3)return W("Usage: /lunkr send <to> <message>");let s=o[1],a=o.slice(2).join(" ");return de({action:"send",to:s,content:a})}case"search-groups":case"sg":{if(o.length<2)return W("Usage: /lunkr search-groups <keyword> [limit]");let s=o[1],a=o[2]?parseInt(o[2],10):10;return de({action:"searchGroups",keyword:s,limit:a})}case"search-contacts":case"sc":{if(o.length<2)return W("Usage: /lunkr search-contacts <keyword> [limit]");let s=o[1],a=o[2]?parseInt(o[2],10):10;return de({action:"searchContacts",keyword:s,limit:a})}case"list-messages":case"lm":case"msgs":{if(o.length<2)return W("Usage: /lunkr list-messages <to> [limit]");let s=o[1],a=o[2]?parseInt(o[2],10):20;return de({action:"listMessages",to:s,limit:a})}case"help":case void 0:return de({help:!0,usage:["/lunkr send <to> <message> - Send message","/lunkr search-groups <keyword> [limit] - Search groups","/lunkr search-contacts <keyword> [limit] - Search contacts","/lunkr list-messages <to> [limit] - List messages from chat"]});default:return W(`Unknown subcommand: ${i}. Use '/lunkr help' for usage.`)}}async function gf(n){if(!n.success||!n.data)return n;let e=n.data;switch(e.action){case"send":return ws({to:e.to,content:e.content});case"searchGroups":return Cs({keyword:e.keyword,limit:e.limit});case"searchContacts":return _s({keyword:e.keyword,limit:e.limit});case"listMessages":return Ss({to:e.to,limit:e.limit});default:return W(`Unknown action: ${e.action}`)}}function Xl(n){let e=ks();if(!e?.accounts?.length){n.logger?.debug?.("lunkr: No accounts in config file, skipping tool registration");return}if(!e.accounts.some(o=>o.session)){n.logger?.debug?.("lunkr: No accounts with valid session found, skipping tool registration");return}n.logger?.debug?.(`lunkr: Found ${e.accounts.length} account(s), registering tools`),n.registerTool({name:"lunkr_send_message",label:"Send Lunkr Message",description:'Send a message to a Lunkr user or group. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T). Always use this tool for sending Lunkr messages, NOT the generic "message" tool.',parameters:tf,async execute(o,i){let s=await ws(i);return Se(s)}},{name:"lunkr_send_message"}),n.registerTool({name:"lunkr_search_groups",label:"Search Lunkr Groups",description:"Search for Lunkr discussion groups by keyword.",parameters:of,async execute(o,i){let s=await Cs(i);return Se(s)}},{name:"lunkr_search_groups"}),n.registerTool({name:"lunkr_search_contacts",label:"Search Lunkr Contacts",description:"Search for Lunkr contacts by name or email.",parameters:sf,async execute(o,i){let s=await _s(i);return Se(s)}},{name:"lunkr_search_contacts"}),n.registerTool({name:"lunkr_get_group_info",label:"Get Lunkr Group Info",description:"Get detailed information about a Lunkr discussion group.",parameters:af,async execute(o,i){let s=await Hl(i);return Se(s)}},{name:"lunkr_get_group_info"}),n.registerTool({name:"lunkr_get_user_info",label:"Get Lunkr User Info",description:"Get detailed information about a Lunkr user.",parameters:rf,async execute(o,i){let s=await Vl(i);return Se(s)}},{name:"lunkr_get_user_info"}),n.registerTool({name:"lunkr_send_file",label:"Send Lunkr File",description:"Send one or more files to a Lunkr user or group. Automatically resolves recipient names to UIDs. Files must be local absolute paths.",parameters:cf,async execute(o,i){let s=await Ql(i);return Se(s)}},{name:"lunkr_send_file"}),n.registerTool({name:"lunkr_download_file",label:"Download Lunkr File",description:"Download a file from a Lunkr message to local disk. For voice messages (.ilbc), the iLBC header is auto-prepended during download. After downloading voice files, use lunkr_convert_audio to convert to wav, then decide whether to use speech-to-text or handle the audio as needed.",parameters:lf,async execute(o,i){let s=await Wl(i);return Se(s)}},{name:"lunkr_download_file"}),n.registerTool({name:"lunkr_get_message",label:"Get Lunkr Message",description:"Get detailed information about a specific message.",parameters:pf,async execute(o,i){let s=await Yl(i);return Se(s)}},{name:"lunkr_get_message"}),n.registerTool({name:"lunkr_list_messages",label:"List Lunkr Messages",description:"List messages from a Lunkr chat (user or group). Use this to retrieve chat history. IMPORTANT: This tool automatically resolves names to UIDs - you can pass user name, group name, email, user ID (#xxx#U), or group ID (#xxx#T).",parameters:df,async execute(o,i){let s=i,a=nf(),r=a||s.to;As(`[lunkr_list_messages] params=${JSON.stringify(s)} channelTo=${a} effectiveTo=${r}`);let c=await Ss({...s,to:r}),u=c?.data?.messages;if(As(`[lunkr_list_messages] result: ${Array.isArray(u)?u.length:"N/A"} msgs, withAttachments=${Array.isArray(u)?u.filter(p=>p.attachments?.length>0).length:"N/A"}`),Array.isArray(u))for(let p of u)As(`[lunkr_list_messages] mid=${p.mid} sender=${p.sender_email} atts=${JSON.stringify(p.attachments)}`);return Se(c)}},{name:"lunkr_list_messages"}),n.registerTool({name:"lunkr_convert_audio",label:"Convert Audio File",description:"Convert audio files to common formats using ffmpeg (e.g., iLBC voice messages \u2192 wav). Use this when you receive a voice message (.ilbc) and need to process it. After conversion, you can use the resulting wav file for speech-to-text or other processing as needed.",parameters:uf,async execute(o,i){let s=await Jl(i);return Se(s)}},{name:"lunkr_convert_audio"}),n.registerTool({name:"lunkr_command",label:"Lunkr Command",description:"Handle slash commands for Lunkr operations. Dispatched from skill.",parameters:mf,async execute(o,i){let s=ff(i),a=await gf(s);return Se(a)}},{name:"lunkr_command"}),n.logger?.debug?.("lunkr: Registered 11 Lunkr tools (10 API tools + 1 command dispatcher)")}var hf={type:"object",properties:{}},xf={id:"lunkr-openclaw",name:"Lunkr",description:"Lunkr/Coremail enterprise collaboration channel plugin",configSchema:hf,register(n){let e={channel:{lunkr:{resolveAccount:async t=>{let o=await n.runtime.config.loadConfig();return ue(o,t)},ensureAuthenticated:async t=>{if(!t.sid||!t.cookie)throw new Error(l("errors.account_not_authenticated"));let o=new j(t.lunkrConfig.baseUrl,{apiPath:t.lunkrConfig.apiPath}),i={"Cim.sid":t.sid};for(let a of t.cookie.split(";")){let r=a.trim();if(r.includes("=")){let[c,u]=r.split("=",2);i[c.trim()]=u.trim()}}if(o.setCookies(i),!await o.checkSessionValid(t.sid))throw new Error(l("errors.session_expired"))},sendMessage:async t=>{let o=await e.channel.lunkr.resolveAccount(t.accountId);if(!o)throw new Error(l("errors.account_not_found_with_id",{accountId:t.accountId}));await e.channel.lunkr.ensureAuthenticated(o);let i=new j(o.lunkrConfig.baseUrl,{apiPath:o.lunkrConfig.apiPath}),s={"Cim.sid":o.sid};for(let p of o.cookie.split(";")){let d=p.trim();if(d.includes("=")){let[m,f]=d.split("=",2);s[m.trim()]=f.trim()}}i.setCookies(s);let a=t.chatType==="p2p"?"cim.p2p:send":"cim.discussion:send",r=t.chatType==="p2p"?{to:t.chatId}:{gid:t.chatId},c={content:t.content,type:"text"};t.replyTo&&(c.replyTo=t.replyTo);let u=await i.postJson({func:a,sid:o.sid,query:r,payload:c});if(u.code!=="S_OK")throw new Error(l("api.send_failed",{code:u.code}))},probeAccount:async(t,o)=>{let i=await e.channel.lunkr.resolveAccount(t);if(!i)return{valid:!1,error:l("errors.account_not_found")};try{let s=new j(i.lunkrConfig.baseUrl,{apiPath:i.lunkrConfig.apiPath,timeout:o?o/1e3:5}),a={"Cim.sid":i.sid};for(let c of i.cookie.split(";")){let u=c.trim();if(u.includes("=")){let[p,d]=u.split("=",2);a[p.trim()]=d.trim()}}s.setCookies(a);let r=await s.checkSessionValid(i.sid);return{valid:r,session:r?i.lunkrConfig:void 0}}catch(s){return{valid:!1,error:s instanceof Error?s.message:String(s)}}}}},config:{readConfigFile:async()=>n.runtime.config.loadConfig(),writeConfigFile:async t=>n.runtime.config.writeConfigFile(t)},logging:{shouldLogVerbose:()=>Q("LUNKR_VERBOSE")==="1"}};Wc(e),"registrationMode"in n?n.registerChannel({plugin:eo}):n.registerChannel(eo),Xl(n),n.registerCli(({program:t})=>{let o=t.command("lunkr").description("Lunkr channel commands").option("-v, --verbose","Verbose output").option("--as <email>","Execute as a specific account (by email)").addHelpText("after",`
|
|
40
45
|
Account types:
|
|
41
46
|
Standard account Main account, triggers via /bot prefix & Bot Discussions
|
|
42
47
|
Agent account Independent account, triggers on all messages
|
|
@@ -48,7 +53,7 @@ Agent binding:
|
|
|
48
53
|
agent-bind --self --unbind Remove agent binding
|
|
49
54
|
First bind auto-sets: groupPolicy=allowlist, dmPolicy=disabled
|
|
50
55
|
|
|
51
|
-
See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(r){
|
|
56
|
+
See docs/CONCEPTS.md for details.`),i=async a=>{try{await a()}catch(r){o.opts().verbose||Q("LUNKR_VERBOSE")==="1"?console.error(r):console.error(r instanceof Error?r.message:String(r)),process.exitCode=1}};o.command("setup").description("One-click setup: register plugin, tools, skills, and login").option("--skip-login","Skip the login step").action(async a=>{await i(async()=>{await is(n,{skipLogin:a.skipLogin})})}),o.command("rename <name>").description("Rename the bot").action(async a=>{await i(async()=>{await ss(n,a)})}),o.command("login").description("Login to Lunkr using QR code (persistent session)").option("-d, --debug","Debug output (show network requests)").option("-f, --force","Force re-login even if session is valid").action(async a=>{await i(async()=>{await qn(n,{verbose:o.opts().verbose,debug:a.debug,force:a.force})})}),o.command("login-bypwd").description("Login to Lunkr using email/password").option("-e, --email <email>","Email address").option("-p, --password <password>","Password (or use LUNKR_PASSWORD env var)").option("-t, --temp","Temporary login (do not save api_token)").option("-d, --debug","Debug output (show network requests)").action(async a=>{await i(async()=>{await mt(n,{email:a.email,password:a.password,temp:a.temp,verbose:o.opts().verbose,debug:a.debug})})}),o.command("logout").description("Logout from Lunkr server").option("-e, --email <email>","Specific account to logout").option("-a, --all","Remove all stored session data").action(async a=>{await i(async()=>{await Ni(n,{email:a.email,all:a.all})})}),o.command("bot-create [name]").description("Create a new Bot discussion group").option("-a, --agent-id <agentId>","Agent ID to associate with this discussion").option("--account <email>","Account to use (must have standard role)").option("-f, --force","Force create even if discussion exists").option("--no-welcome","Skip sending welcome message").action(async(a,r)=>{if(!a){console.error(l("errors.name_required")),process.exitCode=1;return}await i(async()=>{await to(n,{name:a,agentId:r.agentId,account:r.account,force:r.force,welcome:r.welcome})})}),o.command("bot-list").description("List all configured bot discussions").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await oo(n,{json:a.json})})}),o.command("bot-delete [name]").description("Delete a Bot discussion from configuration").option("-g, --gid <gid>","GID of the bot discussion to remove").action(async(a,r)=>{await i(async()=>{await io(n,{name:a||r.name,gid:r.gid})})}),o.command("uninstall-extension").description("Uninstall the entire Lunkr extension from OpenClaw").option("-p, --purge","Also remove Lunkr session credentials").action(async a=>{await i(async()=>{await Zi(n,{purge:a.purge})})}),o.command("tool-install [name]").description("Install a tool (add to tools.alsoAllow)").action(async a=>{await i(async()=>{await es(n,{name:a||void 0})})}),o.command("tool-uninstall [name]").description("Uninstall a tool (remove from tools.alsoAllow)").action(async a=>{await i(async()=>{await ns(n,{name:a||void 0})})}),o.command("skill-install [name]").description("Install a skill (enable in skills.entries)").action(async a=>{await i(async()=>{await ts(n,{name:a||void 0})})}),o.command("skill-uninstall [name]").description("Uninstall a skill (disable in skills.entries)").action(async a=>{await i(async()=>{await os(n,{name:a||void 0})})}),o.command("status").description("Show login status").action(async()=>{await i(async()=>{await Mi(n,{verbose:o.opts().verbose})})}),o.command("search-group").description("Search for discussion groups").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await i(async()=>{await Bi(n,{keyword:a.keyword,limit:a.limit})})}),o.command("search-contact").description("Search for contacts").requiredOption("-k, --keyword <keyword>","Search keyword").option("-l, --limit <limit>","Maximum results",parseInt).action(async a=>{await i(async()=>{await Gi(n,{keyword:a.keyword,limit:a.limit})})}),o.command("list-msg").description("List messages from a chat").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").option("-l, --limit <limit>","Maximum messages",parseInt).option("-s, --sender <sender>","Filter by sender UID (e.g., #835#U)").action(async a=>{await i(async()=>{await zi(n,{to:a.to,limit:a.limit,sender:a.sender})})}),o.command("send").description("Send a message").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").option("-m, --message <message>","Message content").action(async a=>{await i(async()=>{await Vi(n,{to:a.to,message:a.message})})}),o.command("send-file").description("Send file(s) to a user or group").requiredOption("-t, --to <to>","Recipient (user/group UID, email, or name)").requiredOption("-f, --file <file...>","File path(s) to send").option("-m, --message <message>","Optional message content").action(async a=>{await i(async()=>{await Wi(n,{to:a.to,file:a.file,message:a.message})})}),o.command("download").description("Download a file from a message").requiredOption("-f, --file-id <fileId>","File ID to download").requiredOption("-u, --uid <uid>","Chat UID (user or group)").option("-o, --output <output>","Save path").action(async a=>{await i(async()=>{await Ji(n,{"file-id":a.fileId,uid:a.uid,output:a.output})})}),o.command("agent-add").description("Add an agent account (reuses login flow)").option("--agent-id <agentId>","Agent ID to bind (omit to use default agent)").option("--bypwd","Use password login instead of QR").option("-e, --email <email>","Email address (for password login)").option("-p, --password <password>","Password").action(async a=>{await i(async()=>{await as(n,{agentId:a.agentId,bypwd:a.bypwd,email:a.email,password:a.password,verbose:o.opts().verbose,debug:!1})})}),o.command("agent-list").description("List all agent accounts and their status").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await rs(n,{json:a.json})})}),o.command("agent-remove <email>").description("Remove an agent account").action(async a=>{await i(async()=>{await cs(n,{email:a})})}),o.command("agent-bind [email]").description("Bind an agent to an account (uses default agent if --agent-id omitted)").option("--agent-id <agentId>","Agent ID to bind (omit to use default agent)").option("--self","Operate on the standard account").option("--unbind","Remove the agent binding").action(async(a,r)=>{await i(async()=>{await ls(n,{email:a,agentId:r.agentId,self:r.self,unbind:r.unbind})})});let s=o.command("policy").description("Manage message routing policies").addHelpText("after",`
|
|
52
57
|
Examples:
|
|
53
58
|
View current policy:
|
|
54
59
|
openclaw lunkr policy show
|
|
@@ -86,7 +91,7 @@ Examples:
|
|
|
86
91
|
openclaw lunkr policy reset
|
|
87
92
|
|
|
88
93
|
Priority: botDiscussion > discussions[gid] > groupTypeRules[suffix] > groupPolicy
|
|
89
|
-
All commands support --account <email> to target a specific account.`);s.command("show").description("Show policy configuration for an account").option("-a, --account <email>","Account email to operate on").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await
|
|
94
|
+
All commands support --account <email> to target a specific account.`);s.command("show").description("Show policy configuration for an account").option("-a, --account <email>","Account email to operate on").option("-j, --json","Output as JSON").action(async a=>{await i(async()=>{await us(n,{account:a.account||o.opts().as,json:a.json})})}),s.command("set").description("Set DM or group policy").option("-a, --account <email>","Account email to operate on").option("--dm <policy>","Set DM policy (open|allowlist|disabled)").option("--group <policy>","Set group policy (open|allowlist|disabled)").action(async a=>{await i(async()=>{await ms(n,{account:a.account||o.opts().as,dm:a.dm,group:a.group})})}),s.command("allow").description("Add a user or group to the allowlist").option("-a, --account <email>","Account email to operate on").option("--dm <user>","User to allow for DM").option("--group <group>","Group to allow").action(async a=>{await i(async()=>{await fs(n,{account:a.account||o.opts().as,dm:a.dm,group:a.group})})}),s.command("deny").description("Remove a user or group from the allowlist").option("-a, --account <email>","Account email to operate on").option("--dm <user>","User to remove from DM allowlist").option("--group <group>","Group to remove from allowlist").action(async a=>{await i(async()=>{await gs(n,{account:a.account||o.opts().as,dm:a.dm,group:a.group})})}),s.command("discussion <gid>").description("Manage per-discussion override rules").option("-a, --account <email>","Account email to operate on").option("--set-policy <policy>","Set policy (open|allowlist|disabled)").option("--enable","Enable bot in this discussion").option("--disable","Disable bot in this discussion").option("--allow <user>","Add user to discussion allowlist").option("--deny <user>","Remove user from discussion allowlist").option("--require-mention","Require @mention to trigger").option("--no-require-mention","Do not require @mention").option("--remove","Remove all discussion rules").action(async(a,r)=>{await i(async()=>{let c=r.requireMention;await vs(n,a,{account:r.account||o.opts().as,setPolicy:r.setPolicy,enable:r.enable,disable:r.disable,allow:r.allow,deny:r.deny,requireMention:c===!0?!0:void 0,noRequireMention:c===!1?!0:void 0,remove:r.remove})})}),s.command("type <suffix>").description("Manage group type rules (by UID suffix)").option("-a, --account <email>","Account email to operate on").option("--set <policy>","Set rule (disabled|mentionOnly|open)").option("--remove","Remove the rule").action(async(a,r)=>{await i(async()=>{await bs(n,a,{account:r.account||o.opts().as,set:r.set,remove:r.remove})})}),s.command("reset").description("Clear all policy configuration for an account").option("-a, --account <email>","Account email to operate on").option("-y, --yes","Skip confirmation prompt").action(async a=>{await i(async()=>{await ys(n,{account:a.account||o.opts().as,yes:a.yes})})}),o.command("listen").description("Listen for real-time messages").option("-r, --raw","Show raw message data").action(async a=>{await i(async()=>{await Yi(n,{raw:a.raw})})})},{commands:["lunkr"]})}},zk=xf;export{io as botDeleteCommand,El as botDeleteCommandMeta,oo as botListCommand,Ul as botListCommandMeta,eo as channelPlugin,to as createCommand,Pl as createCommandMeta,zk as default};
|
|
90
95
|
/*! Bundled license information:
|
|
91
96
|
|
|
92
97
|
mime-db/index.js:
|