Files
thedotmack__claude-mem/plugin/scripts/server-service.cjs
T
Alex Newman 7186eb5608 chore: bump version to 13.24.21 (#4052)
Mechanical package-facing bump so 13.24.21 ships the session rehydration fix now on main after v13.24.20. Rebuilds plugin bundles so the injected version matches. Does not npm publish.

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: Alex Newman <thedotmack@users.noreply.github.com>
2026-09-11 09:56:13 -07:00

10126 lines
2.1 MiB
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bun
var __CM_FILENAME__ = typeof __filename !== "undefined" ? __filename : require("node:path").resolve(process.argv[1] || "");
var __CM_DIRNAME__ = typeof __dirname !== "undefined" ? __dirname : require("node:path").dirname(__CM_FILENAME__);
"use strict";var rW=Object.create;var ap=Object.defineProperty;var nW=Object.getOwnPropertyDescriptor;var iW=Object.getOwnPropertyNames;var sW=Object.getPrototypeOf,oW=Object.prototype.hasOwnProperty;var R=(t,e,r)=>()=>{if(r)throw r[0];try{return t&&(e=t(t=0)),e}catch(n){throw r=[n],n}};var h=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(r){throw e=0,r}},io=(t,e)=>{for(var r in e)ap(t,r,{get:e[r],enumerable:!0})},VA=(t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of iW(e))!oW.call(t,i)&&i!==r&&ap(t,i,{get:()=>e[i],enumerable:!(n=nW(e,i))||n.enumerable});return t};var tt=(t,e,r)=>(r=t!=null?rW(sW(t)):{},VA(e||!t||!t.__esModule?ap(r,"default",{value:t,enumerable:!0}):r,t)),Pt=t=>VA(ap({},"__esModule",{value:!0}),t);var pv=h((YRe,WA)=>{var Sa=1e3,xa=Sa*60,wa=xa*60,so=wa*24,aW=so*7,cW=so*365.25;WA.exports=function(t,e){e=e||{};var r=typeof t;if(r==="string"&&t.length>0)return lW(t);if(r==="number"&&isFinite(t))return e.long?dW(t):uW(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function lW(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var r=parseFloat(e[1]),n=(e[2]||"ms").toLowerCase();switch(n){case"years":case"year":case"yrs":case"yr":case"y":return r*cW;case"weeks":case"week":case"w":return r*aW;case"days":case"day":case"d":return r*so;case"hours":case"hour":case"hrs":case"hr":case"h":return r*wa;case"minutes":case"minute":case"mins":case"min":case"m":return r*xa;case"seconds":case"second":case"secs":case"sec":case"s":return r*Sa;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return r;default:return}}}}function uW(t){var e=Math.abs(t);return e>=so?Math.round(t/so)+"d":e>=wa?Math.round(t/wa)+"h":e>=xa?Math.round(t/xa)+"m":e>=Sa?Math.round(t/Sa)+"s":t+"ms"}function dW(t){var e=Math.abs(t);return e>=so?cp(t,e,so,"day"):e>=wa?cp(t,e,wa,"hour"):e>=xa?cp(t,e,xa,"minute"):e>=Sa?cp(t,e,Sa,"second"):t+" ms"}function cp(t,e,r,n){var i=e>=r*1.5;return Math.round(t/r)+" "+n+(i?"s":"")}});var fv=h((QRe,YA)=>{function pW(t){r.debug=r,r.default=r,r.coerce=c,r.disable=o,r.enable=i,r.enabled=a,r.humanize=pv(),r.destroy=l,Object.keys(t).forEach(u=>{r[u]=t[u]}),r.names=[],r.skips=[],r.formatters={};function e(u){let d=0;for(let p=0;p<u.length;p++)d=(d<<5)-d+u.charCodeAt(p),d|=0;return r.colors[Math.abs(d)%r.colors.length]}r.selectColor=e;function r(u){let d,p=null,f,m;function y(...b){if(!y.enabled)return;let v=y,E=Number(new Date),S=E-(d||E);v.diff=S,v.prev=d,v.curr=E,d=E,b[0]=r.coerce(b[0]),typeof b[0]!="string"&&b.unshift("%O");let k=0;b[0]=b[0].replace(/%([a-zA-Z%])/g,(O,N)=>{if(O==="%%")return"%";k++;let ee=r.formatters[N];if(typeof ee=="function"){let q=b[k];O=ee.call(v,q),b.splice(k,1),k--}return O}),r.formatArgs.call(v,b),(v.log||r.log).apply(v,b)}return y.namespace=u,y.useColors=r.useColors(),y.color=r.selectColor(u),y.extend=n,y.destroy=r.destroy,Object.defineProperty(y,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(f!==r.namespaces&&(f=r.namespaces,m=r.enabled(u)),m),set:b=>{p=b}}),typeof r.init=="function"&&r.init(y),y}function n(u,d){let p=r(this.namespace+(typeof d>"u"?":":d)+u);return p.log=this.log,p}function i(u){r.save(u),r.namespaces=u,r.names=[],r.skips=[];let d=(typeof u=="string"?u:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let p of d)p[0]==="-"?r.skips.push(p.slice(1)):r.names.push(p)}function s(u,d){let p=0,f=0,m=-1,y=0;for(;p<u.length;)if(f<d.length&&(d[f]===u[p]||d[f]==="*"))d[f]==="*"?(m=f,y=p,f++):(p++,f++);else if(m!==-1)f=m+1,y++,p=y;else return!1;for(;f<d.length&&d[f]==="*";)f++;return f===d.length}function o(){let u=[...r.names,...r.skips.map(d=>"-"+d)].join(",");return r.enable(""),u}function a(u){for(let d of r.skips)if(s(u,d))return!1;for(let d of r.names)if(s(u,d))return!0;return!1}function c(u){return u instanceof Error?u.stack||u.message:u}function l(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return r.enable(r.load()),r}YA.exports=pW});var QA=h((gr,lp)=>{gr.formatArgs=mW;gr.save=hW;gr.load=yW;gr.useColors=fW;gr.storage=gW();gr.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();gr.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function fW(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function mW(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+lp.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let r=0,n=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(r++,i==="%c"&&(n=r))}),t.splice(n,0,e)}gr.log=console.debug||console.log||(()=>{});function hW(t){try{t?gr.storage.setItem("debug",t):gr.storage.removeItem("debug")}catch{}}function yW(){let t;try{t=gr.storage.getItem("debug")||gr.storage.getItem("DEBUG")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=process.env.DEBUG),t}function gW(){try{return localStorage}catch{}}lp.exports=fv()(gr);var{formatters:bW}=lp.exports;bW.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var ZA={};io(ZA,{createSupportsColor:()=>hv,default:()=>wW});function Gr(t,e=globalThis.Deno?globalThis.Deno.args:dp.default.argv){let r=t.startsWith("-")?"":t.length===1?"-":"--",n=e.indexOf(r+t),i=e.indexOf("--");return n!==-1&&(i===-1||n<i)}function vW(){if(!("FORCE_COLOR"in Xe))return;if(Xe.FORCE_COLOR==="true")return 1;if(Xe.FORCE_COLOR==="false")return 0;if(Xe.FORCE_COLOR.length===0)return 1;let t=Math.min(Number.parseInt(Xe.FORCE_COLOR,10),3);if([0,1,2,3].includes(t))return t}function EW(t){return t===0?!1:{level:t,hasBasic:!0,has256:t>=2,has16m:t>=3}}function SW(t,{streamIsTTY:e,sniffFlags:r=!0}={}){let n=vW();n!==void 0&&(up=n);let i=r?up:n;if(i===0)return 0;if(r){if(Gr("color=16m")||Gr("color=full")||Gr("color=truecolor"))return 3;if(Gr("color=256"))return 2}if("TF_BUILD"in Xe&&"AGENT_NAME"in Xe)return 1;if(t&&!e&&i===void 0)return 0;let s=i||0;if(Xe.TERM==="dumb")return s;if(dp.default.platform==="win32"){let o=XA.default.release().split(".");return Number(o[0])>=10&&Number(o[2])>=10586?Number(o[2])>=14931?3:2:1}if("CI"in Xe)return["GITHUB_ACTIONS","GITEA_ACTIONS","CIRCLECI"].some(o=>o in Xe)?3:["TRAVIS","APPVEYOR","GITLAB_CI","BUILDKITE","DRONE"].some(o=>o in Xe)||Xe.CI_NAME==="codeship"?1:s;if("TEAMCITY_VERSION"in Xe)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(Xe.TEAMCITY_VERSION)?1:0;if(Xe.COLORTERM==="truecolor"||Xe.TERM==="xterm-kitty"||Xe.TERM==="xterm-ghostty"||Xe.TERM==="wezterm")return 3;if("TERM_PROGRAM"in Xe){let o=Number.parseInt((Xe.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(Xe.TERM_PROGRAM){case"iTerm.app":return o>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(Xe.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(Xe.TERM)||"COLORTERM"in Xe?1:s}function hv(t,e={}){let r=SW(t,{streamIsTTY:t&&t.isTTY,...e});return EW(r)}var dp,XA,mv,Xe,up,xW,wW,eR=R(()=>{dp=tt(require("node:process"),1),XA=tt(require("node:os"),1),mv=tt(require("node:tty"),1);({env:Xe}=dp.default);Gr("no-color")||Gr("no-colors")||Gr("color=false")||Gr("color=never")?up=0:(Gr("color")||Gr("colors")||Gr("color=true")||Gr("color=always"))&&(up=1);xW={stdout:hv({isTTY:mv.default.isatty(1)}),stderr:hv({isTTY:mv.default.isatty(2)})},wW=xW});var rR=h((It,fp)=>{var _W=require("tty"),pp=require("util");It.init=CW;It.log=AW;It.formatArgs=TW;It.save=RW;It.load=OW;It.useColors=IW;It.destroy=pp.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");It.colors=[6,2,3,4,5,1];try{let t=(eR(),Pt(ZA));t&&(t.stderr||t).level>=2&&(It.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}It.inspectOpts=Object.keys(process.env).filter(t=>/^debug_/i.test(t)).reduce((t,e)=>{let r=e.substring(6).toLowerCase().replace(/_([a-z])/g,(i,s)=>s.toUpperCase()),n=process.env[e];return/^(yes|on|true|enabled)$/i.test(n)?n=!0:/^(no|off|false|disabled)$/i.test(n)?n=!1:n==="null"?n=null:n=Number(n),t[r]=n,t},{});function IW(){return"colors"in It.inspectOpts?!!It.inspectOpts.colors:_W.isatty(process.stderr.fd)}function TW(t){let{namespace:e,useColors:r}=this;if(r){let n=this.color,i="\x1B[3"+(n<8?n:"8;5;"+n),s=` ${i};1m${e} \x1B[0m`;t[0]=s+t[0].split(`
`).join(`
`+s),t.push(i+"m+"+fp.exports.humanize(this.diff)+"\x1B[0m")}else t[0]=kW()+e+" "+t[0]}function kW(){return It.inspectOpts.hideDate?"":new Date().toISOString()+" "}function AW(...t){return process.stderr.write(pp.formatWithOptions(It.inspectOpts,...t)+`
`)}function RW(t){t?process.env.DEBUG=t:delete process.env.DEBUG}function OW(){return process.env.DEBUG}function CW(t){t.inspectOpts={};let e=Object.keys(It.inspectOpts);for(let r=0;r<e.length;r++)t.inspectOpts[e[r]]=It.inspectOpts[e[r]]}fp.exports=fv()(It);var{formatters:tR}=fp.exports;tR.o=function(t){return this.inspectOpts.colors=this.useColors,pp.inspect(t,this.inspectOpts).split(`
`).map(e=>e.trim()).join(" ")};tR.O=function(t){return this.inspectOpts.colors=this.useColors,pp.inspect(t,this.inspectOpts)}});var Tr=h((XRe,yv)=>{typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?yv.exports=QA():yv.exports=rR()});var kl=h((ZRe,oR)=>{var jW=require("path").relative;oR.exports=NW;var PW=process.cwd();function iR(t,e){for(var r=t.split(/[ ,]+/),n=String(e).toLowerCase(),i=0;i<r.length;i++){var s=r[i];if(s&&(s==="*"||s.toLowerCase()===n))return!0}return!1}function KW(t,e,r){var n=Object.getOwnPropertyDescriptor(t,e),i=n.value;return n.get=function(){return i},n.writable&&(n.set=function(o){return i=o}),delete n.value,delete n.writable,Object.defineProperty(t,e,n),n}function DW(t){for(var e="",r=0;r<t;r++)e+=", arg"+r;return e.substr(2)}function MW(t){var e=this.name+": "+this.namespace;this.message&&(e+=" deprecated "+this.message);for(var r=0;r<t.length;r++)e+=`
at `+t[r].toString();return e}function NW(t){if(!t)throw new TypeError("argument namespace is required");var e=hp(),r=_a(e[1]),n=r[0];function i(s){mp.call(i,s)}return i._file=n,i._ignored=qW(t),i._namespace=t,i._traced=FW(t),i._warned=Object.create(null),i.function=zW,i.property=GW,i}function LW(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function qW(t){if(process.noDeprecation)return!0;var e=process.env.NO_DEPRECATION||"";return iR(e,t)}function FW(t){if(process.traceDeprecation)return!0;var e=process.env.TRACE_DEPRECATION||"";return iR(e,t)}function mp(t,e){var r=LW(process,"deprecation");if(!(!r&&this._ignored)){var n,i,s,o,a=0,c=!1,l=hp(),u=this._file;for(e?(o=e,s=_a(l[1]),s.name=o.name,u=s[0]):(a=2,o=_a(l[a]),s=o);a<l.length;a++)if(n=_a(l[a]),i=n[0],i===u)c=!0;else if(i===this._file)u=this._file;else if(c)break;var d=n?o.join(":")+"__"+n.join(":"):void 0;if(!(d!==void 0&&d in this._warned)){this._warned[d]=!0;var p=t;if(p||(p=s===o||!s.name?nR(o):nR(s)),r){var f=sR(this._namespace,p,l.slice(a));process.emit("deprecation",f);return}var m=process.stderr.isTTY?UW:$W,y=m.call(this,p,n,l.slice(a));process.stderr.write(y+`
`,"utf8")}}}function _a(t){var e=t.getFileName()||"<anonymous>",r=t.getLineNumber(),n=t.getColumnNumber();t.isEval()&&(e=t.getEvalOrigin()+", "+e);var i=[e,r,n];return i.callSite=t,i.name=t.getFunctionName(),i}function nR(t){var e=t.callSite,r=t.name;r||(r="<anonymous@"+gv(t)+">");var n=e.getThis(),i=n&&e.getTypeName();return i==="Object"&&(i=void 0),i==="Function"&&(i=n.name||i),i&&e.getMethodName()?i+"."+r:r}function $W(t,e,r){var n=new Date().toUTCString(),i=n+" "+this._namespace+" deprecated "+t;if(this._traced){for(var s=0;s<r.length;s++)i+=`
at `+r[s].toString();return i}return e&&(i+=" at "+gv(e)),i}function UW(t,e,r){var n="\x1B[36;1m"+this._namespace+"\x1B[22;39m \x1B[33;1mdeprecated\x1B[22;39m \x1B[0m"+t+"\x1B[39m";if(this._traced){for(var i=0;i<r.length;i++)n+=`
\x1B[36mat `+r[i].toString()+"\x1B[39m";return n}return e&&(n+=" \x1B[36m"+gv(e)+"\x1B[39m"),n}function gv(t){return jW(PW,t[0])+":"+t[1]+":"+t[2]}function hp(){var t=Error.stackTraceLimit,e={},r=Error.prepareStackTrace;Error.prepareStackTrace=JW,Error.stackTraceLimit=Math.max(10,t),Error.captureStackTrace(e);var n=e.stack.slice(1);return Error.prepareStackTrace=r,Error.stackTraceLimit=t,n}function JW(t,e){return e}function zW(t,e){if(typeof t!="function")throw new TypeError("argument fn must be a function");var r=DW(t.length),n=hp(),i=_a(n[1]);i.name=t.name;var s=new Function("fn","log","deprecate","message","site",`"use strict"
return function (`+r+`) {log.call(deprecate, message, site)
return fn.apply(this, arguments)
}`)(t,mp,this,e,i);return s}function GW(t,e,r){if(!t||typeof t!="object"&&typeof t!="function")throw new TypeError("argument obj must be object");var n=Object.getOwnPropertyDescriptor(t,e);if(!n)throw new TypeError("must call property on owner object");if(!n.configurable)throw new TypeError("property must be configurable");var i=this,s=hp(),o=_a(s[1]);o.name=e,"value"in n&&(n=KW(t,e,r));var a=n.get,c=n.set;typeof a=="function"&&(n.get=function(){return mp.call(i,r,o),a.apply(this,arguments)}),typeof c=="function"&&(n.set=function(){return mp.call(i,r,o),c.apply(this,arguments)}),Object.defineProperty(t,e,n)}function sR(t,e,r){var n=new Error,i;return Object.defineProperty(n,"constructor",{value:sR}),Object.defineProperty(n,"message",{configurable:!0,enumerable:!1,value:e,writable:!0}),Object.defineProperty(n,"name",{enumerable:!1,configurable:!0,value:"DeprecationError",writable:!0}),Object.defineProperty(n,"namespace",{configurable:!0,enumerable:!1,value:t,writable:!0}),Object.defineProperty(n,"stack",{configurable:!0,enumerable:!1,get:function(){return i!==void 0?i:i=MW.call(this,r)},set:function(o){i=o}}),n}});var cR=h((eOe,aR)=>{"use strict";aR.exports=Object.setPrototypeOf||({__proto__:[]}instanceof Array?BW:HW);function BW(t,e){return t.__proto__=e,t}function HW(t,e){for(var r in e)Object.prototype.hasOwnProperty.call(t,r)||(t[r]=e[r]);return t}});var lR=h((tOe,VW)=>{VW.exports={"100":"Continue","101":"Switching Protocols","102":"Processing","103":"Early Hints","200":"OK","201":"Created","202":"Accepted","203":"Non-Authoritative Information","204":"No Content","205":"Reset Content","206":"Partial Content","207":"Multi-Status","208":"Already Reported","226":"IM Used","300":"Multiple Choices","301":"Moved Permanently","302":"Found","303":"See Other","304":"Not Modified","305":"Use Proxy","307":"Temporary Redirect","308":"Permanent Redirect","400":"Bad Request","401":"Unauthorized","402":"Payment Required","403":"Forbidden","404":"Not Found","405":"Method Not Allowed","406":"Not Acceptable","407":"Proxy Authentication Required","408":"Request Timeout","409":"Conflict","410":"Gone","411":"Length Required","412":"Precondition Failed","413":"Payload Too Large","414":"URI Too Long","415":"Unsupported Media Type","416":"Range Not Satisfiable","417":"Expectation Failed","418":"I'm a Teapot","421":"Misdirected Request","422":"Unprocessable Entity","423":"Locked","424":"Failed Dependency","425":"Too Early","426":"Upgrade Required","428":"Precondition Required","429":"Too Many Requests","431":"Request Header Fields Too Large","451":"Unavailable For Legal Reasons","500":"Internal Server Error","501":"Not Implemented","502":"Bad Gateway","503":"Service Unavailable","504":"Gateway Timeout","505":"HTTP Version Not Supported","506":"Variant Also Negotiates","507":"Insufficient Storage","508":"Loop Detected","509":"Bandwidth Limit Exceeded","510":"Not Extended","511":"Network Authentication Required"}});var Al=h((rOe,dR)=>{"use strict";var bv=lR();dR.exports=vn;vn.message=bv;vn.code=WW(bv);vn.codes=YW(bv);vn.redirect={300:!0,301:!0,302:!0,303:!0,305:!0,307:!0,308:!0};vn.empty={204:!0,205:!0,304:!0};vn.retry={502:!0,503:!0,504:!0};function WW(t){var e={};return Object.keys(t).forEach(function(n){var i=t[n],s=Number(n);e[i.toLowerCase()]=s}),e}function YW(t){return Object.keys(t).map(function(r){return Number(r)})}function QW(t){var e=t.toLowerCase();if(!Object.prototype.hasOwnProperty.call(vn.code,e))throw new Error('invalid status message: "'+t+'"');return vn.code[e]}function uR(t){if(!Object.prototype.hasOwnProperty.call(vn.message,t))throw new Error("invalid status code: "+t);return vn.message[t]}function vn(t){if(typeof t=="number")return uR(t);if(typeof t!="string")throw new TypeError("code must be a number or string");var e=parseInt(t,10);return isNaN(e)?QW(t):uR(e)}});var pR=h((nOe,vv)=>{typeof Object.create=="function"?vv.exports=function(e,r){r&&(e.super_=r,e.prototype=Object.create(r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}))}:vv.exports=function(e,r){if(r){e.super_=r;var n=function(){};n.prototype=r.prototype,e.prototype=new n,e.prototype.constructor=e}}});var fR=h((iOe,Sv)=>{try{if(Ev=require("util"),typeof Ev.inherits!="function")throw"";Sv.exports=Ev.inherits}catch{Sv.exports=pR()}var Ev});var hR=h((sOe,mR)=>{"use strict";mR.exports=XW;function XW(t){return t.split(" ").map(function(e){return e.slice(0,1).toUpperCase()+e.slice(1)}).join("").replace(/[^ _0-9a-z]/gi,"")}});var Ta=h((oOe,oo)=>{"use strict";var ZW=kl()("http-errors"),yR=cR(),Ia=Al(),xv=fR(),eY=hR();oo.exports=yp;oo.exports.HttpError=tY();oo.exports.isHttpError=nY(oo.exports.HttpError);sY(oo.exports,Ia.codes,oo.exports.HttpError);function gR(t){return+(String(t).charAt(0)+"00")}function yp(){for(var t,e,r=500,n={},i=0;i<arguments.length;i++){var s=arguments[i],o=typeof s;if(o==="object"&&s instanceof Error)t=s,r=t.status||t.statusCode||r;else if(o==="number"&&i===0)r=s;else if(o==="string")e=s;else if(o==="object")n=s;else throw new TypeError("argument #"+(i+1)+" unsupported type "+o)}typeof r=="number"&&(r<400||r>=600)&&ZW("non-error status code; use only 4xx or 5xx status codes"),(typeof r!="number"||!Ia.message[r]&&(r<400||r>=600))&&(r=500);var a=yp[r]||yp[gR(r)];t||(t=a?new a(e):new Error(e||Ia.message[r]),Error.captureStackTrace(t,yp)),(!a||!(t instanceof a)||t.status!==r)&&(t.expose=r<500,t.status=t.statusCode=r);for(var c in n)c!=="status"&&c!=="statusCode"&&(t[c]=n[c]);return t}function tY(){function t(){throw new TypeError("cannot construct abstract class")}return xv(t,Error),t}function rY(t,e,r){var n=vR(e);function i(s){var o=s??Ia.message[r],a=new Error(o);return Error.captureStackTrace(a,i),yR(a,i.prototype),Object.defineProperty(a,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(a,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),a}return xv(i,t),bR(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!0,i}function nY(t){return function(r){return!r||typeof r!="object"?!1:r instanceof t?!0:r instanceof Error&&typeof r.expose=="boolean"&&typeof r.statusCode=="number"&&r.status===r.statusCode}}function iY(t,e,r){var n=vR(e);function i(s){var o=s??Ia.message[r],a=new Error(o);return Error.captureStackTrace(a,i),yR(a,i.prototype),Object.defineProperty(a,"message",{enumerable:!0,configurable:!0,value:o,writable:!0}),Object.defineProperty(a,"name",{enumerable:!1,configurable:!0,value:n,writable:!0}),a}return xv(i,t),bR(i,n),i.prototype.status=r,i.prototype.statusCode=r,i.prototype.expose=!1,i}function bR(t,e){var r=Object.getOwnPropertyDescriptor(t,"name");r&&r.configurable&&(r.value=e,Object.defineProperty(t,"name",r))}function sY(t,e,r){e.forEach(function(i){var s,o=eY(Ia.message[i]);switch(gR(i)){case 400:s=rY(r,o,i);break;case 500:s=iY(r,o,i);break}s&&(t[i]=s,t[o]=s)})}function vR(t){return t.slice(-5)==="Error"?t:t+"Error"}});var wv=h((aOe,gp)=>{"use strict";gp.exports=lY;gp.exports.format=ER;gp.exports.parse=SR;var oY=/\B(?=(\d{3})+(?!\d))/g,aY=/(?:\.0*|(\.[^0]+)0+)$/,is={b:1,kb:1024,mb:1<<20,gb:1<<30,tb:Math.pow(1024,4),pb:Math.pow(1024,5)},cY=/^((-|\+)?(\d+(?:\.\d+)?)) *(kb|mb|gb|tb|pb)$/i;function lY(t,e){return typeof t=="string"?SR(t):typeof t=="number"?ER(t,e):null}function ER(t,e){if(!Number.isFinite(t))return null;var r=Math.abs(t),n=e&&e.thousandsSeparator||"",i=e&&e.unitSeparator||"",s=e&&e.decimalPlaces!==void 0?e.decimalPlaces:2,o=!!(e&&e.fixedDecimals),a=e&&e.unit||"";(!a||!is[a.toLowerCase()])&&(r>=is.pb?a="PB":r>=is.tb?a="TB":r>=is.gb?a="GB":r>=is.mb?a="MB":r>=is.kb?a="KB":a="B");var c=t/is[a.toLowerCase()],l=c.toFixed(s);return o||(l=l.replace(aY,"$1")),n&&(l=l.split(".").map(function(u,d){return d===0?u.replace(oY,n):u}).join(".")),l+i+a}function SR(t){if(typeof t=="number"&&!isNaN(t))return t;if(typeof t!="string")return null;var e=cY.exec(t),r,n="b";return e?(r=parseFloat(e[1]),n=e[4].toLowerCase()):(r=parseInt(t,10),n="b"),isNaN(r)?null:Math.floor(is[n]*r)}});var bi=h((cOe,xR)=>{"use strict";var bp=require("buffer"),ka=bp.Buffer,Br={},Hr;for(Hr in bp)bp.hasOwnProperty(Hr)&&(Hr==="SlowBuffer"||Hr==="Buffer"||(Br[Hr]=bp[Hr]));var Aa=Br.Buffer={};for(Hr in ka)ka.hasOwnProperty(Hr)&&(Hr==="allocUnsafe"||Hr==="allocUnsafeSlow"||(Aa[Hr]=ka[Hr]));Br.Buffer.prototype=ka.prototype;(!Aa.from||Aa.from===Uint8Array.from)&&(Aa.from=function(t,e,r){if(typeof t=="number")throw new TypeError('The "value" argument must not be of type number. Received type '+typeof t);if(t&&typeof t.length>"u")throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof t);return ka(t,e,r)});Aa.alloc||(Aa.alloc=function(t,e,r){if(typeof t!="number")throw new TypeError('The "size" argument must be of type number. Received type '+typeof t);if(t<0||t>=2*(1<<30))throw new RangeError('The value "'+t+'" is invalid for option "size"');var n=ka(t);return!e||e.length===0?n.fill(0):typeof r=="string"?n.fill(e,r):n.fill(e),n});if(!Br.kStringMaxLength)try{Br.kStringMaxLength=process.binding("buffer").kStringMaxLength}catch{}Br.constants||(Br.constants={MAX_LENGTH:Br.kMaxLength},Br.kStringMaxLength&&(Br.constants.MAX_STRING_LENGTH=Br.kStringMaxLength));xR.exports=Br});var _R=h(Tv=>{"use strict";var wR="\uFEFF";Tv.PrependBOM=_v;function _v(t,e){this.encoder=t,this.addBOM=!0}_v.prototype.write=function(t){return this.addBOM&&(t=wR+t,this.addBOM=!1),this.encoder.write(t)};_v.prototype.end=function(){return this.encoder.end()};Tv.StripBOM=Iv;function Iv(t,e){this.decoder=t,this.pass=!1,this.options=e||{}}Iv.prototype.write=function(t){var e=this.decoder.write(t);return this.pass||!e||(e[0]===wR&&(e=e.slice(1),typeof this.options.stripBOM=="function"&&this.options.stripBOM()),this.pass=!0),e};Iv.prototype.end=function(){return this.decoder.end()}});var kv=h((uOe,IR)=>{"use strict";var uY=typeof Object.hasOwn>"u"?Function.call.bind(Object.prototype.hasOwnProperty):Object.hasOwn;function dY(t,e){for(var r in e)uY(e,r)&&(t[r]=e[r])}IR.exports=dY});var kR=h((dOe,TR)=>{"use strict";var vi=bi().Buffer;TR.exports={utf8:{type:"_internal",bomAware:!0},cesu8:{type:"_internal",bomAware:!0},unicode11utf8:"utf8",ucs2:{type:"_internal",bomAware:!0},utf16le:"ucs2",binary:{type:"_internal"},base64:{type:"_internal"},hex:{type:"_internal"},_internal:Av};function Av(t,e){this.enc=t.encodingName,this.bomAware=t.bomAware,this.enc==="base64"?this.encoder=Cv:this.enc==="utf8"?this.encoder=Kv:this.enc==="cesu8"&&(this.enc="utf8",this.encoder=jv,vi.from("eda0bdedb2a9","hex").toString()!=="\u{1F4A9}"&&(this.decoder=Pv,this.defaultCharUnicode=e.defaultCharUnicode))}Av.prototype.encoder=Ov;Av.prototype.decoder=Rv;var pY=require("string_decoder").StringDecoder;function Rv(t,e){this.decoder=new pY(e.enc)}Rv.prototype.write=function(t){return vi.isBuffer(t)||(t=vi.from(t)),this.decoder.write(t)};Rv.prototype.end=function(){return this.decoder.end()};function Ov(t,e){this.enc=e.enc}Ov.prototype.write=function(t){return vi.from(t,this.enc)};Ov.prototype.end=function(){};function Cv(t,e){this.prevStr=""}Cv.prototype.write=function(t){t=this.prevStr+t;var e=t.length-t.length%4;return this.prevStr=t.slice(e),t=t.slice(0,e),vi.from(t,"base64")};Cv.prototype.end=function(){return vi.from(this.prevStr,"base64")};function jv(t,e){}jv.prototype.write=function(t){for(var e=vi.alloc(t.length*3),r=0,n=0;n<t.length;n++){var i=t.charCodeAt(n);i<128?e[r++]=i:i<2048?(e[r++]=192+(i>>>6),e[r++]=128+(i&63)):(e[r++]=224+(i>>>12),e[r++]=128+(i>>>6&63),e[r++]=128+(i&63))}return e.slice(0,r)};jv.prototype.end=function(){};function Pv(t,e){this.acc=0,this.contBytes=0,this.accBytes=0,this.defaultCharUnicode=e.defaultCharUnicode}Pv.prototype.write=function(t){for(var e=this.acc,r=this.contBytes,n=this.accBytes,i="",s=0;s<t.length;s++){var o=t[s];(o&192)!==128?(r>0&&(i+=this.defaultCharUnicode,r=0),o<128?i+=String.fromCharCode(o):o<224?(e=o&31,r=1,n=1):o<240?(e=o&15,r=2,n=1):i+=this.defaultCharUnicode):r>0?(e=e<<6|o&63,r--,n++,r===0&&(n===2&&e<128&&e>0?i+=this.defaultCharUnicode:n===3&&e<2048?i+=this.defaultCharUnicode:i+=String.fromCharCode(e))):i+=this.defaultCharUnicode}return this.acc=e,this.contBytes=r,this.accBytes=n,i};Pv.prototype.end=function(){var t=0;return this.contBytes>0&&(t+=this.defaultCharUnicode),t};function Kv(t,e){this.highSurrogate=""}Kv.prototype.write=function(t){if(this.highSurrogate&&(t=this.highSurrogate+t,this.highSurrogate=""),t.length>0){var e=t.charCodeAt(t.length-1);e>=55296&&e<56320&&(this.highSurrogate=t[t.length-1],t=t.slice(0,t.length-1))}return vi.from(t,this.enc)};Kv.prototype.end=function(){if(this.highSurrogate){var t=this.highSurrogate;return this.highSurrogate="",vi.from(t,this.enc)}}});var OR=h(ss=>{"use strict";var vp=bi().Buffer;ss._utf32=Dv;function Dv(t,e){this.iconv=e,this.bomAware=!0,this.isLE=t.isLE}ss.utf32le={type:"_utf32",isLE:!0};ss.utf32be={type:"_utf32",isLE:!1};ss.ucs4le="utf32le";ss.ucs4be="utf32be";Dv.prototype.encoder=Mv;Dv.prototype.decoder=Nv;function Mv(t,e){this.isLE=e.isLE,this.highSurrogate=0}Mv.prototype.write=function(t){for(var e=vp.from(t,"ucs2"),r=vp.alloc(e.length*2+4),n=this.isLE?r.writeUInt32LE:r.writeUInt32BE,i=0,s=0;s<e.length;s+=2){var o=e.readUInt16LE(s),a=o>=55296&&o<56320,c=o>=56320&&o<57344;if(this.highSurrogate)if(a||!c)n.call(r,this.highSurrogate,i),i+=4;else{var l=(this.highSurrogate-55296<<10|o-56320)+65536;n.call(r,l,i),i+=4,this.highSurrogate=0;continue}a?this.highSurrogate=o:(n.call(r,o,i),i+=4,this.highSurrogate=0)}return i<r.length&&(r=r.slice(0,i)),r};Mv.prototype.end=function(){if(this.highSurrogate){var t=vp.alloc(4);return this.isLE?t.writeUInt32LE(this.highSurrogate,0):t.writeUInt32BE(this.highSurrogate,0),this.highSurrogate=0,t}};function Nv(t,e){this.isLE=e.isLE,this.badChar=e.iconv.defaultCharUnicode.charCodeAt(0),this.overflow=[]}Nv.prototype.write=function(t){if(t.length===0)return"";var e=0,r=0,n=vp.alloc(t.length+4),i=0,s=this.isLE,o=this.overflow,a=this.badChar;if(o.length>0){for(;e<t.length&&o.length<4;e++)o.push(t[e]);o.length===4&&(s?r=o[0]|o[1]<<8|o[2]<<16|o[3]<<24:r=o[3]|o[2]<<8|o[1]<<16|o[0]<<24,o.length=0,i=AR(n,i,r,a))}for(;e<t.length-3;e+=4)s?r=t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24:r=t[e+3]|t[e+2]<<8|t[e+1]<<16|t[e]<<24,i=AR(n,i,r,a);for(;e<t.length;e++)o.push(t[e]);return n.slice(0,i).toString("ucs2")};function AR(t,e,r,n){if((r<0||r>1114111)&&(r=n),r>=65536){r-=65536;var i=55296|r>>10;t[e++]=i&255,t[e++]=i>>8;var r=56320|r&1023}return t[e++]=r&255,t[e++]=r>>8,e}Nv.prototype.end=function(){if(this.overflow.length!==0)return this.overflow.length=0,String.fromCharCode(this.badChar)};ss.utf32=Lv;ss.ucs4="utf32";function Lv(t,e){this.iconv=e}Lv.prototype.encoder=qv;Lv.prototype.decoder=Fv;function qv(t,e){t=t||{},t.addBOM===void 0&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder(t.defaultEncoding||"utf-32le",t)}qv.prototype.write=function(t){return this.encoder.write(t)};qv.prototype.end=function(){return this.encoder.end()};function Fv(t,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=t||{},this.iconv=e.iconv}Fv.prototype.write=function(t){if(!this.decoder){if(this.initialBufs.push(t),this.initialBufsLen+=t.length,this.initialBufsLen<32)return"";var e=RR(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var r="",n=0;n<this.initialBufs.length;n++)r+=this.decoder.write(this.initialBufs[n]);return this.initialBufs.length=this.initialBufsLen=0,r}return this.decoder.write(t)};Fv.prototype.end=function(){if(!this.decoder){var t=RR(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(t,this.options);for(var e="",r=0;r<this.initialBufs.length;r++)e+=this.decoder.write(this.initialBufs[r]);var n=this.decoder.end();return n&&(e+=n),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function RR(t,e){var r=[],n=0,i=0,s=0,o=0,a=0;e:for(var c=0;c<t.length;c++)for(var l=t[c],u=0;u<l.length;u++)if(r.push(l[u]),r.length===4){if(n===0){if(r[0]===255&&r[1]===254&&r[2]===0&&r[3]===0)return"utf-32le";if(r[0]===0&&r[1]===0&&r[2]===254&&r[3]===255)return"utf-32be"}if((r[0]!==0||r[1]>16)&&s++,(r[3]!==0||r[2]>16)&&i++,r[0]===0&&r[1]===0&&(r[2]!==0||r[3]!==0)&&a++,(r[0]!==0||r[1]!==0)&&r[2]===0&&r[3]===0&&o++,r.length=0,n++,n>=100)break e}return a-s>o-i?"utf-32be":a-s<o-i?"utf-32le":e||"utf-32le"}});var PR=h(Bv=>{"use strict";var CR=bi().Buffer;Bv.utf16be=Ep;function Ep(){}Ep.prototype.encoder=$v;Ep.prototype.decoder=Uv;Ep.prototype.bomAware=!0;function $v(){}$v.prototype.write=function(t){for(var e=CR.from(t,"ucs2"),r=0;r<e.length;r+=2){var n=e[r];e[r]=e[r+1],e[r+1]=n}return e};$v.prototype.end=function(){};function Uv(){this.overflowByte=-1}Uv.prototype.write=function(t){if(t.length==0)return"";var e=CR.alloc(t.length+1),r=0,n=0;for(this.overflowByte!==-1&&(e[0]=t[0],e[1]=this.overflowByte,r=1,n=2);r<t.length-1;r+=2,n+=2)e[n]=t[r+1],e[n+1]=t[r];return this.overflowByte=r==t.length-1?t[t.length-1]:-1,e.slice(0,n).toString("ucs2")};Uv.prototype.end=function(){this.overflowByte=-1};Bv.utf16=Jv;function Jv(t,e){this.iconv=e}Jv.prototype.encoder=zv;Jv.prototype.decoder=Gv;function zv(t,e){t=t||{},t.addBOM===void 0&&(t.addBOM=!0),this.encoder=e.iconv.getEncoder("utf-16le",t)}zv.prototype.write=function(t){return this.encoder.write(t)};zv.prototype.end=function(){return this.encoder.end()};function Gv(t,e){this.decoder=null,this.initialBufs=[],this.initialBufsLen=0,this.options=t||{},this.iconv=e.iconv}Gv.prototype.write=function(t){if(!this.decoder){if(this.initialBufs.push(t),this.initialBufsLen+=t.length,this.initialBufsLen<16)return"";var e=jR(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(e,this.options);for(var r="",n=0;n<this.initialBufs.length;n++)r+=this.decoder.write(this.initialBufs[n]);return this.initialBufs.length=this.initialBufsLen=0,r}return this.decoder.write(t)};Gv.prototype.end=function(){if(!this.decoder){var t=jR(this.initialBufs,this.options.defaultEncoding);this.decoder=this.iconv.getDecoder(t,this.options);for(var e="",r=0;r<this.initialBufs.length;r++)e+=this.decoder.write(this.initialBufs[r]);var n=this.decoder.end();return n&&(e+=n),this.initialBufs.length=this.initialBufsLen=0,e}return this.decoder.end()};function jR(t,e){var r=[],n=0,i=0,s=0;e:for(var o=0;o<t.length;o++)for(var a=t[o],c=0;c<a.length;c++)if(r.push(a[c]),r.length===2){if(n===0){if(r[0]===255&&r[1]===254)return"utf-16le";if(r[0]===254&&r[1]===255)return"utf-16be"}if(r[0]===0&&r[1]!==0&&s++,r[0]!==0&&r[1]===0&&i++,r.length=0,n++,n>=100)break e}return s>i?"utf-16be":s<i?"utf-16le":e||"utf-16le"}});var DR=h(wp=>{"use strict";var Fn=bi().Buffer;wp.utf7=Sp;wp.unicode11utf7="utf7";function Sp(t,e){this.iconv=e}Sp.prototype.encoder=Vv;Sp.prototype.decoder=Wv;Sp.prototype.bomAware=!0;var fY=/[^A-Za-z0-9'\(\),-\.\/:\? \n\r\t]+/g;function Vv(t,e){this.iconv=e.iconv}Vv.prototype.write=function(t){return Fn.from(t.replace(fY,function(e){return"+"+(e==="+"?"":this.iconv.encode(e,"utf16-be").toString("base64").replace(/=+$/,""))+"-"}.bind(this)))};Vv.prototype.end=function(){};function Wv(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var mY=/[A-Za-z0-9\/+]/,Yv=[];for(Rl=0;Rl<256;Rl++)Yv[Rl]=mY.test(String.fromCharCode(Rl));var Rl,hY=43,ao=45,Hv=38;Wv.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,s=0;s<t.length;s++)if(!n)t[s]==hY&&(e+=this.iconv.decode(t.slice(r,s),"ascii"),r=s+1,n=!0);else if(!Yv[t[s]]){if(s==r&&t[s]==ao)e+="+";else{var o=i+this.iconv.decode(t.slice(r,s),"ascii");e+=this.iconv.decode(Fn.from(o,"base64"),"utf16-be")}t[s]!=ao&&s--,r=s+1,n=!1,i=""}if(!n)e+=this.iconv.decode(t.slice(r),"ascii");else{var o=i+this.iconv.decode(t.slice(r),"ascii"),a=o.length-o.length%8;i=o.slice(a),o=o.slice(0,a),e+=this.iconv.decode(Fn.from(o,"base64"),"utf16-be")}return this.inBase64=n,this.base64Accum=i,e};Wv.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(Fn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t};wp.utf7imap=xp;function xp(t,e){this.iconv=e}xp.prototype.encoder=Qv;xp.prototype.decoder=Xv;xp.prototype.bomAware=!0;function Qv(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=Fn.alloc(6),this.base64AccumIdx=0}Qv.prototype.write=function(t){for(var e=this.inBase64,r=this.base64Accum,n=this.base64AccumIdx,i=Fn.alloc(t.length*5+10),s=0,o=0;o<t.length;o++){var a=t.charCodeAt(o);a>=32&&a<=126?(e&&(n>0&&(s+=i.write(r.slice(0,n).toString("base64").replace(/\//g,",").replace(/=+$/,""),s),n=0),i[s++]=ao,e=!1),e||(i[s++]=a,a===Hv&&(i[s++]=ao))):(e||(i[s++]=Hv,e=!0),e&&(r[n++]=a>>8,r[n++]=a&255,n==r.length&&(s+=i.write(r.toString("base64").replace(/\//g,","),s),n=0)))}return this.inBase64=e,this.base64AccumIdx=n,i.slice(0,s)};Qv.prototype.end=function(){var t=Fn.alloc(10),e=0;return this.inBase64&&(this.base64AccumIdx>0&&(e+=t.write(this.base64Accum.slice(0,this.base64AccumIdx).toString("base64").replace(/\//g,",").replace(/=+$/,""),e),this.base64AccumIdx=0),t[e++]=ao,this.inBase64=!1),t.slice(0,e)};function Xv(t,e){this.iconv=e.iconv,this.inBase64=!1,this.base64Accum=""}var KR=Yv.slice();KR[44]=!0;Xv.prototype.write=function(t){for(var e="",r=0,n=this.inBase64,i=this.base64Accum,s=0;s<t.length;s++)if(!n)t[s]==Hv&&(e+=this.iconv.decode(t.slice(r,s),"ascii"),r=s+1,n=!0);else if(!KR[t[s]]){if(s==r&&t[s]==ao)e+="&";else{var o=i+this.iconv.decode(t.slice(r,s),"ascii").replace(/,/g,"/");e+=this.iconv.decode(Fn.from(o,"base64"),"utf16-be")}t[s]!=ao&&s--,r=s+1,n=!1,i=""}if(!n)e+=this.iconv.decode(t.slice(r),"ascii");else{var o=i+this.iconv.decode(t.slice(r),"ascii").replace(/,/g,"/"),a=o.length-o.length%8;i=o.slice(a),o=o.slice(0,a),e+=this.iconv.decode(Fn.from(o,"base64"),"utf16-be")}return this.inBase64=n,this.base64Accum=i,e};Xv.prototype.end=function(){var t="";return this.inBase64&&this.base64Accum.length>0&&(t=this.iconv.decode(Fn.from(this.base64Accum,"base64"),"utf16-be")),this.inBase64=!1,this.base64Accum="",t}});var NR=h(MR=>{"use strict";var _p=bi().Buffer;MR._sbcs=Zv;function Zv(t,e){if(!t)throw new Error("SBCS codec is called without the data.");if(!t.chars||t.chars.length!==128&&t.chars.length!==256)throw new Error("Encoding '"+t.type+"' has incorrect 'chars' (must be of len 128 or 256)");if(t.chars.length===128){for(var r="",n=0;n<128;n++)r+=String.fromCharCode(n);t.chars=r+t.chars}this.decodeBuf=_p.from(t.chars,"ucs2");for(var i=_p.alloc(65536,e.defaultCharSingleByte.charCodeAt(0)),n=0;n<t.chars.length;n++)i[t.chars.charCodeAt(n)]=n;this.encodeBuf=i}Zv.prototype.encoder=e0;Zv.prototype.decoder=t0;function e0(t,e){this.encodeBuf=e.encodeBuf}e0.prototype.write=function(t){for(var e=_p.alloc(t.length),r=0;r<t.length;r++)e[r]=this.encodeBuf[t.charCodeAt(r)];return e};e0.prototype.end=function(){};function t0(t,e){this.decodeBuf=e.decodeBuf}t0.prototype.write=function(t){for(var e=this.decodeBuf,r=_p.alloc(t.length*2),n=0,i=0,s=0;s<t.length;s++)n=t[s]*2,i=s*2,r[i]=e[n],r[i+1]=e[n+1];return r.toString("ucs2")};t0.prototype.end=function(){}});var qR=h((yOe,LR)=>{"use strict";LR.exports={10029:"maccenteuro",maccenteuro:{type:"_sbcs",chars:"\xC4\u0100\u0101\xC9\u0104\xD6\xDC\xE1\u0105\u010C\xE4\u010D\u0106\u0107\xE9\u0179\u017A\u010E\xED\u010F\u0112\u0113\u0116\xF3\u0117\xF4\xF6\xF5\xFA\u011A\u011B\xFC\u2020\xB0\u0118\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\u0119\xA8\u2260\u0123\u012E\u012F\u012A\u2264\u2265\u012B\u0136\u2202\u2211\u0142\u013B\u013C\u013D\u013E\u0139\u013A\u0145\u0146\u0143\xAC\u221A\u0144\u0147\u2206\xAB\xBB\u2026\xA0\u0148\u0150\xD5\u0151\u014C\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\u014D\u0154\u0155\u0158\u2039\u203A\u0159\u0156\u0157\u0160\u201A\u201E\u0161\u015A\u015B\xC1\u0164\u0165\xCD\u017D\u017E\u016A\xD3\xD4\u016B\u016E\xDA\u016F\u0170\u0171\u0172\u0173\xDD\xFD\u0137\u017B\u0141\u017C\u0122\u02C7"},808:"cp808",ibm808:"cp808",cp808:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\u20AC\u25A0\xA0"},mik:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2514\u2534\u252C\u251C\u2500\u253C\u2563\u2551\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2510\u2591\u2592\u2593\u2502\u2524\u2116\xA7\u2557\u255D\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},cp720:{type:"_sbcs",chars:"\x80\x81\xE9\xE2\x84\xE0\x86\xE7\xEA\xEB\xE8\xEF\xEE\x8D\x8E\x8F\x90\u0651\u0652\xF4\xA4\u0640\xFB\xF9\u0621\u0622\u0623\u0624\xA3\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0636\u0637\u0638\u0639\u063A\u0641\xB5\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u2261\u064B\u064C\u064D\u064E\u064F\u0650\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ascii8bit:"ascii",usascii:"ascii",ansix34:"ascii",ansix341968:"ascii",ansix341986:"ascii",csascii:"ascii",cp367:"ascii",ibm367:"ascii",isoir6:"ascii",iso646us:"ascii",iso646irv:"ascii",us:"ascii",latin1:"iso88591",latin2:"iso88592",latin3:"iso88593",latin4:"iso88594",latin5:"iso88599",latin6:"iso885910",latin7:"iso885913",latin8:"iso885914",latin9:"iso885915",latin10:"iso885916",csisolatin1:"iso88591",csisolatin2:"iso88592",csisolatin3:"iso88593",csisolatin4:"iso88594",csisolatincyrillic:"iso88595",csisolatinarabic:"iso88596",csisolatingreek:"iso88597",csisolatinhebrew:"iso88598",csisolatin5:"iso88599",csisolatin6:"iso885910",l1:"iso88591",l2:"iso88592",l3:"iso88593",l4:"iso88594",l5:"iso88599",l6:"iso885910",l7:"iso885913",l8:"iso885914",l9:"iso885915",l10:"iso885916",isoir14:"iso646jp",isoir57:"iso646cn",isoir100:"iso88591",isoir101:"iso88592",isoir109:"iso88593",isoir110:"iso88594",isoir144:"iso88595",isoir127:"iso88596",isoir126:"iso88597",isoir138:"iso88598",isoir148:"iso88599",isoir157:"iso885910",isoir166:"tis620",isoir179:"iso885913",isoir199:"iso885914",isoir203:"iso885915",isoir226:"iso885916",cp819:"iso88591",ibm819:"iso88591",cyrillic:"iso88595",arabic:"iso88596",arabic8:"iso88596",ecma114:"iso88596",asmo708:"iso88596",greek:"iso88597",greek8:"iso88597",ecma118:"iso88597",elot928:"iso88597",hebrew:"iso88598",hebrew8:"iso88598",iso88598i:"iso88598",iso88598e:"iso88598",turkish:"iso88599",turkish8:"iso88599",thai:"iso885911",thai8:"iso885911",celtic:"iso885914",celtic8:"iso885914",isoceltic:"iso885914",tis6200:"tis620",tis62025291:"tis620",tis62025330:"tis620",1e4:"macroman",10006:"macgreek",10007:"maccyrillic",10079:"maciceland",10081:"macturkish",cspc8codepage437:"cp437",cspc775baltic:"cp775",cspc850multilingual:"cp850",cspcp852:"cp852",cspc862latinhebrew:"cp862",cpgr:"cp869",msee:"cp1250",mscyrl:"cp1251",msansi:"cp1252",msgreek:"cp1253",msturk:"cp1254",mshebr:"cp1255",msarab:"cp1256",winbaltrim:"cp1257",cp20866:"koi8r",20866:"koi8r",ibm878:"koi8r",cskoi8r:"koi8r",cp21866:"koi8u",21866:"koi8u",ibm1168:"koi8u",strk10482002:"rk1048",tcvn5712:"tcvn",tcvn57121:"tcvn",gb198880:"iso646cn",cn:"iso646cn",csiso14jisc6220ro:"iso646jp",jisc62201969ro:"iso646jp",jp:"iso646jp",cshproman8:"hproman8",r8:"hproman8",roman8:"hproman8",xroman8:"hproman8",ibm1051:"hproman8",mac:"macintosh",csmacintosh:"macintosh"}});var $R=h((gOe,FR)=>{"use strict";FR.exports={437:"cp437",737:"cp737",775:"cp775",850:"cp850",852:"cp852",855:"cp855",856:"cp856",857:"cp857",858:"cp858",860:"cp860",861:"cp861",862:"cp862",863:"cp863",864:"cp864",865:"cp865",866:"cp866",869:"cp869",874:"windows874",922:"cp922",1046:"cp1046",1124:"cp1124",1125:"cp1125",1129:"cp1129",1133:"cp1133",1161:"cp1161",1162:"cp1162",1163:"cp1163",1250:"windows1250",1251:"windows1251",1252:"windows1252",1253:"windows1253",1254:"windows1254",1255:"windows1255",1256:"windows1256",1257:"windows1257",1258:"windows1258",28591:"iso88591",28592:"iso88592",28593:"iso88593",28594:"iso88594",28595:"iso88595",28596:"iso88596",28597:"iso88597",28598:"iso88598",28599:"iso88599",28600:"iso885910",28601:"iso885911",28603:"iso885913",28604:"iso885914",28605:"iso885915",28606:"iso885916",windows874:{type:"_sbcs",chars:"\u20AC\uFFFD\uFFFD\uFFFD\uFFFD\u2026\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},win874:"windows874",cp874:"windows874",windows1250:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\u0160\u2039\u015A\u0164\u017D\u0179\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0161\u203A\u015B\u0165\u017E\u017A\xA0\u02C7\u02D8\u0141\xA4\u0104\xA6\xA7\xA8\xA9\u015E\xAB\xAC\xAD\xAE\u017B\xB0\xB1\u02DB\u0142\xB4\xB5\xB6\xB7\xB8\u0105\u015F\xBB\u013D\u02DD\u013E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},win1250:"windows1250",cp1250:"windows1250",windows1251:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u040C\u040B\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u045C\u045B\u045F\xA0\u040E\u045E\u0408\xA4\u0490\xA6\xA7\u0401\xA9\u0404\xAB\xAC\xAD\xAE\u0407\xB0\xB1\u0406\u0456\u0491\xB5\xB6\xB7\u0451\u2116\u0454\xBB\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},win1251:"windows1251",cp1251:"windows1251",windows1252:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\u017D\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\u017E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},win1252:"windows1252",cp1252:"windows1252",windows1253:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\u0385\u0386\xA3\xA4\xA5\xA6\xA7\xA8\xA9\uFFFD\xAB\xAC\xAD\xAE\u2015\xB0\xB1\xB2\xB3\u0384\xB5\xB6\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},win1253:"windows1253",cp1253:"windows1253",windows1254:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},win1254:"windows1254",cp1254:"windows1254",windows1255:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\xA0\xA1\xA2\xA3\u20AA\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\xBF\u05B0\u05B1\u05B2\u05B3\u05B4\u05B5\u05B6\u05B7\u05B8\u05B9\u05BA\u05BB\u05BC\u05BD\u05BE\u05BF\u05C0\u05C1\u05C2\u05C3\u05F0\u05F1\u05F2\u05F3\u05F4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},win1255:"windows1255",cp1255:"windows1255",windows1256:{type:"_sbcs",chars:"\u20AC\u067E\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0679\u2039\u0152\u0686\u0698\u0688\u06AF\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u06A9\u2122\u0691\u203A\u0153\u200C\u200D\u06BA\xA0\u060C\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\u06BE\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\u061B\xBB\xBC\xBD\xBE\u061F\u06C1\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\xD7\u0637\u0638\u0639\u063A\u0640\u0641\u0642\u0643\xE0\u0644\xE2\u0645\u0646\u0647\u0648\xE7\xE8\xE9\xEA\xEB\u0649\u064A\xEE\xEF\u064B\u064C\u064D\u064E\xF4\u064F\u0650\xF7\u0651\xF9\u0652\xFB\xFC\u200E\u200F\u06D2"},win1256:"windows1256",cp1256:"windows1256",windows1257:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\uFFFD\u201E\u2026\u2020\u2021\uFFFD\u2030\uFFFD\u2039\uFFFD\xA8\u02C7\xB8\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\xAF\u02DB\uFFFD\xA0\uFFFD\xA2\xA3\xA4\uFFFD\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u02D9"},win1257:"windows1257",cp1257:"windows1257",windows1258:{type:"_sbcs",chars:"\u20AC\uFFFD\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\uFFFD\u2039\u0152\uFFFD\uFFFD\uFFFD\uFFFD\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\uFFFD\u203A\u0153\uFFFD\uFFFD\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},win1258:"windows1258",cp1258:"windows1258",iso88591:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28591:"iso88591",iso88592:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u02D8\u0141\xA4\u013D\u015A\xA7\xA8\u0160\u015E\u0164\u0179\xAD\u017D\u017B\xB0\u0105\u02DB\u0142\xB4\u013E\u015B\u02C7\xB8\u0161\u015F\u0165\u017A\u02DD\u017E\u017C\u0154\xC1\xC2\u0102\xC4\u0139\u0106\xC7\u010C\xC9\u0118\xCB\u011A\xCD\xCE\u010E\u0110\u0143\u0147\xD3\xD4\u0150\xD6\xD7\u0158\u016E\xDA\u0170\xDC\xDD\u0162\xDF\u0155\xE1\xE2\u0103\xE4\u013A\u0107\xE7\u010D\xE9\u0119\xEB\u011B\xED\xEE\u010F\u0111\u0144\u0148\xF3\xF4\u0151\xF6\xF7\u0159\u016F\xFA\u0171\xFC\xFD\u0163\u02D9"},cp28592:"iso88592",iso88593:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0126\u02D8\xA3\xA4\uFFFD\u0124\xA7\xA8\u0130\u015E\u011E\u0134\xAD\uFFFD\u017B\xB0\u0127\xB2\xB3\xB4\xB5\u0125\xB7\xB8\u0131\u015F\u011F\u0135\xBD\uFFFD\u017C\xC0\xC1\xC2\uFFFD\xC4\u010A\u0108\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\uFFFD\xD1\xD2\xD3\xD4\u0120\xD6\xD7\u011C\xD9\xDA\xDB\xDC\u016C\u015C\xDF\xE0\xE1\xE2\uFFFD\xE4\u010B\u0109\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\uFFFD\xF1\xF2\xF3\xF4\u0121\xF6\xF7\u011D\xF9\xFA\xFB\xFC\u016D\u015D\u02D9"},cp28593:"iso88593",iso88594:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0138\u0156\xA4\u0128\u013B\xA7\xA8\u0160\u0112\u0122\u0166\xAD\u017D\xAF\xB0\u0105\u02DB\u0157\xB4\u0129\u013C\u02C7\xB8\u0161\u0113\u0123\u0167\u014A\u017E\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\u012A\u0110\u0145\u014C\u0136\xD4\xD5\xD6\xD7\xD8\u0172\xDA\xDB\xDC\u0168\u016A\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\u012B\u0111\u0146\u014D\u0137\xF4\xF5\xF6\xF7\xF8\u0173\xFA\xFB\xFC\u0169\u016B\u02D9"},cp28594:"iso88594",iso88595:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0403\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0453\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},cp28595:"iso88595",iso88596:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\uFFFD\uFFFD\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u060C\xAD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u061B\uFFFD\uFFFD\uFFFD\u061F\uFFFD\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\u0638\u0639\u063A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},cp28596:"iso88596",iso88597:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u2018\u2019\xA3\u20AC\u20AF\xA6\xA7\xA8\xA9\u037A\xAB\xAC\xAD\uFFFD\u2015\xB0\xB1\xB2\xB3\u0384\u0385\u0386\xB7\u0388\u0389\u038A\xBB\u038C\xBD\u038E\u038F\u0390\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\uFFFD\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03AA\u03AB\u03AC\u03AD\u03AE\u03AF\u03B0\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C2\u03C3\u03C4\u03C5\u03C6\u03C7\u03C8\u03C9\u03CA\u03CB\u03CC\u03CD\u03CE\uFFFD"},cp28597:"iso88597",iso88598:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xD7\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xF7\xBB\xBC\xBD\xBE\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2017\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\uFFFD\u200E\u200F\uFFFD"},cp28598:"iso88598",iso88599:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u011E\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u0130\u015E\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u011F\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u0131\u015F\xFF"},cp28599:"iso88599",iso885910:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0112\u0122\u012A\u0128\u0136\xA7\u013B\u0110\u0160\u0166\u017D\xAD\u016A\u014A\xB0\u0105\u0113\u0123\u012B\u0129\u0137\xB7\u013C\u0111\u0161\u0167\u017E\u2015\u016B\u014B\u0100\xC1\xC2\xC3\xC4\xC5\xC6\u012E\u010C\xC9\u0118\xCB\u0116\xCD\xCE\xCF\xD0\u0145\u014C\xD3\xD4\xD5\xD6\u0168\xD8\u0172\xDA\xDB\xDC\xDD\xDE\xDF\u0101\xE1\xE2\xE3\xE4\xE5\xE6\u012F\u010D\xE9\u0119\xEB\u0117\xED\xEE\xEF\xF0\u0146\u014D\xF3\xF4\xF5\xF6\u0169\xF8\u0173\xFA\xFB\xFC\xFD\xFE\u0138"},cp28600:"iso885910",iso885911:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},cp28601:"iso885911",iso885913:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u201D\xA2\xA3\xA4\u201E\xA6\xA7\xD8\xA9\u0156\xAB\xAC\xAD\xAE\xC6\xB0\xB1\xB2\xB3\u201C\xB5\xB6\xB7\xF8\xB9\u0157\xBB\xBC\xBD\xBE\xE6\u0104\u012E\u0100\u0106\xC4\xC5\u0118\u0112\u010C\xC9\u0179\u0116\u0122\u0136\u012A\u013B\u0160\u0143\u0145\xD3\u014C\xD5\xD6\xD7\u0172\u0141\u015A\u016A\xDC\u017B\u017D\xDF\u0105\u012F\u0101\u0107\xE4\xE5\u0119\u0113\u010D\xE9\u017A\u0117\u0123\u0137\u012B\u013C\u0161\u0144\u0146\xF3\u014D\xF5\xF6\xF7\u0173\u0142\u015B\u016B\xFC\u017C\u017E\u2019"},cp28603:"iso885913",iso885914:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u1E02\u1E03\xA3\u010A\u010B\u1E0A\xA7\u1E80\xA9\u1E82\u1E0B\u1EF2\xAD\xAE\u0178\u1E1E\u1E1F\u0120\u0121\u1E40\u1E41\xB6\u1E56\u1E81\u1E57\u1E83\u1E60\u1EF3\u1E84\u1E85\u1E61\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0174\xD1\xD2\xD3\xD4\xD5\xD6\u1E6A\xD8\xD9\xDA\xDB\xDC\xDD\u0176\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0175\xF1\xF2\xF3\xF4\xF5\xF6\u1E6B\xF8\xF9\xFA\xFB\xFC\xFD\u0177\xFF"},cp28604:"iso885914",iso885915:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\u0160\xA7\u0161\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u017D\xB5\xB6\xB7\u017E\xB9\xBA\xBB\u0152\u0153\u0178\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\xDE\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},cp28605:"iso885915",iso885916:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0104\u0105\u0141\u20AC\u201E\u0160\xA7\u0161\xA9\u0218\xAB\u0179\xAD\u017A\u017B\xB0\xB1\u010C\u0142\u017D\u201D\xB6\xB7\u017E\u010D\u0219\xBB\u0152\u0153\u0178\u017C\xC0\xC1\xC2\u0102\xC4\u0106\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0110\u0143\xD2\xD3\xD4\u0150\xD6\u015A\u0170\xD9\xDA\xDB\xDC\u0118\u021A\xDF\xE0\xE1\xE2\u0103\xE4\u0107\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0111\u0144\xF2\xF3\xF4\u0151\xF6\u015B\u0171\xF9\xFA\xFB\xFC\u0119\u021B\xFF"},cp28606:"iso885916",cp437:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm437:"cp437",csibm437:"cp437",cp737:{type:"_sbcs",chars:"\u0391\u0392\u0393\u0394\u0395\u0396\u0397\u0398\u0399\u039A\u039B\u039C\u039D\u039E\u039F\u03A0\u03A1\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u03B4\u03B5\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u03C5\u03C6\u03C7\u03C8\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03C9\u03AC\u03AD\u03AE\u03CA\u03AF\u03CC\u03CD\u03CB\u03CE\u0386\u0388\u0389\u038A\u038C\u038E\u038F\xB1\u2265\u2264\u03AA\u03AB\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm737:"cp737",csibm737:"cp737",cp775:{type:"_sbcs",chars:"\u0106\xFC\xE9\u0101\xE4\u0123\xE5\u0107\u0142\u0113\u0156\u0157\u012B\u0179\xC4\xC5\xC9\xE6\xC6\u014D\xF6\u0122\xA2\u015A\u015B\xD6\xDC\xF8\xA3\xD8\xD7\xA4\u0100\u012A\xF3\u017B\u017C\u017A\u201D\xA6\xA9\xAE\xAC\xBD\xBC\u0141\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0104\u010C\u0118\u0116\u2563\u2551\u2557\u255D\u012E\u0160\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0172\u016A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u017D\u0105\u010D\u0119\u0117\u012F\u0161\u0173\u016B\u017E\u2518\u250C\u2588\u2584\u258C\u2590\u2580\xD3\xDF\u014C\u0143\xF5\xD5\xB5\u0144\u0136\u0137\u013B\u013C\u0146\u0112\u0145\u2019\xAD\xB1\u201C\xBE\xB6\xA7\xF7\u201E\xB0\u2219\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm775:"cp775",csibm775:"cp775",cp850:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u0131\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm850:"cp850",csibm850:"cp850",cp852:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\u016F\u0107\xE7\u0142\xEB\u0150\u0151\xEE\u0179\xC4\u0106\xC9\u0139\u013A\xF4\xF6\u013D\u013E\u015A\u015B\xD6\xDC\u0164\u0165\u0141\xD7\u010D\xE1\xED\xF3\xFA\u0104\u0105\u017D\u017E\u0118\u0119\xAC\u017A\u010C\u015F\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\u011A\u015E\u2563\u2551\u2557\u255D\u017B\u017C\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u0102\u0103\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u0111\u0110\u010E\xCB\u010F\u0147\xCD\xCE\u011B\u2518\u250C\u2588\u2584\u0162\u016E\u2580\xD3\xDF\xD4\u0143\u0144\u0148\u0160\u0161\u0154\xDA\u0155\u0170\xFD\xDD\u0163\xB4\xAD\u02DD\u02DB\u02C7\u02D8\xA7\xF7\xB8\xB0\xA8\u02D9\u0171\u0158\u0159\u25A0\xA0"},ibm852:"cp852",csibm852:"cp852",cp855:{type:"_sbcs",chars:"\u0452\u0402\u0453\u0403\u0451\u0401\u0454\u0404\u0455\u0405\u0456\u0406\u0457\u0407\u0458\u0408\u0459\u0409\u045A\u040A\u045B\u040B\u045C\u040C\u045E\u040E\u045F\u040F\u044E\u042E\u044A\u042A\u0430\u0410\u0431\u0411\u0446\u0426\u0434\u0414\u0435\u0415\u0444\u0424\u0433\u0413\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u0445\u0425\u0438\u0418\u2563\u2551\u2557\u255D\u0439\u0419\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u043A\u041A\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\u043B\u041B\u043C\u041C\u043D\u041D\u043E\u041E\u043F\u2518\u250C\u2588\u2584\u041F\u044F\u2580\u042F\u0440\u0420\u0441\u0421\u0442\u0422\u0443\u0423\u0436\u0416\u0432\u0412\u044C\u042C\u2116\xAD\u044B\u042B\u0437\u0417\u0448\u0428\u044D\u042D\u0449\u0429\u0447\u0427\xA7\u25A0\xA0"},ibm855:"cp855",csibm855:"cp855",cp856:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\uFFFD\xA3\uFFFD\xD7\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAE\xAC\xBD\xBC\uFFFD\xAB\xBB\u2591\u2592\u2593\u2502\u2524\uFFFD\uFFFD\uFFFD\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\uFFFD\uFFFD\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u2518\u250C\u2588\u2584\xA6\uFFFD\u2580\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xB5\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm856:"cp856",csibm856:"cp856",cp857:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\u0131\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\u0130\xD6\xDC\xF8\xA3\xD8\u015E\u015F\xE1\xED\xF3\xFA\xF1\xD1\u011E\u011F\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xBA\xAA\xCA\xCB\xC8\uFFFD\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\uFFFD\xD7\xDA\xDB\xD9\xEC\xFF\xAF\xB4\xAD\xB1\uFFFD\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm857:"cp857",csibm857:"cp857",cp858:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\xC1\xC2\xC0\xA9\u2563\u2551\u2557\u255D\xA2\xA5\u2510\u2514\u2534\u252C\u251C\u2500\u253C\xE3\xC3\u255A\u2554\u2569\u2566\u2560\u2550\u256C\xA4\xF0\xD0\xCA\xCB\xC8\u20AC\xCD\xCE\xCF\u2518\u250C\u2588\u2584\xA6\xCC\u2580\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4\xAD\xB1\u2017\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\u25A0\xA0"},ibm858:"cp858",csibm858:"cp858",cp860:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE3\xE0\xC1\xE7\xEA\xCA\xE8\xCD\xD4\xEC\xC3\xC2\xC9\xC0\xC8\xF4\xF5\xF2\xDA\xF9\xCC\xD5\xDC\xA2\xA3\xD9\u20A7\xD3\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xD2\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm860:"cp860",csibm860:"cp860",cp861:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xD0\xF0\xDE\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xFE\xFB\xDD\xFD\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xC1\xCD\xD3\xDA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm861:"cp861",csibm861:"cp861",cp862:{type:"_sbcs",chars:"\u05D0\u05D1\u05D2\u05D3\u05D4\u05D5\u05D6\u05D7\u05D8\u05D9\u05DA\u05DB\u05DC\u05DD\u05DE\u05DF\u05E0\u05E1\u05E2\u05E3\u05E4\u05E5\u05E6\u05E7\u05E8\u05E9\u05EA\xA2\xA3\xA5\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm862:"cp862",csibm862:"cp862",cp863:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xC2\xE0\xB6\xE7\xEA\xEB\xE8\xEF\xEE\u2017\xC0\xA7\xC9\xC8\xCA\xF4\xCB\xCF\xFB\xF9\xA4\xD4\xDC\xA2\xA3\xD9\xDB\u0192\xA6\xB4\xF3\xFA\xA8\xB8\xB3\xAF\xCE\u2310\xAC\xBD\xBC\xBE\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm863:"cp863",csibm863:"cp863",cp864:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#$\u066A&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xB0\xB7\u2219\u221A\u2592\u2500\u2502\u253C\u2524\u252C\u251C\u2534\u2510\u250C\u2514\u2518\u03B2\u221E\u03C6\xB1\xBD\xBC\u2248\xAB\xBB\uFEF7\uFEF8\uFFFD\uFFFD\uFEFB\uFEFC\uFFFD\xA0\xAD\uFE82\xA3\xA4\uFE84\uFFFD\uFFFD\uFE8E\uFE8F\uFE95\uFE99\u060C\uFE9D\uFEA1\uFEA5\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFED1\u061B\uFEB1\uFEB5\uFEB9\u061F\xA2\uFE80\uFE81\uFE83\uFE85\uFECA\uFE8B\uFE8D\uFE91\uFE93\uFE97\uFE9B\uFE9F\uFEA3\uFEA7\uFEA9\uFEAB\uFEAD\uFEAF\uFEB3\uFEB7\uFEBB\uFEBF\uFEC1\uFEC5\uFECB\uFECF\xA6\xAC\xF7\xD7\uFEC9\u0640\uFED3\uFED7\uFEDB\uFEDF\uFEE3\uFEE7\uFEEB\uFEED\uFEEF\uFEF3\uFEBD\uFECC\uFECE\uFECD\uFEE1\uFE7D\u0651\uFEE5\uFEE9\uFEEC\uFEF0\uFEF2\uFED0\uFED5\uFEF5\uFEF6\uFEDD\uFED9\uFEF1\u25A0\uFFFD`},ibm864:"cp864",csibm864:"cp864",cp865:{type:"_sbcs",chars:"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\u20A7\u0192\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\u2310\xAC\xBD\xBC\xA1\xAB\xA4\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u03B1\xDF\u0393\u03C0\u03A3\u03C3\xB5\u03C4\u03A6\u0398\u03A9\u03B4\u221E\u03C6\u03B5\u2229\u2261\xB1\u2265\u2264\u2320\u2321\xF7\u2248\xB0\u2219\xB7\u221A\u207F\xB2\u25A0\xA0"},ibm865:"cp865",csibm865:"cp865",cp866:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0404\u0454\u0407\u0457\u040E\u045E\xB0\u2219\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm866:"cp866",csibm866:"cp866",cp869:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0386\uFFFD\xB7\xAC\xA6\u2018\u2019\u0388\u2015\u0389\u038A\u03AA\u038C\uFFFD\uFFFD\u038E\u03AB\xA9\u038F\xB2\xB3\u03AC\xA3\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03CD\u0391\u0392\u0393\u0394\u0395\u0396\u0397\xBD\u0398\u0399\xAB\xBB\u2591\u2592\u2593\u2502\u2524\u039A\u039B\u039C\u039D\u2563\u2551\u2557\u255D\u039E\u039F\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u03A0\u03A1\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u03A3\u03A4\u03A5\u03A6\u03A7\u03A8\u03A9\u03B1\u03B2\u03B3\u2518\u250C\u2588\u2584\u03B4\u03B5\u2580\u03B6\u03B7\u03B8\u03B9\u03BA\u03BB\u03BC\u03BD\u03BE\u03BF\u03C0\u03C1\u03C3\u03C2\u03C4\u0384\xAD\xB1\u03C5\u03C6\u03C7\xA7\u03C8\u0385\xB0\xA8\u03C9\u03CB\u03B0\u03CE\u25A0\xA0"},ibm869:"cp869",csibm869:"cp869",cp922:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\u203E\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\xC3\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\u0160\xD1\xD2\xD3\xD4\xD5\xD6\xD7\xD8\xD9\xDA\xDB\xDC\xDD\u017D\xDF\xE0\xE1\xE2\xE3\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\u0161\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\u017E\xFF"},ibm922:"cp922",csibm922:"cp922",cp1046:{type:"_sbcs",chars:"\uFE88\xD7\xF7\uF8F6\uF8F5\uF8F4\uF8F7\uFE71\x88\u25A0\u2502\u2500\u2510\u250C\u2514\u2518\uFE79\uFE7B\uFE7D\uFE7F\uFE77\uFE8A\uFEF0\uFEF3\uFEF2\uFECE\uFECF\uFED0\uFEF6\uFEF8\uFEFA\uFEFC\xA0\uF8FA\uF8F9\uF8F8\xA4\uF8FB\uFE8B\uFE91\uFE97\uFE9B\uFE9F\uFEA3\u060C\xAD\uFEA7\uFEB3\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\uFEB7\u061B\uFEBB\uFEBF\uFECA\u061F\uFECB\u0621\u0622\u0623\u0624\u0625\u0626\u0627\u0628\u0629\u062A\u062B\u062C\u062D\u062E\u062F\u0630\u0631\u0632\u0633\u0634\u0635\u0636\u0637\uFEC7\u0639\u063A\uFECC\uFE82\uFE84\uFE8E\uFED3\u0640\u0641\u0642\u0643\u0644\u0645\u0646\u0647\u0648\u0649\u064A\u064B\u064C\u064D\u064E\u064F\u0650\u0651\u0652\uFED7\uFEDB\uFEDF\uF8FC\uFEF5\uFEF7\uFEF9\uFEFB\uFEE3\uFEE7\uFEEC\uFEE9\uFFFD"},ibm1046:"cp1046",csibm1046:"cp1046",cp1124:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0401\u0402\u0490\u0404\u0405\u0406\u0407\u0408\u0409\u040A\u040B\u040C\xAD\u040E\u040F\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u2116\u0451\u0452\u0491\u0454\u0455\u0456\u0457\u0458\u0459\u045A\u045B\u045C\xA7\u045E\u045F"},ibm1124:"cp1124",csibm1124:"cp1124",cp1125:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u2591\u2592\u2593\u2502\u2524\u2561\u2562\u2556\u2555\u2563\u2551\u2557\u255D\u255C\u255B\u2510\u2514\u2534\u252C\u251C\u2500\u253C\u255E\u255F\u255A\u2554\u2569\u2566\u2560\u2550\u256C\u2567\u2568\u2564\u2565\u2559\u2558\u2552\u2553\u256B\u256A\u2518\u250C\u2588\u2584\u258C\u2590\u2580\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F\u0401\u0451\u0490\u0491\u0404\u0454\u0406\u0456\u0407\u0457\xB7\u221A\u2116\xA4\u25A0\xA0"},ibm1125:"cp1125",csibm1125:"cp1125",cp1129:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1129:"cp1129",csibm1129:"cp1129",cp1133:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E81\u0E82\u0E84\u0E87\u0E88\u0EAA\u0E8A\u0E8D\u0E94\u0E95\u0E96\u0E97\u0E99\u0E9A\u0E9B\u0E9C\u0E9D\u0E9E\u0E9F\u0EA1\u0EA2\u0EA3\u0EA5\u0EA7\u0EAB\u0EAD\u0EAE\uFFFD\uFFFD\uFFFD\u0EAF\u0EB0\u0EB2\u0EB3\u0EB4\u0EB5\u0EB6\u0EB7\u0EB8\u0EB9\u0EBC\u0EB1\u0EBB\u0EBD\uFFFD\uFFFD\uFFFD\u0EC0\u0EC1\u0EC2\u0EC3\u0EC4\u0EC8\u0EC9\u0ECA\u0ECB\u0ECC\u0ECD\u0EC6\uFFFD\u0EDC\u0EDD\u20AD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0ED0\u0ED1\u0ED2\u0ED3\u0ED4\u0ED5\u0ED6\u0ED7\u0ED8\u0ED9\uFFFD\uFFFD\xA2\xAC\xA6\uFFFD"},ibm1133:"cp1133",csibm1133:"cp1133",cp1161:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E48\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\u0E49\u0E4A\u0E4B\u20AC\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\xA2\xAC\xA6\xA0"},ibm1161:"cp1161",csibm1161:"cp1161",cp1162:{type:"_sbcs",chars:"\u20AC\x81\x82\x83\x84\u2026\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"},ibm1162:"cp1162",csibm1162:"cp1162",cp1163:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xA1\xA2\xA3\u20AC\xA5\xA6\xA7\u0153\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\u0178\xB5\xB6\xB7\u0152\xB9\xBA\xBB\xBC\xBD\xBE\xBF\xC0\xC1\xC2\u0102\xC4\xC5\xC6\xC7\xC8\xC9\xCA\xCB\u0300\xCD\xCE\xCF\u0110\xD1\u0309\xD3\xD4\u01A0\xD6\xD7\xD8\xD9\xDA\xDB\xDC\u01AF\u0303\xDF\xE0\xE1\xE2\u0103\xE4\xE5\xE6\xE7\xE8\xE9\xEA\xEB\u0301\xED\xEE\xEF\u0111\xF1\u0323\xF3\xF4\u01A1\xF6\xF7\xF8\xF9\xFA\xFB\xFC\u01B0\u20AB\xFF"},ibm1163:"cp1163",csibm1163:"cp1163",maccroatian:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\u0160\u2122\xB4\xA8\u2260\u017D\xD8\u221E\xB1\u2264\u2265\u2206\xB5\u2202\u2211\u220F\u0161\u222B\xAA\xBA\u2126\u017E\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u0106\xAB\u010C\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u0110\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\uFFFD\xA9\u2044\xA4\u2039\u203A\xC6\xBB\u2013\xB7\u201A\u201E\u2030\xC2\u0107\xC1\u010D\xC8\xCD\xCE\xCF\xCC\xD3\xD4\u0111\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u03C0\xCB\u02DA\xB8\xCA\xE6\u02C7"},maccyrillic:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\xA2\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u2202\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},macgreek:{type:"_sbcs",chars:"\xC4\xB9\xB2\xC9\xB3\xD6\xDC\u0385\xE0\xE2\xE4\u0384\xA8\xE7\xE9\xE8\xEA\xEB\xA3\u2122\xEE\xEF\u2022\xBD\u2030\xF4\xF6\xA6\xAD\xF9\xFB\xFC\u2020\u0393\u0394\u0398\u039B\u039E\u03A0\xDF\xAE\xA9\u03A3\u03AA\xA7\u2260\xB0\u0387\u0391\xB1\u2264\u2265\xA5\u0392\u0395\u0396\u0397\u0399\u039A\u039C\u03A6\u03AB\u03A8\u03A9\u03AC\u039D\xAC\u039F\u03A1\u2248\u03A4\xAB\xBB\u2026\xA0\u03A5\u03A7\u0386\u0388\u0153\u2013\u2015\u201C\u201D\u2018\u2019\xF7\u0389\u038A\u038C\u038E\u03AD\u03AE\u03AF\u03CC\u038F\u03CD\u03B1\u03B2\u03C8\u03B4\u03B5\u03C6\u03B3\u03B7\u03B9\u03BE\u03BA\u03BB\u03BC\u03BD\u03BF\u03C0\u03CE\u03C1\u03C3\u03C4\u03B8\u03C9\u03C2\u03C7\u03C5\u03B6\u03CA\u03CB\u0390\u03B0\uFFFD"},maciceland:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\xDD\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\xD0\xF0\xDE\xFE\xFD\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macroman:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macromania:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\u0102\u015E\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\u0103\u015F\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\u0162\u0163\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macthai:{type:"_sbcs",chars:"\xAB\xBB\u2026\uF88C\uF88F\uF892\uF895\uF898\uF88B\uF88E\uF891\uF894\uF897\u201C\u201D\uF899\uFFFD\u2022\uF884\uF889\uF885\uF886\uF887\uF888\uF88A\uF88D\uF890\uF893\uF896\u2018\u2019\uFFFD\xA0\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFEFF\u200B\u2013\u2014\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u2122\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\xAE\xA9\uFFFD\uFFFD\uFFFD\uFFFD"},macturkish:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u011E\u011F\u0130\u0131\u015E\u015F\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\uFFFD\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},macukraine:{type:"_sbcs",chars:"\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u2020\xB0\u0490\xA3\xA7\u2022\xB6\u0406\xAE\xA9\u2122\u0402\u0452\u2260\u0403\u0453\u221E\xB1\u2264\u2265\u0456\xB5\u0491\u0408\u0404\u0454\u0407\u0457\u0409\u0459\u040A\u045A\u0458\u0405\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\u040B\u045B\u040C\u045C\u0455\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u201E\u040E\u045E\u040F\u045F\u2116\u0401\u0451\u044F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\xA4"},koi8r:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u2553\u2554\u2555\u2556\u2557\u2558\u2559\u255A\u255B\u255C\u255D\u255E\u255F\u2560\u2561\u0401\u2562\u2563\u2564\u2565\u2566\u2567\u2568\u2569\u256A\u256B\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8u:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u255D\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u256C\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8ru:{type:"_sbcs",chars:"\u2500\u2502\u250C\u2510\u2514\u2518\u251C\u2524\u252C\u2534\u253C\u2580\u2584\u2588\u258C\u2590\u2591\u2592\u2593\u2320\u25A0\u2219\u221A\u2248\u2264\u2265\xA0\u2321\xB0\xB2\xB7\xF7\u2550\u2551\u2552\u0451\u0454\u2554\u0456\u0457\u2557\u2558\u2559\u255A\u255B\u0491\u045E\u255E\u255F\u2560\u2561\u0401\u0404\u2563\u0406\u0407\u2566\u2567\u2568\u2569\u256A\u0490\u040E\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},koi8t:{type:"_sbcs",chars:"\u049B\u0493\u201A\u0492\u201E\u2026\u2020\u2021\uFFFD\u2030\u04B3\u2039\u04B2\u04B7\u04B6\uFFFD\u049A\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\uFFFD\u203A\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u04EF\u04EE\u0451\xA4\u04E3\xA6\xA7\uFFFD\uFFFD\uFFFD\xAB\xAC\xAD\xAE\uFFFD\xB0\xB1\xB2\u0401\uFFFD\u04E2\xB6\xB7\uFFFD\u2116\uFFFD\xBB\uFFFD\uFFFD\uFFFD\xA9\u044E\u0430\u0431\u0446\u0434\u0435\u0444\u0433\u0445\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u044F\u0440\u0441\u0442\u0443\u0436\u0432\u044C\u044B\u0437\u0448\u044D\u0449\u0447\u044A\u042E\u0410\u0411\u0426\u0414\u0415\u0424\u0413\u0425\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u042F\u0420\u0421\u0422\u0423\u0416\u0412\u042C\u042B\u0417\u0428\u042D\u0429\u0427\u042A"},armscii8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\uFFFD\u0587\u0589)(\xBB\xAB\u2014.\u055D,-\u058A\u2026\u055C\u055B\u055E\u0531\u0561\u0532\u0562\u0533\u0563\u0534\u0564\u0535\u0565\u0536\u0566\u0537\u0567\u0538\u0568\u0539\u0569\u053A\u056A\u053B\u056B\u053C\u056C\u053D\u056D\u053E\u056E\u053F\u056F\u0540\u0570\u0541\u0571\u0542\u0572\u0543\u0573\u0544\u0574\u0545\u0575\u0546\u0576\u0547\u0577\u0548\u0578\u0549\u0579\u054A\u057A\u054B\u057B\u054C\u057C\u054D\u057D\u054E\u057E\u054F\u057F\u0550\u0580\u0551\u0581\u0552\u0582\u0553\u0583\u0554\u0584\u0555\u0585\u0556\u0586\u055A\uFFFD"},rk1048:{type:"_sbcs",chars:"\u0402\u0403\u201A\u0453\u201E\u2026\u2020\u2021\u20AC\u2030\u0409\u2039\u040A\u049A\u04BA\u040F\u0452\u2018\u2019\u201C\u201D\u2022\u2013\u2014\uFFFD\u2122\u0459\u203A\u045A\u049B\u04BB\u045F\xA0\u04B0\u04B1\u04D8\xA4\u04E8\xA6\xA7\u0401\xA9\u0492\xAB\xAC\xAD\xAE\u04AE\xB0\xB1\u0406\u0456\u04E9\xB5\xB6\xB7\u0451\u2116\u0493\xBB\u04D9\u04A2\u04A3\u04AF\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},tcvn:{type:"_sbcs",chars:`\0\xDA\u1EE4\u1EEA\u1EEC\u1EEE\x07\b
\v\f\r\u1EE8\u1EF0\u1EF2\u1EF6\u1EF8\xDD\u1EF4\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\xC0\u1EA2\xC3\xC1\u1EA0\u1EB6\u1EAC\xC8\u1EBA\u1EBC\xC9\u1EB8\u1EC6\xCC\u1EC8\u0128\xCD\u1ECA\xD2\u1ECE\xD5\xD3\u1ECC\u1ED8\u1EDC\u1EDE\u1EE0\u1EDA\u1EE2\xD9\u1EE6\u0168\xA0\u0102\xC2\xCA\xD4\u01A0\u01AF\u0110\u0103\xE2\xEA\xF4\u01A1\u01B0\u0111\u1EB0\u0300\u0309\u0303\u0301\u0323\xE0\u1EA3\xE3\xE1\u1EA1\u1EB2\u1EB1\u1EB3\u1EB5\u1EAF\u1EB4\u1EAE\u1EA6\u1EA8\u1EAA\u1EA4\u1EC0\u1EB7\u1EA7\u1EA9\u1EAB\u1EA5\u1EAD\xE8\u1EC2\u1EBB\u1EBD\xE9\u1EB9\u1EC1\u1EC3\u1EC5\u1EBF\u1EC7\xEC\u1EC9\u1EC4\u1EBE\u1ED2\u0129\xED\u1ECB\xF2\u1ED4\u1ECF\xF5\xF3\u1ECD\u1ED3\u1ED5\u1ED7\u1ED1\u1ED9\u1EDD\u1EDF\u1EE1\u1EDB\u1EE3\xF9\u1ED6\u1EE7\u0169\xFA\u1EE5\u1EEB\u1EED\u1EEF\u1EE9\u1EF1\u1EF3\u1EF7\u1EF9\xFD\u1EF5\u1ED0`},georgianacademy:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10EF\u10F0\u10F1\u10F2\u10F3\u10F4\u10F5\u10F6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},georgianps:{type:"_sbcs",chars:"\x80\x81\u201A\u0192\u201E\u2026\u2020\u2021\u02C6\u2030\u0160\u2039\u0152\x8D\x8E\x8F\x90\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u02DC\u2122\u0161\u203A\u0153\x9D\x9E\u0178\xA0\xA1\xA2\xA3\xA4\xA5\xA6\xA7\xA8\xA9\xAA\xAB\xAC\xAD\xAE\xAF\xB0\xB1\xB2\xB3\xB4\xB5\xB6\xB7\xB8\xB9\xBA\xBB\xBC\xBD\xBE\xBF\u10D0\u10D1\u10D2\u10D3\u10D4\u10D5\u10D6\u10F1\u10D7\u10D8\u10D9\u10DA\u10DB\u10DC\u10F2\u10DD\u10DE\u10DF\u10E0\u10E1\u10E2\u10F3\u10E3\u10E4\u10E5\u10E6\u10E7\u10E8\u10E9\u10EA\u10EB\u10EC\u10ED\u10EE\u10F4\u10EF\u10F0\u10F5\xE6\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF6\xF7\xF8\xF9\xFA\xFB\xFC\xFD\xFE\xFF"},pt154:{type:"_sbcs",chars:"\u0496\u0492\u04EE\u0493\u201E\u2026\u04B6\u04AE\u04B2\u04AF\u04A0\u04E2\u04A2\u049A\u04BA\u04B8\u0497\u2018\u2019\u201C\u201D\u2022\u2013\u2014\u04B3\u04B7\u04A1\u04E3\u04A3\u049B\u04BB\u04B9\xA0\u040E\u045E\u0408\u04E8\u0498\u04B0\xA7\u0401\xA9\u04D8\xAB\xAC\u04EF\xAE\u049C\xB0\u04B1\u0406\u0456\u0499\u04E9\xB6\xB7\u0451\u2116\u04D9\xBB\u0458\u04AA\u04AB\u049D\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041A\u041B\u041C\u041D\u041E\u041F\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042A\u042B\u042C\u042D\u042E\u042F\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043A\u043B\u043C\u043D\u043E\u043F\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044A\u044B\u044C\u044D\u044E\u044F"},viscii:{type:"_sbcs",chars:`\0\u1EB2\u1EB4\u1EAA\x07\b
\v\f\r\u1EF6\u1EF8\x1B\u1EF4 !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}~\x7F\u1EA0\u1EAE\u1EB0\u1EB6\u1EA4\u1EA6\u1EA8\u1EAC\u1EBC\u1EB8\u1EBE\u1EC0\u1EC2\u1EC4\u1EC6\u1ED0\u1ED2\u1ED4\u1ED6\u1ED8\u1EE2\u1EDA\u1EDC\u1EDE\u1ECA\u1ECE\u1ECC\u1EC8\u1EE6\u0168\u1EE4\u1EF2\xD5\u1EAF\u1EB1\u1EB7\u1EA5\u1EA7\u1EA9\u1EAD\u1EBD\u1EB9\u1EBF\u1EC1\u1EC3\u1EC5\u1EC7\u1ED1\u1ED3\u1ED5\u1ED7\u1EE0\u01A0\u1ED9\u1EDD\u1EDF\u1ECB\u1EF0\u1EE8\u1EEA\u1EEC\u01A1\u1EDB\u01AF\xC0\xC1\xC2\xC3\u1EA2\u0102\u1EB3\u1EB5\xC8\xC9\xCA\u1EBA\xCC\xCD\u0128\u1EF3\u0110\u1EE9\xD2\xD3\xD4\u1EA1\u1EF7\u1EEB\u1EED\xD9\xDA\u1EF9\u1EF5\xDD\u1EE1\u01B0\xE0\xE1\xE2\xE3\u1EA3\u0103\u1EEF\u1EAB\xE8\xE9\xEA\u1EBB\xEC\xED\u0129\u1EC9\u0111\u1EF1\xF2\xF3\xF4\xF5\u1ECF\u1ECD\u1EE5\xF9\xFA\u0169\u1EE7\xFD\u1EE3\u1EEE`},iso646cn:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#\xA5%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},iso646jp:{type:"_sbcs",chars:`\0\x07\b
\v\f\r\x1B !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\xA5]^_\`abcdefghijklmnopqrstuvwxyz{|}\u203E\x7F\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD`},hproman8:{type:"_sbcs",chars:"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F\xA0\xC0\xC2\xC8\xCA\xCB\xCE\xCF\xB4\u02CB\u02C6\xA8\u02DC\xD9\xDB\u20A4\xAF\xDD\xFD\xB0\xC7\xE7\xD1\xF1\xA1\xBF\xA4\xA3\xA5\xA7\u0192\xA2\xE2\xEA\xF4\xFB\xE1\xE9\xF3\xFA\xE0\xE8\xF2\xF9\xE4\xEB\xF6\xFC\xC5\xEE\xD8\xC6\xE5\xED\xF8\xE6\xC4\xEC\xD6\xDC\xC9\xEF\xDF\xD4\xC1\xC3\xE3\xD0\xF0\xCD\xCC\xD3\xD2\xD5\xF5\u0160\u0161\xDA\u0178\xFF\xDE\xFE\xB7\xB5\xB6\xBE\u2014\xBC\xBD\xAA\xBA\xAB\u25A0\xBB\xB1\uFFFD"},macintosh:{type:"_sbcs",chars:"\xC4\xC5\xC7\xC9\xD1\xD6\xDC\xE1\xE0\xE2\xE4\xE3\xE5\xE7\xE9\xE8\xEA\xEB\xED\xEC\xEE\xEF\xF1\xF3\xF2\xF4\xF6\xF5\xFA\xF9\xFB\xFC\u2020\xB0\xA2\xA3\xA7\u2022\xB6\xDF\xAE\xA9\u2122\xB4\xA8\u2260\xC6\xD8\u221E\xB1\u2264\u2265\xA5\xB5\u2202\u2211\u220F\u03C0\u222B\xAA\xBA\u2126\xE6\xF8\xBF\xA1\xAC\u221A\u0192\u2248\u2206\xAB\xBB\u2026\xA0\xC0\xC3\xD5\u0152\u0153\u2013\u2014\u201C\u201D\u2018\u2019\xF7\u25CA\xFF\u0178\u2044\xA4\u2039\u203A\uFB01\uFB02\u2021\xB7\u201A\u201E\u2030\xC2\xCA\xC1\xCB\xC8\xCD\xCE\xCF\xCC\xD3\xD4\uFFFD\xD2\xDA\xDB\xD9\u0131\u02C6\u02DC\xAF\u02D8\u02D9\u02DA\xB8\u02DD\u02DB\u02C7"},ascii:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD"},tis620:{type:"_sbcs",chars:"\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\uFFFD\u0E01\u0E02\u0E03\u0E04\u0E05\u0E06\u0E07\u0E08\u0E09\u0E0A\u0E0B\u0E0C\u0E0D\u0E0E\u0E0F\u0E10\u0E11\u0E12\u0E13\u0E14\u0E15\u0E16\u0E17\u0E18\u0E19\u0E1A\u0E1B\u0E1C\u0E1D\u0E1E\u0E1F\u0E20\u0E21\u0E22\u0E23\u0E24\u0E25\u0E26\u0E27\u0E28\u0E29\u0E2A\u0E2B\u0E2C\u0E2D\u0E2E\u0E2F\u0E30\u0E31\u0E32\u0E33\u0E34\u0E35\u0E36\u0E37\u0E38\u0E39\u0E3A\uFFFD\uFFFD\uFFFD\uFFFD\u0E3F\u0E40\u0E41\u0E42\u0E43\u0E44\u0E45\u0E46\u0E47\u0E48\u0E49\u0E4A\u0E4B\u0E4C\u0E4D\u0E4E\u0E4F\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59\u0E5A\u0E5B\uFFFD\uFFFD\uFFFD\uFFFD"}}});var zR=h(JR=>{"use strict";var r0=bi().Buffer;JR._dbcs=Ei;var Kt=-1,UR=-2,Vr=-10,ar=-1e3,Ra=new Array(256),Ol=-1;for(Ip=0;Ip<256;Ip++)Ra[Ip]=Kt;var Ip;function Ei(t,e){if(this.encodingName=t.encodingName,!t)throw new Error("DBCS codec is called without the data.");if(!t.table)throw new Error("Encoding '"+this.encodingName+"' has no data.");var r=t.table();this.decodeTables=[],this.decodeTables[0]=Ra.slice(0),this.decodeTableSeq=[];for(var n=0;n<r.length;n++)this._addDecodeChunk(r[n]);if(typeof t.gb18030=="function"){this.gb18030=t.gb18030();var i=this.decodeTables.length;this.decodeTables.push(Ra.slice(0));var s=this.decodeTables.length;this.decodeTables.push(Ra.slice(0));for(var o=this.decodeTables[0],n=129;n<=254;n++)for(var a=this.decodeTables[ar-o[n]],c=48;c<=57;c++){if(a[c]===Kt)a[c]=ar-i;else if(a[c]>ar)throw new Error("gb18030 decode tables conflict at byte 2");for(var l=this.decodeTables[ar-a[c]],u=129;u<=254;u++){if(l[u]===Kt)l[u]=ar-s;else{if(l[u]===ar-s)continue;if(l[u]>ar)throw new Error("gb18030 decode tables conflict at byte 3")}for(var d=this.decodeTables[ar-l[u]],p=48;p<=57;p++)d[p]===Kt&&(d[p]=UR)}}}this.defaultCharUnicode=e.defaultCharUnicode,this.encodeTable=[],this.encodeTableSeq=[];var f={};if(t.encodeSkipVals)for(var n=0;n<t.encodeSkipVals.length;n++){var m=t.encodeSkipVals[n];if(typeof m=="number")f[m]=!0;else for(var c=m.from;c<=m.to;c++)f[c]=!0}if(this._fillEncodeTable(0,0,f),t.encodeAdd)for(var y in t.encodeAdd)Object.prototype.hasOwnProperty.call(t.encodeAdd,y)&&this._setEncodeChar(y.charCodeAt(0),t.encodeAdd[y]);this.defCharSB=this.encodeTable[0][e.defaultCharSingleByte.charCodeAt(0)],this.defCharSB===Kt&&(this.defCharSB=this.encodeTable[0]["?"]),this.defCharSB===Kt&&(this.defCharSB=63)}Ei.prototype.encoder=Tp;Ei.prototype.decoder=n0;Ei.prototype._getDecodeTrieNode=function(t){for(var e=[];t>0;t>>>=8)e.push(t&255);e.length==0&&e.push(0);for(var r=this.decodeTables[0],n=e.length-1;n>0;n--){var i=r[e[n]];if(i==Kt)r[e[n]]=ar-this.decodeTables.length,this.decodeTables.push(r=Ra.slice(0));else if(i<=ar)r=this.decodeTables[ar-i];else throw new Error("Overwrite byte in "+this.encodingName+", addr: "+t.toString(16))}return r};Ei.prototype._addDecodeChunk=function(t){var e=parseInt(t[0],16),r=this._getDecodeTrieNode(e);e=e&255;for(var n=1;n<t.length;n++){var i=t[n];if(typeof i=="string")for(var s=0;s<i.length;){var o=i.charCodeAt(s++);if(o>=55296&&o<56320){var a=i.charCodeAt(s++);if(a>=56320&&a<57344)r[e++]=65536+(o-55296)*1024+(a-56320);else throw new Error("Incorrect surrogate pair in "+this.encodingName+" at chunk "+t[0])}else if(o>4080&&o<=4095){for(var c=4095-o+2,l=[],u=0;u<c;u++)l.push(i.charCodeAt(s++));r[e++]=Vr-this.decodeTableSeq.length,this.decodeTableSeq.push(l)}else r[e++]=o}else if(typeof i=="number")for(var d=r[e-1]+1,s=0;s<i;s++)r[e++]=d++;else throw new Error("Incorrect type '"+typeof i+"' given in "+this.encodingName+" at chunk "+t[0])}if(e>255)throw new Error("Incorrect chunk in "+this.encodingName+" at addr "+t[0]+": too long"+e)};Ei.prototype._getEncodeBucket=function(t){var e=t>>8;return this.encodeTable[e]===void 0&&(this.encodeTable[e]=Ra.slice(0)),this.encodeTable[e]};Ei.prototype._setEncodeChar=function(t,e){var r=this._getEncodeBucket(t),n=t&255;r[n]<=Vr?this.encodeTableSeq[Vr-r[n]][Ol]=e:r[n]==Kt&&(r[n]=e)};Ei.prototype._setEncodeSequence=function(t,e){var r=t[0],n=this._getEncodeBucket(r),i=r&255,s;n[i]<=Vr?s=this.encodeTableSeq[Vr-n[i]]:(s={},n[i]!==Kt&&(s[Ol]=n[i]),n[i]=Vr-this.encodeTableSeq.length,this.encodeTableSeq.push(s));for(var o=1;o<t.length-1;o++){var a=s[r];typeof a=="object"?s=a:(s=s[r]={},a!==void 0&&(s[Ol]=a))}r=t[t.length-1],s[r]=e};Ei.prototype._fillEncodeTable=function(t,e,r){for(var n=this.decodeTables[t],i=!1,s={},o=0;o<256;o++){var a=n[o],c=e+o;if(!r[c])if(a>=0)this._setEncodeChar(a,c),i=!0;else if(a<=ar){var l=ar-a;if(!s[l]){var u=c<<8>>>0;this._fillEncodeTable(l,u,r)?i=!0:s[l]=!0}}else a<=Vr&&(this._setEncodeSequence(this.decodeTableSeq[Vr-a],c),i=!0)}return i};function Tp(t,e){this.leadSurrogate=-1,this.seqObj=void 0,this.encodeTable=e.encodeTable,this.encodeTableSeq=e.encodeTableSeq,this.defaultCharSingleByte=e.defCharSB,this.gb18030=e.gb18030}Tp.prototype.write=function(t){for(var e=r0.alloc(t.length*(this.gb18030?4:3)),r=this.leadSurrogate,n=this.seqObj,i=-1,s=0,o=0;;){if(i===-1){if(s==t.length)break;var a=t.charCodeAt(s++)}else{var a=i;i=-1}if(a>=55296&&a<57344)if(a<56320)if(r===-1){r=a;continue}else r=a,a=Kt;else r!==-1?(a=65536+(r-55296)*1024+(a-56320),r=-1):a=Kt;else r!==-1&&(i=a,a=Kt,r=-1);var c=Kt;if(n!==void 0&&a!=Kt){var l=n[a];if(typeof l=="object"){n=l;continue}else typeof l=="number"?c=l:l==null&&(l=n[Ol],l!==void 0&&(c=l,i=a));n=void 0}else if(a>=0){var u=this.encodeTable[a>>8];if(u!==void 0&&(c=u[a&255]),c<=Vr){n=this.encodeTableSeq[Vr-c];continue}if(c==Kt&&this.gb18030){var d=i0(this.gb18030.uChars,a);if(d!=-1){var c=this.gb18030.gbChars[d]+(a-this.gb18030.uChars[d]);e[o++]=129+Math.floor(c/12600),c=c%12600,e[o++]=48+Math.floor(c/1260),c=c%1260,e[o++]=129+Math.floor(c/10),c=c%10,e[o++]=48+c;continue}}}c===Kt&&(c=this.defaultCharSingleByte),c<256?e[o++]=c:c<65536?(e[o++]=c>>8,e[o++]=c&255):c<16777216?(e[o++]=c>>16,e[o++]=c>>8&255,e[o++]=c&255):(e[o++]=c>>>24,e[o++]=c>>>16&255,e[o++]=c>>>8&255,e[o++]=c&255)}return this.seqObj=n,this.leadSurrogate=r,e.slice(0,o)};Tp.prototype.end=function(){if(!(this.leadSurrogate===-1&&this.seqObj===void 0)){var t=r0.alloc(10),e=0;if(this.seqObj){var r=this.seqObj[Ol];r!==void 0&&(r<256?t[e++]=r:(t[e++]=r>>8,t[e++]=r&255)),this.seqObj=void 0}return this.leadSurrogate!==-1&&(t[e++]=this.defaultCharSingleByte,this.leadSurrogate=-1),t.slice(0,e)}};Tp.prototype.findIdx=i0;function n0(t,e){this.nodeIdx=0,this.prevBytes=[],this.decodeTables=e.decodeTables,this.decodeTableSeq=e.decodeTableSeq,this.defaultCharUnicode=e.defaultCharUnicode,this.gb18030=e.gb18030}n0.prototype.write=function(t){for(var e=r0.alloc(t.length*2),r=this.nodeIdx,n=this.prevBytes,i=this.prevBytes.length,s=-this.prevBytes.length,o,a=0,c=0;a<t.length;a++){var l=a>=0?t[a]:n[a+i],o=this.decodeTables[r][l];if(!(o>=0))if(o===Kt)o=this.defaultCharUnicode.charCodeAt(0),a=s;else if(o===UR){if(a>=3)var u=(t[a-3]-129)*12600+(t[a-2]-48)*1260+(t[a-1]-129)*10+(l-48);else var u=(n[a-3+i]-129)*12600+((a-2>=0?t[a-2]:n[a-2+i])-48)*1260+((a-1>=0?t[a-1]:n[a-1+i])-129)*10+(l-48);var d=i0(this.gb18030.gbChars,u);o=this.gb18030.uChars[d]+u-this.gb18030.gbChars[d]}else if(o<=ar){r=ar-o;continue}else if(o<=Vr){for(var p=this.decodeTableSeq[Vr-o],f=0;f<p.length-1;f++)o=p[f],e[c++]=o&255,e[c++]=o>>8;o=p[p.length-1]}else throw new Error("iconv-lite internal error: invalid decoding table value "+o+" at "+r+"/"+l);if(o>=65536){o-=65536;var m=55296|o>>10;e[c++]=m&255,e[c++]=m>>8,o=56320|o&1023}e[c++]=o&255,e[c++]=o>>8,r=0,s=a+1}return this.nodeIdx=r,this.prevBytes=s>=0?Array.prototype.slice.call(t,s):n.slice(s+i).concat(Array.prototype.slice.call(t)),e.slice(0,c).toString("ucs2")};n0.prototype.end=function(){for(var t="";this.prevBytes.length>0;){t+=this.defaultCharUnicode;var e=this.prevBytes.slice(1);this.prevBytes=[],this.nodeIdx=0,e.length>0&&(t+=this.write(e))}return this.prevBytes=[],this.nodeIdx=0,t};function i0(t,e){if(t[0]>e)return-1;for(var r=0,n=t.length;r<n-1;){var i=r+(n-r+1>>1);t[i]<=e?r=i:n=i}return r}});var GR=h((vOe,yY)=>{yY.exports=[["0","\0",128],["a1","\uFF61",62],["8140","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7"],["8180","\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["81b8","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["81c8","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["81da","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["81f0","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["81fc","\u25EF"],["824f","\uFF10",9],["8260","\uFF21",25],["8281","\uFF41",25],["829f","\u3041",82],["8340","\u30A1",62],["8380","\u30E0",22],["839f","\u0391",16,"\u03A3",6],["83bf","\u03B1",16,"\u03C3",6],["8440","\u0410",5,"\u0401\u0416",25],["8470","\u0430",5,"\u0451\u0436",7],["8480","\u043E",17],["849f","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["8740","\u2460",19,"\u2160",9],["875f","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["877e","\u337B"],["8780","\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["889f","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["8940","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186"],["8980","\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["8a40","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B"],["8a80","\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["8b40","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551"],["8b80","\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["8c40","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8"],["8c80","\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["8d40","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D"],["8d80","\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["8e40","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62"],["8e80","\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["8f40","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3"],["8f80","\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["9040","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8"],["9080","\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["9140","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB"],["9180","\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["9240","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4"],["9280","\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["9340","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC"],["9380","\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["9440","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885"],["9480","\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["9540","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577"],["9580","\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["9640","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6"],["9680","\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["9740","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32"],["9780","\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["9840","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["989f","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["9940","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED"],["9980","\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["9a40","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638"],["9a80","\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["9b40","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80"],["9b80","\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["9c40","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060"],["9c80","\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["9d40","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B"],["9d80","\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["9e40","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E"],["9e80","\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["9f40","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF"],["9f80","\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["e040","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD"],["e080","\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e140","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF"],["e180","\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e240","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0"],["e280","\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e340","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37"],["e380","\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e440","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264"],["e480","\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e540","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC"],["e580","\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["e640","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7"],["e680","\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["e740","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C"],["e780","\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["e840","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599"],["e880","\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["e940","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43"],["e980","\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["ea40","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF"],["ea80","\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0\u582F\u69C7\u9059\u7464\u51DC\u7199"],["ed40","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F"],["ed80","\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["ee40","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559"],["ee80","\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["eeef","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["f040","\uE000",62],["f080","\uE03F",124],["f140","\uE0BC",62],["f180","\uE0FB",124],["f240","\uE178",62],["f280","\uE1B7",124],["f340","\uE234",62],["f380","\uE273",124],["f440","\uE2F0",62],["f480","\uE32F",124],["f540","\uE3AC",62],["f580","\uE3EB",124],["f640","\uE468",62],["f680","\uE4A7",124],["f740","\uE524",62],["f780","\uE563",124],["f840","\uE5E0",62],["f880","\uE61F",124],["f940","\uE69C"],["fa40","\u2170",9,"\u2160",9,"\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u2235\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A"],["fa80","\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F"],["fb40","\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19"],["fb80","\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9"],["fc40","\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"]]});var BR=h((EOe,gY)=>{gY.exports=[["0","\0",127],["8ea1","\uFF61",62],["a1a1","\u3000\u3001\u3002\uFF0C\uFF0E\u30FB\uFF1A\uFF1B\uFF1F\uFF01\u309B\u309C\xB4\uFF40\xA8\uFF3E\uFFE3\uFF3F\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\u2015\u2010\uFF0F\uFF3C\uFF5E\u2225\uFF5C\u2026\u2025\u2018\u2019\u201C\u201D\uFF08\uFF09\u3014\u3015\uFF3B\uFF3D\uFF5B\uFF5D\u3008",9,"\uFF0B\uFF0D\xB1\xD7\xF7\uFF1D\u2260\uFF1C\uFF1E\u2266\u2267\u221E\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFFE5\uFF04\uFFE0\uFFE1\uFF05\uFF03\uFF06\uFF0A\uFF20\xA7\u2606\u2605\u25CB\u25CF\u25CE\u25C7"],["a2a1","\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u203B\u3012\u2192\u2190\u2191\u2193\u3013"],["a2ba","\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229"],["a2ca","\u2227\u2228\uFFE2\u21D2\u21D4\u2200\u2203"],["a2dc","\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C"],["a2f2","\u212B\u2030\u266F\u266D\u266A\u2020\u2021\xB6"],["a2fe","\u25EF"],["a3b0","\uFF10",9],["a3c1","\uFF21",25],["a3e1","\uFF41",25],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a8a1","\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542"],["ada1","\u2460",19,"\u2160",9],["adc0","\u3349\u3314\u3322\u334D\u3318\u3327\u3303\u3336\u3351\u3357\u330D\u3326\u3323\u332B\u334A\u333B\u339C\u339D\u339E\u338E\u338F\u33C4\u33A1"],["addf","\u337B\u301D\u301F\u2116\u33CD\u2121\u32A4",4,"\u3231\u3232\u3239\u337E\u337D\u337C\u2252\u2261\u222B\u222E\u2211\u221A\u22A5\u2220\u221F\u22BF\u2235\u2229\u222A"],["b0a1","\u4E9C\u5516\u5A03\u963F\u54C0\u611B\u6328\u59F6\u9022\u8475\u831C\u7A50\u60AA\u63E1\u6E25\u65ED\u8466\u82A6\u9BF5\u6893\u5727\u65A1\u6271\u5B9B\u59D0\u867B\u98F4\u7D62\u7DBE\u9B8E\u6216\u7C9F\u88B7\u5B89\u5EB5\u6309\u6697\u6848\u95C7\u978D\u674F\u4EE5\u4F0A\u4F4D\u4F9D\u5049\u56F2\u5937\u59D4\u5A01\u5C09\u60DF\u610F\u6170\u6613\u6905\u70BA\u754F\u7570\u79FB\u7DAD\u7DEF\u80C3\u840E\u8863\u8B02\u9055\u907A\u533B\u4E95\u4EA5\u57DF\u80B2\u90C1\u78EF\u4E00\u58F1\u6EA2\u9038\u7A32\u8328\u828B\u9C2F\u5141\u5370\u54BD\u54E1\u56E0\u59FB\u5F15\u98F2\u6DEB\u80E4\u852D"],["b1a1","\u9662\u9670\u96A0\u97FB\u540B\u53F3\u5B87\u70CF\u7FBD\u8FC2\u96E8\u536F\u9D5C\u7ABA\u4E11\u7893\u81FC\u6E26\u5618\u5504\u6B1D\u851A\u9C3B\u59E5\u53A9\u6D66\u74DC\u958F\u5642\u4E91\u904B\u96F2\u834F\u990C\u53E1\u55B6\u5B30\u5F71\u6620\u66F3\u6804\u6C38\u6CF3\u6D29\u745B\u76C8\u7A4E\u9834\u82F1\u885B\u8A60\u92ED\u6DB2\u75AB\u76CA\u99C5\u60A6\u8B01\u8D8A\u95B2\u698E\u53AD\u5186\u5712\u5830\u5944\u5BB4\u5EF6\u6028\u63A9\u63F4\u6CBF\u6F14\u708E\u7114\u7159\u71D5\u733F\u7E01\u8276\u82D1\u8597\u9060\u925B\u9D1B\u5869\u65BC\u6C5A\u7525\u51F9\u592E\u5965\u5F80\u5FDC"],["b2a1","\u62BC\u65FA\u6A2A\u6B27\u6BB4\u738B\u7FC1\u8956\u9D2C\u9D0E\u9EC4\u5CA1\u6C96\u837B\u5104\u5C4B\u61B6\u81C6\u6876\u7261\u4E59\u4FFA\u5378\u6069\u6E29\u7A4F\u97F3\u4E0B\u5316\u4EEE\u4F55\u4F3D\u4FA1\u4F73\u52A0\u53EF\u5609\u590F\u5AC1\u5BB6\u5BE1\u79D1\u6687\u679C\u67B6\u6B4C\u6CB3\u706B\u73C2\u798D\u79BE\u7A3C\u7B87\u82B1\u82DB\u8304\u8377\u83EF\u83D3\u8766\u8AB2\u5629\u8CA8\u8FE6\u904E\u971E\u868A\u4FC4\u5CE8\u6211\u7259\u753B\u81E5\u82BD\u86FE\u8CC0\u96C5\u9913\u99D5\u4ECB\u4F1A\u89E3\u56DE\u584A\u58CA\u5EFB\u5FEB\u602A\u6094\u6062\u61D0\u6212\u62D0\u6539"],["b3a1","\u9B41\u6666\u68B0\u6D77\u7070\u754C\u7686\u7D75\u82A5\u87F9\u958B\u968E\u8C9D\u51F1\u52BE\u5916\u54B3\u5BB3\u5D16\u6168\u6982\u6DAF\u788D\u84CB\u8857\u8A72\u93A7\u9AB8\u6D6C\u99A8\u86D9\u57A3\u67FF\u86CE\u920E\u5283\u5687\u5404\u5ED3\u62E1\u64B9\u683C\u6838\u6BBB\u7372\u78BA\u7A6B\u899A\u89D2\u8D6B\u8F03\u90ED\u95A3\u9694\u9769\u5B66\u5CB3\u697D\u984D\u984E\u639B\u7B20\u6A2B\u6A7F\u68B6\u9C0D\u6F5F\u5272\u559D\u6070\u62EC\u6D3B\u6E07\u6ED1\u845B\u8910\u8F44\u4E14\u9C39\u53F6\u691B\u6A3A\u9784\u682A\u515C\u7AC3\u84B2\u91DC\u938C\u565B\u9D28\u6822\u8305\u8431"],["b4a1","\u7CA5\u5208\u82C5\u74E6\u4E7E\u4F83\u51A0\u5BD2\u520A\u52D8\u52E7\u5DFB\u559A\u582A\u59E6\u5B8C\u5B98\u5BDB\u5E72\u5E79\u60A3\u611F\u6163\u61BE\u63DB\u6562\u67D1\u6853\u68FA\u6B3E\u6B53\u6C57\u6F22\u6F97\u6F45\u74B0\u7518\u76E3\u770B\u7AFF\u7BA1\u7C21\u7DE9\u7F36\u7FF0\u809D\u8266\u839E\u89B3\u8ACC\u8CAB\u9084\u9451\u9593\u9591\u95A2\u9665\u97D3\u9928\u8218\u4E38\u542B\u5CB8\u5DCC\u73A9\u764C\u773C\u5CA9\u7FEB\u8D0B\u96C1\u9811\u9854\u9858\u4F01\u4F0E\u5371\u559C\u5668\u57FA\u5947\u5B09\u5BC4\u5C90\u5E0C\u5E7E\u5FCC\u63EE\u673A\u65D7\u65E2\u671F\u68CB\u68C4"],["b5a1","\u6A5F\u5E30\u6BC5\u6C17\u6C7D\u757F\u7948\u5B63\u7A00\u7D00\u5FBD\u898F\u8A18\u8CB4\u8D77\u8ECC\u8F1D\u98E2\u9A0E\u9B3C\u4E80\u507D\u5100\u5993\u5B9C\u622F\u6280\u64EC\u6B3A\u72A0\u7591\u7947\u7FA9\u87FB\u8ABC\u8B70\u63AC\u83CA\u97A0\u5409\u5403\u55AB\u6854\u6A58\u8A70\u7827\u6775\u9ECD\u5374\u5BA2\u811A\u8650\u9006\u4E18\u4E45\u4EC7\u4F11\u53CA\u5438\u5BAE\u5F13\u6025\u6551\u673D\u6C42\u6C72\u6CE3\u7078\u7403\u7A76\u7AAE\u7B08\u7D1A\u7CFE\u7D66\u65E7\u725B\u53BB\u5C45\u5DE8\u62D2\u62E0\u6319\u6E20\u865A\u8A31\u8DDD\u92F8\u6F01\u79A6\u9B5A\u4EA8\u4EAB\u4EAC"],["b6a1","\u4F9B\u4FA0\u50D1\u5147\u7AF6\u5171\u51F6\u5354\u5321\u537F\u53EB\u55AC\u5883\u5CE1\u5F37\u5F4A\u602F\u6050\u606D\u631F\u6559\u6A4B\u6CC1\u72C2\u72ED\u77EF\u80F8\u8105\u8208\u854E\u90F7\u93E1\u97FF\u9957\u9A5A\u4EF0\u51DD\u5C2D\u6681\u696D\u5C40\u66F2\u6975\u7389\u6850\u7C81\u50C5\u52E4\u5747\u5DFE\u9326\u65A4\u6B23\u6B3D\u7434\u7981\u79BD\u7B4B\u7DCA\u82B9\u83CC\u887F\u895F\u8B39\u8FD1\u91D1\u541F\u9280\u4E5D\u5036\u53E5\u533A\u72D7\u7396\u77E9\u82E6\u8EAF\u99C6\u99C8\u99D2\u5177\u611A\u865E\u55B0\u7A7A\u5076\u5BD3\u9047\u9685\u4E32\u6ADB\u91E7\u5C51\u5C48"],["b7a1","\u6398\u7A9F\u6C93\u9774\u8F61\u7AAA\u718A\u9688\u7C82\u6817\u7E70\u6851\u936C\u52F2\u541B\u85AB\u8A13\u7FA4\u8ECD\u90E1\u5366\u8888\u7941\u4FC2\u50BE\u5211\u5144\u5553\u572D\u73EA\u578B\u5951\u5F62\u5F84\u6075\u6176\u6167\u61A9\u63B2\u643A\u656C\u666F\u6842\u6E13\u7566\u7A3D\u7CFB\u7D4C\u7D99\u7E4B\u7F6B\u830E\u834A\u86CD\u8A08\u8A63\u8B66\u8EFD\u981A\u9D8F\u82B8\u8FCE\u9BE8\u5287\u621F\u6483\u6FC0\u9699\u6841\u5091\u6B20\u6C7A\u6F54\u7A74\u7D50\u8840\u8A23\u6708\u4EF6\u5039\u5026\u5065\u517C\u5238\u5263\u55A7\u570F\u5805\u5ACC\u5EFA\u61B2\u61F8\u62F3\u6372"],["b8a1","\u691C\u6A29\u727D\u72AC\u732E\u7814\u786F\u7D79\u770C\u80A9\u898B\u8B19\u8CE2\u8ED2\u9063\u9375\u967A\u9855\u9A13\u9E78\u5143\u539F\u53B3\u5E7B\u5F26\u6E1B\u6E90\u7384\u73FE\u7D43\u8237\u8A00\u8AFA\u9650\u4E4E\u500B\u53E4\u547C\u56FA\u59D1\u5B64\u5DF1\u5EAB\u5F27\u6238\u6545\u67AF\u6E56\u72D0\u7CCA\u88B4\u80A1\u80E1\u83F0\u864E\u8A87\u8DE8\u9237\u96C7\u9867\u9F13\u4E94\u4E92\u4F0D\u5348\u5449\u543E\u5A2F\u5F8C\u5FA1\u609F\u68A7\u6A8E\u745A\u7881\u8A9E\u8AA4\u8B77\u9190\u4E5E\u9BC9\u4EA4\u4F7C\u4FAF\u5019\u5016\u5149\u516C\u529F\u52B9\u52FE\u539A\u53E3\u5411"],["b9a1","\u540E\u5589\u5751\u57A2\u597D\u5B54\u5B5D\u5B8F\u5DE5\u5DE7\u5DF7\u5E78\u5E83\u5E9A\u5EB7\u5F18\u6052\u614C\u6297\u62D8\u63A7\u653B\u6602\u6643\u66F4\u676D\u6821\u6897\u69CB\u6C5F\u6D2A\u6D69\u6E2F\u6E9D\u7532\u7687\u786C\u7A3F\u7CE0\u7D05\u7D18\u7D5E\u7DB1\u8015\u8003\u80AF\u80B1\u8154\u818F\u822A\u8352\u884C\u8861\u8B1B\u8CA2\u8CFC\u90CA\u9175\u9271\u783F\u92FC\u95A4\u964D\u9805\u9999\u9AD8\u9D3B\u525B\u52AB\u53F7\u5408\u58D5\u62F7\u6FE0\u8C6A\u8F5F\u9EB9\u514B\u523B\u544A\u56FD\u7A40\u9177\u9D60\u9ED2\u7344\u6F09\u8170\u7511\u5FFD\u60DA\u9AA8\u72DB\u8FBC"],["baa1","\u6B64\u9803\u4ECA\u56F0\u5764\u58BE\u5A5A\u6068\u61C7\u660F\u6606\u6839\u68B1\u6DF7\u75D5\u7D3A\u826E\u9B42\u4E9B\u4F50\u53C9\u5506\u5D6F\u5DE6\u5DEE\u67FB\u6C99\u7473\u7802\u8A50\u9396\u88DF\u5750\u5EA7\u632B\u50B5\u50AC\u518D\u6700\u54C9\u585E\u59BB\u5BB0\u5F69\u624D\u63A1\u683D\u6B73\u6E08\u707D\u91C7\u7280\u7815\u7826\u796D\u658E\u7D30\u83DC\u88C1\u8F09\u969B\u5264\u5728\u6750\u7F6A\u8CA1\u51B4\u5742\u962A\u583A\u698A\u80B4\u54B2\u5D0E\u57FC\u7895\u9DFA\u4F5C\u524A\u548B\u643E\u6628\u6714\u67F5\u7A84\u7B56\u7D22\u932F\u685C\u9BAD\u7B39\u5319\u518A\u5237"],["bba1","\u5BDF\u62F6\u64AE\u64E6\u672D\u6BBA\u85A9\u96D1\u7690\u9BD6\u634C\u9306\u9BAB\u76BF\u6652\u4E09\u5098\u53C2\u5C71\u60E8\u6492\u6563\u685F\u71E6\u73CA\u7523\u7B97\u7E82\u8695\u8B83\u8CDB\u9178\u9910\u65AC\u66AB\u6B8B\u4ED5\u4ED4\u4F3A\u4F7F\u523A\u53F8\u53F2\u55E3\u56DB\u58EB\u59CB\u59C9\u59FF\u5B50\u5C4D\u5E02\u5E2B\u5FD7\u601D\u6307\u652F\u5B5C\u65AF\u65BD\u65E8\u679D\u6B62\u6B7B\u6C0F\u7345\u7949\u79C1\u7CF8\u7D19\u7D2B\u80A2\u8102\u81F3\u8996\u8A5E\u8A69\u8A66\u8A8C\u8AEE\u8CC7\u8CDC\u96CC\u98FC\u6B6F\u4E8B\u4F3C\u4F8D\u5150\u5B57\u5BFA\u6148\u6301\u6642"],["bca1","\u6B21\u6ECB\u6CBB\u723E\u74BD\u75D4\u78C1\u793A\u800C\u8033\u81EA\u8494\u8F9E\u6C50\u9E7F\u5F0F\u8B58\u9D2B\u7AFA\u8EF8\u5B8D\u96EB\u4E03\u53F1\u57F7\u5931\u5AC9\u5BA4\u6089\u6E7F\u6F06\u75BE\u8CEA\u5B9F\u8500\u7BE0\u5072\u67F4\u829D\u5C61\u854A\u7E1E\u820E\u5199\u5C04\u6368\u8D66\u659C\u716E\u793E\u7D17\u8005\u8B1D\u8ECA\u906E\u86C7\u90AA\u501F\u52FA\u5C3A\u6753\u707C\u7235\u914C\u91C8\u932B\u82E5\u5BC2\u5F31\u60F9\u4E3B\u53D6\u5B88\u624B\u6731\u6B8A\u72E9\u73E0\u7A2E\u816B\u8DA3\u9152\u9996\u5112\u53D7\u546A\u5BFF\u6388\u6A39\u7DAC\u9700\u56DA\u53CE\u5468"],["bda1","\u5B97\u5C31\u5DDE\u4FEE\u6101\u62FE\u6D32\u79C0\u79CB\u7D42\u7E4D\u7FD2\u81ED\u821F\u8490\u8846\u8972\u8B90\u8E74\u8F2F\u9031\u914B\u916C\u96C6\u919C\u4EC0\u4F4F\u5145\u5341\u5F93\u620E\u67D4\u6C41\u6E0B\u7363\u7E26\u91CD\u9283\u53D4\u5919\u5BBF\u6DD1\u795D\u7E2E\u7C9B\u587E\u719F\u51FA\u8853\u8FF0\u4FCA\u5CFB\u6625\u77AC\u7AE3\u821C\u99FF\u51C6\u5FAA\u65EC\u696F\u6B89\u6DF3\u6E96\u6F64\u76FE\u7D14\u5DE1\u9075\u9187\u9806\u51E6\u521D\u6240\u6691\u66D9\u6E1A\u5EB6\u7DD2\u7F72\u66F8\u85AF\u85F7\u8AF8\u52A9\u53D9\u5973\u5E8F\u5F90\u6055\u92E4\u9664\u50B7\u511F"],["bea1","\u52DD\u5320\u5347\u53EC\u54E8\u5546\u5531\u5617\u5968\u59BE\u5A3C\u5BB5\u5C06\u5C0F\u5C11\u5C1A\u5E84\u5E8A\u5EE0\u5F70\u627F\u6284\u62DB\u638C\u6377\u6607\u660C\u662D\u6676\u677E\u68A2\u6A1F\u6A35\u6CBC\u6D88\u6E09\u6E58\u713C\u7126\u7167\u75C7\u7701\u785D\u7901\u7965\u79F0\u7AE0\u7B11\u7CA7\u7D39\u8096\u83D6\u848B\u8549\u885D\u88F3\u8A1F\u8A3C\u8A54\u8A73\u8C61\u8CDE\u91A4\u9266\u937E\u9418\u969C\u9798\u4E0A\u4E08\u4E1E\u4E57\u5197\u5270\u57CE\u5834\u58CC\u5B22\u5E38\u60C5\u64FE\u6761\u6756\u6D44\u72B6\u7573\u7A63\u84B8\u8B72\u91B8\u9320\u5631\u57F4\u98FE"],["bfa1","\u62ED\u690D\u6B96\u71ED\u7E54\u8077\u8272\u89E6\u98DF\u8755\u8FB1\u5C3B\u4F38\u4FE1\u4FB5\u5507\u5A20\u5BDD\u5BE9\u5FC3\u614E\u632F\u65B0\u664B\u68EE\u699B\u6D78\u6DF1\u7533\u75B9\u771F\u795E\u79E6\u7D33\u81E3\u82AF\u85AA\u89AA\u8A3A\u8EAB\u8F9B\u9032\u91DD\u9707\u4EBA\u4EC1\u5203\u5875\u58EC\u5C0B\u751A\u5C3D\u814E\u8A0A\u8FC5\u9663\u976D\u7B25\u8ACF\u9808\u9162\u56F3\u53A8\u9017\u5439\u5782\u5E25\u63A8\u6C34\u708A\u7761\u7C8B\u7FE0\u8870\u9042\u9154\u9310\u9318\u968F\u745E\u9AC4\u5D07\u5D69\u6570\u67A2\u8DA8\u96DB\u636E\u6749\u6919\u83C5\u9817\u96C0\u88FE"],["c0a1","\u6F84\u647A\u5BF8\u4E16\u702C\u755D\u662F\u51C4\u5236\u52E2\u59D3\u5F81\u6027\u6210\u653F\u6574\u661F\u6674\u68F2\u6816\u6B63\u6E05\u7272\u751F\u76DB\u7CBE\u8056\u58F0\u88FD\u897F\u8AA0\u8A93\u8ACB\u901D\u9192\u9752\u9759\u6589\u7A0E\u8106\u96BB\u5E2D\u60DC\u621A\u65A5\u6614\u6790\u77F3\u7A4D\u7C4D\u7E3E\u810A\u8CAC\u8D64\u8DE1\u8E5F\u78A9\u5207\u62D9\u63A5\u6442\u6298\u8A2D\u7A83\u7BC0\u8AAC\u96EA\u7D76\u820C\u8749\u4ED9\u5148\u5343\u5360\u5BA3\u5C02\u5C16\u5DDD\u6226\u6247\u64B0\u6813\u6834\u6CC9\u6D45\u6D17\u67D3\u6F5C\u714E\u717D\u65CB\u7A7F\u7BAD\u7DDA"],["c1a1","\u7E4A\u7FA8\u817A\u821B\u8239\u85A6\u8A6E\u8CCE\u8DF5\u9078\u9077\u92AD\u9291\u9583\u9BAE\u524D\u5584\u6F38\u7136\u5168\u7985\u7E55\u81B3\u7CCE\u564C\u5851\u5CA8\u63AA\u66FE\u66FD\u695A\u72D9\u758F\u758E\u790E\u7956\u79DF\u7C97\u7D20\u7D44\u8607\u8A34\u963B\u9061\u9F20\u50E7\u5275\u53CC\u53E2\u5009\u55AA\u58EE\u594F\u723D\u5B8B\u5C64\u531D\u60E3\u60F3\u635C\u6383\u633F\u63BB\u64CD\u65E9\u66F9\u5DE3\u69CD\u69FD\u6F15\u71E5\u4E89\u75E9\u76F8\u7A93\u7CDF\u7DCF\u7D9C\u8061\u8349\u8358\u846C\u84BC\u85FB\u88C5\u8D70\u9001\u906D\u9397\u971C\u9A12\u50CF\u5897\u618E"],["c2a1","\u81D3\u8535\u8D08\u9020\u4FC3\u5074\u5247\u5373\u606F\u6349\u675F\u6E2C\u8DB3\u901F\u4FD7\u5C5E\u8CCA\u65CF\u7D9A\u5352\u8896\u5176\u63C3\u5B58\u5B6B\u5C0A\u640D\u6751\u905C\u4ED6\u591A\u592A\u6C70\u8A51\u553E\u5815\u59A5\u60F0\u6253\u67C1\u8235\u6955\u9640\u99C4\u9A28\u4F53\u5806\u5BFE\u8010\u5CB1\u5E2F\u5F85\u6020\u614B\u6234\u66FF\u6CF0\u6EDE\u80CE\u817F\u82D4\u888B\u8CB8\u9000\u902E\u968A\u9EDB\u9BDB\u4EE3\u53F0\u5927\u7B2C\u918D\u984C\u9DF9\u6EDD\u7027\u5353\u5544\u5B85\u6258\u629E\u62D3\u6CA2\u6FEF\u7422\u8A17\u9438\u6FC1\u8AFE\u8338\u51E7\u86F8\u53EA"],["c3a1","\u53E9\u4F46\u9054\u8FB0\u596A\u8131\u5DFD\u7AEA\u8FBF\u68DA\u8C37\u72F8\u9C48\u6A3D\u8AB0\u4E39\u5358\u5606\u5766\u62C5\u63A2\u65E6\u6B4E\u6DE1\u6E5B\u70AD\u77ED\u7AEF\u7BAA\u7DBB\u803D\u80C6\u86CB\u8A95\u935B\u56E3\u58C7\u5F3E\u65AD\u6696\u6A80\u6BB5\u7537\u8AC7\u5024\u77E5\u5730\u5F1B\u6065\u667A\u6C60\u75F4\u7A1A\u7F6E\u81F4\u8718\u9045\u99B3\u7BC9\u755C\u7AF9\u7B51\u84C4\u9010\u79E9\u7A92\u8336\u5AE1\u7740\u4E2D\u4EF2\u5B99\u5FE0\u62BD\u663C\u67F1\u6CE8\u866B\u8877\u8A3B\u914E\u92F3\u99D0\u6A17\u7026\u732A\u82E7\u8457\u8CAF\u4E01\u5146\u51CB\u558B\u5BF5"],["c4a1","\u5E16\u5E33\u5E81\u5F14\u5F35\u5F6B\u5FB4\u61F2\u6311\u66A2\u671D\u6F6E\u7252\u753A\u773A\u8074\u8139\u8178\u8776\u8ABF\u8ADC\u8D85\u8DF3\u929A\u9577\u9802\u9CE5\u52C5\u6357\u76F4\u6715\u6C88\u73CD\u8CC3\u93AE\u9673\u6D25\u589C\u690E\u69CC\u8FFD\u939A\u75DB\u901A\u585A\u6802\u63B4\u69FB\u4F43\u6F2C\u67D8\u8FBB\u8526\u7DB4\u9354\u693F\u6F70\u576A\u58F7\u5B2C\u7D2C\u722A\u540A\u91E3\u9DB4\u4EAD\u4F4E\u505C\u5075\u5243\u8C9E\u5448\u5824\u5B9A\u5E1D\u5E95\u5EAD\u5EF7\u5F1F\u608C\u62B5\u633A\u63D0\u68AF\u6C40\u7887\u798E\u7A0B\u7DE0\u8247\u8A02\u8AE6\u8E44\u9013"],["c5a1","\u90B8\u912D\u91D8\u9F0E\u6CE5\u6458\u64E2\u6575\u6EF4\u7684\u7B1B\u9069\u93D1\u6EBA\u54F2\u5FB9\u64A4\u8F4D\u8FED\u9244\u5178\u586B\u5929\u5C55\u5E97\u6DFB\u7E8F\u751C\u8CBC\u8EE2\u985B\u70B9\u4F1D\u6BBF\u6FB1\u7530\u96FB\u514E\u5410\u5835\u5857\u59AC\u5C60\u5F92\u6597\u675C\u6E21\u767B\u83DF\u8CED\u9014\u90FD\u934D\u7825\u783A\u52AA\u5EA6\u571F\u5974\u6012\u5012\u515A\u51AC\u51CD\u5200\u5510\u5854\u5858\u5957\u5B95\u5CF6\u5D8B\u60BC\u6295\u642D\u6771\u6843\u68BC\u68DF\u76D7\u6DD8\u6E6F\u6D9B\u706F\u71C8\u5F53\u75D8\u7977\u7B49\u7B54\u7B52\u7CD6\u7D71\u5230"],["c6a1","\u8463\u8569\u85E4\u8A0E\u8B04\u8C46\u8E0F\u9003\u900F\u9419\u9676\u982D\u9A30\u95D8\u50CD\u52D5\u540C\u5802\u5C0E\u61A7\u649E\u6D1E\u77B3\u7AE5\u80F4\u8404\u9053\u9285\u5CE0\u9D07\u533F\u5F97\u5FB3\u6D9C\u7279\u7763\u79BF\u7BE4\u6BD2\u72EC\u8AAD\u6803\u6A61\u51F8\u7A81\u6934\u5C4A\u9CF6\u82EB\u5BC5\u9149\u701E\u5678\u5C6F\u60C7\u6566\u6C8C\u8C5A\u9041\u9813\u5451\u66C7\u920D\u5948\u90A3\u5185\u4E4D\u51EA\u8599\u8B0E\u7058\u637A\u934B\u6962\u99B4\u7E04\u7577\u5357\u6960\u8EDF\u96E3\u6C5D\u4E8C\u5C3C\u5F10\u8FE9\u5302\u8CD1\u8089\u8679\u5EFF\u65E5\u4E73\u5165"],["c7a1","\u5982\u5C3F\u97EE\u4EFB\u598A\u5FCD\u8A8D\u6FE1\u79B0\u7962\u5BE7\u8471\u732B\u71B1\u5E74\u5FF5\u637B\u649A\u71C3\u7C98\u4E43\u5EFC\u4E4B\u57DC\u56A2\u60A9\u6FC3\u7D0D\u80FD\u8133\u81BF\u8FB2\u8997\u86A4\u5DF4\u628A\u64AD\u8987\u6777\u6CE2\u6D3E\u7436\u7834\u5A46\u7F75\u82AD\u99AC\u4FF3\u5EC3\u62DD\u6392\u6557\u676F\u76C3\u724C\u80CC\u80BA\u8F29\u914D\u500D\u57F9\u5A92\u6885\u6973\u7164\u72FD\u8CB7\u58F2\u8CE0\u966A\u9019\u877F\u79E4\u77E7\u8429\u4F2F\u5265\u535A\u62CD\u67CF\u6CCA\u767D\u7B94\u7C95\u8236\u8584\u8FEB\u66DD\u6F20\u7206\u7E1B\u83AB\u99C1\u9EA6"],["c8a1","\u51FD\u7BB1\u7872\u7BB8\u8087\u7B48\u6AE8\u5E61\u808C\u7551\u7560\u516B\u9262\u6E8C\u767A\u9197\u9AEA\u4F10\u7F70\u629C\u7B4F\u95A5\u9CE9\u567A\u5859\u86E4\u96BC\u4F34\u5224\u534A\u53CD\u53DB\u5E06\u642C\u6591\u677F\u6C3E\u6C4E\u7248\u72AF\u73ED\u7554\u7E41\u822C\u85E9\u8CA9\u7BC4\u91C6\u7169\u9812\u98EF\u633D\u6669\u756A\u76E4\u78D0\u8543\u86EE\u532A\u5351\u5426\u5983\u5E87\u5F7C\u60B2\u6249\u6279\u62AB\u6590\u6BD4\u6CCC\u75B2\u76AE\u7891\u79D8\u7DCB\u7F77\u80A5\u88AB\u8AB9\u8CBB\u907F\u975E\u98DB\u6A0B\u7C38\u5099\u5C3E\u5FAE\u6787\u6BD8\u7435\u7709\u7F8E"],["c9a1","\u9F3B\u67CA\u7A17\u5339\u758B\u9AED\u5F66\u819D\u83F1\u8098\u5F3C\u5FC5\u7562\u7B46\u903C\u6867\u59EB\u5A9B\u7D10\u767E\u8B2C\u4FF5\u5F6A\u6A19\u6C37\u6F02\u74E2\u7968\u8868\u8A55\u8C79\u5EDF\u63CF\u75C5\u79D2\u82D7\u9328\u92F2\u849C\u86ED\u9C2D\u54C1\u5F6C\u658C\u6D5C\u7015\u8CA7\u8CD3\u983B\u654F\u74F6\u4E0D\u4ED8\u57E0\u592B\u5A66\u5BCC\u51A8\u5E03\u5E9C\u6016\u6276\u6577\u65A7\u666E\u6D6E\u7236\u7B26\u8150\u819A\u8299\u8B5C\u8CA0\u8CE6\u8D74\u961C\u9644\u4FAE\u64AB\u6B66\u821E\u8461\u856A\u90E8\u5C01\u6953\u98A8\u847A\u8557\u4F0F\u526F\u5FA9\u5E45\u670D"],["caa1","\u798F\u8179\u8907\u8986\u6DF5\u5F17\u6255\u6CB8\u4ECF\u7269\u9B92\u5206\u543B\u5674\u58B3\u61A4\u626E\u711A\u596E\u7C89\u7CDE\u7D1B\u96F0\u6587\u805E\u4E19\u4F75\u5175\u5840\u5E63\u5E73\u5F0A\u67C4\u4E26\u853D\u9589\u965B\u7C73\u9801\u50FB\u58C1\u7656\u78A7\u5225\u77A5\u8511\u7B86\u504F\u5909\u7247\u7BC7\u7DE8\u8FBA\u8FD4\u904D\u4FBF\u52C9\u5A29\u5F01\u97AD\u4FDD\u8217\u92EA\u5703\u6355\u6B69\u752B\u88DC\u8F14\u7A42\u52DF\u5893\u6155\u620A\u66AE\u6BCD\u7C3F\u83E9\u5023\u4FF8\u5305\u5446\u5831\u5949\u5B9D\u5CF0\u5CEF\u5D29\u5E96\u62B1\u6367\u653E\u65B9\u670B"],["cba1","\u6CD5\u6CE1\u70F9\u7832\u7E2B\u80DE\u82B3\u840C\u84EC\u8702\u8912\u8A2A\u8C4A\u90A6\u92D2\u98FD\u9CF3\u9D6C\u4E4F\u4EA1\u508D\u5256\u574A\u59A8\u5E3D\u5FD8\u5FD9\u623F\u66B4\u671B\u67D0\u68D2\u5192\u7D21\u80AA\u81A8\u8B00\u8C8C\u8CBF\u927E\u9632\u5420\u982C\u5317\u50D5\u535C\u58A8\u64B2\u6734\u7267\u7766\u7A46\u91E6\u52C3\u6CA1\u6B86\u5800\u5E4C\u5954\u672C\u7FFB\u51E1\u76C6\u6469\u78E8\u9B54\u9EBB\u57CB\u59B9\u6627\u679A\u6BCE\u54E9\u69D9\u5E55\u819C\u6795\u9BAA\u67FE\u9C52\u685D\u4EA6\u4FE3\u53C8\u62B9\u672B\u6CAB\u8FC4\u4FAD\u7E6D\u9EBF\u4E07\u6162\u6E80"],["cca1","\u6F2B\u8513\u5473\u672A\u9B45\u5DF3\u7B95\u5CAC\u5BC6\u871C\u6E4A\u84D1\u7A14\u8108\u5999\u7C8D\u6C11\u7720\u52D9\u5922\u7121\u725F\u77DB\u9727\u9D61\u690B\u5A7F\u5A18\u51A5\u540D\u547D\u660E\u76DF\u8FF7\u9298\u9CF4\u59EA\u725D\u6EC5\u514D\u68C9\u7DBF\u7DEC\u9762\u9EBA\u6478\u6A21\u8302\u5984\u5B5F\u6BDB\u731B\u76F2\u7DB2\u8017\u8499\u5132\u6728\u9ED9\u76EE\u6762\u52FF\u9905\u5C24\u623B\u7C7E\u8CB0\u554F\u60B6\u7D0B\u9580\u5301\u4E5F\u51B6\u591C\u723A\u8036\u91CE\u5F25\u77E2\u5384\u5F79\u7D04\u85AC\u8A33\u8E8D\u9756\u67F3\u85AE\u9453\u6109\u6108\u6CB9\u7652"],["cda1","\u8AED\u8F38\u552F\u4F51\u512A\u52C7\u53CB\u5BA5\u5E7D\u60A0\u6182\u63D6\u6709\u67DA\u6E67\u6D8C\u7336\u7337\u7531\u7950\u88D5\u8A98\u904A\u9091\u90F5\u96C4\u878D\u5915\u4E88\u4F59\u4E0E\u8A89\u8F3F\u9810\u50AD\u5E7C\u5996\u5BB9\u5EB8\u63DA\u63FA\u64C1\u66DC\u694A\u69D8\u6D0B\u6EB6\u7194\u7528\u7AAF\u7F8A\u8000\u8449\u84C9\u8981\u8B21\u8E0A\u9065\u967D\u990A\u617E\u6291\u6B32\u6C83\u6D74\u7FCC\u7FFC\u6DC0\u7F85\u87BA\u88F8\u6765\u83B1\u983C\u96F7\u6D1B\u7D61\u843D\u916A\u4E71\u5375\u5D50\u6B04\u6FEB\u85CD\u862D\u89A7\u5229\u540F\u5C65\u674E\u68A8\u7406\u7483"],["cea1","\u75E2\u88CF\u88E1\u91CC\u96E2\u9678\u5F8B\u7387\u7ACB\u844E\u63A0\u7565\u5289\u6D41\u6E9C\u7409\u7559\u786B\u7C92\u9686\u7ADC\u9F8D\u4FB6\u616E\u65C5\u865C\u4E86\u4EAE\u50DA\u4E21\u51CC\u5BEE\u6599\u6881\u6DBC\u731F\u7642\u77AD\u7A1C\u7CE7\u826F\u8AD2\u907C\u91CF\u9675\u9818\u529B\u7DD1\u502B\u5398\u6797\u6DCB\u71D0\u7433\u81E8\u8F2A\u96A3\u9C57\u9E9F\u7460\u5841\u6D99\u7D2F\u985E\u4EE4\u4F36\u4F8B\u51B7\u52B1\u5DBA\u601C\u73B2\u793C\u82D3\u9234\u96B7\u96F6\u970A\u9E97\u9F62\u66A6\u6B74\u5217\u52A3\u70C8\u88C2\u5EC9\u604B\u6190\u6F23\u7149\u7C3E\u7DF4\u806F"],["cfa1","\u84EE\u9023\u932C\u5442\u9B6F\u6AD3\u7089\u8CC2\u8DEF\u9732\u52B4\u5A41\u5ECA\u5F04\u6717\u697C\u6994\u6D6A\u6F0F\u7262\u72FC\u7BED\u8001\u807E\u874B\u90CE\u516D\u9E93\u7984\u808B\u9332\u8AD6\u502D\u548C\u8A71\u6B6A\u8CC4\u8107\u60D1\u67A0\u9DF2\u4E99\u4E98\u9C10\u8A6B\u85C1\u8568\u6900\u6E7E\u7897\u8155"],["d0a1","\u5F0C\u4E10\u4E15\u4E2A\u4E31\u4E36\u4E3C\u4E3F\u4E42\u4E56\u4E58\u4E82\u4E85\u8C6B\u4E8A\u8212\u5F0D\u4E8E\u4E9E\u4E9F\u4EA0\u4EA2\u4EB0\u4EB3\u4EB6\u4ECE\u4ECD\u4EC4\u4EC6\u4EC2\u4ED7\u4EDE\u4EED\u4EDF\u4EF7\u4F09\u4F5A\u4F30\u4F5B\u4F5D\u4F57\u4F47\u4F76\u4F88\u4F8F\u4F98\u4F7B\u4F69\u4F70\u4F91\u4F6F\u4F86\u4F96\u5118\u4FD4\u4FDF\u4FCE\u4FD8\u4FDB\u4FD1\u4FDA\u4FD0\u4FE4\u4FE5\u501A\u5028\u5014\u502A\u5025\u5005\u4F1C\u4FF6\u5021\u5029\u502C\u4FFE\u4FEF\u5011\u5006\u5043\u5047\u6703\u5055\u5050\u5048\u505A\u5056\u506C\u5078\u5080\u509A\u5085\u50B4\u50B2"],["d1a1","\u50C9\u50CA\u50B3\u50C2\u50D6\u50DE\u50E5\u50ED\u50E3\u50EE\u50F9\u50F5\u5109\u5101\u5102\u5116\u5115\u5114\u511A\u5121\u513A\u5137\u513C\u513B\u513F\u5140\u5152\u514C\u5154\u5162\u7AF8\u5169\u516A\u516E\u5180\u5182\u56D8\u518C\u5189\u518F\u5191\u5193\u5195\u5196\u51A4\u51A6\u51A2\u51A9\u51AA\u51AB\u51B3\u51B1\u51B2\u51B0\u51B5\u51BD\u51C5\u51C9\u51DB\u51E0\u8655\u51E9\u51ED\u51F0\u51F5\u51FE\u5204\u520B\u5214\u520E\u5227\u522A\u522E\u5233\u5239\u524F\u5244\u524B\u524C\u525E\u5254\u526A\u5274\u5269\u5273\u527F\u527D\u528D\u5294\u5292\u5271\u5288\u5291\u8FA8"],["d2a1","\u8FA7\u52AC\u52AD\u52BC\u52B5\u52C1\u52CD\u52D7\u52DE\u52E3\u52E6\u98ED\u52E0\u52F3\u52F5\u52F8\u52F9\u5306\u5308\u7538\u530D\u5310\u530F\u5315\u531A\u5323\u532F\u5331\u5333\u5338\u5340\u5346\u5345\u4E17\u5349\u534D\u51D6\u535E\u5369\u536E\u5918\u537B\u5377\u5382\u5396\u53A0\u53A6\u53A5\u53AE\u53B0\u53B6\u53C3\u7C12\u96D9\u53DF\u66FC\u71EE\u53EE\u53E8\u53ED\u53FA\u5401\u543D\u5440\u542C\u542D\u543C\u542E\u5436\u5429\u541D\u544E\u548F\u5475\u548E\u545F\u5471\u5477\u5470\u5492\u547B\u5480\u5476\u5484\u5490\u5486\u54C7\u54A2\u54B8\u54A5\u54AC\u54C4\u54C8\u54A8"],["d3a1","\u54AB\u54C2\u54A4\u54BE\u54BC\u54D8\u54E5\u54E6\u550F\u5514\u54FD\u54EE\u54ED\u54FA\u54E2\u5539\u5540\u5563\u554C\u552E\u555C\u5545\u5556\u5557\u5538\u5533\u555D\u5599\u5580\u54AF\u558A\u559F\u557B\u557E\u5598\u559E\u55AE\u557C\u5583\u55A9\u5587\u55A8\u55DA\u55C5\u55DF\u55C4\u55DC\u55E4\u55D4\u5614\u55F7\u5616\u55FE\u55FD\u561B\u55F9\u564E\u5650\u71DF\u5634\u5636\u5632\u5638\u566B\u5664\u562F\u566C\u566A\u5686\u5680\u568A\u56A0\u5694\u568F\u56A5\u56AE\u56B6\u56B4\u56C2\u56BC\u56C1\u56C3\u56C0\u56C8\u56CE\u56D1\u56D3\u56D7\u56EE\u56F9\u5700\u56FF\u5704\u5709"],["d4a1","\u5708\u570B\u570D\u5713\u5718\u5716\u55C7\u571C\u5726\u5737\u5738\u574E\u573B\u5740\u574F\u5769\u57C0\u5788\u5761\u577F\u5789\u5793\u57A0\u57B3\u57A4\u57AA\u57B0\u57C3\u57C6\u57D4\u57D2\u57D3\u580A\u57D6\u57E3\u580B\u5819\u581D\u5872\u5821\u5862\u584B\u5870\u6BC0\u5852\u583D\u5879\u5885\u58B9\u589F\u58AB\u58BA\u58DE\u58BB\u58B8\u58AE\u58C5\u58D3\u58D1\u58D7\u58D9\u58D8\u58E5\u58DC\u58E4\u58DF\u58EF\u58FA\u58F9\u58FB\u58FC\u58FD\u5902\u590A\u5910\u591B\u68A6\u5925\u592C\u592D\u5932\u5938\u593E\u7AD2\u5955\u5950\u594E\u595A\u5958\u5962\u5960\u5967\u596C\u5969"],["d5a1","\u5978\u5981\u599D\u4F5E\u4FAB\u59A3\u59B2\u59C6\u59E8\u59DC\u598D\u59D9\u59DA\u5A25\u5A1F\u5A11\u5A1C\u5A09\u5A1A\u5A40\u5A6C\u5A49\u5A35\u5A36\u5A62\u5A6A\u5A9A\u5ABC\u5ABE\u5ACB\u5AC2\u5ABD\u5AE3\u5AD7\u5AE6\u5AE9\u5AD6\u5AFA\u5AFB\u5B0C\u5B0B\u5B16\u5B32\u5AD0\u5B2A\u5B36\u5B3E\u5B43\u5B45\u5B40\u5B51\u5B55\u5B5A\u5B5B\u5B65\u5B69\u5B70\u5B73\u5B75\u5B78\u6588\u5B7A\u5B80\u5B83\u5BA6\u5BB8\u5BC3\u5BC7\u5BC9\u5BD4\u5BD0\u5BE4\u5BE6\u5BE2\u5BDE\u5BE5\u5BEB\u5BF0\u5BF6\u5BF3\u5C05\u5C07\u5C08\u5C0D\u5C13\u5C20\u5C22\u5C28\u5C38\u5C39\u5C41\u5C46\u5C4E\u5C53"],["d6a1","\u5C50\u5C4F\u5B71\u5C6C\u5C6E\u4E62\u5C76\u5C79\u5C8C\u5C91\u5C94\u599B\u5CAB\u5CBB\u5CB6\u5CBC\u5CB7\u5CC5\u5CBE\u5CC7\u5CD9\u5CE9\u5CFD\u5CFA\u5CED\u5D8C\u5CEA\u5D0B\u5D15\u5D17\u5D5C\u5D1F\u5D1B\u5D11\u5D14\u5D22\u5D1A\u5D19\u5D18\u5D4C\u5D52\u5D4E\u5D4B\u5D6C\u5D73\u5D76\u5D87\u5D84\u5D82\u5DA2\u5D9D\u5DAC\u5DAE\u5DBD\u5D90\u5DB7\u5DBC\u5DC9\u5DCD\u5DD3\u5DD2\u5DD6\u5DDB\u5DEB\u5DF2\u5DF5\u5E0B\u5E1A\u5E19\u5E11\u5E1B\u5E36\u5E37\u5E44\u5E43\u5E40\u5E4E\u5E57\u5E54\u5E5F\u5E62\u5E64\u5E47\u5E75\u5E76\u5E7A\u9EBC\u5E7F\u5EA0\u5EC1\u5EC2\u5EC8\u5ED0\u5ECF"],["d7a1","\u5ED6\u5EE3\u5EDD\u5EDA\u5EDB\u5EE2\u5EE1\u5EE8\u5EE9\u5EEC\u5EF1\u5EF3\u5EF0\u5EF4\u5EF8\u5EFE\u5F03\u5F09\u5F5D\u5F5C\u5F0B\u5F11\u5F16\u5F29\u5F2D\u5F38\u5F41\u5F48\u5F4C\u5F4E\u5F2F\u5F51\u5F56\u5F57\u5F59\u5F61\u5F6D\u5F73\u5F77\u5F83\u5F82\u5F7F\u5F8A\u5F88\u5F91\u5F87\u5F9E\u5F99\u5F98\u5FA0\u5FA8\u5FAD\u5FBC\u5FD6\u5FFB\u5FE4\u5FF8\u5FF1\u5FDD\u60B3\u5FFF\u6021\u6060\u6019\u6010\u6029\u600E\u6031\u601B\u6015\u602B\u6026\u600F\u603A\u605A\u6041\u606A\u6077\u605F\u604A\u6046\u604D\u6063\u6043\u6064\u6042\u606C\u606B\u6059\u6081\u608D\u60E7\u6083\u609A"],["d8a1","\u6084\u609B\u6096\u6097\u6092\u60A7\u608B\u60E1\u60B8\u60E0\u60D3\u60B4\u5FF0\u60BD\u60C6\u60B5\u60D8\u614D\u6115\u6106\u60F6\u60F7\u6100\u60F4\u60FA\u6103\u6121\u60FB\u60F1\u610D\u610E\u6147\u613E\u6128\u6127\u614A\u613F\u613C\u612C\u6134\u613D\u6142\u6144\u6173\u6177\u6158\u6159\u615A\u616B\u6174\u616F\u6165\u6171\u615F\u615D\u6153\u6175\u6199\u6196\u6187\u61AC\u6194\u619A\u618A\u6191\u61AB\u61AE\u61CC\u61CA\u61C9\u61F7\u61C8\u61C3\u61C6\u61BA\u61CB\u7F79\u61CD\u61E6\u61E3\u61F6\u61FA\u61F4\u61FF\u61FD\u61FC\u61FE\u6200\u6208\u6209\u620D\u620C\u6214\u621B"],["d9a1","\u621E\u6221\u622A\u622E\u6230\u6232\u6233\u6241\u624E\u625E\u6263\u625B\u6260\u6268\u627C\u6282\u6289\u627E\u6292\u6293\u6296\u62D4\u6283\u6294\u62D7\u62D1\u62BB\u62CF\u62FF\u62C6\u64D4\u62C8\u62DC\u62CC\u62CA\u62C2\u62C7\u629B\u62C9\u630C\u62EE\u62F1\u6327\u6302\u6308\u62EF\u62F5\u6350\u633E\u634D\u641C\u634F\u6396\u638E\u6380\u63AB\u6376\u63A3\u638F\u6389\u639F\u63B5\u636B\u6369\u63BE\u63E9\u63C0\u63C6\u63E3\u63C9\u63D2\u63F6\u63C4\u6416\u6434\u6406\u6413\u6426\u6436\u651D\u6417\u6428\u640F\u6467\u646F\u6476\u644E\u652A\u6495\u6493\u64A5\u64A9\u6488\u64BC"],["daa1","\u64DA\u64D2\u64C5\u64C7\u64BB\u64D8\u64C2\u64F1\u64E7\u8209\u64E0\u64E1\u62AC\u64E3\u64EF\u652C\u64F6\u64F4\u64F2\u64FA\u6500\u64FD\u6518\u651C\u6505\u6524\u6523\u652B\u6534\u6535\u6537\u6536\u6538\u754B\u6548\u6556\u6555\u654D\u6558\u655E\u655D\u6572\u6578\u6582\u6583\u8B8A\u659B\u659F\u65AB\u65B7\u65C3\u65C6\u65C1\u65C4\u65CC\u65D2\u65DB\u65D9\u65E0\u65E1\u65F1\u6772\u660A\u6603\u65FB\u6773\u6635\u6636\u6634\u661C\u664F\u6644\u6649\u6641\u665E\u665D\u6664\u6667\u6668\u665F\u6662\u6670\u6683\u6688\u668E\u6689\u6684\u6698\u669D\u66C1\u66B9\u66C9\u66BE\u66BC"],["dba1","\u66C4\u66B8\u66D6\u66DA\u66E0\u663F\u66E6\u66E9\u66F0\u66F5\u66F7\u670F\u6716\u671E\u6726\u6727\u9738\u672E\u673F\u6736\u6741\u6738\u6737\u6746\u675E\u6760\u6759\u6763\u6764\u6789\u6770\u67A9\u677C\u676A\u678C\u678B\u67A6\u67A1\u6785\u67B7\u67EF\u67B4\u67EC\u67B3\u67E9\u67B8\u67E4\u67DE\u67DD\u67E2\u67EE\u67B9\u67CE\u67C6\u67E7\u6A9C\u681E\u6846\u6829\u6840\u684D\u6832\u684E\u68B3\u682B\u6859\u6863\u6877\u687F\u689F\u688F\u68AD\u6894\u689D\u689B\u6883\u6AAE\u68B9\u6874\u68B5\u68A0\u68BA\u690F\u688D\u687E\u6901\u68CA\u6908\u68D8\u6922\u6926\u68E1\u690C\u68CD"],["dca1","\u68D4\u68E7\u68D5\u6936\u6912\u6904\u68D7\u68E3\u6925\u68F9\u68E0\u68EF\u6928\u692A\u691A\u6923\u6921\u68C6\u6979\u6977\u695C\u6978\u696B\u6954\u697E\u696E\u6939\u6974\u693D\u6959\u6930\u6961\u695E\u695D\u6981\u696A\u69B2\u69AE\u69D0\u69BF\u69C1\u69D3\u69BE\u69CE\u5BE8\u69CA\u69DD\u69BB\u69C3\u69A7\u6A2E\u6991\u69A0\u699C\u6995\u69B4\u69DE\u69E8\u6A02\u6A1B\u69FF\u6B0A\u69F9\u69F2\u69E7\u6A05\u69B1\u6A1E\u69ED\u6A14\u69EB\u6A0A\u6A12\u6AC1\u6A23\u6A13\u6A44\u6A0C\u6A72\u6A36\u6A78\u6A47\u6A62\u6A59\u6A66\u6A48\u6A38\u6A22\u6A90\u6A8D\u6AA0\u6A84\u6AA2\u6AA3"],["dda1","\u6A97\u8617\u6ABB\u6AC3\u6AC2\u6AB8\u6AB3\u6AAC\u6ADE\u6AD1\u6ADF\u6AAA\u6ADA\u6AEA\u6AFB\u6B05\u8616\u6AFA\u6B12\u6B16\u9B31\u6B1F\u6B38\u6B37\u76DC\u6B39\u98EE\u6B47\u6B43\u6B49\u6B50\u6B59\u6B54\u6B5B\u6B5F\u6B61\u6B78\u6B79\u6B7F\u6B80\u6B84\u6B83\u6B8D\u6B98\u6B95\u6B9E\u6BA4\u6BAA\u6BAB\u6BAF\u6BB2\u6BB1\u6BB3\u6BB7\u6BBC\u6BC6\u6BCB\u6BD3\u6BDF\u6BEC\u6BEB\u6BF3\u6BEF\u9EBE\u6C08\u6C13\u6C14\u6C1B\u6C24\u6C23\u6C5E\u6C55\u6C62\u6C6A\u6C82\u6C8D\u6C9A\u6C81\u6C9B\u6C7E\u6C68\u6C73\u6C92\u6C90\u6CC4\u6CF1\u6CD3\u6CBD\u6CD7\u6CC5\u6CDD\u6CAE\u6CB1\u6CBE"],["dea1","\u6CBA\u6CDB\u6CEF\u6CD9\u6CEA\u6D1F\u884D\u6D36\u6D2B\u6D3D\u6D38\u6D19\u6D35\u6D33\u6D12\u6D0C\u6D63\u6D93\u6D64\u6D5A\u6D79\u6D59\u6D8E\u6D95\u6FE4\u6D85\u6DF9\u6E15\u6E0A\u6DB5\u6DC7\u6DE6\u6DB8\u6DC6\u6DEC\u6DDE\u6DCC\u6DE8\u6DD2\u6DC5\u6DFA\u6DD9\u6DE4\u6DD5\u6DEA\u6DEE\u6E2D\u6E6E\u6E2E\u6E19\u6E72\u6E5F\u6E3E\u6E23\u6E6B\u6E2B\u6E76\u6E4D\u6E1F\u6E43\u6E3A\u6E4E\u6E24\u6EFF\u6E1D\u6E38\u6E82\u6EAA\u6E98\u6EC9\u6EB7\u6ED3\u6EBD\u6EAF\u6EC4\u6EB2\u6ED4\u6ED5\u6E8F\u6EA5\u6EC2\u6E9F\u6F41\u6F11\u704C\u6EEC\u6EF8\u6EFE\u6F3F\u6EF2\u6F31\u6EEF\u6F32\u6ECC"],["dfa1","\u6F3E\u6F13\u6EF7\u6F86\u6F7A\u6F78\u6F81\u6F80\u6F6F\u6F5B\u6FF3\u6F6D\u6F82\u6F7C\u6F58\u6F8E\u6F91\u6FC2\u6F66\u6FB3\u6FA3\u6FA1\u6FA4\u6FB9\u6FC6\u6FAA\u6FDF\u6FD5\u6FEC\u6FD4\u6FD8\u6FF1\u6FEE\u6FDB\u7009\u700B\u6FFA\u7011\u7001\u700F\u6FFE\u701B\u701A\u6F74\u701D\u7018\u701F\u7030\u703E\u7032\u7051\u7063\u7099\u7092\u70AF\u70F1\u70AC\u70B8\u70B3\u70AE\u70DF\u70CB\u70DD\u70D9\u7109\u70FD\u711C\u7119\u7165\u7155\u7188\u7166\u7162\u714C\u7156\u716C\u718F\u71FB\u7184\u7195\u71A8\u71AC\u71D7\u71B9\u71BE\u71D2\u71C9\u71D4\u71CE\u71E0\u71EC\u71E7\u71F5\u71FC"],["e0a1","\u71F9\u71FF\u720D\u7210\u721B\u7228\u722D\u722C\u7230\u7232\u723B\u723C\u723F\u7240\u7246\u724B\u7258\u7274\u727E\u7282\u7281\u7287\u7292\u7296\u72A2\u72A7\u72B9\u72B2\u72C3\u72C6\u72C4\u72CE\u72D2\u72E2\u72E0\u72E1\u72F9\u72F7\u500F\u7317\u730A\u731C\u7316\u731D\u7334\u732F\u7329\u7325\u733E\u734E\u734F\u9ED8\u7357\u736A\u7368\u7370\u7378\u7375\u737B\u737A\u73C8\u73B3\u73CE\u73BB\u73C0\u73E5\u73EE\u73DE\u74A2\u7405\u746F\u7425\u73F8\u7432\u743A\u7455\u743F\u745F\u7459\u7441\u745C\u7469\u7470\u7463\u746A\u7476\u747E\u748B\u749E\u74A7\u74CA\u74CF\u74D4\u73F1"],["e1a1","\u74E0\u74E3\u74E7\u74E9\u74EE\u74F2\u74F0\u74F1\u74F8\u74F7\u7504\u7503\u7505\u750C\u750E\u750D\u7515\u7513\u751E\u7526\u752C\u753C\u7544\u754D\u754A\u7549\u755B\u7546\u755A\u7569\u7564\u7567\u756B\u756D\u7578\u7576\u7586\u7587\u7574\u758A\u7589\u7582\u7594\u759A\u759D\u75A5\u75A3\u75C2\u75B3\u75C3\u75B5\u75BD\u75B8\u75BC\u75B1\u75CD\u75CA\u75D2\u75D9\u75E3\u75DE\u75FE\u75FF\u75FC\u7601\u75F0\u75FA\u75F2\u75F3\u760B\u760D\u7609\u761F\u7627\u7620\u7621\u7622\u7624\u7634\u7630\u763B\u7647\u7648\u7646\u765C\u7658\u7661\u7662\u7668\u7669\u766A\u7667\u766C\u7670"],["e2a1","\u7672\u7676\u7678\u767C\u7680\u7683\u7688\u768B\u768E\u7696\u7693\u7699\u769A\u76B0\u76B4\u76B8\u76B9\u76BA\u76C2\u76CD\u76D6\u76D2\u76DE\u76E1\u76E5\u76E7\u76EA\u862F\u76FB\u7708\u7707\u7704\u7729\u7724\u771E\u7725\u7726\u771B\u7737\u7738\u7747\u775A\u7768\u776B\u775B\u7765\u777F\u777E\u7779\u778E\u778B\u7791\u77A0\u779E\u77B0\u77B6\u77B9\u77BF\u77BC\u77BD\u77BB\u77C7\u77CD\u77D7\u77DA\u77DC\u77E3\u77EE\u77FC\u780C\u7812\u7926\u7820\u792A\u7845\u788E\u7874\u7886\u787C\u789A\u788C\u78A3\u78B5\u78AA\u78AF\u78D1\u78C6\u78CB\u78D4\u78BE\u78BC\u78C5\u78CA\u78EC"],["e3a1","\u78E7\u78DA\u78FD\u78F4\u7907\u7912\u7911\u7919\u792C\u792B\u7940\u7960\u7957\u795F\u795A\u7955\u7953\u797A\u797F\u798A\u799D\u79A7\u9F4B\u79AA\u79AE\u79B3\u79B9\u79BA\u79C9\u79D5\u79E7\u79EC\u79E1\u79E3\u7A08\u7A0D\u7A18\u7A19\u7A20\u7A1F\u7980\u7A31\u7A3B\u7A3E\u7A37\u7A43\u7A57\u7A49\u7A61\u7A62\u7A69\u9F9D\u7A70\u7A79\u7A7D\u7A88\u7A97\u7A95\u7A98\u7A96\u7AA9\u7AC8\u7AB0\u7AB6\u7AC5\u7AC4\u7ABF\u9083\u7AC7\u7ACA\u7ACD\u7ACF\u7AD5\u7AD3\u7AD9\u7ADA\u7ADD\u7AE1\u7AE2\u7AE6\u7AED\u7AF0\u7B02\u7B0F\u7B0A\u7B06\u7B33\u7B18\u7B19\u7B1E\u7B35\u7B28\u7B36\u7B50"],["e4a1","\u7B7A\u7B04\u7B4D\u7B0B\u7B4C\u7B45\u7B75\u7B65\u7B74\u7B67\u7B70\u7B71\u7B6C\u7B6E\u7B9D\u7B98\u7B9F\u7B8D\u7B9C\u7B9A\u7B8B\u7B92\u7B8F\u7B5D\u7B99\u7BCB\u7BC1\u7BCC\u7BCF\u7BB4\u7BC6\u7BDD\u7BE9\u7C11\u7C14\u7BE6\u7BE5\u7C60\u7C00\u7C07\u7C13\u7BF3\u7BF7\u7C17\u7C0D\u7BF6\u7C23\u7C27\u7C2A\u7C1F\u7C37\u7C2B\u7C3D\u7C4C\u7C43\u7C54\u7C4F\u7C40\u7C50\u7C58\u7C5F\u7C64\u7C56\u7C65\u7C6C\u7C75\u7C83\u7C90\u7CA4\u7CAD\u7CA2\u7CAB\u7CA1\u7CA8\u7CB3\u7CB2\u7CB1\u7CAE\u7CB9\u7CBD\u7CC0\u7CC5\u7CC2\u7CD8\u7CD2\u7CDC\u7CE2\u9B3B\u7CEF\u7CF2\u7CF4\u7CF6\u7CFA\u7D06"],["e5a1","\u7D02\u7D1C\u7D15\u7D0A\u7D45\u7D4B\u7D2E\u7D32\u7D3F\u7D35\u7D46\u7D73\u7D56\u7D4E\u7D72\u7D68\u7D6E\u7D4F\u7D63\u7D93\u7D89\u7D5B\u7D8F\u7D7D\u7D9B\u7DBA\u7DAE\u7DA3\u7DB5\u7DC7\u7DBD\u7DAB\u7E3D\u7DA2\u7DAF\u7DDC\u7DB8\u7D9F\u7DB0\u7DD8\u7DDD\u7DE4\u7DDE\u7DFB\u7DF2\u7DE1\u7E05\u7E0A\u7E23\u7E21\u7E12\u7E31\u7E1F\u7E09\u7E0B\u7E22\u7E46\u7E66\u7E3B\u7E35\u7E39\u7E43\u7E37\u7E32\u7E3A\u7E67\u7E5D\u7E56\u7E5E\u7E59\u7E5A\u7E79\u7E6A\u7E69\u7E7C\u7E7B\u7E83\u7DD5\u7E7D\u8FAE\u7E7F\u7E88\u7E89\u7E8C\u7E92\u7E90\u7E93\u7E94\u7E96\u7E8E\u7E9B\u7E9C\u7F38\u7F3A"],["e6a1","\u7F45\u7F4C\u7F4D\u7F4E\u7F50\u7F51\u7F55\u7F54\u7F58\u7F5F\u7F60\u7F68\u7F69\u7F67\u7F78\u7F82\u7F86\u7F83\u7F88\u7F87\u7F8C\u7F94\u7F9E\u7F9D\u7F9A\u7FA3\u7FAF\u7FB2\u7FB9\u7FAE\u7FB6\u7FB8\u8B71\u7FC5\u7FC6\u7FCA\u7FD5\u7FD4\u7FE1\u7FE6\u7FE9\u7FF3\u7FF9\u98DC\u8006\u8004\u800B\u8012\u8018\u8019\u801C\u8021\u8028\u803F\u803B\u804A\u8046\u8052\u8058\u805A\u805F\u8062\u8068\u8073\u8072\u8070\u8076\u8079\u807D\u807F\u8084\u8086\u8085\u809B\u8093\u809A\u80AD\u5190\u80AC\u80DB\u80E5\u80D9\u80DD\u80C4\u80DA\u80D6\u8109\u80EF\u80F1\u811B\u8129\u8123\u812F\u814B"],["e7a1","\u968B\u8146\u813E\u8153\u8151\u80FC\u8171\u816E\u8165\u8166\u8174\u8183\u8188\u818A\u8180\u8182\u81A0\u8195\u81A4\u81A3\u815F\u8193\u81A9\u81B0\u81B5\u81BE\u81B8\u81BD\u81C0\u81C2\u81BA\u81C9\u81CD\u81D1\u81D9\u81D8\u81C8\u81DA\u81DF\u81E0\u81E7\u81FA\u81FB\u81FE\u8201\u8202\u8205\u8207\u820A\u820D\u8210\u8216\u8229\u822B\u8238\u8233\u8240\u8259\u8258\u825D\u825A\u825F\u8264\u8262\u8268\u826A\u826B\u822E\u8271\u8277\u8278\u827E\u828D\u8292\u82AB\u829F\u82BB\u82AC\u82E1\u82E3\u82DF\u82D2\u82F4\u82F3\u82FA\u8393\u8303\u82FB\u82F9\u82DE\u8306\u82DC\u8309\u82D9"],["e8a1","\u8335\u8334\u8316\u8332\u8331\u8340\u8339\u8350\u8345\u832F\u832B\u8317\u8318\u8385\u839A\u83AA\u839F\u83A2\u8396\u8323\u838E\u8387\u838A\u837C\u83B5\u8373\u8375\u83A0\u8389\u83A8\u83F4\u8413\u83EB\u83CE\u83FD\u8403\u83D8\u840B\u83C1\u83F7\u8407\u83E0\u83F2\u840D\u8422\u8420\u83BD\u8438\u8506\u83FB\u846D\u842A\u843C\u855A\u8484\u8477\u846B\u84AD\u846E\u8482\u8469\u8446\u842C\u846F\u8479\u8435\u84CA\u8462\u84B9\u84BF\u849F\u84D9\u84CD\u84BB\u84DA\u84D0\u84C1\u84C6\u84D6\u84A1\u8521\u84FF\u84F4\u8517\u8518\u852C\u851F\u8515\u8514\u84FC\u8540\u8563\u8558\u8548"],["e9a1","\u8541\u8602\u854B\u8555\u8580\u85A4\u8588\u8591\u858A\u85A8\u856D\u8594\u859B\u85EA\u8587\u859C\u8577\u857E\u8590\u85C9\u85BA\u85CF\u85B9\u85D0\u85D5\u85DD\u85E5\u85DC\u85F9\u860A\u8613\u860B\u85FE\u85FA\u8606\u8622\u861A\u8630\u863F\u864D\u4E55\u8654\u865F\u8667\u8671\u8693\u86A3\u86A9\u86AA\u868B\u868C\u86B6\u86AF\u86C4\u86C6\u86B0\u86C9\u8823\u86AB\u86D4\u86DE\u86E9\u86EC\u86DF\u86DB\u86EF\u8712\u8706\u8708\u8700\u8703\u86FB\u8711\u8709\u870D\u86F9\u870A\u8734\u873F\u8737\u873B\u8725\u8729\u871A\u8760\u875F\u8778\u874C\u874E\u8774\u8757\u8768\u876E\u8759"],["eaa1","\u8753\u8763\u876A\u8805\u87A2\u879F\u8782\u87AF\u87CB\u87BD\u87C0\u87D0\u96D6\u87AB\u87C4\u87B3\u87C7\u87C6\u87BB\u87EF\u87F2\u87E0\u880F\u880D\u87FE\u87F6\u87F7\u880E\u87D2\u8811\u8816\u8815\u8822\u8821\u8831\u8836\u8839\u8827\u883B\u8844\u8842\u8852\u8859\u885E\u8862\u886B\u8881\u887E\u889E\u8875\u887D\u88B5\u8872\u8882\u8897\u8892\u88AE\u8899\u88A2\u888D\u88A4\u88B0\u88BF\u88B1\u88C3\u88C4\u88D4\u88D8\u88D9\u88DD\u88F9\u8902\u88FC\u88F4\u88E8\u88F2\u8904\u890C\u890A\u8913\u8943\u891E\u8925\u892A\u892B\u8941\u8944\u893B\u8936\u8938\u894C\u891D\u8960\u895E"],["eba1","\u8966\u8964\u896D\u896A\u896F\u8974\u8977\u897E\u8983\u8988\u898A\u8993\u8998\u89A1\u89A9\u89A6\u89AC\u89AF\u89B2\u89BA\u89BD\u89BF\u89C0\u89DA\u89DC\u89DD\u89E7\u89F4\u89F8\u8A03\u8A16\u8A10\u8A0C\u8A1B\u8A1D\u8A25\u8A36\u8A41\u8A5B\u8A52\u8A46\u8A48\u8A7C\u8A6D\u8A6C\u8A62\u8A85\u8A82\u8A84\u8AA8\u8AA1\u8A91\u8AA5\u8AA6\u8A9A\u8AA3\u8AC4\u8ACD\u8AC2\u8ADA\u8AEB\u8AF3\u8AE7\u8AE4\u8AF1\u8B14\u8AE0\u8AE2\u8AF7\u8ADE\u8ADB\u8B0C\u8B07\u8B1A\u8AE1\u8B16\u8B10\u8B17\u8B20\u8B33\u97AB\u8B26\u8B2B\u8B3E\u8B28\u8B41\u8B4C\u8B4F\u8B4E\u8B49\u8B56\u8B5B\u8B5A\u8B6B"],["eca1","\u8B5F\u8B6C\u8B6F\u8B74\u8B7D\u8B80\u8B8C\u8B8E\u8B92\u8B93\u8B96\u8B99\u8B9A\u8C3A\u8C41\u8C3F\u8C48\u8C4C\u8C4E\u8C50\u8C55\u8C62\u8C6C\u8C78\u8C7A\u8C82\u8C89\u8C85\u8C8A\u8C8D\u8C8E\u8C94\u8C7C\u8C98\u621D\u8CAD\u8CAA\u8CBD\u8CB2\u8CB3\u8CAE\u8CB6\u8CC8\u8CC1\u8CE4\u8CE3\u8CDA\u8CFD\u8CFA\u8CFB\u8D04\u8D05\u8D0A\u8D07\u8D0F\u8D0D\u8D10\u9F4E\u8D13\u8CCD\u8D14\u8D16\u8D67\u8D6D\u8D71\u8D73\u8D81\u8D99\u8DC2\u8DBE\u8DBA\u8DCF\u8DDA\u8DD6\u8DCC\u8DDB\u8DCB\u8DEA\u8DEB\u8DDF\u8DE3\u8DFC\u8E08\u8E09\u8DFF\u8E1D\u8E1E\u8E10\u8E1F\u8E42\u8E35\u8E30\u8E34\u8E4A"],["eda1","\u8E47\u8E49\u8E4C\u8E50\u8E48\u8E59\u8E64\u8E60\u8E2A\u8E63\u8E55\u8E76\u8E72\u8E7C\u8E81\u8E87\u8E85\u8E84\u8E8B\u8E8A\u8E93\u8E91\u8E94\u8E99\u8EAA\u8EA1\u8EAC\u8EB0\u8EC6\u8EB1\u8EBE\u8EC5\u8EC8\u8ECB\u8EDB\u8EE3\u8EFC\u8EFB\u8EEB\u8EFE\u8F0A\u8F05\u8F15\u8F12\u8F19\u8F13\u8F1C\u8F1F\u8F1B\u8F0C\u8F26\u8F33\u8F3B\u8F39\u8F45\u8F42\u8F3E\u8F4C\u8F49\u8F46\u8F4E\u8F57\u8F5C\u8F62\u8F63\u8F64\u8F9C\u8F9F\u8FA3\u8FAD\u8FAF\u8FB7\u8FDA\u8FE5\u8FE2\u8FEA\u8FEF\u9087\u8FF4\u9005\u8FF9\u8FFA\u9011\u9015\u9021\u900D\u901E\u9016\u900B\u9027\u9036\u9035\u9039\u8FF8"],["eea1","\u904F\u9050\u9051\u9052\u900E\u9049\u903E\u9056\u9058\u905E\u9068\u906F\u9076\u96A8\u9072\u9082\u907D\u9081\u9080\u908A\u9089\u908F\u90A8\u90AF\u90B1\u90B5\u90E2\u90E4\u6248\u90DB\u9102\u9112\u9119\u9132\u9130\u914A\u9156\u9158\u9163\u9165\u9169\u9173\u9172\u918B\u9189\u9182\u91A2\u91AB\u91AF\u91AA\u91B5\u91B4\u91BA\u91C0\u91C1\u91C9\u91CB\u91D0\u91D6\u91DF\u91E1\u91DB\u91FC\u91F5\u91F6\u921E\u91FF\u9214\u922C\u9215\u9211\u925E\u9257\u9245\u9249\u9264\u9248\u9295\u923F\u924B\u9250\u929C\u9296\u9293\u929B\u925A\u92CF\u92B9\u92B7\u92E9\u930F\u92FA\u9344\u932E"],["efa1","\u9319\u9322\u931A\u9323\u933A\u9335\u933B\u935C\u9360\u937C\u936E\u9356\u93B0\u93AC\u93AD\u9394\u93B9\u93D6\u93D7\u93E8\u93E5\u93D8\u93C3\u93DD\u93D0\u93C8\u93E4\u941A\u9414\u9413\u9403\u9407\u9410\u9436\u942B\u9435\u9421\u943A\u9441\u9452\u9444\u945B\u9460\u9462\u945E\u946A\u9229\u9470\u9475\u9477\u947D\u945A\u947C\u947E\u9481\u947F\u9582\u9587\u958A\u9594\u9596\u9598\u9599\u95A0\u95A8\u95A7\u95AD\u95BC\u95BB\u95B9\u95BE\u95CA\u6FF6\u95C3\u95CD\u95CC\u95D5\u95D4\u95D6\u95DC\u95E1\u95E5\u95E2\u9621\u9628\u962E\u962F\u9642\u964C\u964F\u964B\u9677\u965C\u965E"],["f0a1","\u965D\u965F\u9666\u9672\u966C\u968D\u9698\u9695\u9697\u96AA\u96A7\u96B1\u96B2\u96B0\u96B4\u96B6\u96B8\u96B9\u96CE\u96CB\u96C9\u96CD\u894D\u96DC\u970D\u96D5\u96F9\u9704\u9706\u9708\u9713\u970E\u9711\u970F\u9716\u9719\u9724\u972A\u9730\u9739\u973D\u973E\u9744\u9746\u9748\u9742\u9749\u975C\u9760\u9764\u9766\u9768\u52D2\u976B\u9771\u9779\u9785\u977C\u9781\u977A\u9786\u978B\u978F\u9790\u979C\u97A8\u97A6\u97A3\u97B3\u97B4\u97C3\u97C6\u97C8\u97CB\u97DC\u97ED\u9F4F\u97F2\u7ADF\u97F6\u97F5\u980F\u980C\u9838\u9824\u9821\u9837\u983D\u9846\u984F\u984B\u986B\u986F\u9870"],["f1a1","\u9871\u9874\u9873\u98AA\u98AF\u98B1\u98B6\u98C4\u98C3\u98C6\u98E9\u98EB\u9903\u9909\u9912\u9914\u9918\u9921\u991D\u991E\u9924\u9920\u992C\u992E\u993D\u993E\u9942\u9949\u9945\u9950\u994B\u9951\u9952\u994C\u9955\u9997\u9998\u99A5\u99AD\u99AE\u99BC\u99DF\u99DB\u99DD\u99D8\u99D1\u99ED\u99EE\u99F1\u99F2\u99FB\u99F8\u9A01\u9A0F\u9A05\u99E2\u9A19\u9A2B\u9A37\u9A45\u9A42\u9A40\u9A43\u9A3E\u9A55\u9A4D\u9A5B\u9A57\u9A5F\u9A62\u9A65\u9A64\u9A69\u9A6B\u9A6A\u9AAD\u9AB0\u9ABC\u9AC0\u9ACF\u9AD1\u9AD3\u9AD4\u9ADE\u9ADF\u9AE2\u9AE3\u9AE6\u9AEF\u9AEB\u9AEE\u9AF4\u9AF1\u9AF7"],["f2a1","\u9AFB\u9B06\u9B18\u9B1A\u9B1F\u9B22\u9B23\u9B25\u9B27\u9B28\u9B29\u9B2A\u9B2E\u9B2F\u9B32\u9B44\u9B43\u9B4F\u9B4D\u9B4E\u9B51\u9B58\u9B74\u9B93\u9B83\u9B91\u9B96\u9B97\u9B9F\u9BA0\u9BA8\u9BB4\u9BC0\u9BCA\u9BB9\u9BC6\u9BCF\u9BD1\u9BD2\u9BE3\u9BE2\u9BE4\u9BD4\u9BE1\u9C3A\u9BF2\u9BF1\u9BF0\u9C15\u9C14\u9C09\u9C13\u9C0C\u9C06\u9C08\u9C12\u9C0A\u9C04\u9C2E\u9C1B\u9C25\u9C24\u9C21\u9C30\u9C47\u9C32\u9C46\u9C3E\u9C5A\u9C60\u9C67\u9C76\u9C78\u9CE7\u9CEC\u9CF0\u9D09\u9D08\u9CEB\u9D03\u9D06\u9D2A\u9D26\u9DAF\u9D23\u9D1F\u9D44\u9D15\u9D12\u9D41\u9D3F\u9D3E\u9D46\u9D48"],["f3a1","\u9D5D\u9D5E\u9D64\u9D51\u9D50\u9D59\u9D72\u9D89\u9D87\u9DAB\u9D6F\u9D7A\u9D9A\u9DA4\u9DA9\u9DB2\u9DC4\u9DC1\u9DBB\u9DB8\u9DBA\u9DC6\u9DCF\u9DC2\u9DD9\u9DD3\u9DF8\u9DE6\u9DED\u9DEF\u9DFD\u9E1A\u9E1B\u9E1E\u9E75\u9E79\u9E7D\u9E81\u9E88\u9E8B\u9E8C\u9E92\u9E95\u9E91\u9E9D\u9EA5\u9EA9\u9EB8\u9EAA\u9EAD\u9761\u9ECC\u9ECE\u9ECF\u9ED0\u9ED4\u9EDC\u9EDE\u9EDD\u9EE0\u9EE5\u9EE8\u9EEF\u9EF4\u9EF6\u9EF7\u9EF9\u9EFB\u9EFC\u9EFD\u9F07\u9F08\u76B7\u9F15\u9F21\u9F2C\u9F3E\u9F4A\u9F52\u9F54\u9F63\u9F5F\u9F60\u9F61\u9F66\u9F67\u9F6C\u9F6A\u9F77\u9F72\u9F76\u9F95\u9F9C\u9FA0"],["f4a1","\u582F\u69C7\u9059\u7464\u51DC\u7199"],["f9a1","\u7E8A\u891C\u9348\u9288\u84DC\u4FC9\u70BB\u6631\u68C8\u92F9\u66FB\u5F45\u4E28\u4EE1\u4EFC\u4F00\u4F03\u4F39\u4F56\u4F92\u4F8A\u4F9A\u4F94\u4FCD\u5040\u5022\u4FFF\u501E\u5046\u5070\u5042\u5094\u50F4\u50D8\u514A\u5164\u519D\u51BE\u51EC\u5215\u529C\u52A6\u52C0\u52DB\u5300\u5307\u5324\u5372\u5393\u53B2\u53DD\uFA0E\u549C\u548A\u54A9\u54FF\u5586\u5759\u5765\u57AC\u57C8\u57C7\uFA0F\uFA10\u589E\u58B2\u590B\u5953\u595B\u595D\u5963\u59A4\u59BA\u5B56\u5BC0\u752F\u5BD8\u5BEC\u5C1E\u5CA6\u5CBA\u5CF5\u5D27\u5D53\uFA11\u5D42\u5D6D\u5DB8\u5DB9\u5DD0\u5F21\u5F34\u5F67\u5FB7"],["faa1","\u5FDE\u605D\u6085\u608A\u60DE\u60D5\u6120\u60F2\u6111\u6137\u6130\u6198\u6213\u62A6\u63F5\u6460\u649D\u64CE\u654E\u6600\u6615\u663B\u6609\u662E\u661E\u6624\u6665\u6657\u6659\uFA12\u6673\u6699\u66A0\u66B2\u66BF\u66FA\u670E\uF929\u6766\u67BB\u6852\u67C0\u6801\u6844\u68CF\uFA13\u6968\uFA14\u6998\u69E2\u6A30\u6A6B\u6A46\u6A73\u6A7E\u6AE2\u6AE4\u6BD6\u6C3F\u6C5C\u6C86\u6C6F\u6CDA\u6D04\u6D87\u6D6F\u6D96\u6DAC\u6DCF\u6DF8\u6DF2\u6DFC\u6E39\u6E5C\u6E27\u6E3C\u6EBF\u6F88\u6FB5\u6FF5\u7005\u7007\u7028\u7085\u70AB\u710F\u7104\u715C\u7146\u7147\uFA15\u71C1\u71FE\u72B1"],["fba1","\u72BE\u7324\uFA16\u7377\u73BD\u73C9\u73D6\u73E3\u73D2\u7407\u73F5\u7426\u742A\u7429\u742E\u7462\u7489\u749F\u7501\u756F\u7682\u769C\u769E\u769B\u76A6\uFA17\u7746\u52AF\u7821\u784E\u7864\u787A\u7930\uFA18\uFA19\uFA1A\u7994\uFA1B\u799B\u7AD1\u7AE7\uFA1C\u7AEB\u7B9E\uFA1D\u7D48\u7D5C\u7DB7\u7DA0\u7DD6\u7E52\u7F47\u7FA1\uFA1E\u8301\u8362\u837F\u83C7\u83F6\u8448\u84B4\u8553\u8559\u856B\uFA1F\u85B0\uFA20\uFA21\u8807\u88F5\u8A12\u8A37\u8A79\u8AA7\u8ABE\u8ADF\uFA22\u8AF6\u8B53\u8B7F\u8CF0\u8CF4\u8D12\u8D76\uFA23\u8ECF\uFA24\uFA25\u9067\u90DE\uFA26\u9115\u9127\u91DA"],["fca1","\u91D7\u91DE\u91ED\u91EE\u91E4\u91E5\u9206\u9210\u920A\u923A\u9240\u923C\u924E\u9259\u9251\u9239\u9267\u92A7\u9277\u9278\u92E7\u92D7\u92D9\u92D0\uFA27\u92D5\u92E0\u92D3\u9325\u9321\u92FB\uFA28\u931E\u92FF\u931D\u9302\u9370\u9357\u93A4\u93C6\u93DE\u93F8\u9431\u9445\u9448\u9592\uF9DC\uFA29\u969D\u96AF\u9733\u973B\u9743\u974D\u974F\u9751\u9755\u9857\u9865\uFA2A\uFA2B\u9927\uFA2C\u999E\u9A4E\u9AD9\u9ADC\u9B75\u9B72\u9B8F\u9BB1\u9BBB\u9C00\u9D70\u9D6B\uFA2D\u9E19\u9ED1"],["fcf1","\u2170",9,"\uFFE2\uFFE4\uFF07\uFF02"],["8fa2af","\u02D8\u02C7\xB8\u02D9\u02DD\xAF\u02DB\u02DA\uFF5E\u0384\u0385"],["8fa2c2","\xA1\xA6\xBF"],["8fa2eb","\xBA\xAA\xA9\xAE\u2122\xA4\u2116"],["8fa6e1","\u0386\u0388\u0389\u038A\u03AA"],["8fa6e7","\u038C"],["8fa6e9","\u038E\u03AB"],["8fa6ec","\u038F"],["8fa6f1","\u03AC\u03AD\u03AE\u03AF\u03CA\u0390\u03CC\u03C2\u03CD\u03CB\u03B0\u03CE"],["8fa7c2","\u0402",10,"\u040E\u040F"],["8fa7f2","\u0452",10,"\u045E\u045F"],["8fa9a1","\xC6\u0110"],["8fa9a4","\u0126"],["8fa9a6","\u0132"],["8fa9a8","\u0141\u013F"],["8fa9ab","\u014A\xD8\u0152"],["8fa9af","\u0166\xDE"],["8fa9c1","\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0142\u0140\u0149\u014B\xF8\u0153\xDF\u0167\xFE"],["8faaa1","\xC1\xC0\xC4\xC2\u0102\u01CD\u0100\u0104\xC5\xC3\u0106\u0108\u010C\xC7\u010A\u010E\xC9\xC8\xCB\xCA\u011A\u0116\u0112\u0118"],["8faaba","\u011C\u011E\u0122\u0120\u0124\xCD\xCC\xCF\xCE\u01CF\u0130\u012A\u012E\u0128\u0134\u0136\u0139\u013D\u013B\u0143\u0147\u0145\xD1\xD3\xD2\xD6\xD4\u01D1\u0150\u014C\xD5\u0154\u0158\u0156\u015A\u015C\u0160\u015E\u0164\u0162\xDA\xD9\xDC\xDB\u016C\u01D3\u0170\u016A\u0172\u016E\u0168\u01D7\u01DB\u01D9\u01D5\u0174\xDD\u0178\u0176\u0179\u017D\u017B"],["8faba1","\xE1\xE0\xE4\xE2\u0103\u01CE\u0101\u0105\xE5\xE3\u0107\u0109\u010D\xE7\u010B\u010F\xE9\xE8\xEB\xEA\u011B\u0117\u0113\u0119\u01F5\u011D\u011F"],["8fabbd","\u0121\u0125\xED\xEC\xEF\xEE\u01D0"],["8fabc5","\u012B\u012F\u0129\u0135\u0137\u013A\u013E\u013C\u0144\u0148\u0146\xF1\xF3\xF2\xF6\xF4\u01D2\u0151\u014D\xF5\u0155\u0159\u0157\u015B\u015D\u0161\u015F\u0165\u0163\xFA\xF9\xFC\xFB\u016D\u01D4\u0171\u016B\u0173\u016F\u0169\u01D8\u01DC\u01DA\u01D6\u0175\xFD\xFF\u0177\u017A\u017E\u017C"],["8fb0a1","\u4E02\u4E04\u4E05\u4E0C\u4E12\u4E1F\u4E23\u4E24\u4E28\u4E2B\u4E2E\u4E2F\u4E30\u4E35\u4E40\u4E41\u4E44\u4E47\u4E51\u4E5A\u4E5C\u4E63\u4E68\u4E69\u4E74\u4E75\u4E79\u4E7F\u4E8D\u4E96\u4E97\u4E9D\u4EAF\u4EB9\u4EC3\u4ED0\u4EDA\u4EDB\u4EE0\u4EE1\u4EE2\u4EE8\u4EEF\u4EF1\u4EF3\u4EF5\u4EFD\u4EFE\u4EFF\u4F00\u4F02\u4F03\u4F08\u4F0B\u4F0C\u4F12\u4F15\u4F16\u4F17\u4F19\u4F2E\u4F31\u4F60\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E\u4F40\u4F42\u4F48\u4F49\u4F4B\u4F4C\u4F52\u4F54\u4F56\u4F58\u4F5F\u4F63\u4F6A\u4F6C\u4F6E\u4F71\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F7E\u4F81\u4F82\u4F84"],["8fb1a1","\u4F85\u4F89\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F94\u4F97\u4F99\u4F9A\u4F9E\u4F9F\u4FB2\u4FB7\u4FB9\u4FBB\u4FBC\u4FBD\u4FBE\u4FC0\u4FC1\u4FC5\u4FC6\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FCF\u4FD2\u4FDC\u4FE0\u4FE2\u4FF0\u4FF2\u4FFC\u4FFD\u4FFF\u5000\u5001\u5004\u5007\u500A\u500C\u500E\u5010\u5013\u5017\u5018\u501B\u501C\u501D\u501E\u5022\u5027\u502E\u5030\u5032\u5033\u5035\u5040\u5041\u5042\u5045\u5046\u504A\u504C\u504E\u5051\u5052\u5053\u5057\u5059\u505F\u5060\u5062\u5063\u5066\u5067\u506A\u506D\u5070\u5071\u503B\u5081\u5083\u5084\u5086\u508A\u508E\u508F\u5090"],["8fb2a1","\u5092\u5093\u5094\u5096\u509B\u509C\u509E",4,"\u50AA\u50AF\u50B0\u50B9\u50BA\u50BD\u50C0\u50C3\u50C4\u50C7\u50CC\u50CE\u50D0\u50D3\u50D4\u50D8\u50DC\u50DD\u50DF\u50E2\u50E4\u50E6\u50E8\u50E9\u50EF\u50F1\u50F6\u50FA\u50FE\u5103\u5106\u5107\u5108\u510B\u510C\u510D\u510E\u50F2\u5110\u5117\u5119\u511B\u511C\u511D\u511E\u5123\u5127\u5128\u512C\u512D\u512F\u5131\u5133\u5134\u5135\u5138\u5139\u5142\u514A\u514F\u5153\u5155\u5157\u5158\u515F\u5164\u5166\u517E\u5183\u5184\u518B\u518E\u5198\u519D\u51A1\u51A3\u51AD\u51B8\u51BA\u51BC\u51BE\u51BF\u51C2"],["8fb3a1","\u51C8\u51CF\u51D1\u51D2\u51D3\u51D5\u51D8\u51DE\u51E2\u51E5\u51EE\u51F2\u51F3\u51F4\u51F7\u5201\u5202\u5205\u5212\u5213\u5215\u5216\u5218\u5222\u5228\u5231\u5232\u5235\u523C\u5245\u5249\u5255\u5257\u5258\u525A\u525C\u525F\u5260\u5261\u5266\u526E\u5277\u5278\u5279\u5280\u5282\u5285\u528A\u528C\u5293\u5295\u5296\u5297\u5298\u529A\u529C\u52A4\u52A5\u52A6\u52A7\u52AF\u52B0\u52B6\u52B7\u52B8\u52BA\u52BB\u52BD\u52C0\u52C4\u52C6\u52C8\u52CC\u52CF\u52D1\u52D4\u52D6\u52DB\u52DC\u52E1\u52E5\u52E8\u52E9\u52EA\u52EC\u52F0\u52F1\u52F4\u52F6\u52F7\u5300\u5303\u530A\u530B"],["8fb4a1","\u530C\u5311\u5313\u5318\u531B\u531C\u531E\u531F\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u5330\u5332\u5335\u533C\u533D\u533E\u5342\u534C\u534B\u5359\u535B\u5361\u5363\u5365\u536C\u536D\u5372\u5379\u537E\u5383\u5387\u5388\u538E\u5393\u5394\u5399\u539D\u53A1\u53A4\u53AA\u53AB\u53AF\u53B2\u53B4\u53B5\u53B7\u53B8\u53BA\u53BD\u53C0\u53C5\u53CF\u53D2\u53D3\u53D5\u53DA\u53DD\u53DE\u53E0\u53E6\u53E7\u53F5\u5402\u5413\u541A\u5421\u5427\u5428\u542A\u542F\u5431\u5434\u5435\u5443\u5444\u5447\u544D\u544F\u545E\u5462\u5464\u5466\u5467\u5469\u546B\u546D\u546E\u5474\u547F"],["8fb5a1","\u5481\u5483\u5485\u5488\u5489\u548D\u5491\u5495\u5496\u549C\u549F\u54A1\u54A6\u54A7\u54A9\u54AA\u54AD\u54AE\u54B1\u54B7\u54B9\u54BA\u54BB\u54BF\u54C6\u54CA\u54CD\u54CE\u54E0\u54EA\u54EC\u54EF\u54F6\u54FC\u54FE\u54FF\u5500\u5501\u5505\u5508\u5509\u550C\u550D\u550E\u5515\u552A\u552B\u5532\u5535\u5536\u553B\u553C\u553D\u5541\u5547\u5549\u554A\u554D\u5550\u5551\u5558\u555A\u555B\u555E\u5560\u5561\u5564\u5566\u557F\u5581\u5582\u5586\u5588\u558E\u558F\u5591\u5592\u5593\u5594\u5597\u55A3\u55A4\u55AD\u55B2\u55BF\u55C1\u55C3\u55C6\u55C9\u55CB\u55CC\u55CE\u55D1\u55D2"],["8fb6a1","\u55D3\u55D7\u55D8\u55DB\u55DE\u55E2\u55E9\u55F6\u55FF\u5605\u5608\u560A\u560D",5,"\u5619\u562C\u5630\u5633\u5635\u5637\u5639\u563B\u563C\u563D\u563F\u5640\u5641\u5643\u5644\u5646\u5649\u564B\u564D\u564F\u5654\u565E\u5660\u5661\u5662\u5663\u5666\u5669\u566D\u566F\u5671\u5672\u5675\u5684\u5685\u5688\u568B\u568C\u5695\u5699\u569A\u569D\u569E\u569F\u56A6\u56A7\u56A8\u56A9\u56AB\u56AC\u56AD\u56B1\u56B3\u56B7\u56BE\u56C5\u56C9\u56CA\u56CB\u56CF\u56D0\u56CC\u56CD\u56D9\u56DC\u56DD\u56DF\u56E1\u56E4",4,"\u56F1\u56EB\u56ED"],["8fb7a1","\u56F6\u56F7\u5701\u5702\u5707\u570A\u570C\u5711\u5715\u571A\u571B\u571D\u5720\u5722\u5723\u5724\u5725\u5729\u572A\u572C\u572E\u572F\u5733\u5734\u573D\u573E\u573F\u5745\u5746\u574C\u574D\u5752\u5762\u5765\u5767\u5768\u576B\u576D",4,"\u5773\u5774\u5775\u5777\u5779\u577A\u577B\u577C\u577E\u5781\u5783\u578C\u5794\u5797\u5799\u579A\u579C\u579D\u579E\u579F\u57A1\u5795\u57A7\u57A8\u57A9\u57AC\u57B8\u57BD\u57C7\u57C8\u57CC\u57CF\u57D5\u57DD\u57DE\u57E4\u57E6\u57E7\u57E9\u57ED\u57F0\u57F5\u57F6\u57F8\u57FD\u57FE\u57FF\u5803\u5804\u5808\u5809\u57E1"],["8fb8a1","\u580C\u580D\u581B\u581E\u581F\u5820\u5826\u5827\u582D\u5832\u5839\u583F\u5849\u584C\u584D\u584F\u5850\u5855\u585F\u5861\u5864\u5867\u5868\u5878\u587C\u587F\u5880\u5881\u5887\u5888\u5889\u588A\u588C\u588D\u588F\u5890\u5894\u5896\u589D\u58A0\u58A1\u58A2\u58A6\u58A9\u58B1\u58B2\u58C4\u58BC\u58C2\u58C8\u58CD\u58CE\u58D0\u58D2\u58D4\u58D6\u58DA\u58DD\u58E1\u58E2\u58E9\u58F3\u5905\u5906\u590B\u590C\u5912\u5913\u5914\u8641\u591D\u5921\u5923\u5924\u5928\u592F\u5930\u5933\u5935\u5936\u593F\u5943\u5946\u5952\u5953\u5959\u595B\u595D\u595E\u595F\u5961\u5963\u596B\u596D"],["8fb9a1","\u596F\u5972\u5975\u5976\u5979\u597B\u597C\u598B\u598C\u598E\u5992\u5995\u5997\u599F\u59A4\u59A7\u59AD\u59AE\u59AF\u59B0\u59B3\u59B7\u59BA\u59BC\u59C1\u59C3\u59C4\u59C8\u59CA\u59CD\u59D2\u59DD\u59DE\u59DF\u59E3\u59E4\u59E7\u59EE\u59EF\u59F1\u59F2\u59F4\u59F7\u5A00\u5A04\u5A0C\u5A0D\u5A0E\u5A12\u5A13\u5A1E\u5A23\u5A24\u5A27\u5A28\u5A2A\u5A2D\u5A30\u5A44\u5A45\u5A47\u5A48\u5A4C\u5A50\u5A55\u5A5E\u5A63\u5A65\u5A67\u5A6D\u5A77\u5A7A\u5A7B\u5A7E\u5A8B\u5A90\u5A93\u5A96\u5A99\u5A9C\u5A9E\u5A9F\u5AA0\u5AA2\u5AA7\u5AAC\u5AB1\u5AB2\u5AB3\u5AB5\u5AB8\u5ABA\u5ABB\u5ABF"],["8fbaa1","\u5AC4\u5AC6\u5AC8\u5ACF\u5ADA\u5ADC\u5AE0\u5AE5\u5AEA\u5AEE\u5AF5\u5AF6\u5AFD\u5B00\u5B01\u5B08\u5B17\u5B34\u5B19\u5B1B\u5B1D\u5B21\u5B25\u5B2D\u5B38\u5B41\u5B4B\u5B4C\u5B52\u5B56\u5B5E\u5B68\u5B6E\u5B6F\u5B7C\u5B7D\u5B7E\u5B7F\u5B81\u5B84\u5B86\u5B8A\u5B8E\u5B90\u5B91\u5B93\u5B94\u5B96\u5BA8\u5BA9\u5BAC\u5BAD\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBC\u5BC0\u5BC1\u5BCD\u5BCF\u5BD6",4,"\u5BE0\u5BEF\u5BF1\u5BF4\u5BFD\u5C0C\u5C17\u5C1E\u5C1F\u5C23\u5C26\u5C29\u5C2B\u5C2C\u5C2E\u5C30\u5C32\u5C35\u5C36\u5C59\u5C5A\u5C5C\u5C62\u5C63\u5C67\u5C68\u5C69"],["8fbba1","\u5C6D\u5C70\u5C74\u5C75\u5C7A\u5C7B\u5C7C\u5C7D\u5C87\u5C88\u5C8A\u5C8F\u5C92\u5C9D\u5C9F\u5CA0\u5CA2\u5CA3\u5CA6\u5CAA\u5CB2\u5CB4\u5CB5\u5CBA\u5CC9\u5CCB\u5CD2\u5CDD\u5CD7\u5CEE\u5CF1\u5CF2\u5CF4\u5D01\u5D06\u5D0D\u5D12\u5D2B\u5D23\u5D24\u5D26\u5D27\u5D31\u5D34\u5D39\u5D3D\u5D3F\u5D42\u5D43\u5D46\u5D48\u5D55\u5D51\u5D59\u5D4A\u5D5F\u5D60\u5D61\u5D62\u5D64\u5D6A\u5D6D\u5D70\u5D79\u5D7A\u5D7E\u5D7F\u5D81\u5D83\u5D88\u5D8A\u5D92\u5D93\u5D94\u5D95\u5D99\u5D9B\u5D9F\u5DA0\u5DA7\u5DAB\u5DB0\u5DB4\u5DB8\u5DB9\u5DC3\u5DC7\u5DCB\u5DD0\u5DCE\u5DD8\u5DD9\u5DE0\u5DE4"],["8fbca1","\u5DE9\u5DF8\u5DF9\u5E00\u5E07\u5E0D\u5E12\u5E14\u5E15\u5E18\u5E1F\u5E20\u5E2E\u5E28\u5E32\u5E35\u5E3E\u5E4B\u5E50\u5E49\u5E51\u5E56\u5E58\u5E5B\u5E5C\u5E5E\u5E68\u5E6A",4,"\u5E70\u5E80\u5E8B\u5E8E\u5EA2\u5EA4\u5EA5\u5EA8\u5EAA\u5EAC\u5EB1\u5EB3\u5EBD\u5EBE\u5EBF\u5EC6\u5ECC\u5ECB\u5ECE\u5ED1\u5ED2\u5ED4\u5ED5\u5EDC\u5EDE\u5EE5\u5EEB\u5F02\u5F06\u5F07\u5F08\u5F0E\u5F19\u5F1C\u5F1D\u5F21\u5F22\u5F23\u5F24\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F34\u5F36\u5F3B\u5F3D\u5F3F\u5F40\u5F44\u5F45\u5F47\u5F4D\u5F50\u5F54\u5F58\u5F5B\u5F60\u5F63\u5F64\u5F67"],["8fbda1","\u5F6F\u5F72\u5F74\u5F75\u5F78\u5F7A\u5F7D\u5F7E\u5F89\u5F8D\u5F8F\u5F96\u5F9C\u5F9D\u5FA2\u5FA7\u5FAB\u5FA4\u5FAC\u5FAF\u5FB0\u5FB1\u5FB8\u5FC4\u5FC7\u5FC8\u5FC9\u5FCB\u5FD0",4,"\u5FDE\u5FE1\u5FE2\u5FE8\u5FE9\u5FEA\u5FEC\u5FED\u5FEE\u5FEF\u5FF2\u5FF3\u5FF6\u5FFA\u5FFC\u6007\u600A\u600D\u6013\u6014\u6017\u6018\u601A\u601F\u6024\u602D\u6033\u6035\u6040\u6047\u6048\u6049\u604C\u6051\u6054\u6056\u6057\u605D\u6061\u6067\u6071\u607E\u607F\u6082\u6086\u6088\u608A\u608E\u6091\u6093\u6095\u6098\u609D\u609E\u60A2\u60A4\u60A5\u60A8\u60B0\u60B1\u60B7"],["8fbea1","\u60BB\u60BE\u60C2\u60C4\u60C8\u60C9\u60CA\u60CB\u60CE\u60CF\u60D4\u60D5\u60D9\u60DB\u60DD\u60DE\u60E2\u60E5\u60F2\u60F5\u60F8\u60FC\u60FD\u6102\u6107\u610A\u610C\u6110",4,"\u6116\u6117\u6119\u611C\u611E\u6122\u612A\u612B\u6130\u6131\u6135\u6136\u6137\u6139\u6141\u6145\u6146\u6149\u615E\u6160\u616C\u6172\u6178\u617B\u617C\u617F\u6180\u6181\u6183\u6184\u618B\u618D\u6192\u6193\u6197\u6198\u619C\u619D\u619F\u61A0\u61A5\u61A8\u61AA\u61AD\u61B8\u61B9\u61BC\u61C0\u61C1\u61C2\u61CE\u61CF\u61D5\u61DC\u61DD\u61DE\u61DF\u61E1\u61E2\u61E7\u61E9\u61E5"],["8fbfa1","\u61EC\u61ED\u61EF\u6201\u6203\u6204\u6207\u6213\u6215\u621C\u6220\u6222\u6223\u6227\u6229\u622B\u6239\u623D\u6242\u6243\u6244\u6246\u624C\u6250\u6251\u6252\u6254\u6256\u625A\u625C\u6264\u626D\u626F\u6273\u627A\u627D\u628D\u628E\u628F\u6290\u62A6\u62A8\u62B3\u62B6\u62B7\u62BA\u62BE\u62BF\u62C4\u62CE\u62D5\u62D6\u62DA\u62EA\u62F2\u62F4\u62FC\u62FD\u6303\u6304\u630A\u630B\u630D\u6310\u6313\u6316\u6318\u6329\u632A\u632D\u6335\u6336\u6339\u633C\u6341\u6342\u6343\u6344\u6346\u634A\u634B\u634E\u6352\u6353\u6354\u6358\u635B\u6365\u6366\u636C\u636D\u6371\u6374\u6375"],["8fc0a1","\u6378\u637C\u637D\u637F\u6382\u6384\u6387\u638A\u6390\u6394\u6395\u6399\u639A\u639E\u63A4\u63A6\u63AD\u63AE\u63AF\u63BD\u63C1\u63C5\u63C8\u63CE\u63D1\u63D3\u63D4\u63D5\u63DC\u63E0\u63E5\u63EA\u63EC\u63F2\u63F3\u63F5\u63F8\u63F9\u6409\u640A\u6410\u6412\u6414\u6418\u641E\u6420\u6422\u6424\u6425\u6429\u642A\u642F\u6430\u6435\u643D\u643F\u644B\u644F\u6451\u6452\u6453\u6454\u645A\u645B\u645C\u645D\u645F\u6460\u6461\u6463\u646D\u6473\u6474\u647B\u647D\u6485\u6487\u648F\u6490\u6491\u6498\u6499\u649B\u649D\u649F\u64A1\u64A3\u64A6\u64A8\u64AC\u64B3\u64BD\u64BE\u64BF"],["8fc1a1","\u64C4\u64C9\u64CA\u64CB\u64CC\u64CE\u64D0\u64D1\u64D5\u64D7\u64E4\u64E5\u64E9\u64EA\u64ED\u64F0\u64F5\u64F7\u64FB\u64FF\u6501\u6504\u6508\u6509\u650A\u650F\u6513\u6514\u6516\u6519\u651B\u651E\u651F\u6522\u6526\u6529\u652E\u6531\u653A\u653C\u653D\u6543\u6547\u6549\u6550\u6552\u6554\u655F\u6560\u6567\u656B\u657A\u657D\u6581\u6585\u658A\u6592\u6595\u6598\u659D\u65A0\u65A3\u65A6\u65AE\u65B2\u65B3\u65B4\u65BF\u65C2\u65C8\u65C9\u65CE\u65D0\u65D4\u65D6\u65D8\u65DF\u65F0\u65F2\u65F4\u65F5\u65F9\u65FE\u65FF\u6600\u6604\u6608\u6609\u660D\u6611\u6612\u6615\u6616\u661D"],["8fc2a1","\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6631\u6633\u6639\u6637\u6640\u6645\u6646\u664A\u664C\u6651\u664E\u6657\u6658\u6659\u665B\u665C\u6660\u6661\u66FB\u666A\u666B\u666C\u667E\u6673\u6675\u667F\u6677\u6678\u6679\u667B\u6680\u667C\u668B\u668C\u668D\u6690\u6692\u6699\u669A\u669B\u669C\u669F\u66A0\u66A4\u66AD\u66B1\u66B2\u66B5\u66BB\u66BF\u66C0\u66C2\u66C3\u66C8\u66CC\u66CE\u66CF\u66D4\u66DB\u66DF\u66E8\u66EB\u66EC\u66EE\u66FA\u6705\u6707\u670E\u6713\u6719\u671C\u6720\u6722\u6733\u673E\u6745\u6747\u6748\u674C\u6754\u6755\u675D"],["8fc3a1","\u6766\u676C\u676E\u6774\u6776\u677B\u6781\u6784\u678E\u678F\u6791\u6793\u6796\u6798\u6799\u679B\u67B0\u67B1\u67B2\u67B5\u67BB\u67BC\u67BD\u67F9\u67C0\u67C2\u67C3\u67C5\u67C8\u67C9\u67D2\u67D7\u67D9\u67DC\u67E1\u67E6\u67F0\u67F2\u67F6\u67F7\u6852\u6814\u6819\u681D\u681F\u6828\u6827\u682C\u682D\u682F\u6830\u6831\u6833\u683B\u683F\u6844\u6845\u684A\u684C\u6855\u6857\u6858\u685B\u686B\u686E",4,"\u6875\u6879\u687A\u687B\u687C\u6882\u6884\u6886\u6888\u6896\u6898\u689A\u689C\u68A1\u68A3\u68A5\u68A9\u68AA\u68AE\u68B2\u68BB\u68C5\u68C8\u68CC\u68CF"],["8fc4a1","\u68D0\u68D1\u68D3\u68D6\u68D9\u68DC\u68DD\u68E5\u68E8\u68EA\u68EB\u68EC\u68ED\u68F0\u68F1\u68F5\u68F6\u68FB\u68FC\u68FD\u6906\u6909\u690A\u6910\u6911\u6913\u6916\u6917\u6931\u6933\u6935\u6938\u693B\u6942\u6945\u6949\u694E\u6957\u695B\u6963\u6964\u6965\u6966\u6968\u6969\u696C\u6970\u6971\u6972\u697A\u697B\u697F\u6980\u698D\u6992\u6996\u6998\u69A1\u69A5\u69A6\u69A8\u69AB\u69AD\u69AF\u69B7\u69B8\u69BA\u69BC\u69C5\u69C8\u69D1\u69D6\u69D7\u69E2\u69E5\u69EE\u69EF\u69F1\u69F3\u69F5\u69FE\u6A00\u6A01\u6A03\u6A0F\u6A11\u6A15\u6A1A\u6A1D\u6A20\u6A24\u6A28\u6A30\u6A32"],["8fc5a1","\u6A34\u6A37\u6A3B\u6A3E\u6A3F\u6A45\u6A46\u6A49\u6A4A\u6A4E\u6A50\u6A51\u6A52\u6A55\u6A56\u6A5B\u6A64\u6A67\u6A6A\u6A71\u6A73\u6A7E\u6A81\u6A83\u6A86\u6A87\u6A89\u6A8B\u6A91\u6A9B\u6A9D\u6A9E\u6A9F\u6AA5\u6AAB\u6AAF\u6AB0\u6AB1\u6AB4\u6ABD\u6ABE\u6ABF\u6AC6\u6AC9\u6AC8\u6ACC\u6AD0\u6AD4\u6AD5\u6AD6\u6ADC\u6ADD\u6AE4\u6AE7\u6AEC\u6AF0\u6AF1\u6AF2\u6AFC\u6AFD\u6B02\u6B03\u6B06\u6B07\u6B09\u6B0F\u6B10\u6B11\u6B17\u6B1B\u6B1E\u6B24\u6B28\u6B2B\u6B2C\u6B2F\u6B35\u6B36\u6B3B\u6B3F\u6B46\u6B4A\u6B4D\u6B52\u6B56\u6B58\u6B5D\u6B60\u6B67\u6B6B\u6B6E\u6B70\u6B75\u6B7D"],["8fc6a1","\u6B7E\u6B82\u6B85\u6B97\u6B9B\u6B9F\u6BA0\u6BA2\u6BA3\u6BA8\u6BA9\u6BAC\u6BAD\u6BAE\u6BB0\u6BB8\u6BB9\u6BBD\u6BBE\u6BC3\u6BC4\u6BC9\u6BCC\u6BD6\u6BDA\u6BE1\u6BE3\u6BE6\u6BE7\u6BEE\u6BF1\u6BF7\u6BF9\u6BFF\u6C02\u6C04\u6C05\u6C09\u6C0D\u6C0E\u6C10\u6C12\u6C19\u6C1F\u6C26\u6C27\u6C28\u6C2C\u6C2E\u6C33\u6C35\u6C36\u6C3A\u6C3B\u6C3F\u6C4A\u6C4B\u6C4D\u6C4F\u6C52\u6C54\u6C59\u6C5B\u6C5C\u6C6B\u6C6D\u6C6F\u6C74\u6C76\u6C78\u6C79\u6C7B\u6C85\u6C86\u6C87\u6C89\u6C94\u6C95\u6C97\u6C98\u6C9C\u6C9F\u6CB0\u6CB2\u6CB4\u6CC2\u6CC6\u6CCD\u6CCF\u6CD0\u6CD1\u6CD2\u6CD4\u6CD6"],["8fc7a1","\u6CDA\u6CDC\u6CE0\u6CE7\u6CE9\u6CEB\u6CEC\u6CEE\u6CF2\u6CF4\u6D04\u6D07\u6D0A\u6D0E\u6D0F\u6D11\u6D13\u6D1A\u6D26\u6D27\u6D28\u6C67\u6D2E\u6D2F\u6D31\u6D39\u6D3C\u6D3F\u6D57\u6D5E\u6D5F\u6D61\u6D65\u6D67\u6D6F\u6D70\u6D7C\u6D82\u6D87\u6D91\u6D92\u6D94\u6D96\u6D97\u6D98\u6DAA\u6DAC\u6DB4\u6DB7\u6DB9\u6DBD\u6DBF\u6DC4\u6DC8\u6DCA\u6DCE\u6DCF\u6DD6\u6DDB\u6DDD\u6DDF\u6DE0\u6DE2\u6DE5\u6DE9\u6DEF\u6DF0\u6DF4\u6DF6\u6DFC\u6E00\u6E04\u6E1E\u6E22\u6E27\u6E32\u6E36\u6E39\u6E3B\u6E3C\u6E44\u6E45\u6E48\u6E49\u6E4B\u6E4F\u6E51\u6E52\u6E53\u6E54\u6E57\u6E5C\u6E5D\u6E5E"],["8fc8a1","\u6E62\u6E63\u6E68\u6E73\u6E7B\u6E7D\u6E8D\u6E93\u6E99\u6EA0\u6EA7\u6EAD\u6EAE\u6EB1\u6EB3\u6EBB\u6EBF\u6EC0\u6EC1\u6EC3\u6EC7\u6EC8\u6ECA\u6ECD\u6ECE\u6ECF\u6EEB\u6EED\u6EEE\u6EF9\u6EFB\u6EFD\u6F04\u6F08\u6F0A\u6F0C\u6F0D\u6F16\u6F18\u6F1A\u6F1B\u6F26\u6F29\u6F2A\u6F2F\u6F30\u6F33\u6F36\u6F3B\u6F3C\u6F2D\u6F4F\u6F51\u6F52\u6F53\u6F57\u6F59\u6F5A\u6F5D\u6F5E\u6F61\u6F62\u6F68\u6F6C\u6F7D\u6F7E\u6F83\u6F87\u6F88\u6F8B\u6F8C\u6F8D\u6F90\u6F92\u6F93\u6F94\u6F96\u6F9A\u6F9F\u6FA0\u6FA5\u6FA6\u6FA7\u6FA8\u6FAE\u6FAF\u6FB0\u6FB5\u6FB6\u6FBC\u6FC5\u6FC7\u6FC8\u6FCA"],["8fc9a1","\u6FDA\u6FDE\u6FE8\u6FE9\u6FF0\u6FF5\u6FF9\u6FFC\u6FFD\u7000\u7005\u7006\u7007\u700D\u7017\u7020\u7023\u702F\u7034\u7037\u7039\u703C\u7043\u7044\u7048\u7049\u704A\u704B\u7054\u7055\u705D\u705E\u704E\u7064\u7065\u706C\u706E\u7075\u7076\u707E\u7081\u7085\u7086\u7094",4,"\u709B\u70A4\u70AB\u70B0\u70B1\u70B4\u70B7\u70CA\u70D1\u70D3\u70D4\u70D5\u70D6\u70D8\u70DC\u70E4\u70FA\u7103",4,"\u710B\u710C\u710F\u711E\u7120\u712B\u712D\u712F\u7130\u7131\u7138\u7141\u7145\u7146\u7147\u714A\u714B\u7150\u7152\u7157\u715A\u715C\u715E\u7160"],["8fcaa1","\u7168\u7179\u7180\u7185\u7187\u718C\u7192\u719A\u719B\u71A0\u71A2\u71AF\u71B0\u71B2\u71B3\u71BA\u71BF\u71C0\u71C1\u71C4\u71CB\u71CC\u71D3\u71D6\u71D9\u71DA\u71DC\u71F8\u71FE\u7200\u7207\u7208\u7209\u7213\u7217\u721A\u721D\u721F\u7224\u722B\u722F\u7234\u7238\u7239\u7241\u7242\u7243\u7245\u724E\u724F\u7250\u7253\u7255\u7256\u725A\u725C\u725E\u7260\u7263\u7268\u726B\u726E\u726F\u7271\u7277\u7278\u727B\u727C\u727F\u7284\u7289\u728D\u728E\u7293\u729B\u72A8\u72AD\u72AE\u72B1\u72B4\u72BE\u72C1\u72C7\u72C9\u72CC\u72D5\u72D6\u72D8\u72DF\u72E5\u72F3\u72F4\u72FA\u72FB"],["8fcba1","\u72FE\u7302\u7304\u7305\u7307\u730B\u730D\u7312\u7313\u7318\u7319\u731E\u7322\u7324\u7327\u7328\u732C\u7331\u7332\u7335\u733A\u733B\u733D\u7343\u734D\u7350\u7352\u7356\u7358\u735D\u735E\u735F\u7360\u7366\u7367\u7369\u736B\u736C\u736E\u736F\u7371\u7377\u7379\u737C\u7380\u7381\u7383\u7385\u7386\u738E\u7390\u7393\u7395\u7397\u7398\u739C\u739E\u739F\u73A0\u73A2\u73A5\u73A6\u73AA\u73AB\u73AD\u73B5\u73B7\u73B9\u73BC\u73BD\u73BF\u73C5\u73C6\u73C9\u73CB\u73CC\u73CF\u73D2\u73D3\u73D6\u73D9\u73DD\u73E1\u73E3\u73E6\u73E7\u73E9\u73F4\u73F5\u73F7\u73F9\u73FA\u73FB\u73FD"],["8fcca1","\u73FF\u7400\u7401\u7404\u7407\u740A\u7411\u741A\u741B\u7424\u7426\u7428",9,"\u7439\u7440\u7443\u7444\u7446\u7447\u744B\u744D\u7451\u7452\u7457\u745D\u7462\u7466\u7467\u7468\u746B\u746D\u746E\u7471\u7472\u7480\u7481\u7485\u7486\u7487\u7489\u748F\u7490\u7491\u7492\u7498\u7499\u749A\u749C\u749F\u74A0\u74A1\u74A3\u74A6\u74A8\u74A9\u74AA\u74AB\u74AE\u74AF\u74B1\u74B2\u74B5\u74B9\u74BB\u74BF\u74C8\u74C9\u74CC\u74D0\u74D3\u74D8\u74DA\u74DB\u74DE\u74DF\u74E4\u74E8\u74EA\u74EB\u74EF\u74F4\u74FA\u74FB\u74FC\u74FF\u7506"],["8fcda1","\u7512\u7516\u7517\u7520\u7521\u7524\u7527\u7529\u752A\u752F\u7536\u7539\u753D\u753E\u753F\u7540\u7543\u7547\u7548\u754E\u7550\u7552\u7557\u755E\u755F\u7561\u756F\u7571\u7579",5,"\u7581\u7585\u7590\u7592\u7593\u7595\u7599\u759C\u75A2\u75A4\u75B4\u75BA\u75BF\u75C0\u75C1\u75C4\u75C6\u75CC\u75CE\u75CF\u75D7\u75DC\u75DF\u75E0\u75E1\u75E4\u75E7\u75EC\u75EE\u75EF\u75F1\u75F9\u7600\u7602\u7603\u7604\u7607\u7608\u760A\u760C\u760F\u7612\u7613\u7615\u7616\u7619\u761B\u761C\u761D\u761E\u7623\u7625\u7626\u7629\u762D\u7632\u7633\u7635\u7638\u7639"],["8fcea1","\u763A\u763C\u764A\u7640\u7641\u7643\u7644\u7645\u7649\u764B\u7655\u7659\u765F\u7664\u7665\u766D\u766E\u766F\u7671\u7674\u7681\u7685\u768C\u768D\u7695\u769B\u769C\u769D\u769F\u76A0\u76A2",6,"\u76AA\u76AD\u76BD\u76C1\u76C5\u76C9\u76CB\u76CC\u76CE\u76D4\u76D9\u76E0\u76E6\u76E8\u76EC\u76F0\u76F1\u76F6\u76F9\u76FC\u7700\u7706\u770A\u770E\u7712\u7714\u7715\u7717\u7719\u771A\u771C\u7722\u7728\u772D\u772E\u772F\u7734\u7735\u7736\u7739\u773D\u773E\u7742\u7745\u7746\u774A\u774D\u774E\u774F\u7752\u7756\u7757\u775C\u775E\u775F\u7760\u7762"],["8fcfa1","\u7764\u7767\u776A\u776C\u7770\u7772\u7773\u7774\u777A\u777D\u7780\u7784\u778C\u778D\u7794\u7795\u7796\u779A\u779F\u77A2\u77A7\u77AA\u77AE\u77AF\u77B1\u77B5\u77BE\u77C3\u77C9\u77D1\u77D2\u77D5\u77D9\u77DE\u77DF\u77E0\u77E4\u77E6\u77EA\u77EC\u77F0\u77F1\u77F4\u77F8\u77FB\u7805\u7806\u7809\u780D\u780E\u7811\u781D\u7821\u7822\u7823\u782D\u782E\u7830\u7835\u7837\u7843\u7844\u7847\u7848\u784C\u784E\u7852\u785C\u785E\u7860\u7861\u7863\u7864\u7868\u786A\u786E\u787A\u787E\u788A\u788F\u7894\u7898\u78A1\u789D\u789E\u789F\u78A4\u78A8\u78AC\u78AD\u78B0\u78B1\u78B2\u78B3"],["8fd0a1","\u78BB\u78BD\u78BF\u78C7\u78C8\u78C9\u78CC\u78CE\u78D2\u78D3\u78D5\u78D6\u78E4\u78DB\u78DF\u78E0\u78E1\u78E6\u78EA\u78F2\u78F3\u7900\u78F6\u78F7\u78FA\u78FB\u78FF\u7906\u790C\u7910\u791A\u791C\u791E\u791F\u7920\u7925\u7927\u7929\u792D\u7931\u7934\u7935\u793B\u793D\u793F\u7944\u7945\u7946\u794A\u794B\u794F\u7951\u7954\u7958\u795B\u795C\u7967\u7969\u796B\u7972\u7979\u797B\u797C\u797E\u798B\u798C\u7991\u7993\u7994\u7995\u7996\u7998\u799B\u799C\u79A1\u79A8\u79A9\u79AB\u79AF\u79B1\u79B4\u79B8\u79BB\u79C2\u79C4\u79C7\u79C8\u79CA\u79CF\u79D4\u79D6\u79DA\u79DD\u79DE"],["8fd1a1","\u79E0\u79E2\u79E5\u79EA\u79EB\u79ED\u79F1\u79F8\u79FC\u7A02\u7A03\u7A07\u7A09\u7A0A\u7A0C\u7A11\u7A15\u7A1B\u7A1E\u7A21\u7A27\u7A2B\u7A2D\u7A2F\u7A30\u7A34\u7A35\u7A38\u7A39\u7A3A\u7A44\u7A45\u7A47\u7A48\u7A4C\u7A55\u7A56\u7A59\u7A5C\u7A5D\u7A5F\u7A60\u7A65\u7A67\u7A6A\u7A6D\u7A75\u7A78\u7A7E\u7A80\u7A82\u7A85\u7A86\u7A8A\u7A8B\u7A90\u7A91\u7A94\u7A9E\u7AA0\u7AA3\u7AAC\u7AB3\u7AB5\u7AB9\u7ABB\u7ABC\u7AC6\u7AC9\u7ACC\u7ACE\u7AD1\u7ADB\u7AE8\u7AE9\u7AEB\u7AEC\u7AF1\u7AF4\u7AFB\u7AFD\u7AFE\u7B07\u7B14\u7B1F\u7B23\u7B27\u7B29\u7B2A\u7B2B\u7B2D\u7B2E\u7B2F\u7B30"],["8fd2a1","\u7B31\u7B34\u7B3D\u7B3F\u7B40\u7B41\u7B47\u7B4E\u7B55\u7B60\u7B64\u7B66\u7B69\u7B6A\u7B6D\u7B6F\u7B72\u7B73\u7B77\u7B84\u7B89\u7B8E\u7B90\u7B91\u7B96\u7B9B\u7B9E\u7BA0\u7BA5\u7BAC\u7BAF\u7BB0\u7BB2\u7BB5\u7BB6\u7BBA\u7BBB\u7BBC\u7BBD\u7BC2\u7BC5\u7BC8\u7BCA\u7BD4\u7BD6\u7BD7\u7BD9\u7BDA\u7BDB\u7BE8\u7BEA\u7BF2\u7BF4\u7BF5\u7BF8\u7BF9\u7BFA\u7BFC\u7BFE\u7C01\u7C02\u7C03\u7C04\u7C06\u7C09\u7C0B\u7C0C\u7C0E\u7C0F\u7C19\u7C1B\u7C20\u7C25\u7C26\u7C28\u7C2C\u7C31\u7C33\u7C34\u7C36\u7C39\u7C3A\u7C46\u7C4A\u7C55\u7C51\u7C52\u7C53\u7C59",5],["8fd3a1","\u7C61\u7C63\u7C67\u7C69\u7C6D\u7C6E\u7C70\u7C72\u7C79\u7C7C\u7C7D\u7C86\u7C87\u7C8F\u7C94\u7C9E\u7CA0\u7CA6\u7CB0\u7CB6\u7CB7\u7CBA\u7CBB\u7CBC\u7CBF\u7CC4\u7CC7\u7CC8\u7CC9\u7CCD\u7CCF\u7CD3\u7CD4\u7CD5\u7CD7\u7CD9\u7CDA\u7CDD\u7CE6\u7CE9\u7CEB\u7CF5\u7D03\u7D07\u7D08\u7D09\u7D0F\u7D11\u7D12\u7D13\u7D16\u7D1D\u7D1E\u7D23\u7D26\u7D2A\u7D2D\u7D31\u7D3C\u7D3D\u7D3E\u7D40\u7D41\u7D47\u7D48\u7D4D\u7D51\u7D53\u7D57\u7D59\u7D5A\u7D5C\u7D5D\u7D65\u7D67\u7D6A\u7D70\u7D78\u7D7A\u7D7B\u7D7F\u7D81\u7D82\u7D83\u7D85\u7D86\u7D88\u7D8B\u7D8C\u7D8D\u7D91\u7D96\u7D97\u7D9D"],["8fd4a1","\u7D9E\u7DA6\u7DA7\u7DAA\u7DB3\u7DB6\u7DB7\u7DB9\u7DC2",4,"\u7DCC\u7DCD\u7DCE\u7DD7\u7DD9\u7E00\u7DE2\u7DE5\u7DE6\u7DEA\u7DEB\u7DED\u7DF1\u7DF5\u7DF6\u7DF9\u7DFA\u7E08\u7E10\u7E11\u7E15\u7E17\u7E1C\u7E1D\u7E20\u7E27\u7E28\u7E2C\u7E2D\u7E2F\u7E33\u7E36\u7E3F\u7E44\u7E45\u7E47\u7E4E\u7E50\u7E52\u7E58\u7E5F\u7E61\u7E62\u7E65\u7E6B\u7E6E\u7E6F\u7E73\u7E78\u7E7E\u7E81\u7E86\u7E87\u7E8A\u7E8D\u7E91\u7E95\u7E98\u7E9A\u7E9D\u7E9E\u7F3C\u7F3B\u7F3D\u7F3E\u7F3F\u7F43\u7F44\u7F47\u7F4F\u7F52\u7F53\u7F5B\u7F5C\u7F5D\u7F61\u7F63\u7F64\u7F65\u7F66\u7F6D"],["8fd5a1","\u7F71\u7F7D\u7F7E\u7F7F\u7F80\u7F8B\u7F8D\u7F8F\u7F90\u7F91\u7F96\u7F97\u7F9C\u7FA1\u7FA2\u7FA6\u7FAA\u7FAD\u7FB4\u7FBC\u7FBF\u7FC0\u7FC3\u7FC8\u7FCE\u7FCF\u7FDB\u7FDF\u7FE3\u7FE5\u7FE8\u7FEC\u7FEE\u7FEF\u7FF2\u7FFA\u7FFD\u7FFE\u7FFF\u8007\u8008\u800A\u800D\u800E\u800F\u8011\u8013\u8014\u8016\u801D\u801E\u801F\u8020\u8024\u8026\u802C\u802E\u8030\u8034\u8035\u8037\u8039\u803A\u803C\u803E\u8040\u8044\u8060\u8064\u8066\u806D\u8071\u8075\u8081\u8088\u808E\u809C\u809E\u80A6\u80A7\u80AB\u80B8\u80B9\u80C8\u80CD\u80CF\u80D2\u80D4\u80D5\u80D7\u80D8\u80E0\u80ED\u80EE"],["8fd6a1","\u80F0\u80F2\u80F3\u80F6\u80F9\u80FA\u80FE\u8103\u810B\u8116\u8117\u8118\u811C\u811E\u8120\u8124\u8127\u812C\u8130\u8135\u813A\u813C\u8145\u8147\u814A\u814C\u8152\u8157\u8160\u8161\u8167\u8168\u8169\u816D\u816F\u8177\u8181\u8190\u8184\u8185\u8186\u818B\u818E\u8196\u8198\u819B\u819E\u81A2\u81AE\u81B2\u81B4\u81BB\u81CB\u81C3\u81C5\u81CA\u81CE\u81CF\u81D5\u81D7\u81DB\u81DD\u81DE\u81E1\u81E4\u81EB\u81EC\u81F0\u81F1\u81F2\u81F5\u81F6\u81F8\u81F9\u81FD\u81FF\u8200\u8203\u820F\u8213\u8214\u8219\u821A\u821D\u8221\u8222\u8228\u8232\u8234\u823A\u8243\u8244\u8245\u8246"],["8fd7a1","\u824B\u824E\u824F\u8251\u8256\u825C\u8260\u8263\u8267\u826D\u8274\u827B\u827D\u827F\u8280\u8281\u8283\u8284\u8287\u8289\u828A\u828E\u8291\u8294\u8296\u8298\u829A\u829B\u82A0\u82A1\u82A3\u82A4\u82A7\u82A8\u82A9\u82AA\u82AE\u82B0\u82B2\u82B4\u82B7\u82BA\u82BC\u82BE\u82BF\u82C6\u82D0\u82D5\u82DA\u82E0\u82E2\u82E4\u82E8\u82EA\u82ED\u82EF\u82F6\u82F7\u82FD\u82FE\u8300\u8301\u8307\u8308\u830A\u830B\u8354\u831B\u831D\u831E\u831F\u8321\u8322\u832C\u832D\u832E\u8330\u8333\u8337\u833A\u833C\u833D\u8342\u8343\u8344\u8347\u834D\u834E\u8351\u8355\u8356\u8357\u8370\u8378"],["8fd8a1","\u837D\u837F\u8380\u8382\u8384\u8386\u838D\u8392\u8394\u8395\u8398\u8399\u839B\u839C\u839D\u83A6\u83A7\u83A9\u83AC\u83BE\u83BF\u83C0\u83C7\u83C9\u83CF\u83D0\u83D1\u83D4\u83DD\u8353\u83E8\u83EA\u83F6\u83F8\u83F9\u83FC\u8401\u8406\u840A\u840F\u8411\u8415\u8419\u83AD\u842F\u8439\u8445\u8447\u8448\u844A\u844D\u844F\u8451\u8452\u8456\u8458\u8459\u845A\u845C\u8460\u8464\u8465\u8467\u846A\u8470\u8473\u8474\u8476\u8478\u847C\u847D\u8481\u8485\u8492\u8493\u8495\u849E\u84A6\u84A8\u84A9\u84AA\u84AF\u84B1\u84B4\u84BA\u84BD\u84BE\u84C0\u84C2\u84C7\u84C8\u84CC\u84CF\u84D3"],["8fd9a1","\u84DC\u84E7\u84EA\u84EF\u84F0\u84F1\u84F2\u84F7\u8532\u84FA\u84FB\u84FD\u8502\u8503\u8507\u850C\u850E\u8510\u851C\u851E\u8522\u8523\u8524\u8525\u8527\u852A\u852B\u852F\u8533\u8534\u8536\u853F\u8546\u854F",4,"\u8556\u8559\u855C",6,"\u8564\u856B\u856F\u8579\u857A\u857B\u857D\u857F\u8581\u8585\u8586\u8589\u858B\u858C\u858F\u8593\u8598\u859D\u859F\u85A0\u85A2\u85A5\u85A7\u85B4\u85B6\u85B7\u85B8\u85BC\u85BD\u85BE\u85BF\u85C2\u85C7\u85CA\u85CB\u85CE\u85AD\u85D8\u85DA\u85DF\u85E0\u85E6\u85E8\u85ED\u85F3\u85F6\u85FC"],["8fdaa1","\u85FF\u8600\u8604\u8605\u860D\u860E\u8610\u8611\u8612\u8618\u8619\u861B\u861E\u8621\u8627\u8629\u8636\u8638\u863A\u863C\u863D\u8640\u8642\u8646\u8652\u8653\u8656\u8657\u8658\u8659\u865D\u8660",4,"\u8669\u866C\u866F\u8675\u8676\u8677\u867A\u868D\u8691\u8696\u8698\u869A\u869C\u86A1\u86A6\u86A7\u86A8\u86AD\u86B1\u86B3\u86B4\u86B5\u86B7\u86B8\u86B9\u86BF\u86C0\u86C1\u86C3\u86C5\u86D1\u86D2\u86D5\u86D7\u86DA\u86DC\u86E0\u86E3\u86E5\u86E7\u8688\u86FA\u86FC\u86FD\u8704\u8705\u8707\u870B\u870E\u870F\u8710\u8713\u8714\u8719\u871E\u871F\u8721\u8723"],["8fdba1","\u8728\u872E\u872F\u8731\u8732\u8739\u873A\u873C\u873D\u873E\u8740\u8743\u8745\u874D\u8758\u875D\u8761\u8764\u8765\u876F\u8771\u8772\u877B\u8783",6,"\u878B\u878C\u8790\u8793\u8795\u8797\u8798\u8799\u879E\u87A0\u87A3\u87A7\u87AC\u87AD\u87AE\u87B1\u87B5\u87BE\u87BF\u87C1\u87C8\u87C9\u87CA\u87CE\u87D5\u87D6\u87D9\u87DA\u87DC\u87DF\u87E2\u87E3\u87E4\u87EA\u87EB\u87ED\u87F1\u87F3\u87F8\u87FA\u87FF\u8801\u8803\u8806\u8809\u880A\u880B\u8810\u8819\u8812\u8813\u8814\u8818\u881A\u881B\u881C\u881E\u881F\u8828\u882D\u882E\u8830\u8832\u8835"],["8fdca1","\u883A\u883C\u8841\u8843\u8845\u8848\u8849\u884A\u884B\u884E\u8851\u8855\u8856\u8858\u885A\u885C\u885F\u8860\u8864\u8869\u8871\u8879\u887B\u8880\u8898\u889A\u889B\u889C\u889F\u88A0\u88A8\u88AA\u88BA\u88BD\u88BE\u88C0\u88CA",4,"\u88D1\u88D2\u88D3\u88DB\u88DE\u88E7\u88EF\u88F0\u88F1\u88F5\u88F7\u8901\u8906\u890D\u890E\u890F\u8915\u8916\u8918\u8919\u891A\u891C\u8920\u8926\u8927\u8928\u8930\u8931\u8932\u8935\u8939\u893A\u893E\u8940\u8942\u8945\u8946\u8949\u894F\u8952\u8957\u895A\u895B\u895C\u8961\u8962\u8963\u896B\u896E\u8970\u8973\u8975\u897A"],["8fdda1","\u897B\u897C\u897D\u8989\u898D\u8990\u8994\u8995\u899B\u899C\u899F\u89A0\u89A5\u89B0\u89B4\u89B5\u89B6\u89B7\u89BC\u89D4",4,"\u89E5\u89E9\u89EB\u89ED\u89F1\u89F3\u89F6\u89F9\u89FD\u89FF\u8A04\u8A05\u8A07\u8A0F\u8A11\u8A12\u8A14\u8A15\u8A1E\u8A20\u8A22\u8A24\u8A26\u8A2B\u8A2C\u8A2F\u8A35\u8A37\u8A3D\u8A3E\u8A40\u8A43\u8A45\u8A47\u8A49\u8A4D\u8A4E\u8A53\u8A56\u8A57\u8A58\u8A5C\u8A5D\u8A61\u8A65\u8A67\u8A75\u8A76\u8A77\u8A79\u8A7A\u8A7B\u8A7E\u8A7F\u8A80\u8A83\u8A86\u8A8B\u8A8F\u8A90\u8A92\u8A96\u8A97\u8A99\u8A9F\u8AA7\u8AA9\u8AAE\u8AAF\u8AB3"],["8fdea1","\u8AB6\u8AB7\u8ABB\u8ABE\u8AC3\u8AC6\u8AC8\u8AC9\u8ACA\u8AD1\u8AD3\u8AD4\u8AD5\u8AD7\u8ADD\u8ADF\u8AEC\u8AF0\u8AF4\u8AF5\u8AF6\u8AFC\u8AFF\u8B05\u8B06\u8B0B\u8B11\u8B1C\u8B1E\u8B1F\u8B0A\u8B2D\u8B30\u8B37\u8B3C\u8B42",4,"\u8B48\u8B52\u8B53\u8B54\u8B59\u8B4D\u8B5E\u8B63\u8B6D\u8B76\u8B78\u8B79\u8B7C\u8B7E\u8B81\u8B84\u8B85\u8B8B\u8B8D\u8B8F\u8B94\u8B95\u8B9C\u8B9E\u8B9F\u8C38\u8C39\u8C3D\u8C3E\u8C45\u8C47\u8C49\u8C4B\u8C4F\u8C51\u8C53\u8C54\u8C57\u8C58\u8C5B\u8C5D\u8C59\u8C63\u8C64\u8C66\u8C68\u8C69\u8C6D\u8C73\u8C75\u8C76\u8C7B\u8C7E\u8C86"],["8fdfa1","\u8C87\u8C8B\u8C90\u8C92\u8C93\u8C99\u8C9B\u8C9C\u8CA4\u8CB9\u8CBA\u8CC5\u8CC6\u8CC9\u8CCB\u8CCF\u8CD6\u8CD5\u8CD9\u8CDD\u8CE1\u8CE8\u8CEC\u8CEF\u8CF0\u8CF2\u8CF5\u8CF7\u8CF8\u8CFE\u8CFF\u8D01\u8D03\u8D09\u8D12\u8D17\u8D1B\u8D65\u8D69\u8D6C\u8D6E\u8D7F\u8D82\u8D84\u8D88\u8D8D\u8D90\u8D91\u8D95\u8D9E\u8D9F\u8DA0\u8DA6\u8DAB\u8DAC\u8DAF\u8DB2\u8DB5\u8DB7\u8DB9\u8DBB\u8DC0\u8DC5\u8DC6\u8DC7\u8DC8\u8DCA\u8DCE\u8DD1\u8DD4\u8DD5\u8DD7\u8DD9\u8DE4\u8DE5\u8DE7\u8DEC\u8DF0\u8DBC\u8DF1\u8DF2\u8DF4\u8DFD\u8E01\u8E04\u8E05\u8E06\u8E0B\u8E11\u8E14\u8E16\u8E20\u8E21\u8E22"],["8fe0a1","\u8E23\u8E26\u8E27\u8E31\u8E33\u8E36\u8E37\u8E38\u8E39\u8E3D\u8E40\u8E41\u8E4B\u8E4D\u8E4E\u8E4F\u8E54\u8E5B\u8E5C\u8E5D\u8E5E\u8E61\u8E62\u8E69\u8E6C\u8E6D\u8E6F\u8E70\u8E71\u8E79\u8E7A\u8E7B\u8E82\u8E83\u8E89\u8E90\u8E92\u8E95\u8E9A\u8E9B\u8E9D\u8E9E\u8EA2\u8EA7\u8EA9\u8EAD\u8EAE\u8EB3\u8EB5\u8EBA\u8EBB\u8EC0\u8EC1\u8EC3\u8EC4\u8EC7\u8ECF\u8ED1\u8ED4\u8EDC\u8EE8\u8EEE\u8EF0\u8EF1\u8EF7\u8EF9\u8EFA\u8EED\u8F00\u8F02\u8F07\u8F08\u8F0F\u8F10\u8F16\u8F17\u8F18\u8F1E\u8F20\u8F21\u8F23\u8F25\u8F27\u8F28\u8F2C\u8F2D\u8F2E\u8F34\u8F35\u8F36\u8F37\u8F3A\u8F40\u8F41"],["8fe1a1","\u8F43\u8F47\u8F4F\u8F51",4,"\u8F58\u8F5D\u8F5E\u8F65\u8F9D\u8FA0\u8FA1\u8FA4\u8FA5\u8FA6\u8FB5\u8FB6\u8FB8\u8FBE\u8FC0\u8FC1\u8FC6\u8FCA\u8FCB\u8FCD\u8FD0\u8FD2\u8FD3\u8FD5\u8FE0\u8FE3\u8FE4\u8FE8\u8FEE\u8FF1\u8FF5\u8FF6\u8FFB\u8FFE\u9002\u9004\u9008\u900C\u9018\u901B\u9028\u9029\u902F\u902A\u902C\u902D\u9033\u9034\u9037\u903F\u9043\u9044\u904C\u905B\u905D\u9062\u9066\u9067\u906C\u9070\u9074\u9079\u9085\u9088\u908B\u908C\u908E\u9090\u9095\u9097\u9098\u9099\u909B\u90A0\u90A1\u90A2\u90A5\u90B0\u90B2\u90B3\u90B4\u90B6\u90BD\u90CC\u90BE\u90C3"],["8fe2a1","\u90C4\u90C5\u90C7\u90C8\u90D5\u90D7\u90D8\u90D9\u90DC\u90DD\u90DF\u90E5\u90D2\u90F6\u90EB\u90EF\u90F0\u90F4\u90FE\u90FF\u9100\u9104\u9105\u9106\u9108\u910D\u9110\u9114\u9116\u9117\u9118\u911A\u911C\u911E\u9120\u9125\u9122\u9123\u9127\u9129\u912E\u912F\u9131\u9134\u9136\u9137\u9139\u913A\u913C\u913D\u9143\u9147\u9148\u914F\u9153\u9157\u9159\u915A\u915B\u9161\u9164\u9167\u916D\u9174\u9179\u917A\u917B\u9181\u9183\u9185\u9186\u918A\u918E\u9191\u9193\u9194\u9195\u9198\u919E\u91A1\u91A6\u91A8\u91AC\u91AD\u91AE\u91B0\u91B1\u91B2\u91B3\u91B6\u91BB\u91BC\u91BD\u91BF"],["8fe3a1","\u91C2\u91C3\u91C5\u91D3\u91D4\u91D7\u91D9\u91DA\u91DE\u91E4\u91E5\u91E9\u91EA\u91EC",5,"\u91F7\u91F9\u91FB\u91FD\u9200\u9201\u9204\u9205\u9206\u9207\u9209\u920A\u920C\u9210\u9212\u9213\u9216\u9218\u921C\u921D\u9223\u9224\u9225\u9226\u9228\u922E\u922F\u9230\u9233\u9235\u9236\u9238\u9239\u923A\u923C\u923E\u9240\u9242\u9243\u9246\u9247\u924A\u924D\u924E\u924F\u9251\u9258\u9259\u925C\u925D\u9260\u9261\u9265\u9267\u9268\u9269\u926E\u926F\u9270\u9275",4,"\u927B\u927C\u927D\u927F\u9288\u9289\u928A\u928D\u928E\u9292\u9297"],["8fe4a1","\u9299\u929F\u92A0\u92A4\u92A5\u92A7\u92A8\u92AB\u92AF\u92B2\u92B6\u92B8\u92BA\u92BB\u92BC\u92BD\u92BF",4,"\u92C5\u92C6\u92C7\u92C8\u92CB\u92CC\u92CD\u92CE\u92D0\u92D3\u92D5\u92D7\u92D8\u92D9\u92DC\u92DD\u92DF\u92E0\u92E1\u92E3\u92E5\u92E7\u92E8\u92EC\u92EE\u92F0\u92F9\u92FB\u92FF\u9300\u9302\u9308\u930D\u9311\u9314\u9315\u931C\u931D\u931E\u931F\u9321\u9324\u9325\u9327\u9329\u932A\u9333\u9334\u9336\u9337\u9347\u9348\u9349\u9350\u9351\u9352\u9355\u9357\u9358\u935A\u935E\u9364\u9365\u9367\u9369\u936A\u936D\u936F\u9370\u9371\u9373\u9374\u9376"],["8fe5a1","\u937A\u937D\u937F\u9380\u9381\u9382\u9388\u938A\u938B\u938D\u938F\u9392\u9395\u9398\u939B\u939E\u93A1\u93A3\u93A4\u93A6\u93A8\u93AB\u93B4\u93B5\u93B6\u93BA\u93A9\u93C1\u93C4\u93C5\u93C6\u93C7\u93C9",4,"\u93D3\u93D9\u93DC\u93DE\u93DF\u93E2\u93E6\u93E7\u93F9\u93F7\u93F8\u93FA\u93FB\u93FD\u9401\u9402\u9404\u9408\u9409\u940D\u940E\u940F\u9415\u9416\u9417\u941F\u942E\u942F\u9431\u9432\u9433\u9434\u943B\u943F\u943D\u9443\u9445\u9448\u944A\u944C\u9455\u9459\u945C\u945F\u9461\u9463\u9468\u946B\u946D\u946E\u946F\u9471\u9472\u9484\u9483\u9578\u9579"],["8fe6a1","\u957E\u9584\u9588\u958C\u958D\u958E\u959D\u959E\u959F\u95A1\u95A6\u95A9\u95AB\u95AC\u95B4\u95B6\u95BA\u95BD\u95BF\u95C6\u95C8\u95C9\u95CB\u95D0\u95D1\u95D2\u95D3\u95D9\u95DA\u95DD\u95DE\u95DF\u95E0\u95E4\u95E6\u961D\u961E\u9622\u9624\u9625\u9626\u962C\u9631\u9633\u9637\u9638\u9639\u963A\u963C\u963D\u9641\u9652\u9654\u9656\u9657\u9658\u9661\u966E\u9674\u967B\u967C\u967E\u967F\u9681\u9682\u9683\u9684\u9689\u9691\u9696\u969A\u969D\u969F\u96A4\u96A5\u96A6\u96A9\u96AE\u96AF\u96B3\u96BA\u96CA\u96D2\u5DB2\u96D8\u96DA\u96DD\u96DE\u96DF\u96E9\u96EF\u96F1\u96FA\u9702"],["8fe7a1","\u9703\u9705\u9709\u971A\u971B\u971D\u9721\u9722\u9723\u9728\u9731\u9733\u9741\u9743\u974A\u974E\u974F\u9755\u9757\u9758\u975A\u975B\u9763\u9767\u976A\u976E\u9773\u9776\u9777\u9778\u977B\u977D\u977F\u9780\u9789\u9795\u9796\u9797\u9799\u979A\u979E\u979F\u97A2\u97AC\u97AE\u97B1\u97B2\u97B5\u97B6\u97B8\u97B9\u97BA\u97BC\u97BE\u97BF\u97C1\u97C4\u97C5\u97C7\u97C9\u97CA\u97CC\u97CD\u97CE\u97D0\u97D1\u97D4\u97D7\u97D8\u97D9\u97DD\u97DE\u97E0\u97DB\u97E1\u97E4\u97EF\u97F1\u97F4\u97F7\u97F8\u97FA\u9807\u980A\u9819\u980D\u980E\u9814\u9816\u981C\u981E\u9820\u9823\u9826"],["8fe8a1","\u982B\u982E\u982F\u9830\u9832\u9833\u9835\u9825\u983E\u9844\u9847\u984A\u9851\u9852\u9853\u9856\u9857\u9859\u985A\u9862\u9863\u9865\u9866\u986A\u986C\u98AB\u98AD\u98AE\u98B0\u98B4\u98B7\u98B8\u98BA\u98BB\u98BF\u98C2\u98C5\u98C8\u98CC\u98E1\u98E3\u98E5\u98E6\u98E7\u98EA\u98F3\u98F6\u9902\u9907\u9908\u9911\u9915\u9916\u9917\u991A\u991B\u991C\u991F\u9922\u9926\u9927\u992B\u9931",4,"\u9939\u993A\u993B\u993C\u9940\u9941\u9946\u9947\u9948\u994D\u994E\u9954\u9958\u9959\u995B\u995C\u995E\u995F\u9960\u999B\u999D\u999F\u99A6\u99B0\u99B1\u99B2\u99B5"],["8fe9a1","\u99B9\u99BA\u99BD\u99BF\u99C3\u99C9\u99D3\u99D4\u99D9\u99DA\u99DC\u99DE\u99E7\u99EA\u99EB\u99EC\u99F0\u99F4\u99F5\u99F9\u99FD\u99FE\u9A02\u9A03\u9A04\u9A0B\u9A0C\u9A10\u9A11\u9A16\u9A1E\u9A20\u9A22\u9A23\u9A24\u9A27\u9A2D\u9A2E\u9A33\u9A35\u9A36\u9A38\u9A47\u9A41\u9A44\u9A4A\u9A4B\u9A4C\u9A4E\u9A51\u9A54\u9A56\u9A5D\u9AAA\u9AAC\u9AAE\u9AAF\u9AB2\u9AB4\u9AB5\u9AB6\u9AB9\u9ABB\u9ABE\u9ABF\u9AC1\u9AC3\u9AC6\u9AC8\u9ACE\u9AD0\u9AD2\u9AD5\u9AD6\u9AD7\u9ADB\u9ADC\u9AE0\u9AE4\u9AE5\u9AE7\u9AE9\u9AEC\u9AF2\u9AF3\u9AF5\u9AF9\u9AFA\u9AFD\u9AFF",4],["8feaa1","\u9B04\u9B05\u9B08\u9B09\u9B0B\u9B0C\u9B0D\u9B0E\u9B10\u9B12\u9B16\u9B19\u9B1B\u9B1C\u9B20\u9B26\u9B2B\u9B2D\u9B33\u9B34\u9B35\u9B37\u9B39\u9B3A\u9B3D\u9B48\u9B4B\u9B4C\u9B55\u9B56\u9B57\u9B5B\u9B5E\u9B61\u9B63\u9B65\u9B66\u9B68\u9B6A",4,"\u9B73\u9B75\u9B77\u9B78\u9B79\u9B7F\u9B80\u9B84\u9B85\u9B86\u9B87\u9B89\u9B8A\u9B8B\u9B8D\u9B8F\u9B90\u9B94\u9B9A\u9B9D\u9B9E\u9BA6\u9BA7\u9BA9\u9BAC\u9BB0\u9BB1\u9BB2\u9BB7\u9BB8\u9BBB\u9BBC\u9BBE\u9BBF\u9BC1\u9BC7\u9BC8\u9BCE\u9BD0\u9BD7\u9BD8\u9BDD\u9BDF\u9BE5\u9BE7\u9BEA\u9BEB\u9BEF\u9BF3\u9BF7\u9BF8"],["8feba1","\u9BF9\u9BFA\u9BFD\u9BFF\u9C00\u9C02\u9C0B\u9C0F\u9C11\u9C16\u9C18\u9C19\u9C1A\u9C1C\u9C1E\u9C22\u9C23\u9C26",4,"\u9C31\u9C35\u9C36\u9C37\u9C3D\u9C41\u9C43\u9C44\u9C45\u9C49\u9C4A\u9C4E\u9C4F\u9C50\u9C53\u9C54\u9C56\u9C58\u9C5B\u9C5D\u9C5E\u9C5F\u9C63\u9C69\u9C6A\u9C5C\u9C6B\u9C68\u9C6E\u9C70\u9C72\u9C75\u9C77\u9C7B\u9CE6\u9CF2\u9CF7\u9CF9\u9D0B\u9D02\u9D11\u9D17\u9D18\u9D1C\u9D1D\u9D1E\u9D2F\u9D30\u9D32\u9D33\u9D34\u9D3A\u9D3C\u9D45\u9D3D\u9D42\u9D43\u9D47\u9D4A\u9D53\u9D54\u9D5F\u9D63\u9D62\u9D65\u9D69\u9D6A\u9D6B\u9D70\u9D76\u9D77\u9D7B"],["8feca1","\u9D7C\u9D7E\u9D83\u9D84\u9D86\u9D8A\u9D8D\u9D8E\u9D92\u9D93\u9D95\u9D96\u9D97\u9D98\u9DA1\u9DAA\u9DAC\u9DAE\u9DB1\u9DB5\u9DB9\u9DBC\u9DBF\u9DC3\u9DC7\u9DC9\u9DCA\u9DD4\u9DD5\u9DD6\u9DD7\u9DDA\u9DDE\u9DDF\u9DE0\u9DE5\u9DE7\u9DE9\u9DEB\u9DEE\u9DF0\u9DF3\u9DF4\u9DFE\u9E0A\u9E02\u9E07\u9E0E\u9E10\u9E11\u9E12\u9E15\u9E16\u9E19\u9E1C\u9E1D\u9E7A\u9E7B\u9E7C\u9E80\u9E82\u9E83\u9E84\u9E85\u9E87\u9E8E\u9E8F\u9E96\u9E98\u9E9B\u9E9E\u9EA4\u9EA8\u9EAC\u9EAE\u9EAF\u9EB0\u9EB3\u9EB4\u9EB5\u9EC6\u9EC8\u9ECB\u9ED5\u9EDF\u9EE4\u9EE7\u9EEC\u9EED\u9EEE\u9EF0\u9EF1\u9EF2\u9EF5"],["8feda1","\u9EF8\u9EFF\u9F02\u9F03\u9F09\u9F0F\u9F10\u9F11\u9F12\u9F14\u9F16\u9F17\u9F19\u9F1A\u9F1B\u9F1F\u9F22\u9F26\u9F2A\u9F2B\u9F2F\u9F31\u9F32\u9F34\u9F37\u9F39\u9F3A\u9F3C\u9F3D\u9F3F\u9F41\u9F43",4,"\u9F53\u9F55\u9F56\u9F57\u9F58\u9F5A\u9F5D\u9F5E\u9F68\u9F69\u9F6D",4,"\u9F73\u9F75\u9F7A\u9F7D\u9F8F\u9F90\u9F91\u9F92\u9F94\u9F96\u9F97\u9F9E\u9FA1\u9FA2\u9FA3\u9FA5"]]});var kp=h((SOe,bY)=>{bY.exports=[["0","\0",127,"\u20AC"],["8140","\u4E02\u4E04\u4E05\u4E06\u4E0F\u4E12\u4E17\u4E1F\u4E20\u4E21\u4E23\u4E26\u4E29\u4E2E\u4E2F\u4E31\u4E33\u4E35\u4E37\u4E3C\u4E40\u4E41\u4E42\u4E44\u4E46\u4E4A\u4E51\u4E55\u4E57\u4E5A\u4E5B\u4E62\u4E63\u4E64\u4E65\u4E67\u4E68\u4E6A",5,"\u4E72\u4E74",9,"\u4E7F",6,"\u4E87\u4E8A"],["8180","\u4E90\u4E96\u4E97\u4E99\u4E9C\u4E9D\u4E9E\u4EA3\u4EAA\u4EAF\u4EB0\u4EB1\u4EB4\u4EB6\u4EB7\u4EB8\u4EB9\u4EBC\u4EBD\u4EBE\u4EC8\u4ECC\u4ECF\u4ED0\u4ED2\u4EDA\u4EDB\u4EDC\u4EE0\u4EE2\u4EE6\u4EE7\u4EE9\u4EED\u4EEE\u4EEF\u4EF1\u4EF4\u4EF8\u4EF9\u4EFA\u4EFC\u4EFE\u4F00\u4F02",6,"\u4F0B\u4F0C\u4F12",4,"\u4F1C\u4F1D\u4F21\u4F23\u4F28\u4F29\u4F2C\u4F2D\u4F2E\u4F31\u4F33\u4F35\u4F37\u4F39\u4F3B\u4F3E",4,"\u4F44\u4F45\u4F47",5,"\u4F52\u4F54\u4F56\u4F61\u4F62\u4F66\u4F68\u4F6A\u4F6B\u4F6D\u4F6E\u4F71\u4F72\u4F75\u4F77\u4F78\u4F79\u4F7A\u4F7D\u4F80\u4F81\u4F82\u4F85\u4F86\u4F87\u4F8A\u4F8C\u4F8E\u4F90\u4F92\u4F93\u4F95\u4F96\u4F98\u4F99\u4F9A\u4F9C\u4F9E\u4F9F\u4FA1\u4FA2"],["8240","\u4FA4\u4FAB\u4FAD\u4FB0",4,"\u4FB6",8,"\u4FC0\u4FC1\u4FC2\u4FC6\u4FC7\u4FC8\u4FC9\u4FCB\u4FCC\u4FCD\u4FD2",4,"\u4FD9\u4FDB\u4FE0\u4FE2\u4FE4\u4FE5\u4FE7\u4FEB\u4FEC\u4FF0\u4FF2\u4FF4\u4FF5\u4FF6\u4FF7\u4FF9\u4FFB\u4FFC\u4FFD\u4FFF",11],["8280","\u500B\u500E\u5010\u5011\u5013\u5015\u5016\u5017\u501B\u501D\u501E\u5020\u5022\u5023\u5024\u5027\u502B\u502F",10,"\u503B\u503D\u503F\u5040\u5041\u5042\u5044\u5045\u5046\u5049\u504A\u504B\u504D\u5050",4,"\u5056\u5057\u5058\u5059\u505B\u505D",7,"\u5066",5,"\u506D",8,"\u5078\u5079\u507A\u507C\u507D\u5081\u5082\u5083\u5084\u5086\u5087\u5089\u508A\u508B\u508C\u508E",20,"\u50A4\u50A6\u50AA\u50AB\u50AD",4,"\u50B3",6,"\u50BC"],["8340","\u50BD",17,"\u50D0",5,"\u50D7\u50D8\u50D9\u50DB",10,"\u50E8\u50E9\u50EA\u50EB\u50EF\u50F0\u50F1\u50F2\u50F4\u50F6",4,"\u50FC",9,"\u5108"],["8380","\u5109\u510A\u510C",5,"\u5113",13,"\u5122",28,"\u5142\u5147\u514A\u514C\u514E\u514F\u5150\u5152\u5153\u5157\u5158\u5159\u515B\u515D",4,"\u5163\u5164\u5166\u5167\u5169\u516A\u516F\u5172\u517A\u517E\u517F\u5183\u5184\u5186\u5187\u518A\u518B\u518E\u518F\u5190\u5191\u5193\u5194\u5198\u519A\u519D\u519E\u519F\u51A1\u51A3\u51A6",4,"\u51AD\u51AE\u51B4\u51B8\u51B9\u51BA\u51BE\u51BF\u51C1\u51C2\u51C3\u51C5\u51C8\u51CA\u51CD\u51CE\u51D0\u51D2",5],["8440","\u51D8\u51D9\u51DA\u51DC\u51DE\u51DF\u51E2\u51E3\u51E5",5,"\u51EC\u51EE\u51F1\u51F2\u51F4\u51F7\u51FE\u5204\u5205\u5209\u520B\u520C\u520F\u5210\u5213\u5214\u5215\u521C\u521E\u521F\u5221\u5222\u5223\u5225\u5226\u5227\u522A\u522C\u522F\u5231\u5232\u5234\u5235\u523C\u523E\u5244",5,"\u524B\u524E\u524F\u5252\u5253\u5255\u5257\u5258"],["8480","\u5259\u525A\u525B\u525D\u525F\u5260\u5262\u5263\u5264\u5266\u5268\u526B\u526C\u526D\u526E\u5270\u5271\u5273",9,"\u527E\u5280\u5283",4,"\u5289",6,"\u5291\u5292\u5294",6,"\u529C\u52A4\u52A5\u52A6\u52A7\u52AE\u52AF\u52B0\u52B4",9,"\u52C0\u52C1\u52C2\u52C4\u52C5\u52C6\u52C8\u52CA\u52CC\u52CD\u52CE\u52CF\u52D1\u52D3\u52D4\u52D5\u52D7\u52D9",5,"\u52E0\u52E1\u52E2\u52E3\u52E5",10,"\u52F1",7,"\u52FB\u52FC\u52FD\u5301\u5302\u5303\u5304\u5307\u5309\u530A\u530B\u530C\u530E"],["8540","\u5311\u5312\u5313\u5314\u5318\u531B\u531C\u531E\u531F\u5322\u5324\u5325\u5327\u5328\u5329\u532B\u532C\u532D\u532F",9,"\u533C\u533D\u5340\u5342\u5344\u5346\u534B\u534C\u534D\u5350\u5354\u5358\u5359\u535B\u535D\u5365\u5368\u536A\u536C\u536D\u5372\u5376\u5379\u537B\u537C\u537D\u537E\u5380\u5381\u5383\u5387\u5388\u538A\u538E\u538F"],["8580","\u5390",4,"\u5396\u5397\u5399\u539B\u539C\u539E\u53A0\u53A1\u53A4\u53A7\u53AA\u53AB\u53AC\u53AD\u53AF",6,"\u53B7\u53B8\u53B9\u53BA\u53BC\u53BD\u53BE\u53C0\u53C3",4,"\u53CE\u53CF\u53D0\u53D2\u53D3\u53D5\u53DA\u53DC\u53DD\u53DE\u53E1\u53E2\u53E7\u53F4\u53FA\u53FE\u53FF\u5400\u5402\u5405\u5407\u540B\u5414\u5418\u5419\u541A\u541C\u5422\u5424\u5425\u542A\u5430\u5433\u5436\u5437\u543A\u543D\u543F\u5441\u5442\u5444\u5445\u5447\u5449\u544C\u544D\u544E\u544F\u5451\u545A\u545D",4,"\u5463\u5465\u5467\u5469",7,"\u5474\u5479\u547A\u547E\u547F\u5481\u5483\u5485\u5487\u5488\u5489\u548A\u548D\u5491\u5493\u5497\u5498\u549C\u549E\u549F\u54A0\u54A1"],["8640","\u54A2\u54A5\u54AE\u54B0\u54B2\u54B5\u54B6\u54B7\u54B9\u54BA\u54BC\u54BE\u54C3\u54C5\u54CA\u54CB\u54D6\u54D8\u54DB\u54E0",4,"\u54EB\u54EC\u54EF\u54F0\u54F1\u54F4",5,"\u54FB\u54FE\u5500\u5502\u5503\u5504\u5505\u5508\u550A",4,"\u5512\u5513\u5515",5,"\u551C\u551D\u551E\u551F\u5521\u5525\u5526"],["8680","\u5528\u5529\u552B\u552D\u5532\u5534\u5535\u5536\u5538\u5539\u553A\u553B\u553D\u5540\u5542\u5545\u5547\u5548\u554B",4,"\u5551\u5552\u5553\u5554\u5557",4,"\u555D\u555E\u555F\u5560\u5562\u5563\u5568\u5569\u556B\u556F",5,"\u5579\u557A\u557D\u557F\u5585\u5586\u558C\u558D\u558E\u5590\u5592\u5593\u5595\u5596\u5597\u559A\u559B\u559E\u55A0",6,"\u55A8",8,"\u55B2\u55B4\u55B6\u55B8\u55BA\u55BC\u55BF",4,"\u55C6\u55C7\u55C8\u55CA\u55CB\u55CE\u55CF\u55D0\u55D5\u55D7",4,"\u55DE\u55E0\u55E2\u55E7\u55E9\u55ED\u55EE\u55F0\u55F1\u55F4\u55F6\u55F8",4,"\u55FF\u5602\u5603\u5604\u5605"],["8740","\u5606\u5607\u560A\u560B\u560D\u5610",7,"\u5619\u561A\u561C\u561D\u5620\u5621\u5622\u5625\u5626\u5628\u5629\u562A\u562B\u562E\u562F\u5630\u5633\u5635\u5637\u5638\u563A\u563C\u563D\u563E\u5640",11,"\u564F",4,"\u5655\u5656\u565A\u565B\u565D",4],["8780","\u5663\u5665\u5666\u5667\u566D\u566E\u566F\u5670\u5672\u5673\u5674\u5675\u5677\u5678\u5679\u567A\u567D",7,"\u5687",6,"\u5690\u5691\u5692\u5694",14,"\u56A4",10,"\u56B0",6,"\u56B8\u56B9\u56BA\u56BB\u56BD",12,"\u56CB",8,"\u56D5\u56D6\u56D8\u56D9\u56DC\u56E3\u56E5",5,"\u56EC\u56EE\u56EF\u56F2\u56F3\u56F6\u56F7\u56F8\u56FB\u56FC\u5700\u5701\u5702\u5705\u5707\u570B",6],["8840","\u5712",9,"\u571D\u571E\u5720\u5721\u5722\u5724\u5725\u5726\u5727\u572B\u5731\u5732\u5734",4,"\u573C\u573D\u573F\u5741\u5743\u5744\u5745\u5746\u5748\u5749\u574B\u5752",4,"\u5758\u5759\u5762\u5763\u5765\u5767\u576C\u576E\u5770\u5771\u5772\u5774\u5775\u5778\u5779\u577A\u577D\u577E\u577F\u5780"],["8880","\u5781\u5787\u5788\u5789\u578A\u578D",4,"\u5794",6,"\u579C\u579D\u579E\u579F\u57A5\u57A8\u57AA\u57AC\u57AF\u57B0\u57B1\u57B3\u57B5\u57B6\u57B7\u57B9",8,"\u57C4",6,"\u57CC\u57CD\u57D0\u57D1\u57D3\u57D6\u57D7\u57DB\u57DC\u57DE\u57E1\u57E2\u57E3\u57E5",7,"\u57EE\u57F0\u57F1\u57F2\u57F3\u57F5\u57F6\u57F7\u57FB\u57FC\u57FE\u57FF\u5801\u5803\u5804\u5805\u5808\u5809\u580A\u580C\u580E\u580F\u5810\u5812\u5813\u5814\u5816\u5817\u5818\u581A\u581B\u581C\u581D\u581F\u5822\u5823\u5825",4,"\u582B",4,"\u5831\u5832\u5833\u5834\u5836",7],["8940","\u583E",5,"\u5845",6,"\u584E\u584F\u5850\u5852\u5853\u5855\u5856\u5857\u5859",4,"\u585F",5,"\u5866",4,"\u586D",16,"\u587F\u5882\u5884\u5886\u5887\u5888\u588A\u588B\u588C"],["8980","\u588D",4,"\u5894",4,"\u589B\u589C\u589D\u58A0",7,"\u58AA",17,"\u58BD\u58BE\u58BF\u58C0\u58C2\u58C3\u58C4\u58C6",10,"\u58D2\u58D3\u58D4\u58D6",13,"\u58E5",5,"\u58ED\u58EF\u58F1\u58F2\u58F4\u58F5\u58F7\u58F8\u58FA",7,"\u5903\u5905\u5906\u5908",4,"\u590E\u5910\u5911\u5912\u5913\u5917\u5918\u591B\u591D\u591E\u5920\u5921\u5922\u5923\u5926\u5928\u592C\u5930\u5932\u5933\u5935\u5936\u593B"],["8a40","\u593D\u593E\u593F\u5940\u5943\u5945\u5946\u594A\u594C\u594D\u5950\u5952\u5953\u5959\u595B",4,"\u5961\u5963\u5964\u5966",12,"\u5975\u5977\u597A\u597B\u597C\u597E\u597F\u5980\u5985\u5989\u598B\u598C\u598E\u598F\u5990\u5991\u5994\u5995\u5998\u599A\u599B\u599C\u599D\u599F\u59A0\u59A1\u59A2\u59A6"],["8a80","\u59A7\u59AC\u59AD\u59B0\u59B1\u59B3",5,"\u59BA\u59BC\u59BD\u59BF",6,"\u59C7\u59C8\u59C9\u59CC\u59CD\u59CE\u59CF\u59D5\u59D6\u59D9\u59DB\u59DE",4,"\u59E4\u59E6\u59E7\u59E9\u59EA\u59EB\u59ED",11,"\u59FA\u59FC\u59FD\u59FE\u5A00\u5A02\u5A0A\u5A0B\u5A0D\u5A0E\u5A0F\u5A10\u5A12\u5A14\u5A15\u5A16\u5A17\u5A19\u5A1A\u5A1B\u5A1D\u5A1E\u5A21\u5A22\u5A24\u5A26\u5A27\u5A28\u5A2A",6,"\u5A33\u5A35\u5A37",4,"\u5A3D\u5A3E\u5A3F\u5A41",4,"\u5A47\u5A48\u5A4B",9,"\u5A56\u5A57\u5A58\u5A59\u5A5B",5],["8b40","\u5A61\u5A63\u5A64\u5A65\u5A66\u5A68\u5A69\u5A6B",8,"\u5A78\u5A79\u5A7B\u5A7C\u5A7D\u5A7E\u5A80",17,"\u5A93",6,"\u5A9C",13,"\u5AAB\u5AAC"],["8b80","\u5AAD",4,"\u5AB4\u5AB6\u5AB7\u5AB9",4,"\u5ABF\u5AC0\u5AC3",5,"\u5ACA\u5ACB\u5ACD",4,"\u5AD3\u5AD5\u5AD7\u5AD9\u5ADA\u5ADB\u5ADD\u5ADE\u5ADF\u5AE2\u5AE4\u5AE5\u5AE7\u5AE8\u5AEA\u5AEC",4,"\u5AF2",22,"\u5B0A",11,"\u5B18",25,"\u5B33\u5B35\u5B36\u5B38",7,"\u5B41",6],["8c40","\u5B48",7,"\u5B52\u5B56\u5B5E\u5B60\u5B61\u5B67\u5B68\u5B6B\u5B6D\u5B6E\u5B6F\u5B72\u5B74\u5B76\u5B77\u5B78\u5B79\u5B7B\u5B7C\u5B7E\u5B7F\u5B82\u5B86\u5B8A\u5B8D\u5B8E\u5B90\u5B91\u5B92\u5B94\u5B96\u5B9F\u5BA7\u5BA8\u5BA9\u5BAC\u5BAD\u5BAE\u5BAF\u5BB1\u5BB2\u5BB7\u5BBA\u5BBB\u5BBC\u5BC0\u5BC1\u5BC3\u5BC8\u5BC9\u5BCA\u5BCB\u5BCD\u5BCE\u5BCF"],["8c80","\u5BD1\u5BD4",8,"\u5BE0\u5BE2\u5BE3\u5BE6\u5BE7\u5BE9",4,"\u5BEF\u5BF1",6,"\u5BFD\u5BFE\u5C00\u5C02\u5C03\u5C05\u5C07\u5C08\u5C0B\u5C0C\u5C0D\u5C0E\u5C10\u5C12\u5C13\u5C17\u5C19\u5C1B\u5C1E\u5C1F\u5C20\u5C21\u5C23\u5C26\u5C28\u5C29\u5C2A\u5C2B\u5C2D\u5C2E\u5C2F\u5C30\u5C32\u5C33\u5C35\u5C36\u5C37\u5C43\u5C44\u5C46\u5C47\u5C4C\u5C4D\u5C52\u5C53\u5C54\u5C56\u5C57\u5C58\u5C5A\u5C5B\u5C5C\u5C5D\u5C5F\u5C62\u5C64\u5C67",6,"\u5C70\u5C72",6,"\u5C7B\u5C7C\u5C7D\u5C7E\u5C80\u5C83",4,"\u5C89\u5C8A\u5C8B\u5C8E\u5C8F\u5C92\u5C93\u5C95\u5C9D",4,"\u5CA4",4],["8d40","\u5CAA\u5CAE\u5CAF\u5CB0\u5CB2\u5CB4\u5CB6\u5CB9\u5CBA\u5CBB\u5CBC\u5CBE\u5CC0\u5CC2\u5CC3\u5CC5",5,"\u5CCC",5,"\u5CD3",5,"\u5CDA",6,"\u5CE2\u5CE3\u5CE7\u5CE9\u5CEB\u5CEC\u5CEE\u5CEF\u5CF1",9,"\u5CFC",4],["8d80","\u5D01\u5D04\u5D05\u5D08",5,"\u5D0F",4,"\u5D15\u5D17\u5D18\u5D19\u5D1A\u5D1C\u5D1D\u5D1F",4,"\u5D25\u5D28\u5D2A\u5D2B\u5D2C\u5D2F",4,"\u5D35",7,"\u5D3F",7,"\u5D48\u5D49\u5D4D",10,"\u5D59\u5D5A\u5D5C\u5D5E",10,"\u5D6A\u5D6D\u5D6E\u5D70\u5D71\u5D72\u5D73\u5D75",12,"\u5D83",21,"\u5D9A\u5D9B\u5D9C\u5D9E\u5D9F\u5DA0"],["8e40","\u5DA1",21,"\u5DB8",12,"\u5DC6",6,"\u5DCE",12,"\u5DDC\u5DDF\u5DE0\u5DE3\u5DE4\u5DEA\u5DEC\u5DED"],["8e80","\u5DF0\u5DF5\u5DF6\u5DF8",4,"\u5DFF\u5E00\u5E04\u5E07\u5E09\u5E0A\u5E0B\u5E0D\u5E0E\u5E12\u5E13\u5E17\u5E1E",7,"\u5E28",4,"\u5E2F\u5E30\u5E32",4,"\u5E39\u5E3A\u5E3E\u5E3F\u5E40\u5E41\u5E43\u5E46",5,"\u5E4D",6,"\u5E56",4,"\u5E5C\u5E5D\u5E5F\u5E60\u5E63",14,"\u5E75\u5E77\u5E79\u5E7E\u5E81\u5E82\u5E83\u5E85\u5E88\u5E89\u5E8C\u5E8D\u5E8E\u5E92\u5E98\u5E9B\u5E9D\u5EA1\u5EA2\u5EA3\u5EA4\u5EA8",4,"\u5EAE",4,"\u5EB4\u5EBA\u5EBB\u5EBC\u5EBD\u5EBF",6],["8f40","\u5EC6\u5EC7\u5EC8\u5ECB",5,"\u5ED4\u5ED5\u5ED7\u5ED8\u5ED9\u5EDA\u5EDC",11,"\u5EE9\u5EEB",8,"\u5EF5\u5EF8\u5EF9\u5EFB\u5EFC\u5EFD\u5F05\u5F06\u5F07\u5F09\u5F0C\u5F0D\u5F0E\u5F10\u5F12\u5F14\u5F16\u5F19\u5F1A\u5F1C\u5F1D\u5F1E\u5F21\u5F22\u5F23\u5F24"],["8f80","\u5F28\u5F2B\u5F2C\u5F2E\u5F30\u5F32",6,"\u5F3B\u5F3D\u5F3E\u5F3F\u5F41",14,"\u5F51\u5F54\u5F59\u5F5A\u5F5B\u5F5C\u5F5E\u5F5F\u5F60\u5F63\u5F65\u5F67\u5F68\u5F6B\u5F6E\u5F6F\u5F72\u5F74\u5F75\u5F76\u5F78\u5F7A\u5F7D\u5F7E\u5F7F\u5F83\u5F86\u5F8D\u5F8E\u5F8F\u5F91\u5F93\u5F94\u5F96\u5F9A\u5F9B\u5F9D\u5F9E\u5F9F\u5FA0\u5FA2",5,"\u5FA9\u5FAB\u5FAC\u5FAF",5,"\u5FB6\u5FB8\u5FB9\u5FBA\u5FBB\u5FBE",4,"\u5FC7\u5FC8\u5FCA\u5FCB\u5FCE\u5FD3\u5FD4\u5FD5\u5FDA\u5FDB\u5FDC\u5FDE\u5FDF\u5FE2\u5FE3\u5FE5\u5FE6\u5FE8\u5FE9\u5FEC\u5FEF\u5FF0\u5FF2\u5FF3\u5FF4\u5FF6\u5FF7\u5FF9\u5FFA\u5FFC\u6007"],["9040","\u6008\u6009\u600B\u600C\u6010\u6011\u6013\u6017\u6018\u601A\u601E\u601F\u6022\u6023\u6024\u602C\u602D\u602E\u6030",4,"\u6036",4,"\u603D\u603E\u6040\u6044",6,"\u604C\u604E\u604F\u6051\u6053\u6054\u6056\u6057\u6058\u605B\u605C\u605E\u605F\u6060\u6061\u6065\u6066\u606E\u6071\u6072\u6074\u6075\u6077\u607E\u6080"],["9080","\u6081\u6082\u6085\u6086\u6087\u6088\u608A\u608B\u608E\u608F\u6090\u6091\u6093\u6095\u6097\u6098\u6099\u609C\u609E\u60A1\u60A2\u60A4\u60A5\u60A7\u60A9\u60AA\u60AE\u60B0\u60B3\u60B5\u60B6\u60B7\u60B9\u60BA\u60BD",7,"\u60C7\u60C8\u60C9\u60CC",4,"\u60D2\u60D3\u60D4\u60D6\u60D7\u60D9\u60DB\u60DE\u60E1",4,"\u60EA\u60F1\u60F2\u60F5\u60F7\u60F8\u60FB",4,"\u6102\u6103\u6104\u6105\u6107\u610A\u610B\u610C\u6110",4,"\u6116\u6117\u6118\u6119\u611B\u611C\u611D\u611E\u6121\u6122\u6125\u6128\u6129\u612A\u612C",18,"\u6140",6],["9140","\u6147\u6149\u614B\u614D\u614F\u6150\u6152\u6153\u6154\u6156",6,"\u615E\u615F\u6160\u6161\u6163\u6164\u6165\u6166\u6169",6,"\u6171\u6172\u6173\u6174\u6176\u6178",18,"\u618C\u618D\u618F",4,"\u6195"],["9180","\u6196",6,"\u619E",8,"\u61AA\u61AB\u61AD",9,"\u61B8",5,"\u61BF\u61C0\u61C1\u61C3",4,"\u61C9\u61CC",4,"\u61D3\u61D5",16,"\u61E7",13,"\u61F6",8,"\u6200",5,"\u6207\u6209\u6213\u6214\u6219\u621C\u621D\u621E\u6220\u6223\u6226\u6227\u6228\u6229\u622B\u622D\u622F\u6230\u6231\u6232\u6235\u6236\u6238",4,"\u6242\u6244\u6245\u6246\u624A"],["9240","\u624F\u6250\u6255\u6256\u6257\u6259\u625A\u625C",6,"\u6264\u6265\u6268\u6271\u6272\u6274\u6275\u6277\u6278\u627A\u627B\u627D\u6281\u6282\u6283\u6285\u6286\u6287\u6288\u628B",5,"\u6294\u6299\u629C\u629D\u629E\u62A3\u62A6\u62A7\u62A9\u62AA\u62AD\u62AE\u62AF\u62B0\u62B2\u62B3\u62B4\u62B6\u62B7\u62B8\u62BA\u62BE\u62C0\u62C1"],["9280","\u62C3\u62CB\u62CF\u62D1\u62D5\u62DD\u62DE\u62E0\u62E1\u62E4\u62EA\u62EB\u62F0\u62F2\u62F5\u62F8\u62F9\u62FA\u62FB\u6300\u6303\u6304\u6305\u6306\u630A\u630B\u630C\u630D\u630F\u6310\u6312\u6313\u6314\u6315\u6317\u6318\u6319\u631C\u6326\u6327\u6329\u632C\u632D\u632E\u6330\u6331\u6333",5,"\u633B\u633C\u633E\u633F\u6340\u6341\u6344\u6347\u6348\u634A\u6351\u6352\u6353\u6354\u6356",7,"\u6360\u6364\u6365\u6366\u6368\u636A\u636B\u636C\u636F\u6370\u6372\u6373\u6374\u6375\u6378\u6379\u637C\u637D\u637E\u637F\u6381\u6383\u6384\u6385\u6386\u638B\u638D\u6391\u6393\u6394\u6395\u6397\u6399",6,"\u63A1\u63A4\u63A6\u63AB\u63AF\u63B1\u63B2\u63B5\u63B6\u63B9\u63BB\u63BD\u63BF\u63C0"],["9340","\u63C1\u63C2\u63C3\u63C5\u63C7\u63C8\u63CA\u63CB\u63CC\u63D1\u63D3\u63D4\u63D5\u63D7",6,"\u63DF\u63E2\u63E4",4,"\u63EB\u63EC\u63EE\u63EF\u63F0\u63F1\u63F3\u63F5\u63F7\u63F9\u63FA\u63FB\u63FC\u63FE\u6403\u6404\u6406",4,"\u640D\u640E\u6411\u6412\u6415",5,"\u641D\u641F\u6422\u6423\u6424"],["9380","\u6425\u6427\u6428\u6429\u642B\u642E",5,"\u6435",4,"\u643B\u643C\u643E\u6440\u6442\u6443\u6449\u644B",6,"\u6453\u6455\u6456\u6457\u6459",4,"\u645F",7,"\u6468\u646A\u646B\u646C\u646E",9,"\u647B",6,"\u6483\u6486\u6488",8,"\u6493\u6494\u6497\u6498\u649A\u649B\u649C\u649D\u649F",4,"\u64A5\u64A6\u64A7\u64A8\u64AA\u64AB\u64AF\u64B1\u64B2\u64B3\u64B4\u64B6\u64B9\u64BB\u64BD\u64BE\u64BF\u64C1\u64C3\u64C4\u64C6",6,"\u64CF\u64D1\u64D3\u64D4\u64D5\u64D6\u64D9\u64DA"],["9440","\u64DB\u64DC\u64DD\u64DF\u64E0\u64E1\u64E3\u64E5\u64E7",24,"\u6501",7,"\u650A",7,"\u6513",4,"\u6519",8],["9480","\u6522\u6523\u6524\u6526",4,"\u652C\u652D\u6530\u6531\u6532\u6533\u6537\u653A\u653C\u653D\u6540",4,"\u6546\u6547\u654A\u654B\u654D\u654E\u6550\u6552\u6553\u6554\u6557\u6558\u655A\u655C\u655F\u6560\u6561\u6564\u6565\u6567\u6568\u6569\u656A\u656D\u656E\u656F\u6571\u6573\u6575\u6576\u6578",14,"\u6588\u6589\u658A\u658D\u658E\u658F\u6592\u6594\u6595\u6596\u6598\u659A\u659D\u659E\u65A0\u65A2\u65A3\u65A6\u65A8\u65AA\u65AC\u65AE\u65B1",7,"\u65BA\u65BB\u65BE\u65BF\u65C0\u65C2\u65C7\u65C8\u65C9\u65CA\u65CD\u65D0\u65D1\u65D3\u65D4\u65D5\u65D8",7,"\u65E1\u65E3\u65E4\u65EA\u65EB"],["9540","\u65F2\u65F3\u65F4\u65F5\u65F8\u65F9\u65FB",4,"\u6601\u6604\u6605\u6607\u6608\u6609\u660B\u660D\u6610\u6611\u6612\u6616\u6617\u6618\u661A\u661B\u661C\u661E\u6621\u6622\u6623\u6624\u6626\u6629\u662A\u662B\u662C\u662E\u6630\u6632\u6633\u6637",4,"\u663D\u663F\u6640\u6642\u6644",6,"\u664D\u664E\u6650\u6651\u6658"],["9580","\u6659\u665B\u665C\u665D\u665E\u6660\u6662\u6663\u6665\u6667\u6669",4,"\u6671\u6672\u6673\u6675\u6678\u6679\u667B\u667C\u667D\u667F\u6680\u6681\u6683\u6685\u6686\u6688\u6689\u668A\u668B\u668D\u668E\u668F\u6690\u6692\u6693\u6694\u6695\u6698",4,"\u669E",8,"\u66A9",4,"\u66AF",4,"\u66B5\u66B6\u66B7\u66B8\u66BA\u66BB\u66BC\u66BD\u66BF",25,"\u66DA\u66DE",7,"\u66E7\u66E8\u66EA",5,"\u66F1\u66F5\u66F6\u66F8\u66FA\u66FB\u66FD\u6701\u6702\u6703"],["9640","\u6704\u6705\u6706\u6707\u670C\u670E\u670F\u6711\u6712\u6713\u6716\u6718\u6719\u671A\u671C\u671E\u6720",5,"\u6727\u6729\u672E\u6730\u6732\u6733\u6736\u6737\u6738\u6739\u673B\u673C\u673E\u673F\u6741\u6744\u6745\u6747\u674A\u674B\u674D\u6752\u6754\u6755\u6757",4,"\u675D\u6762\u6763\u6764\u6766\u6767\u676B\u676C\u676E\u6771\u6774\u6776"],["9680","\u6778\u6779\u677A\u677B\u677D\u6780\u6782\u6783\u6785\u6786\u6788\u678A\u678C\u678D\u678E\u678F\u6791\u6792\u6793\u6794\u6796\u6799\u679B\u679F\u67A0\u67A1\u67A4\u67A6\u67A9\u67AC\u67AE\u67B1\u67B2\u67B4\u67B9",7,"\u67C2\u67C5",9,"\u67D5\u67D6\u67D7\u67DB\u67DF\u67E1\u67E3\u67E4\u67E6\u67E7\u67E8\u67EA\u67EB\u67ED\u67EE\u67F2\u67F5",7,"\u67FE\u6801\u6802\u6803\u6804\u6806\u680D\u6810\u6812\u6814\u6815\u6818",4,"\u681E\u681F\u6820\u6822",6,"\u682B",6,"\u6834\u6835\u6836\u683A\u683B\u683F\u6847\u684B\u684D\u684F\u6852\u6856",5],["9740","\u685C\u685D\u685E\u685F\u686A\u686C",7,"\u6875\u6878",8,"\u6882\u6884\u6887",7,"\u6890\u6891\u6892\u6894\u6895\u6896\u6898",9,"\u68A3\u68A4\u68A5\u68A9\u68AA\u68AB\u68AC\u68AE\u68B1\u68B2\u68B4\u68B6\u68B7\u68B8"],["9780","\u68B9",6,"\u68C1\u68C3",5,"\u68CA\u68CC\u68CE\u68CF\u68D0\u68D1\u68D3\u68D4\u68D6\u68D7\u68D9\u68DB",4,"\u68E1\u68E2\u68E4",9,"\u68EF\u68F2\u68F3\u68F4\u68F6\u68F7\u68F8\u68FB\u68FD\u68FE\u68FF\u6900\u6902\u6903\u6904\u6906",4,"\u690C\u690F\u6911\u6913",11,"\u6921\u6922\u6923\u6925",7,"\u692E\u692F\u6931\u6932\u6933\u6935\u6936\u6937\u6938\u693A\u693B\u693C\u693E\u6940\u6941\u6943",16,"\u6955\u6956\u6958\u6959\u695B\u695C\u695F"],["9840","\u6961\u6962\u6964\u6965\u6967\u6968\u6969\u696A\u696C\u696D\u696F\u6970\u6972",4,"\u697A\u697B\u697D\u697E\u697F\u6981\u6983\u6985\u698A\u698B\u698C\u698E",5,"\u6996\u6997\u6999\u699A\u699D",9,"\u69A9\u69AA\u69AC\u69AE\u69AF\u69B0\u69B2\u69B3\u69B5\u69B6\u69B8\u69B9\u69BA\u69BC\u69BD"],["9880","\u69BE\u69BF\u69C0\u69C2",7,"\u69CB\u69CD\u69CF\u69D1\u69D2\u69D3\u69D5",5,"\u69DC\u69DD\u69DE\u69E1",11,"\u69EE\u69EF\u69F0\u69F1\u69F3",9,"\u69FE\u6A00",9,"\u6A0B",11,"\u6A19",5,"\u6A20\u6A22",5,"\u6A29\u6A2B\u6A2C\u6A2D\u6A2E\u6A30\u6A32\u6A33\u6A34\u6A36",6,"\u6A3F",4,"\u6A45\u6A46\u6A48",7,"\u6A51",6,"\u6A5A"],["9940","\u6A5C",4,"\u6A62\u6A63\u6A64\u6A66",10,"\u6A72",6,"\u6A7A\u6A7B\u6A7D\u6A7E\u6A7F\u6A81\u6A82\u6A83\u6A85",8,"\u6A8F\u6A92",4,"\u6A98",7,"\u6AA1",5],["9980","\u6AA7\u6AA8\u6AAA\u6AAD",114,"\u6B25\u6B26\u6B28",6],["9a40","\u6B2F\u6B30\u6B31\u6B33\u6B34\u6B35\u6B36\u6B38\u6B3B\u6B3C\u6B3D\u6B3F\u6B40\u6B41\u6B42\u6B44\u6B45\u6B48\u6B4A\u6B4B\u6B4D",11,"\u6B5A",7,"\u6B68\u6B69\u6B6B",13,"\u6B7A\u6B7D\u6B7E\u6B7F\u6B80\u6B85\u6B88"],["9a80","\u6B8C\u6B8E\u6B8F\u6B90\u6B91\u6B94\u6B95\u6B97\u6B98\u6B99\u6B9C",4,"\u6BA2",7,"\u6BAB",7,"\u6BB6\u6BB8",6,"\u6BC0\u6BC3\u6BC4\u6BC6",4,"\u6BCC\u6BCE\u6BD0\u6BD1\u6BD8\u6BDA\u6BDC",4,"\u6BE2",7,"\u6BEC\u6BED\u6BEE\u6BF0\u6BF1\u6BF2\u6BF4\u6BF6\u6BF7\u6BF8\u6BFA\u6BFB\u6BFC\u6BFE",6,"\u6C08",4,"\u6C0E\u6C12\u6C17\u6C1C\u6C1D\u6C1E\u6C20\u6C23\u6C25\u6C2B\u6C2C\u6C2D\u6C31\u6C33\u6C36\u6C37\u6C39\u6C3A\u6C3B\u6C3C\u6C3E\u6C3F\u6C43\u6C44\u6C45\u6C48\u6C4B",4,"\u6C51\u6C52\u6C53\u6C56\u6C58"],["9b40","\u6C59\u6C5A\u6C62\u6C63\u6C65\u6C66\u6C67\u6C6B",4,"\u6C71\u6C73\u6C75\u6C77\u6C78\u6C7A\u6C7B\u6C7C\u6C7F\u6C80\u6C84\u6C87\u6C8A\u6C8B\u6C8D\u6C8E\u6C91\u6C92\u6C95\u6C96\u6C97\u6C98\u6C9A\u6C9C\u6C9D\u6C9E\u6CA0\u6CA2\u6CA8\u6CAC\u6CAF\u6CB0\u6CB4\u6CB5\u6CB6\u6CB7\u6CBA\u6CC0\u6CC1\u6CC2\u6CC3\u6CC6\u6CC7\u6CC8\u6CCB\u6CCD\u6CCE\u6CCF\u6CD1\u6CD2\u6CD8"],["9b80","\u6CD9\u6CDA\u6CDC\u6CDD\u6CDF\u6CE4\u6CE6\u6CE7\u6CE9\u6CEC\u6CED\u6CF2\u6CF4\u6CF9\u6CFF\u6D00\u6D02\u6D03\u6D05\u6D06\u6D08\u6D09\u6D0A\u6D0D\u6D0F\u6D10\u6D11\u6D13\u6D14\u6D15\u6D16\u6D18\u6D1C\u6D1D\u6D1F",5,"\u6D26\u6D28\u6D29\u6D2C\u6D2D\u6D2F\u6D30\u6D34\u6D36\u6D37\u6D38\u6D3A\u6D3F\u6D40\u6D42\u6D44\u6D49\u6D4C\u6D50\u6D55\u6D56\u6D57\u6D58\u6D5B\u6D5D\u6D5F\u6D61\u6D62\u6D64\u6D65\u6D67\u6D68\u6D6B\u6D6C\u6D6D\u6D70\u6D71\u6D72\u6D73\u6D75\u6D76\u6D79\u6D7A\u6D7B\u6D7D",4,"\u6D83\u6D84\u6D86\u6D87\u6D8A\u6D8B\u6D8D\u6D8F\u6D90\u6D92\u6D96",4,"\u6D9C\u6DA2\u6DA5\u6DAC\u6DAD\u6DB0\u6DB1\u6DB3\u6DB4\u6DB6\u6DB7\u6DB9",5,"\u6DC1\u6DC2\u6DC3\u6DC8\u6DC9\u6DCA"],["9c40","\u6DCD\u6DCE\u6DCF\u6DD0\u6DD2\u6DD3\u6DD4\u6DD5\u6DD7\u6DDA\u6DDB\u6DDC\u6DDF\u6DE2\u6DE3\u6DE5\u6DE7\u6DE8\u6DE9\u6DEA\u6DED\u6DEF\u6DF0\u6DF2\u6DF4\u6DF5\u6DF6\u6DF8\u6DFA\u6DFD",7,"\u6E06\u6E07\u6E08\u6E09\u6E0B\u6E0F\u6E12\u6E13\u6E15\u6E18\u6E19\u6E1B\u6E1C\u6E1E\u6E1F\u6E22\u6E26\u6E27\u6E28\u6E2A\u6E2C\u6E2E\u6E30\u6E31\u6E33\u6E35"],["9c80","\u6E36\u6E37\u6E39\u6E3B",7,"\u6E45",7,"\u6E4F\u6E50\u6E51\u6E52\u6E55\u6E57\u6E59\u6E5A\u6E5C\u6E5D\u6E5E\u6E60",10,"\u6E6C\u6E6D\u6E6F",14,"\u6E80\u6E81\u6E82\u6E84\u6E87\u6E88\u6E8A",4,"\u6E91",6,"\u6E99\u6E9A\u6E9B\u6E9D\u6E9E\u6EA0\u6EA1\u6EA3\u6EA4\u6EA6\u6EA8\u6EA9\u6EAB\u6EAC\u6EAD\u6EAE\u6EB0\u6EB3\u6EB5\u6EB8\u6EB9\u6EBC\u6EBE\u6EBF\u6EC0\u6EC3\u6EC4\u6EC5\u6EC6\u6EC8\u6EC9\u6ECA\u6ECC\u6ECD\u6ECE\u6ED0\u6ED2\u6ED6\u6ED8\u6ED9\u6EDB\u6EDC\u6EDD\u6EE3\u6EE7\u6EEA",5],["9d40","\u6EF0\u6EF1\u6EF2\u6EF3\u6EF5\u6EF6\u6EF7\u6EF8\u6EFA",7,"\u6F03\u6F04\u6F05\u6F07\u6F08\u6F0A",4,"\u6F10\u6F11\u6F12\u6F16",9,"\u6F21\u6F22\u6F23\u6F25\u6F26\u6F27\u6F28\u6F2C\u6F2E\u6F30\u6F32\u6F34\u6F35\u6F37",6,"\u6F3F\u6F40\u6F41\u6F42"],["9d80","\u6F43\u6F44\u6F45\u6F48\u6F49\u6F4A\u6F4C\u6F4E",9,"\u6F59\u6F5A\u6F5B\u6F5D\u6F5F\u6F60\u6F61\u6F63\u6F64\u6F65\u6F67",5,"\u6F6F\u6F70\u6F71\u6F73\u6F75\u6F76\u6F77\u6F79\u6F7B\u6F7D",6,"\u6F85\u6F86\u6F87\u6F8A\u6F8B\u6F8F",12,"\u6F9D\u6F9E\u6F9F\u6FA0\u6FA2",4,"\u6FA8",10,"\u6FB4\u6FB5\u6FB7\u6FB8\u6FBA",5,"\u6FC1\u6FC3",5,"\u6FCA",6,"\u6FD3",10,"\u6FDF\u6FE2\u6FE3\u6FE4\u6FE5"],["9e40","\u6FE6",7,"\u6FF0",32,"\u7012",7,"\u701C",6,"\u7024",6],["9e80","\u702B",9,"\u7036\u7037\u7038\u703A",17,"\u704D\u704E\u7050",13,"\u705F",11,"\u706E\u7071\u7072\u7073\u7074\u7077\u7079\u707A\u707B\u707D\u7081\u7082\u7083\u7084\u7086\u7087\u7088\u708B\u708C\u708D\u708F\u7090\u7091\u7093\u7097\u7098\u709A\u709B\u709E",12,"\u70B0\u70B2\u70B4\u70B5\u70B6\u70BA\u70BE\u70BF\u70C4\u70C5\u70C6\u70C7\u70C9\u70CB",12,"\u70DA"],["9f40","\u70DC\u70DD\u70DE\u70E0\u70E1\u70E2\u70E3\u70E5\u70EA\u70EE\u70F0",6,"\u70F8\u70FA\u70FB\u70FC\u70FE",10,"\u710B",4,"\u7111\u7112\u7114\u7117\u711B",10,"\u7127",7,"\u7132\u7133\u7134"],["9f80","\u7135\u7137",13,"\u7146\u7147\u7148\u7149\u714B\u714D\u714F",12,"\u715D\u715F",4,"\u7165\u7169",4,"\u716F\u7170\u7171\u7174\u7175\u7176\u7177\u7179\u717B\u717C\u717E",5,"\u7185",4,"\u718B\u718C\u718D\u718E\u7190\u7191\u7192\u7193\u7195\u7196\u7197\u719A",4,"\u71A1",6,"\u71A9\u71AA\u71AB\u71AD",5,"\u71B4\u71B6\u71B7\u71B8\u71BA",8,"\u71C4",9,"\u71CF",4],["a040","\u71D6",9,"\u71E1\u71E2\u71E3\u71E4\u71E6\u71E8",5,"\u71EF",9,"\u71FA",11,"\u7207",19],["a080","\u721B\u721C\u721E",9,"\u7229\u722B\u722D\u722E\u722F\u7232\u7233\u7234\u723A\u723C\u723E\u7240",6,"\u7249\u724A\u724B\u724E\u724F\u7250\u7251\u7253\u7254\u7255\u7257\u7258\u725A\u725C\u725E\u7260\u7263\u7264\u7265\u7268\u726A\u726B\u726C\u726D\u7270\u7271\u7273\u7274\u7276\u7277\u7278\u727B\u727C\u727D\u7282\u7283\u7285",4,"\u728C\u728E\u7290\u7291\u7293",11,"\u72A0",11,"\u72AE\u72B1\u72B2\u72B3\u72B5\u72BA",6,"\u72C5\u72C6\u72C7\u72C9\u72CA\u72CB\u72CC\u72CF\u72D1\u72D3\u72D4\u72D5\u72D6\u72D8\u72DA\u72DB"],["a1a1","\u3000\u3001\u3002\xB7\u02C9\u02C7\xA8\u3003\u3005\u2014\uFF5E\u2016\u2026\u2018\u2019\u201C\u201D\u3014\u3015\u3008",7,"\u3016\u3017\u3010\u3011\xB1\xD7\xF7\u2236\u2227\u2228\u2211\u220F\u222A\u2229\u2208\u2237\u221A\u22A5\u2225\u2220\u2312\u2299\u222B\u222E\u2261\u224C\u2248\u223D\u221D\u2260\u226E\u226F\u2264\u2265\u221E\u2235\u2234\u2642\u2640\xB0\u2032\u2033\u2103\uFF04\xA4\uFFE0\uFFE1\u2030\xA7\u2116\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u203B\u2192\u2190\u2191\u2193\u3013"],["a2a1","\u2170",9],["a2b1","\u2488",19,"\u2474",19,"\u2460",9],["a2e5","\u3220",9],["a2f1","\u2160",11],["a3a1","\uFF01\uFF02\uFF03\uFFE5\uFF05",88,"\uFFE3"],["a4a1","\u3041",82],["a5a1","\u30A1",85],["a6a1","\u0391",16,"\u03A3",6],["a6c1","\u03B1",16,"\u03C3",6],["a6e0","\uFE35\uFE36\uFE39\uFE3A\uFE3F\uFE40\uFE3D\uFE3E\uFE41\uFE42\uFE43\uFE44"],["a6ee","\uFE3B\uFE3C\uFE37\uFE38\uFE31"],["a6f4","\uFE33\uFE34"],["a7a1","\u0410",5,"\u0401\u0416",25],["a7d1","\u0430",5,"\u0451\u0436",25],["a840","\u02CA\u02CB\u02D9\u2013\u2015\u2025\u2035\u2105\u2109\u2196\u2197\u2198\u2199\u2215\u221F\u2223\u2252\u2266\u2267\u22BF\u2550",35,"\u2581",6],["a880","\u2588",7,"\u2593\u2594\u2595\u25BC\u25BD\u25E2\u25E3\u25E4\u25E5\u2609\u2295\u3012\u301D\u301E"],["a8a1","\u0101\xE1\u01CE\xE0\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA\u01DC\xFC\xEA\u0251"],["a8bd","\u0144\u0148"],["a8c0","\u0261"],["a8c5","\u3105",36],["a940","\u3021",8,"\u32A3\u338E\u338F\u339C\u339D\u339E\u33A1\u33C4\u33CE\u33D1\u33D2\u33D5\uFE30\uFFE2\uFFE4"],["a959","\u2121\u3231"],["a95c","\u2010"],["a960","\u30FC\u309B\u309C\u30FD\u30FE\u3006\u309D\u309E\uFE49",9,"\uFE54\uFE55\uFE56\uFE57\uFE59",8],["a980","\uFE62",4,"\uFE68\uFE69\uFE6A\uFE6B"],["a996","\u3007"],["a9a4","\u2500",75],["aa40","\u72DC\u72DD\u72DF\u72E2",5,"\u72EA\u72EB\u72F5\u72F6\u72F9\u72FD\u72FE\u72FF\u7300\u7302\u7304",5,"\u730B\u730C\u730D\u730F\u7310\u7311\u7312\u7314\u7318\u7319\u731A\u731F\u7320\u7323\u7324\u7326\u7327\u7328\u732D\u732F\u7330\u7332\u7333\u7335\u7336\u733A\u733B\u733C\u733D\u7340",8],["aa80","\u7349\u734A\u734B\u734C\u734E\u734F\u7351\u7353\u7354\u7355\u7356\u7358",7,"\u7361",10,"\u736E\u7370\u7371"],["ab40","\u7372",11,"\u737F",4,"\u7385\u7386\u7388\u738A\u738C\u738D\u738F\u7390\u7392\u7393\u7394\u7395\u7397\u7398\u7399\u739A\u739C\u739D\u739E\u73A0\u73A1\u73A3",5,"\u73AA\u73AC\u73AD\u73B1\u73B4\u73B5\u73B6\u73B8\u73B9\u73BC\u73BD\u73BE\u73BF\u73C1\u73C3",4],["ab80","\u73CB\u73CC\u73CE\u73D2",6,"\u73DA\u73DB\u73DC\u73DD\u73DF\u73E1\u73E2\u73E3\u73E4\u73E6\u73E8\u73EA\u73EB\u73EC\u73EE\u73EF\u73F0\u73F1\u73F3",4],["ac40","\u73F8",10,"\u7404\u7407\u7408\u740B\u740C\u740D\u740E\u7411",8,"\u741C",5,"\u7423\u7424\u7427\u7429\u742B\u742D\u742F\u7431\u7432\u7437",4,"\u743D\u743E\u743F\u7440\u7442",11],["ac80","\u744E",6,"\u7456\u7458\u745D\u7460",12,"\u746E\u746F\u7471",4,"\u7478\u7479\u747A"],["ad40","\u747B\u747C\u747D\u747F\u7482\u7484\u7485\u7486\u7488\u7489\u748A\u748C\u748D\u748F\u7491",10,"\u749D\u749F",7,"\u74AA",15,"\u74BB",12],["ad80","\u74C8",9,"\u74D3",8,"\u74DD\u74DF\u74E1\u74E5\u74E7",6,"\u74F0\u74F1\u74F2"],["ae40","\u74F3\u74F5\u74F8",6,"\u7500\u7501\u7502\u7503\u7505",7,"\u750E\u7510\u7512\u7514\u7515\u7516\u7517\u751B\u751D\u751E\u7520",4,"\u7526\u7527\u752A\u752E\u7534\u7536\u7539\u753C\u753D\u753F\u7541\u7542\u7543\u7544\u7546\u7547\u7549\u754A\u754D\u7550\u7551\u7552\u7553\u7555\u7556\u7557\u7558"],["ae80","\u755D",7,"\u7567\u7568\u7569\u756B",6,"\u7573\u7575\u7576\u7577\u757A",4,"\u7580\u7581\u7582\u7584\u7585\u7587"],["af40","\u7588\u7589\u758A\u758C\u758D\u758E\u7590\u7593\u7595\u7598\u759B\u759C\u759E\u75A2\u75A6",4,"\u75AD\u75B6\u75B7\u75BA\u75BB\u75BF\u75C0\u75C1\u75C6\u75CB\u75CC\u75CE\u75CF\u75D0\u75D1\u75D3\u75D7\u75D9\u75DA\u75DC\u75DD\u75DF\u75E0\u75E1\u75E5\u75E9\u75EC\u75ED\u75EE\u75EF\u75F2\u75F3\u75F5\u75F6\u75F7\u75F8\u75FA\u75FB\u75FD\u75FE\u7602\u7604\u7606\u7607"],["af80","\u7608\u7609\u760B\u760D\u760E\u760F\u7611\u7612\u7613\u7614\u7616\u761A\u761C\u761D\u761E\u7621\u7623\u7627\u7628\u762C\u762E\u762F\u7631\u7632\u7636\u7637\u7639\u763A\u763B\u763D\u7641\u7642\u7644"],["b040","\u7645",6,"\u764E",5,"\u7655\u7657",4,"\u765D\u765F\u7660\u7661\u7662\u7664",6,"\u766C\u766D\u766E\u7670",7,"\u7679\u767A\u767C\u767F\u7680\u7681\u7683\u7685\u7689\u768A\u768C\u768D\u768F\u7690\u7692\u7694\u7695\u7697\u7698\u769A\u769B"],["b080","\u769C",7,"\u76A5",8,"\u76AF\u76B0\u76B3\u76B5",9,"\u76C0\u76C1\u76C3\u554A\u963F\u57C3\u6328\u54CE\u5509\u54C0\u7691\u764C\u853C\u77EE\u827E\u788D\u7231\u9698\u978D\u6C28\u5B89\u4FFA\u6309\u6697\u5CB8\u80FA\u6848\u80AE\u6602\u76CE\u51F9\u6556\u71AC\u7FF1\u8884\u50B2\u5965\u61CA\u6FB3\u82AD\u634C\u6252\u53ED\u5427\u7B06\u516B\u75A4\u5DF4\u62D4\u8DCB\u9776\u628A\u8019\u575D\u9738\u7F62\u7238\u767D\u67CF\u767E\u6446\u4F70\u8D25\u62DC\u7A17\u6591\u73ED\u642C\u6273\u822C\u9881\u677F\u7248\u626E\u62CC\u4F34\u74E3\u534A\u529E\u7ECA\u90A6\u5E2E\u6886\u699C\u8180\u7ED1\u68D2\u78C5\u868C\u9551\u508D\u8C24\u82DE\u80DE\u5305\u8912\u5265"],["b140","\u76C4\u76C7\u76C9\u76CB\u76CC\u76D3\u76D5\u76D9\u76DA\u76DC\u76DD\u76DE\u76E0",4,"\u76E6",7,"\u76F0\u76F3\u76F5\u76F6\u76F7\u76FA\u76FB\u76FD\u76FF\u7700\u7702\u7703\u7705\u7706\u770A\u770C\u770E",10,"\u771B\u771C\u771D\u771E\u7721\u7723\u7724\u7725\u7727\u772A\u772B"],["b180","\u772C\u772E\u7730",4,"\u7739\u773B\u773D\u773E\u773F\u7742\u7744\u7745\u7746\u7748",7,"\u7752",7,"\u775C\u8584\u96F9\u4FDD\u5821\u9971\u5B9D\u62B1\u62A5\u66B4\u8C79\u9C8D\u7206\u676F\u7891\u60B2\u5351\u5317\u8F88\u80CC\u8D1D\u94A1\u500D\u72C8\u5907\u60EB\u7119\u88AB\u5954\u82EF\u672C\u7B28\u5D29\u7EF7\u752D\u6CF5\u8E66\u8FF8\u903C\u9F3B\u6BD4\u9119\u7B14\u5F7C\u78A7\u84D6\u853D\u6BD5\u6BD9\u6BD6\u5E01\u5E87\u75F9\u95ED\u655D\u5F0A\u5FC5\u8F9F\u58C1\u81C2\u907F\u965B\u97AD\u8FB9\u7F16\u8D2C\u6241\u4FBF\u53D8\u535E\u8FA8\u8FA9\u8FAB\u904D\u6807\u5F6A\u8198\u8868\u9CD6\u618B\u522B\u762A\u5F6C\u658C\u6FD2\u6EE8\u5BBE\u6448\u5175\u51B0\u67C4\u4E19\u79C9\u997C\u70B3"],["b240","\u775D\u775E\u775F\u7760\u7764\u7767\u7769\u776A\u776D",11,"\u777A\u777B\u777C\u7781\u7782\u7783\u7786",5,"\u778F\u7790\u7793",11,"\u77A1\u77A3\u77A4\u77A6\u77A8\u77AB\u77AD\u77AE\u77AF\u77B1\u77B2\u77B4\u77B6",4],["b280","\u77BC\u77BE\u77C0",12,"\u77CE",8,"\u77D8\u77D9\u77DA\u77DD",4,"\u77E4\u75C5\u5E76\u73BB\u83E0\u64AD\u62E8\u94B5\u6CE2\u535A\u52C3\u640F\u94C2\u7B94\u4F2F\u5E1B\u8236\u8116\u818A\u6E24\u6CCA\u9A73\u6355\u535C\u54FA\u8865\u57E0\u4E0D\u5E03\u6B65\u7C3F\u90E8\u6016\u64E6\u731C\u88C1\u6750\u624D\u8D22\u776C\u8E29\u91C7\u5F69\u83DC\u8521\u9910\u53C2\u8695\u6B8B\u60ED\u60E8\u707F\u82CD\u8231\u4ED3\u6CA7\u85CF\u64CD\u7CD9\u69FD\u66F9\u8349\u5395\u7B56\u4FA7\u518C\u6D4B\u5C42\u8E6D\u63D2\u53C9\u832C\u8336\u67E5\u78B4\u643D\u5BDF\u5C94\u5DEE\u8BE7\u62C6\u67F4\u8C7A\u6400\u63BA\u8749\u998B\u8C17\u7F20\u94F2\u4EA7\u9610\u98A4\u660C\u7316"],["b340","\u77E6\u77E8\u77EA\u77EF\u77F0\u77F1\u77F2\u77F4\u77F5\u77F7\u77F9\u77FA\u77FB\u77FC\u7803",5,"\u780A\u780B\u780E\u780F\u7810\u7813\u7815\u7819\u781B\u781E\u7820\u7821\u7822\u7824\u7828\u782A\u782B\u782E\u782F\u7831\u7832\u7833\u7835\u7836\u783D\u783F\u7841\u7842\u7843\u7844\u7846\u7848\u7849\u784A\u784B\u784D\u784F\u7851\u7853\u7854\u7858\u7859\u785A"],["b380","\u785B\u785C\u785E",11,"\u786F",7,"\u7878\u7879\u787A\u787B\u787D",6,"\u573A\u5C1D\u5E38\u957F\u507F\u80A0\u5382\u655E\u7545\u5531\u5021\u8D85\u6284\u949E\u671D\u5632\u6F6E\u5DE2\u5435\u7092\u8F66\u626F\u64A4\u63A3\u5F7B\u6F88\u90F4\u81E3\u8FB0\u5C18\u6668\u5FF1\u6C89\u9648\u8D81\u886C\u6491\u79F0\u57CE\u6A59\u6210\u5448\u4E58\u7A0B\u60E9\u6F84\u8BDA\u627F\u901E\u9A8B\u79E4\u5403\u75F4\u6301\u5319\u6C60\u8FDF\u5F1B\u9A70\u803B\u9F7F\u4F88\u5C3A\u8D64\u7FC5\u65A5\u70BD\u5145\u51B2\u866B\u5D07\u5BA0\u62BD\u916C\u7574\u8E0C\u7A20\u6101\u7B79\u4EC7\u7EF8\u7785\u4E11\u81ED\u521D\u51FA\u6A71\u53A8\u8E87\u9504\u96CF\u6EC1\u9664\u695A"],["b440","\u7884\u7885\u7886\u7888\u788A\u788B\u788F\u7890\u7892\u7894\u7895\u7896\u7899\u789D\u789E\u78A0\u78A2\u78A4\u78A6\u78A8",7,"\u78B5\u78B6\u78B7\u78B8\u78BA\u78BB\u78BC\u78BD\u78BF\u78C0\u78C2\u78C3\u78C4\u78C6\u78C7\u78C8\u78CC\u78CD\u78CE\u78CF\u78D1\u78D2\u78D3\u78D6\u78D7\u78D8\u78DA",9],["b480","\u78E4\u78E5\u78E6\u78E7\u78E9\u78EA\u78EB\u78ED",4,"\u78F3\u78F5\u78F6\u78F8\u78F9\u78FB",5,"\u7902\u7903\u7904\u7906",6,"\u7840\u50A8\u77D7\u6410\u89E6\u5904\u63E3\u5DDD\u7A7F\u693D\u4F20\u8239\u5598\u4E32\u75AE\u7A97\u5E62\u5E8A\u95EF\u521B\u5439\u708A\u6376\u9524\u5782\u6625\u693F\u9187\u5507\u6DF3\u7EAF\u8822\u6233\u7EF0\u75B5\u8328\u78C1\u96CC\u8F9E\u6148\u74F7\u8BCD\u6B64\u523A\u8D50\u6B21\u806A\u8471\u56F1\u5306\u4ECE\u4E1B\u51D1\u7C97\u918B\u7C07\u4FC3\u8E7F\u7BE1\u7A9C\u6467\u5D14\u50AC\u8106\u7601\u7CB9\u6DEC\u7FE0\u6751\u5B58\u5BF8\u78CB\u64AE\u6413\u63AA\u632B\u9519\u642D\u8FBE\u7B54\u7629\u6253\u5927\u5446\u6B79\u50A3\u6234\u5E26\u6B86\u4EE3\u8D37\u888B\u5F85\u902E"],["b540","\u790D",5,"\u7914",9,"\u791F",4,"\u7925",14,"\u7935",4,"\u793D\u793F\u7942\u7943\u7944\u7945\u7947\u794A",8,"\u7954\u7955\u7958\u7959\u7961\u7963"],["b580","\u7964\u7966\u7969\u796A\u796B\u796C\u796E\u7970",6,"\u7979\u797B",4,"\u7982\u7983\u7986\u7987\u7988\u7989\u798B\u798C\u798D\u798E\u7990\u7991\u7992\u6020\u803D\u62C5\u4E39\u5355\u90F8\u63B8\u80C6\u65E6\u6C2E\u4F46\u60EE\u6DE1\u8BDE\u5F39\u86CB\u5F53\u6321\u515A\u8361\u6863\u5200\u6363\u8E48\u5012\u5C9B\u7977\u5BFC\u5230\u7A3B\u60BC\u9053\u76D7\u5FB7\u5F97\u7684\u8E6C\u706F\u767B\u7B49\u77AA\u51F3\u9093\u5824\u4F4E\u6EF4\u8FEA\u654C\u7B1B\u72C4\u6DA4\u7FDF\u5AE1\u62B5\u5E95\u5730\u8482\u7B2C\u5E1D\u5F1F\u9012\u7F14\u98A0\u6382\u6EC7\u7898\u70B9\u5178\u975B\u57AB\u7535\u4F43\u7538\u5E97\u60E6\u5960\u6DC0\u6BBF\u7889\u53FC\u96D5\u51CB\u5201\u6389\u540A\u9493\u8C03\u8DCC\u7239\u789F\u8776\u8FED\u8C0D\u53E0"],["b640","\u7993",6,"\u799B",11,"\u79A8",10,"\u79B4",4,"\u79BC\u79BF\u79C2\u79C4\u79C5\u79C7\u79C8\u79CA\u79CC\u79CE\u79CF\u79D0\u79D3\u79D4\u79D6\u79D7\u79D9",5,"\u79E0\u79E1\u79E2\u79E5\u79E8\u79EA"],["b680","\u79EC\u79EE\u79F1",6,"\u79F9\u79FA\u79FC\u79FE\u79FF\u7A01\u7A04\u7A05\u7A07\u7A08\u7A09\u7A0A\u7A0C\u7A0F",4,"\u7A15\u7A16\u7A18\u7A19\u7A1B\u7A1C\u4E01\u76EF\u53EE\u9489\u9876\u9F0E\u952D\u5B9A\u8BA2\u4E22\u4E1C\u51AC\u8463\u61C2\u52A8\u680B\u4F97\u606B\u51BB\u6D1E\u515C\u6296\u6597\u9661\u8C46\u9017\u75D8\u90FD\u7763\u6BD2\u728A\u72EC\u8BFB\u5835\u7779\u8D4C\u675C\u9540\u809A\u5EA6\u6E21\u5992\u7AEF\u77ED\u953B\u6BB5\u65AD\u7F0E\u5806\u5151\u961F\u5BF9\u58A9\u5428\u8E72\u6566\u987F\u56E4\u949D\u76FE\u9041\u6387\u54C6\u591A\u593A\u579B\u8EB2\u6735\u8DFA\u8235\u5241\u60F0\u5815\u86FE\u5CE8\u9E45\u4FC4\u989D\u8BB9\u5A25\u6076\u5384\u627C\u904F\u9102\u997F\u6069\u800C\u513F\u8033\u5C14\u9975\u6D31\u4E8C"],["b740","\u7A1D\u7A1F\u7A21\u7A22\u7A24",14,"\u7A34\u7A35\u7A36\u7A38\u7A3A\u7A3E\u7A40",5,"\u7A47",9,"\u7A52",4,"\u7A58",16],["b780","\u7A69",6,"\u7A71\u7A72\u7A73\u7A75\u7A7B\u7A7C\u7A7D\u7A7E\u7A82\u7A85\u7A87\u7A89\u7A8A\u7A8B\u7A8C\u7A8E\u7A8F\u7A90\u7A93\u7A94\u7A99\u7A9A\u7A9B\u7A9E\u7AA1\u7AA2\u8D30\u53D1\u7F5A\u7B4F\u4F10\u4E4F\u9600\u6CD5\u73D0\u85E9\u5E06\u756A\u7FFB\u6A0A\u77FE\u9492\u7E41\u51E1\u70E6\u53CD\u8FD4\u8303\u8D29\u72AF\u996D\u6CDB\u574A\u82B3\u65B9\u80AA\u623F\u9632\u59A8\u4EFF\u8BBF\u7EBA\u653E\u83F2\u975E\u5561\u98DE\u80A5\u532A\u8BFD\u5420\u80BA\u5E9F\u6CB8\u8D39\u82AC\u915A\u5429\u6C1B\u5206\u7EB7\u575F\u711A\u6C7E\u7C89\u594B\u4EFD\u5FFF\u6124\u7CAA\u4E30\u5C01\u67AB\u8702\u5CF0\u950B\u98CE\u75AF\u70FD\u9022\u51AF\u7F1D\u8BBD\u5949\u51E4\u4F5B\u5426\u592B\u6577\u80A4\u5B75\u6276\u62C2\u8F90\u5E45\u6C1F\u7B26\u4F0F\u4FD8\u670D"],["b840","\u7AA3\u7AA4\u7AA7\u7AA9\u7AAA\u7AAB\u7AAE",4,"\u7AB4",10,"\u7AC0",10,"\u7ACC",9,"\u7AD7\u7AD8\u7ADA\u7ADB\u7ADC\u7ADD\u7AE1\u7AE2\u7AE4\u7AE7",5,"\u7AEE\u7AF0\u7AF1\u7AF2\u7AF3"],["b880","\u7AF4",4,"\u7AFB\u7AFC\u7AFE\u7B00\u7B01\u7B02\u7B05\u7B07\u7B09\u7B0C\u7B0D\u7B0E\u7B10\u7B12\u7B13\u7B16\u7B17\u7B18\u7B1A\u7B1C\u7B1D\u7B1F\u7B21\u7B22\u7B23\u7B27\u7B29\u7B2D\u6D6E\u6DAA\u798F\u88B1\u5F17\u752B\u629A\u8F85\u4FEF\u91DC\u65A7\u812F\u8151\u5E9C\u8150\u8D74\u526F\u8986\u8D4B\u590D\u5085\u4ED8\u961C\u7236\u8179\u8D1F\u5BCC\u8BA3\u9644\u5987\u7F1A\u5490\u5676\u560E\u8BE5\u6539\u6982\u9499\u76D6\u6E89\u5E72\u7518\u6746\u67D1\u7AFF\u809D\u8D76\u611F\u79C6\u6562\u8D63\u5188\u521A\u94A2\u7F38\u809B\u7EB2\u5C97\u6E2F\u6760\u7BD9\u768B\u9AD8\u818F\u7F94\u7CD5\u641E\u9550\u7A3F\u544A\u54E5\u6B4C\u6401\u6208\u9E3D\u80F3\u7599\u5272\u9769\u845B\u683C\u86E4\u9601\u9694\u94EC\u4E2A\u5404\u7ED9\u6839\u8DDF\u8015\u66F4\u5E9A\u7FB9"],["b940","\u7B2F\u7B30\u7B32\u7B34\u7B35\u7B36\u7B37\u7B39\u7B3B\u7B3D\u7B3F",5,"\u7B46\u7B48\u7B4A\u7B4D\u7B4E\u7B53\u7B55\u7B57\u7B59\u7B5C\u7B5E\u7B5F\u7B61\u7B63",10,"\u7B6F\u7B70\u7B73\u7B74\u7B76\u7B78\u7B7A\u7B7C\u7B7D\u7B7F\u7B81\u7B82\u7B83\u7B84\u7B86",6,"\u7B8E\u7B8F"],["b980","\u7B91\u7B92\u7B93\u7B96\u7B98\u7B99\u7B9A\u7B9B\u7B9E\u7B9F\u7BA0\u7BA3\u7BA4\u7BA5\u7BAE\u7BAF\u7BB0\u7BB2\u7BB3\u7BB5\u7BB6\u7BB7\u7BB9",7,"\u7BC2\u7BC3\u7BC4\u57C2\u803F\u6897\u5DE5\u653B\u529F\u606D\u9F9A\u4F9B\u8EAC\u516C\u5BAB\u5F13\u5DE9\u6C5E\u62F1\u8D21\u5171\u94A9\u52FE\u6C9F\u82DF\u72D7\u57A2\u6784\u8D2D\u591F\u8F9C\u83C7\u5495\u7B8D\u4F30\u6CBD\u5B64\u59D1\u9F13\u53E4\u86CA\u9AA8\u8C37\u80A1\u6545\u987E\u56FA\u96C7\u522E\u74DC\u5250\u5BE1\u6302\u8902\u4E56\u62D0\u602A\u68FA\u5173\u5B98\u51A0\u89C2\u7BA1\u9986\u7F50\u60EF\u704C\u8D2F\u5149\u5E7F\u901B\u7470\u89C4\u572D\u7845\u5F52\u9F9F\u95FA\u8F68\u9B3C\u8BE1\u7678\u6842\u67DC\u8DEA\u8D35\u523D\u8F8A\u6EDA\u68CD\u9505\u90ED\u56FD\u679C\u88F9\u8FC7\u54C8"],["ba40","\u7BC5\u7BC8\u7BC9\u7BCA\u7BCB\u7BCD\u7BCE\u7BCF\u7BD0\u7BD2\u7BD4",4,"\u7BDB\u7BDC\u7BDE\u7BDF\u7BE0\u7BE2\u7BE3\u7BE4\u7BE7\u7BE8\u7BE9\u7BEB\u7BEC\u7BED\u7BEF\u7BF0\u7BF2",4,"\u7BF8\u7BF9\u7BFA\u7BFB\u7BFD\u7BFF",7,"\u7C08\u7C09\u7C0A\u7C0D\u7C0E\u7C10",5,"\u7C17\u7C18\u7C19"],["ba80","\u7C1A",4,"\u7C20",5,"\u7C28\u7C29\u7C2B",12,"\u7C39",5,"\u7C42\u9AB8\u5B69\u6D77\u6C26\u4EA5\u5BB3\u9A87\u9163\u61A8\u90AF\u97E9\u542B\u6DB5\u5BD2\u51FD\u558A\u7F55\u7FF0\u64BC\u634D\u65F1\u61BE\u608D\u710A\u6C57\u6C49\u592F\u676D\u822A\u58D5\u568E\u8C6A\u6BEB\u90DD\u597D\u8017\u53F7\u6D69\u5475\u559D\u8377\u83CF\u6838\u79BE\u548C\u4F55\u5408\u76D2\u8C89\u9602\u6CB3\u6DB8\u8D6B\u8910\u9E64\u8D3A\u563F\u9ED1\u75D5\u5F88\u72E0\u6068\u54FC\u4EA8\u6A2A\u8861\u6052\u8F70\u54C4\u70D8\u8679\u9E3F\u6D2A\u5B8F\u5F18\u7EA2\u5589\u4FAF\u7334\u543C\u539A\u5019\u540E\u547C\u4E4E\u5FFD\u745A\u58F6\u846B\u80E1\u8774\u72D0\u7CCA\u6E56"],["bb40","\u7C43",9,"\u7C4E",36,"\u7C75",5,"\u7C7E",9],["bb80","\u7C88\u7C8A",6,"\u7C93\u7C94\u7C96\u7C99\u7C9A\u7C9B\u7CA0\u7CA1\u7CA3\u7CA6\u7CA7\u7CA8\u7CA9\u7CAB\u7CAC\u7CAD\u7CAF\u7CB0\u7CB4",4,"\u7CBA\u7CBB\u5F27\u864E\u552C\u62A4\u4E92\u6CAA\u6237\u82B1\u54D7\u534E\u733E\u6ED1\u753B\u5212\u5316\u8BDD\u69D0\u5F8A\u6000\u6DEE\u574F\u6B22\u73AF\u6853\u8FD8\u7F13\u6362\u60A3\u5524\u75EA\u8C62\u7115\u6DA3\u5BA6\u5E7B\u8352\u614C\u9EC4\u78FA\u8757\u7C27\u7687\u51F0\u60F6\u714C\u6643\u5E4C\u604D\u8C0E\u7070\u6325\u8F89\u5FBD\u6062\u86D4\u56DE\u6BC1\u6094\u6167\u5349\u60E0\u6666\u8D3F\u79FD\u4F1A\u70E9\u6C47\u8BB3\u8BF2\u7ED8\u8364\u660F\u5A5A\u9B42\u6D51\u6DF7\u8C41\u6D3B\u4F19\u706B\u83B7\u6216\u60D1\u970D\u8D27\u7978\u51FB\u573E\u57FA\u673A\u7578\u7A3D\u79EF\u7B95"],["bc40","\u7CBF\u7CC0\u7CC2\u7CC3\u7CC4\u7CC6\u7CC9\u7CCB\u7CCE",6,"\u7CD8\u7CDA\u7CDB\u7CDD\u7CDE\u7CE1",6,"\u7CE9",5,"\u7CF0",7,"\u7CF9\u7CFA\u7CFC",13,"\u7D0B",5],["bc80","\u7D11",14,"\u7D21\u7D23\u7D24\u7D25\u7D26\u7D28\u7D29\u7D2A\u7D2C\u7D2D\u7D2E\u7D30",6,"\u808C\u9965\u8FF9\u6FC0\u8BA5\u9E21\u59EC\u7EE9\u7F09\u5409\u6781\u68D8\u8F91\u7C4D\u96C6\u53CA\u6025\u75BE\u6C72\u5373\u5AC9\u7EA7\u6324\u51E0\u810A\u5DF1\u84DF\u6280\u5180\u5B63\u4F0E\u796D\u5242\u60B8\u6D4E\u5BC4\u5BC2\u8BA1\u8BB0\u65E2\u5FCC\u9645\u5993\u7EE7\u7EAA\u5609\u67B7\u5939\u4F73\u5BB6\u52A0\u835A\u988A\u8D3E\u7532\u94BE\u5047\u7A3C\u4EF7\u67B6\u9A7E\u5AC1\u6B7C\u76D1\u575A\u5C16\u7B3A\u95F4\u714E\u517C\u80A9\u8270\u5978\u7F04\u8327\u68C0\u67EC\u78B1\u7877\u62E3\u6361\u7B80\u4FED\u526A\u51CF\u8350\u69DB\u9274\u8DF5\u8D31\u89C1\u952E\u7BAD\u4EF6"],["bd40","\u7D37",54,"\u7D6F",7],["bd80","\u7D78",32,"\u5065\u8230\u5251\u996F\u6E10\u6E85\u6DA7\u5EFA\u50F5\u59DC\u5C06\u6D46\u6C5F\u7586\u848B\u6868\u5956\u8BB2\u5320\u9171\u964D\u8549\u6912\u7901\u7126\u80F6\u4EA4\u90CA\u6D47\u9A84\u5A07\u56BC\u6405\u94F0\u77EB\u4FA5\u811A\u72E1\u89D2\u997A\u7F34\u7EDE\u527F\u6559\u9175\u8F7F\u8F83\u53EB\u7A96\u63ED\u63A5\u7686\u79F8\u8857\u9636\u622A\u52AB\u8282\u6854\u6770\u6377\u776B\u7AED\u6D01\u7ED3\u89E3\u59D0\u6212\u85C9\u82A5\u754C\u501F\u4ECB\u75A5\u8BEB\u5C4A\u5DFE\u7B4B\u65A4\u91D1\u4ECA\u6D25\u895F\u7D27\u9526\u4EC5\u8C28\u8FDB\u9773\u664B\u7981\u8FD1\u70EC\u6D78"],["be40","\u7D99",12,"\u7DA7",6,"\u7DAF",42],["be80","\u7DDA",32,"\u5C3D\u52B2\u8346\u5162\u830E\u775B\u6676\u9CB8\u4EAC\u60CA\u7CBE\u7CB3\u7ECF\u4E95\u8B66\u666F\u9888\u9759\u5883\u656C\u955C\u5F84\u75C9\u9756\u7ADF\u7ADE\u51C0\u70AF\u7A98\u63EA\u7A76\u7EA0\u7396\u97ED\u4E45\u7078\u4E5D\u9152\u53A9\u6551\u65E7\u81FC\u8205\u548E\u5C31\u759A\u97A0\u62D8\u72D9\u75BD\u5C45\u9A79\u83CA\u5C40\u5480\u77E9\u4E3E\u6CAE\u805A\u62D2\u636E\u5DE8\u5177\u8DDD\u8E1E\u952F\u4FF1\u53E5\u60E7\u70AC\u5267\u6350\u9E43\u5A1F\u5026\u7737\u5377\u7EE2\u6485\u652B\u6289\u6398\u5014\u7235\u89C9\u51B3\u8BC0\u7EDD\u5747\u83CC\u94A7\u519B\u541B\u5CFB"],["bf40","\u7DFB",62],["bf80","\u7E3A\u7E3C",4,"\u7E42",4,"\u7E48",21,"\u4FCA\u7AE3\u6D5A\u90E1\u9A8F\u5580\u5496\u5361\u54AF\u5F00\u63E9\u6977\u51EF\u6168\u520A\u582A\u52D8\u574E\u780D\u770B\u5EB7\u6177\u7CE0\u625B\u6297\u4EA2\u7095\u8003\u62F7\u70E4\u9760\u5777\u82DB\u67EF\u68F5\u78D5\u9897\u79D1\u58F3\u54B3\u53EF\u6E34\u514B\u523B\u5BA2\u8BFE\u80AF\u5543\u57A6\u6073\u5751\u542D\u7A7A\u6050\u5B54\u63A7\u62A0\u53E3\u6263\u5BC7\u67AF\u54ED\u7A9F\u82E6\u9177\u5E93\u88E4\u5938\u57AE\u630E\u8DE8\u80EF\u5757\u7B77\u4FA9\u5FEB\u5BBD\u6B3E\u5321\u7B50\u72C2\u6846\u77FF\u7736\u65F7\u51B5\u4E8F\u76D4\u5CBF\u7AA5\u8475\u594E\u9B41\u5080"],["c040","\u7E5E",35,"\u7E83",23,"\u7E9C\u7E9D\u7E9E"],["c080","\u7EAE\u7EB4\u7EBB\u7EBC\u7ED6\u7EE4\u7EEC\u7EF9\u7F0A\u7F10\u7F1E\u7F37\u7F39\u7F3B",6,"\u7F43\u7F46",9,"\u7F52\u7F53\u9988\u6127\u6E83\u5764\u6606\u6346\u56F0\u62EC\u6269\u5ED3\u9614\u5783\u62C9\u5587\u8721\u814A\u8FA3\u5566\u83B1\u6765\u8D56\u84DD\u5A6A\u680F\u62E6\u7BEE\u9611\u5170\u6F9C\u8C30\u63FD\u89C8\u61D2\u7F06\u70C2\u6EE5\u7405\u6994\u72FC\u5ECA\u90CE\u6717\u6D6A\u635E\u52B3\u7262\u8001\u4F6C\u59E5\u916A\u70D9\u6D9D\u52D2\u4E50\u96F7\u956D\u857E\u78CA\u7D2F\u5121\u5792\u64C2\u808B\u7C7B\u6CEA\u68F1\u695E\u51B7\u5398\u68A8\u7281\u9ECE\u7BF1\u72F8\u79BB\u6F13\u7406\u674E\u91CC\u9CA4\u793C\u8389\u8354\u540F\u6817\u4E3D\u5389\u52B1\u783E\u5386\u5229\u5088\u4F8B\u4FD0"],["c140","\u7F56\u7F59\u7F5B\u7F5C\u7F5D\u7F5E\u7F60\u7F63",4,"\u7F6B\u7F6C\u7F6D\u7F6F\u7F70\u7F73\u7F75\u7F76\u7F77\u7F78\u7F7A\u7F7B\u7F7C\u7F7D\u7F7F\u7F80\u7F82",7,"\u7F8B\u7F8D\u7F8F",4,"\u7F95",4,"\u7F9B\u7F9C\u7FA0\u7FA2\u7FA3\u7FA5\u7FA6\u7FA8",6,"\u7FB1"],["c180","\u7FB3",4,"\u7FBA\u7FBB\u7FBE\u7FC0\u7FC2\u7FC3\u7FC4\u7FC6\u7FC7\u7FC8\u7FC9\u7FCB\u7FCD\u7FCF",4,"\u7FD6\u7FD7\u7FD9",5,"\u7FE2\u7FE3\u75E2\u7ACB\u7C92\u6CA5\u96B6\u529B\u7483\u54E9\u4FE9\u8054\u83B2\u8FDE\u9570\u5EC9\u601C\u6D9F\u5E18\u655B\u8138\u94FE\u604B\u70BC\u7EC3\u7CAE\u51C9\u6881\u7CB1\u826F\u4E24\u8F86\u91CF\u667E\u4EAE\u8C05\u64A9\u804A\u50DA\u7597\u71CE\u5BE5\u8FBD\u6F66\u4E86\u6482\u9563\u5ED6\u6599\u5217\u88C2\u70C8\u52A3\u730E\u7433\u6797\u78F7\u9716\u4E34\u90BB\u9CDE\u6DCB\u51DB\u8D41\u541D\u62CE\u73B2\u83F1\u96F6\u9F84\u94C3\u4F36\u7F9A\u51CC\u7075\u9675\u5CAD\u9886\u53E6\u4EE4\u6E9C\u7409\u69B4\u786B\u998F\u7559\u5218\u7624\u6D41\u67F3\u516D\u9F99\u804B\u5499\u7B3C\u7ABF"],["c240","\u7FE4\u7FE7\u7FE8\u7FEA\u7FEB\u7FEC\u7FED\u7FEF\u7FF2\u7FF4",6,"\u7FFD\u7FFE\u7FFF\u8002\u8007\u8008\u8009\u800A\u800E\u800F\u8011\u8013\u801A\u801B\u801D\u801E\u801F\u8021\u8023\u8024\u802B",5,"\u8032\u8034\u8039\u803A\u803C\u803E\u8040\u8041\u8044\u8045\u8047\u8048\u8049\u804E\u804F\u8050\u8051\u8053\u8055\u8056\u8057"],["c280","\u8059\u805B",13,"\u806B",5,"\u8072",11,"\u9686\u5784\u62E2\u9647\u697C\u5A04\u6402\u7BD3\u6F0F\u964B\u82A6\u5362\u9885\u5E90\u7089\u63B3\u5364\u864F\u9C81\u9E93\u788C\u9732\u8DEF\u8D42\u9E7F\u6F5E\u7984\u5F55\u9646\u622E\u9A74\u5415\u94DD\u4FA3\u65C5\u5C65\u5C61\u7F15\u8651\u6C2F\u5F8B\u7387\u6EE4\u7EFF\u5CE6\u631B\u5B6A\u6EE6\u5375\u4E71\u63A0\u7565\u62A1\u8F6E\u4F26\u4ED1\u6CA6\u7EB6\u8BBA\u841D\u87BA\u7F57\u903B\u9523\u7BA9\u9AA1\u88F8\u843D\u6D1B\u9A86\u7EDC\u5988\u9EBB\u739B\u7801\u8682\u9A6C\u9A82\u561B\u5417\u57CB\u4E70\u9EA6\u5356\u8FC8\u8109\u7792\u9992\u86EE\u6EE1\u8513\u66FC\u6162\u6F2B"],["c340","\u807E\u8081\u8082\u8085\u8088\u808A\u808D",5,"\u8094\u8095\u8097\u8099\u809E\u80A3\u80A6\u80A7\u80A8\u80AC\u80B0\u80B3\u80B5\u80B6\u80B8\u80B9\u80BB\u80C5\u80C7",4,"\u80CF",6,"\u80D8\u80DF\u80E0\u80E2\u80E3\u80E6\u80EE\u80F5\u80F7\u80F9\u80FB\u80FE\u80FF\u8100\u8101\u8103\u8104\u8105\u8107\u8108\u810B"],["c380","\u810C\u8115\u8117\u8119\u811B\u811C\u811D\u811F",12,"\u812D\u812E\u8130\u8133\u8134\u8135\u8137\u8139",4,"\u813F\u8C29\u8292\u832B\u76F2\u6C13\u5FD9\u83BD\u732B\u8305\u951A\u6BDB\u77DB\u94C6\u536F\u8302\u5192\u5E3D\u8C8C\u8D38\u4E48\u73AB\u679A\u6885\u9176\u9709\u7164\u6CA1\u7709\u5A92\u9541\u6BCF\u7F8E\u6627\u5BD0\u59B9\u5A9A\u95E8\u95F7\u4EEC\u840C\u8499\u6AAC\u76DF\u9530\u731B\u68A6\u5B5F\u772F\u919A\u9761\u7CDC\u8FF7\u8C1C\u5F25\u7C73\u79D8\u89C5\u6CCC\u871C\u5BC6\u5E42\u68C9\u7720\u7EF5\u5195\u514D\u52C9\u5A29\u7F05\u9762\u82D7\u63CF\u7784\u85D0\u79D2\u6E3A\u5E99\u5999\u8511\u706D\u6C11\u62BF\u76BF\u654F\u60AF\u95FD\u660E\u879F\u9E23\u94ED\u540D\u547D\u8C2C\u6478"],["c440","\u8140",5,"\u8147\u8149\u814D\u814E\u814F\u8152\u8156\u8157\u8158\u815B",4,"\u8161\u8162\u8163\u8164\u8166\u8168\u816A\u816B\u816C\u816F\u8172\u8173\u8175\u8176\u8177\u8178\u8181\u8183",4,"\u8189\u818B\u818C\u818D\u818E\u8190\u8192",5,"\u8199\u819A\u819E",4,"\u81A4\u81A5"],["c480","\u81A7\u81A9\u81AB",7,"\u81B4",5,"\u81BC\u81BD\u81BE\u81BF\u81C4\u81C5\u81C7\u81C8\u81C9\u81CB\u81CD",6,"\u6479\u8611\u6A21\u819C\u78E8\u6469\u9B54\u62B9\u672B\u83AB\u58A8\u9ED8\u6CAB\u6F20\u5BDE\u964C\u8C0B\u725F\u67D0\u62C7\u7261\u4EA9\u59C6\u6BCD\u5893\u66AE\u5E55\u52DF\u6155\u6728\u76EE\u7766\u7267\u7A46\u62FF\u54EA\u5450\u94A0\u90A3\u5A1C\u7EB3\u6C16\u4E43\u5976\u8010\u5948\u5357\u7537\u96BE\u56CA\u6320\u8111\u607C\u95F9\u6DD6\u5462\u9981\u5185\u5AE9\u80FD\u59AE\u9713\u502A\u6CE5\u5C3C\u62DF\u4F60\u533F\u817B\u9006\u6EBA\u852B\u62C8\u5E74\u78BE\u64B5\u637B\u5FF5\u5A18\u917F\u9E1F\u5C3F\u634F\u8042\u5B7D\u556E\u954A\u954D\u6D85\u60A8\u67E0\u72DE\u51DD\u5B81"],["c540","\u81D4",14,"\u81E4\u81E5\u81E6\u81E8\u81E9\u81EB\u81EE",4,"\u81F5",5,"\u81FD\u81FF\u8203\u8207",4,"\u820E\u820F\u8211\u8213\u8215",5,"\u821D\u8220\u8224\u8225\u8226\u8227\u8229\u822E\u8232\u823A\u823C\u823D\u823F"],["c580","\u8240\u8241\u8242\u8243\u8245\u8246\u8248\u824A\u824C\u824D\u824E\u8250",7,"\u8259\u825B\u825C\u825D\u825E\u8260",7,"\u8269\u62E7\u6CDE\u725B\u626D\u94AE\u7EBD\u8113\u6D53\u519C\u5F04\u5974\u52AA\u6012\u5973\u6696\u8650\u759F\u632A\u61E6\u7CEF\u8BFA\u54E6\u6B27\u9E25\u6BB4\u85D5\u5455\u5076\u6CA4\u556A\u8DB4\u722C\u5E15\u6015\u7436\u62CD\u6392\u724C\u5F98\u6E43\u6D3E\u6500\u6F58\u76D8\u78D0\u76FC\u7554\u5224\u53DB\u4E53\u5E9E\u65C1\u802A\u80D6\u629B\u5486\u5228\u70AE\u888D\u8DD1\u6CE1\u5478\u80DA\u57F9\u88F4\u8D54\u966A\u914D\u4F69\u6C9B\u55B7\u76C6\u7830\u62A8\u70F9\u6F8E\u5F6D\u84EC\u68DA\u787C\u7BF7\u81A8\u670B\u9E4F\u6367\u78B0\u576F\u7812\u9739\u6279\u62AB\u5288\u7435\u6BD7"],["c640","\u826A\u826B\u826C\u826D\u8271\u8275\u8276\u8277\u8278\u827B\u827C\u8280\u8281\u8283\u8285\u8286\u8287\u8289\u828C\u8290\u8293\u8294\u8295\u8296\u829A\u829B\u829E\u82A0\u82A2\u82A3\u82A7\u82B2\u82B5\u82B6\u82BA\u82BB\u82BC\u82BF\u82C0\u82C2\u82C3\u82C5\u82C6\u82C9\u82D0\u82D6\u82D9\u82DA\u82DD\u82E2\u82E7\u82E8\u82E9\u82EA\u82EC\u82ED\u82EE\u82F0\u82F2\u82F3\u82F5\u82F6\u82F8"],["c680","\u82FA\u82FC",4,"\u830A\u830B\u830D\u8310\u8312\u8313\u8316\u8318\u8319\u831D",9,"\u8329\u832A\u832E\u8330\u8332\u8337\u833B\u833D\u5564\u813E\u75B2\u76AE\u5339\u75DE\u50FB\u5C41\u8B6C\u7BC7\u504F\u7247\u9A97\u98D8\u6F02\u74E2\u7968\u6487\u77A5\u62FC\u9891\u8D2B\u54C1\u8058\u4E52\u576A\u82F9\u840D\u5E73\u51ED\u74F6\u8BC4\u5C4F\u5761\u6CFC\u9887\u5A46\u7834\u9B44\u8FEB\u7C95\u5256\u6251\u94FA\u4EC6\u8386\u8461\u83E9\u84B2\u57D4\u6734\u5703\u666E\u6D66\u8C31\u66DD\u7011\u671F\u6B3A\u6816\u621A\u59BB\u4E03\u51C4\u6F06\u67D2\u6C8F\u5176\u68CB\u5947\u6B67\u7566\u5D0E\u8110\u9F50\u65D7\u7948\u7941\u9A91\u8D77\u5C82\u4E5E\u4F01\u542F\u5951\u780C\u5668\u6C14\u8FC4\u5F03\u6C7D\u6CE3\u8BAB\u6390"],["c740","\u833E\u833F\u8341\u8342\u8344\u8345\u8348\u834A",4,"\u8353\u8355",4,"\u835D\u8362\u8370",6,"\u8379\u837A\u837E",6,"\u8387\u8388\u838A\u838B\u838C\u838D\u838F\u8390\u8391\u8394\u8395\u8396\u8397\u8399\u839A\u839D\u839F\u83A1",6,"\u83AC\u83AD\u83AE"],["c780","\u83AF\u83B5\u83BB\u83BE\u83BF\u83C2\u83C3\u83C4\u83C6\u83C8\u83C9\u83CB\u83CD\u83CE\u83D0\u83D1\u83D2\u83D3\u83D5\u83D7\u83D9\u83DA\u83DB\u83DE\u83E2\u83E3\u83E4\u83E6\u83E7\u83E8\u83EB\u83EC\u83ED\u6070\u6D3D\u7275\u6266\u948E\u94C5\u5343\u8FC1\u7B7E\u4EDF\u8C26\u4E7E\u9ED4\u94B1\u94B3\u524D\u6F5C\u9063\u6D45\u8C34\u5811\u5D4C\u6B20\u6B49\u67AA\u545B\u8154\u7F8C\u5899\u8537\u5F3A\u62A2\u6A47\u9539\u6572\u6084\u6865\u77A7\u4E54\u4FA8\u5DE7\u9798\u64AC\u7FD8\u5CED\u4FCF\u7A8D\u5207\u8304\u4E14\u602F\u7A83\u94A6\u4FB5\u4EB2\u79E6\u7434\u52E4\u82B9\u64D2\u79BD\u5BDD\u6C81\u9752\u8F7B\u6C22\u503E\u537F\u6E05\u64CE\u6674\u6C30\u60C5\u9877\u8BF7\u5E86\u743C\u7A77\u79CB\u4E18\u90B1\u7403\u6C42\u56DA\u914B\u6CC5\u8D8B\u533A\u86C6\u66F2\u8EAF\u5C48\u9A71\u6E20"],["c840","\u83EE\u83EF\u83F3",4,"\u83FA\u83FB\u83FC\u83FE\u83FF\u8400\u8402\u8405\u8407\u8408\u8409\u840A\u8410\u8412",5,"\u8419\u841A\u841B\u841E",5,"\u8429",7,"\u8432",5,"\u8439\u843A\u843B\u843E",7,"\u8447\u8448\u8449"],["c880","\u844A",6,"\u8452",4,"\u8458\u845D\u845E\u845F\u8460\u8462\u8464",4,"\u846A\u846E\u846F\u8470\u8472\u8474\u8477\u8479\u847B\u847C\u53D6\u5A36\u9F8B\u8DA3\u53BB\u5708\u98A7\u6743\u919B\u6CC9\u5168\u75CA\u62F3\u72AC\u5238\u529D\u7F3A\u7094\u7638\u5374\u9E4A\u69B7\u786E\u96C0\u88D9\u7FA4\u7136\u71C3\u5189\u67D3\u74E4\u58E4\u6518\u56B7\u8BA9\u9976\u6270\u7ED5\u60F9\u70ED\u58EC\u4EC1\u4EBA\u5FCD\u97E7\u4EFB\u8BA4\u5203\u598A\u7EAB\u6254\u4ECD\u65E5\u620E\u8338\u84C9\u8363\u878D\u7194\u6EB6\u5BB9\u7ED2\u5197\u63C9\u67D4\u8089\u8339\u8815\u5112\u5B7A\u5982\u8FB1\u4E73\u6C5D\u5165\u8925\u8F6F\u962E\u854A\u745E\u9510\u95F0\u6DA6\u82E5\u5F31\u6492\u6D12\u8428\u816E\u9CC3\u585E\u8D5B\u4E09\u53C1"],["c940","\u847D",4,"\u8483\u8484\u8485\u8486\u848A\u848D\u848F",7,"\u8498\u849A\u849B\u849D\u849E\u849F\u84A0\u84A2",12,"\u84B0\u84B1\u84B3\u84B5\u84B6\u84B7\u84BB\u84BC\u84BE\u84C0\u84C2\u84C3\u84C5\u84C6\u84C7\u84C8\u84CB\u84CC\u84CE\u84CF\u84D2\u84D4\u84D5\u84D7"],["c980","\u84D8",4,"\u84DE\u84E1\u84E2\u84E4\u84E7",4,"\u84ED\u84EE\u84EF\u84F1",10,"\u84FD\u84FE\u8500\u8501\u8502\u4F1E\u6563\u6851\u55D3\u4E27\u6414\u9A9A\u626B\u5AC2\u745F\u8272\u6DA9\u68EE\u50E7\u838E\u7802\u6740\u5239\u6C99\u7EB1\u50BB\u5565\u715E\u7B5B\u6652\u73CA\u82EB\u6749\u5C71\u5220\u717D\u886B\u95EA\u9655\u64C5\u8D61\u81B3\u5584\u6C55\u6247\u7F2E\u5892\u4F24\u5546\u8D4F\u664C\u4E0A\u5C1A\u88F3\u68A2\u634E\u7A0D\u70E7\u828D\u52FA\u97F6\u5C11\u54E8\u90B5\u7ECD\u5962\u8D4A\u86C7\u820C\u820D\u8D66\u6444\u5C04\u6151\u6D89\u793E\u8BBE\u7837\u7533\u547B\u4F38\u8EAB\u6DF1\u5A20\u7EC5\u795E\u6C88\u5BA1\u5A76\u751A\u80BE\u614E\u6E17\u58F0\u751F\u7525\u7272\u5347\u7EF3"],["ca40","\u8503",8,"\u850D\u850E\u850F\u8510\u8512\u8514\u8515\u8516\u8518\u8519\u851B\u851C\u851D\u851E\u8520\u8522",8,"\u852D",9,"\u853E",4,"\u8544\u8545\u8546\u8547\u854B",10],["ca80","\u8557\u8558\u855A\u855B\u855C\u855D\u855F",4,"\u8565\u8566\u8567\u8569",8,"\u8573\u8575\u8576\u8577\u8578\u857C\u857D\u857F\u8580\u8581\u7701\u76DB\u5269\u80DC\u5723\u5E08\u5931\u72EE\u65BD\u6E7F\u8BD7\u5C38\u8671\u5341\u77F3\u62FE\u65F6\u4EC0\u98DF\u8680\u5B9E\u8BC6\u53F2\u77E2\u4F7F\u5C4E\u9A76\u59CB\u5F0F\u793A\u58EB\u4E16\u67FF\u4E8B\u62ED\u8A93\u901D\u52BF\u662F\u55DC\u566C\u9002\u4ED5\u4F8D\u91CA\u9970\u6C0F\u5E02\u6043\u5BA4\u89C6\u8BD5\u6536\u624B\u9996\u5B88\u5BFF\u6388\u552E\u53D7\u7626\u517D\u852C\u67A2\u68B3\u6B8A\u6292\u8F93\u53D4\u8212\u6DD1\u758F\u4E66\u8D4E\u5B70\u719F\u85AF\u6691\u66D9\u7F72\u8700\u9ECD\u9F20\u5C5E\u672F\u8FF0\u6811\u675F\u620D\u7AD6\u5885\u5EB6\u6570\u6F31"],["cb40","\u8582\u8583\u8586\u8588",6,"\u8590",10,"\u859D",6,"\u85A5\u85A6\u85A7\u85A9\u85AB\u85AC\u85AD\u85B1",5,"\u85B8\u85BA",6,"\u85C2",6,"\u85CA",4,"\u85D1\u85D2"],["cb80","\u85D4\u85D6",5,"\u85DD",6,"\u85E5\u85E6\u85E7\u85E8\u85EA",14,"\u6055\u5237\u800D\u6454\u8870\u7529\u5E05\u6813\u62F4\u971C\u53CC\u723D\u8C01\u6C34\u7761\u7A0E\u542E\u77AC\u987A\u821C\u8BF4\u7855\u6714\u70C1\u65AF\u6495\u5636\u601D\u79C1\u53F8\u4E1D\u6B7B\u8086\u5BFA\u55E3\u56DB\u4F3A\u4F3C\u9972\u5DF3\u677E\u8038\u6002\u9882\u9001\u5B8B\u8BBC\u8BF5\u641C\u8258\u64DE\u55FD\u82CF\u9165\u4FD7\u7D20\u901F\u7C9F\u50F3\u5851\u6EAF\u5BBF\u8BC9\u8083\u9178\u849C\u7B97\u867D\u968B\u968F\u7EE5\u9AD3\u788E\u5C81\u7A57\u9042\u96A7\u795F\u5B59\u635F\u7B0B\u84D1\u68AD\u5506\u7F29\u7410\u7D22\u9501\u6240\u584C\u4ED6\u5B83\u5979\u5854"],["cc40","\u85F9\u85FA\u85FC\u85FD\u85FE\u8600",4,"\u8606",10,"\u8612\u8613\u8614\u8615\u8617",15,"\u8628\u862A",13,"\u8639\u863A\u863B\u863D\u863E\u863F\u8640"],["cc80","\u8641",11,"\u8652\u8653\u8655",4,"\u865B\u865C\u865D\u865F\u8660\u8661\u8663",7,"\u736D\u631E\u8E4B\u8E0F\u80CE\u82D4\u62AC\u53F0\u6CF0\u915E\u592A\u6001\u6C70\u574D\u644A\u8D2A\u762B\u6EE9\u575B\u6A80\u75F0\u6F6D\u8C2D\u8C08\u5766\u6BEF\u8892\u78B3\u63A2\u53F9\u70AD\u6C64\u5858\u642A\u5802\u68E0\u819B\u5510\u7CD6\u5018\u8EBA\u6DCC\u8D9F\u70EB\u638F\u6D9B\u6ED4\u7EE6\u8404\u6843\u9003\u6DD8\u9676\u8BA8\u5957\u7279\u85E4\u817E\u75BC\u8A8A\u68AF\u5254\u8E22\u9511\u63D0\u9898\u8E44\u557C\u4F53\u66FF\u568F\u60D5\u6D95\u5243\u5C49\u5929\u6DFB\u586B\u7530\u751C\u606C\u8214\u8146\u6311\u6761\u8FE2\u773A\u8DF3\u8D34\u94C1\u5E16\u5385\u542C\u70C3"],["cd40","\u866D\u866F\u8670\u8672",6,"\u8683",6,"\u868E",4,"\u8694\u8696",5,"\u869E",4,"\u86A5\u86A6\u86AB\u86AD\u86AE\u86B2\u86B3\u86B7\u86B8\u86B9\u86BB",4,"\u86C1\u86C2\u86C3\u86C5\u86C8\u86CC\u86CD\u86D2\u86D3\u86D5\u86D6\u86D7\u86DA\u86DC"],["cd80","\u86DD\u86E0\u86E1\u86E2\u86E3\u86E5\u86E6\u86E7\u86E8\u86EA\u86EB\u86EC\u86EF\u86F5\u86F6\u86F7\u86FA\u86FB\u86FC\u86FD\u86FF\u8701\u8704\u8705\u8706\u870B\u870C\u870E\u870F\u8710\u8711\u8714\u8716\u6C40\u5EF7\u505C\u4EAD\u5EAD\u633A\u8247\u901A\u6850\u916E\u77B3\u540C\u94DC\u5F64\u7AE5\u6876\u6345\u7B52\u7EDF\u75DB\u5077\u6295\u5934\u900F\u51F8\u79C3\u7A81\u56FE\u5F92\u9014\u6D82\u5C60\u571F\u5410\u5154\u6E4D\u56E2\u63A8\u9893\u817F\u8715\u892A\u9000\u541E\u5C6F\u81C0\u62D6\u6258\u8131\u9E35\u9640\u9A6E\u9A7C\u692D\u59A5\u62D3\u553E\u6316\u54C7\u86D9\u6D3C\u5A03\u74E6\u889C\u6B6A\u5916\u8C4C\u5F2F\u6E7E\u73A9\u987D\u4E38\u70F7\u5B8C\u7897\u633D\u665A\u7696\u60CB\u5B9B\u5A49\u4E07\u8155\u6C6A\u738B\u4EA1\u6789\u7F51\u5F80\u65FA\u671B\u5FD8\u5984\u5A01"],["ce40","\u8719\u871B\u871D\u871F\u8720\u8724\u8726\u8727\u8728\u872A\u872B\u872C\u872D\u872F\u8730\u8732\u8733\u8735\u8736\u8738\u8739\u873A\u873C\u873D\u8740",6,"\u874A\u874B\u874D\u874F\u8750\u8751\u8752\u8754\u8755\u8756\u8758\u875A",5,"\u8761\u8762\u8766",7,"\u876F\u8771\u8772\u8773\u8775"],["ce80","\u8777\u8778\u8779\u877A\u877F\u8780\u8781\u8784\u8786\u8787\u8789\u878A\u878C\u878E",4,"\u8794\u8795\u8796\u8798",6,"\u87A0",4,"\u5DCD\u5FAE\u5371\u97E6\u8FDD\u6845\u56F4\u552F\u60DF\u4E3A\u6F4D\u7EF4\u82C7\u840E\u59D4\u4F1F\u4F2A\u5C3E\u7EAC\u672A\u851A\u5473\u754F\u80C3\u5582\u9B4F\u4F4D\u6E2D\u8C13\u5C09\u6170\u536B\u761F\u6E29\u868A\u6587\u95FB\u7EB9\u543B\u7A33\u7D0A\u95EE\u55E1\u7FC1\u74EE\u631D\u8717\u6DA1\u7A9D\u6211\u65A1\u5367\u63E1\u6C83\u5DEB\u545C\u94A8\u4E4C\u6C61\u8BEC\u5C4B\u65E0\u829C\u68A7\u543E\u5434\u6BCB\u6B66\u4E94\u6342\u5348\u821E\u4F0D\u4FAE\u575E\u620A\u96FE\u6664\u7269\u52FF\u52A1\u609F\u8BEF\u6614\u7199\u6790\u897F\u7852\u77FD\u6670\u563B\u5438\u9521\u727A"],["cf40","\u87A5\u87A6\u87A7\u87A9\u87AA\u87AE\u87B0\u87B1\u87B2\u87B4\u87B6\u87B7\u87B8\u87B9\u87BB\u87BC\u87BE\u87BF\u87C1",4,"\u87C7\u87C8\u87C9\u87CC",4,"\u87D4",6,"\u87DC\u87DD\u87DE\u87DF\u87E1\u87E2\u87E3\u87E4\u87E6\u87E7\u87E8\u87E9\u87EB\u87EC\u87ED\u87EF",9],["cf80","\u87FA\u87FB\u87FC\u87FD\u87FF\u8800\u8801\u8802\u8804",5,"\u880B",7,"\u8814\u8817\u8818\u8819\u881A\u881C",4,"\u8823\u7A00\u606F\u5E0C\u6089\u819D\u5915\u60DC\u7184\u70EF\u6EAA\u6C50\u7280\u6A84\u88AD\u5E2D\u4E60\u5AB3\u559C\u94E3\u6D17\u7CFB\u9699\u620F\u7EC6\u778E\u867E\u5323\u971E\u8F96\u6687\u5CE1\u4FA0\u72ED\u4E0B\u53A6\u590F\u5413\u6380\u9528\u5148\u4ED9\u9C9C\u7EA4\u54B8\u8D24\u8854\u8237\u95F2\u6D8E\u5F26\u5ACC\u663E\u9669\u73B0\u732E\u53BF\u817A\u9985\u7FA1\u5BAA\u9677\u9650\u7EBF\u76F8\u53A2\u9576\u9999\u7BB1\u8944\u6E58\u4E61\u7FD4\u7965\u8BE6\u60F3\u54CD\u4EAB\u9879\u5DF7\u6A61\u50CF\u5411\u8C61\u8427\u785D\u9704\u524A\u54EE\u56A3\u9500\u6D88\u5BB5\u6DC6\u6653"],["d040","\u8824",13,"\u8833",5,"\u883A\u883B\u883D\u883E\u883F\u8841\u8842\u8843\u8846",5,"\u884E",5,"\u8855\u8856\u8858\u885A",6,"\u8866\u8867\u886A\u886D\u886F\u8871\u8873\u8874\u8875\u8876\u8878\u8879\u887A"],["d080","\u887B\u887C\u8880\u8883\u8886\u8887\u8889\u888A\u888C\u888E\u888F\u8890\u8891\u8893\u8894\u8895\u8897",4,"\u889D",4,"\u88A3\u88A5",5,"\u5C0F\u5B5D\u6821\u8096\u5578\u7B11\u6548\u6954\u4E9B\u6B47\u874E\u978B\u534F\u631F\u643A\u90AA\u659C\u80C1\u8C10\u5199\u68B0\u5378\u87F9\u61C8\u6CC4\u6CFB\u8C22\u5C51\u85AA\u82AF\u950C\u6B23\u8F9B\u65B0\u5FFB\u5FC3\u4FE1\u8845\u661F\u8165\u7329\u60FA\u5174\u5211\u578B\u5F62\u90A2\u884C\u9192\u5E78\u674F\u6027\u59D3\u5144\u51F6\u80F8\u5308\u6C79\u96C4\u718A\u4F11\u4FEE\u7F9E\u673D\u55C5\u9508\u79C0\u8896\u7EE3\u589F\u620C\u9700\u865A\u5618\u987B\u5F90\u8BB8\u84C4\u9157\u53D9\u65ED\u5E8F\u755C\u6064\u7D6E\u5A7F\u7EEA\u7EED\u8F69\u55A7\u5BA3\u60AC\u65CB\u7384"],["d140","\u88AC\u88AE\u88AF\u88B0\u88B2",4,"\u88B8\u88B9\u88BA\u88BB\u88BD\u88BE\u88BF\u88C0\u88C3\u88C4\u88C7\u88C8\u88CA\u88CB\u88CC\u88CD\u88CF\u88D0\u88D1\u88D3\u88D6\u88D7\u88DA",4,"\u88E0\u88E1\u88E6\u88E7\u88E9",6,"\u88F2\u88F5\u88F6\u88F7\u88FA\u88FB\u88FD\u88FF\u8900\u8901\u8903",5],["d180","\u8909\u890B",4,"\u8911\u8914",4,"\u891C",4,"\u8922\u8923\u8924\u8926\u8927\u8928\u8929\u892C\u892D\u892E\u892F\u8931\u8932\u8933\u8935\u8937\u9009\u7663\u7729\u7EDA\u9774\u859B\u5B66\u7A74\u96EA\u8840\u52CB\u718F\u5FAA\u65EC\u8BE2\u5BFB\u9A6F\u5DE1\u6B89\u6C5B\u8BAD\u8BAF\u900A\u8FC5\u538B\u62BC\u9E26\u9E2D\u5440\u4E2B\u82BD\u7259\u869C\u5D16\u8859\u6DAF\u96C5\u54D1\u4E9A\u8BB6\u7109\u54BD\u9609\u70DF\u6DF9\u76D0\u4E25\u7814\u8712\u5CA9\u5EF6\u8A00\u989C\u960E\u708E\u6CBF\u5944\u63A9\u773C\u884D\u6F14\u8273\u5830\u71D5\u538C\u781A\u96C1\u5501\u5F66\u7130\u5BB4\u8C1A\u9A8C\u6B83\u592E\u9E2F\u79E7\u6768\u626C\u4F6F\u75A1\u7F8A\u6D0B\u9633\u6C27\u4EF0\u75D2\u517B\u6837\u6F3E\u9080\u8170\u5996\u7476"],["d240","\u8938",8,"\u8942\u8943\u8945",24,"\u8960",5,"\u8967",19,"\u897C"],["d280","\u897D\u897E\u8980\u8982\u8984\u8985\u8987",26,"\u6447\u5C27\u9065\u7A91\u8C23\u59DA\u54AC\u8200\u836F\u8981\u8000\u6930\u564E\u8036\u7237\u91CE\u51B6\u4E5F\u9875\u6396\u4E1A\u53F6\u66F3\u814B\u591C\u6DB2\u4E00\u58F9\u533B\u63D6\u94F1\u4F9D\u4F0A\u8863\u9890\u5937\u9057\u79FB\u4EEA\u80F0\u7591\u6C82\u5B9C\u59E8\u5F5D\u6905\u8681\u501A\u5DF2\u4E59\u77E3\u4EE5\u827A\u6291\u6613\u9091\u5C79\u4EBF\u5F79\u81C6\u9038\u8084\u75AB\u4EA6\u88D4\u610F\u6BC5\u5FC6\u4E49\u76CA\u6EA2\u8BE3\u8BAE\u8C0A\u8BD1\u5F02\u7FFC\u7FCC\u7ECE\u8335\u836B\u56E0\u6BB7\u97F3\u9634\u59FB\u541F\u94F6\u6DEB\u5BC5\u996E\u5C39\u5F15\u9690"],["d340","\u89A2",30,"\u89C3\u89CD\u89D3\u89D4\u89D5\u89D7\u89D8\u89D9\u89DB\u89DD\u89DF\u89E0\u89E1\u89E2\u89E4\u89E7\u89E8\u89E9\u89EA\u89EC\u89ED\u89EE\u89F0\u89F1\u89F2\u89F4",6],["d380","\u89FB",4,"\u8A01",5,"\u8A08",21,"\u5370\u82F1\u6A31\u5A74\u9E70\u5E94\u7F28\u83B9\u8424\u8425\u8367\u8747\u8FCE\u8D62\u76C8\u5F71\u9896\u786C\u6620\u54DF\u62E5\u4F63\u81C3\u75C8\u5EB8\u96CD\u8E0A\u86F9\u548F\u6CF3\u6D8C\u6C38\u607F\u52C7\u7528\u5E7D\u4F18\u60A0\u5FE7\u5C24\u7531\u90AE\u94C0\u72B9\u6CB9\u6E38\u9149\u6709\u53CB\u53F3\u4F51\u91C9\u8BF1\u53C8\u5E7C\u8FC2\u6DE4\u4E8E\u76C2\u6986\u865E\u611A\u8206\u4F59\u4FDE\u903E\u9C7C\u6109\u6E1D\u6E14\u9685\u4E88\u5A31\u96E8\u4E0E\u5C7F\u79B9\u5B87\u8BED\u7FBD\u7389\u57DF\u828B\u90C1\u5401\u9047\u55BB\u5CEA\u5FA1\u6108\u6B32\u72F1\u80B2\u8A89"],["d440","\u8A1E",31,"\u8A3F",8,"\u8A49",21],["d480","\u8A5F",25,"\u8A7A",6,"\u6D74\u5BD3\u88D5\u9884\u8C6B\u9A6D\u9E33\u6E0A\u51A4\u5143\u57A3\u8881\u539F\u63F4\u8F95\u56ED\u5458\u5706\u733F\u6E90\u7F18\u8FDC\u82D1\u613F\u6028\u9662\u66F0\u7EA6\u8D8A\u8DC3\u94A5\u5CB3\u7CA4\u6708\u60A6\u9605\u8018\u4E91\u90E7\u5300\u9668\u5141\u8FD0\u8574\u915D\u6655\u97F5\u5B55\u531D\u7838\u6742\u683D\u54C9\u707E\u5BB0\u8F7D\u518D\u5728\u54B1\u6512\u6682\u8D5E\u8D43\u810F\u846C\u906D\u7CDF\u51FF\u85FB\u67A3\u65E9\u6FA1\u86A4\u8E81\u566A\u9020\u7682\u7076\u71E5\u8D23\u62E9\u5219\u6CFD\u8D3C\u600E\u589E\u618E\u66FE\u8D60\u624E\u55B3\u6E23\u672D\u8F67"],["d540","\u8A81",7,"\u8A8B",7,"\u8A94",46],["d580","\u8AC3",32,"\u94E1\u95F8\u7728\u6805\u69A8\u548B\u4E4D\u70B8\u8BC8\u6458\u658B\u5B85\u7A84\u503A\u5BE8\u77BB\u6BE1\u8A79\u7C98\u6CBE\u76CF\u65A9\u8F97\u5D2D\u5C55\u8638\u6808\u5360\u6218\u7AD9\u6E5B\u7EFD\u6A1F\u7AE0\u5F70\u6F33\u5F20\u638C\u6DA8\u6756\u4E08\u5E10\u8D26\u4ED7\u80C0\u7634\u969C\u62DB\u662D\u627E\u6CBC\u8D75\u7167\u7F69\u5146\u8087\u53EC\u906E\u6298\u54F2\u86F0\u8F99\u8005\u9517\u8517\u8FD9\u6D59\u73CD\u659F\u771F\u7504\u7827\u81FB\u8D1E\u9488\u4FA6\u6795\u75B9\u8BCA\u9707\u632F\u9547\u9635\u84B8\u6323\u7741\u5F81\u72F0\u4E89\u6014\u6574\u62EF\u6B63\u653F"],["d640","\u8AE4",34,"\u8B08",27],["d680","\u8B24\u8B25\u8B27",30,"\u5E27\u75C7\u90D1\u8BC1\u829D\u679D\u652F\u5431\u8718\u77E5\u80A2\u8102\u6C41\u4E4B\u7EC7\u804C\u76F4\u690D\u6B96\u6267\u503C\u4F84\u5740\u6307\u6B62\u8DBE\u53EA\u65E8\u7EB8\u5FD7\u631A\u63B7\u81F3\u81F4\u7F6E\u5E1C\u5CD9\u5236\u667A\u79E9\u7A1A\u8D28\u7099\u75D4\u6EDE\u6CBB\u7A92\u4E2D\u76C5\u5FE0\u949F\u8877\u7EC8\u79CD\u80BF\u91CD\u4EF2\u4F17\u821F\u5468\u5DDE\u6D32\u8BCC\u7CA5\u8F74\u8098\u5E1A\u5492\u76B1\u5B99\u663C\u9AA4\u73E0\u682A\u86DB\u6731\u732A\u8BF8\u8BDB\u9010\u7AF9\u70DB\u716E\u62C4\u77A9\u5631\u4E3B\u8457\u67F1\u52A9\u86C0\u8D2E\u94F8\u7B51"],["d740","\u8B46",31,"\u8B67",4,"\u8B6D",25],["d780","\u8B87",24,"\u8BAC\u8BB1\u8BBB\u8BC7\u8BD0\u8BEA\u8C09\u8C1E\u4F4F\u6CE8\u795D\u9A7B\u6293\u722A\u62FD\u4E13\u7816\u8F6C\u64B0\u8D5A\u7BC6\u6869\u5E84\u88C5\u5986\u649E\u58EE\u72B6\u690E\u9525\u8FFD\u8D58\u5760\u7F00\u8C06\u51C6\u6349\u62D9\u5353\u684C\u7422\u8301\u914C\u5544\u7740\u707C\u6D4A\u5179\u54A8\u8D44\u59FF\u6ECB\u6DC4\u5B5C\u7D2B\u4ED4\u7C7D\u6ED3\u5B50\u81EA\u6E0D\u5B57\u9B03\u68D5\u8E2A\u5B97\u7EFC\u603B\u7EB5\u90B9\u8D70\u594F\u63CD\u79DF\u8DB3\u5352\u65CF\u7956\u8BC5\u963B\u7EC4\u94BB\u7E82\u5634\u9189\u6700\u7F6A\u5C0A\u9075\u6628\u5DE6\u4F50\u67DE\u505A\u4F5C\u5750\u5EA7"],["d840","\u8C38",8,"\u8C42\u8C43\u8C44\u8C45\u8C48\u8C4A\u8C4B\u8C4D",7,"\u8C56\u8C57\u8C58\u8C59\u8C5B",5,"\u8C63",6,"\u8C6C",6,"\u8C74\u8C75\u8C76\u8C77\u8C7B",6,"\u8C83\u8C84\u8C86\u8C87"],["d880","\u8C88\u8C8B\u8C8D",6,"\u8C95\u8C96\u8C97\u8C99",20,"\u4E8D\u4E0C\u5140\u4E10\u5EFF\u5345\u4E15\u4E98\u4E1E\u9B32\u5B6C\u5669\u4E28\u79BA\u4E3F\u5315\u4E47\u592D\u723B\u536E\u6C10\u56DF\u80E4\u9997\u6BD3\u777E\u9F17\u4E36\u4E9F\u9F10\u4E5C\u4E69\u4E93\u8288\u5B5B\u556C\u560F\u4EC4\u538D\u539D\u53A3\u53A5\u53AE\u9765\u8D5D\u531A\u53F5\u5326\u532E\u533E\u8D5C\u5366\u5363\u5202\u5208\u520E\u522D\u5233\u523F\u5240\u524C\u525E\u5261\u525C\u84AF\u527D\u5282\u5281\u5290\u5293\u5182\u7F54\u4EBB\u4EC3\u4EC9\u4EC2\u4EE8\u4EE1\u4EEB\u4EDE\u4F1B\u4EF3\u4F22\u4F64\u4EF5\u4F25\u4F27\u4F09\u4F2B\u4F5E\u4F67\u6538\u4F5A\u4F5D"],["d940","\u8CAE",62],["d980","\u8CED",32,"\u4F5F\u4F57\u4F32\u4F3D\u4F76\u4F74\u4F91\u4F89\u4F83\u4F8F\u4F7E\u4F7B\u4FAA\u4F7C\u4FAC\u4F94\u4FE6\u4FE8\u4FEA\u4FC5\u4FDA\u4FE3\u4FDC\u4FD1\u4FDF\u4FF8\u5029\u504C\u4FF3\u502C\u500F\u502E\u502D\u4FFE\u501C\u500C\u5025\u5028\u507E\u5043\u5055\u5048\u504E\u506C\u507B\u50A5\u50A7\u50A9\u50BA\u50D6\u5106\u50ED\u50EC\u50E6\u50EE\u5107\u510B\u4EDD\u6C3D\u4F58\u4F65\u4FCE\u9FA0\u6C46\u7C74\u516E\u5DFD\u9EC9\u9998\u5181\u5914\u52F9\u530D\u8A07\u5310\u51EB\u5919\u5155\u4EA0\u5156\u4EB3\u886E\u88A4\u4EB5\u8114\u88D2\u7980\u5B34\u8803\u7FB8\u51AB\u51B1\u51BD\u51BC"],["da40","\u8D0E",14,"\u8D20\u8D51\u8D52\u8D57\u8D5F\u8D65\u8D68\u8D69\u8D6A\u8D6C\u8D6E\u8D6F\u8D71\u8D72\u8D78",8,"\u8D82\u8D83\u8D86\u8D87\u8D88\u8D89\u8D8C",4,"\u8D92\u8D93\u8D95",9,"\u8DA0\u8DA1"],["da80","\u8DA2\u8DA4",12,"\u8DB2\u8DB6\u8DB7\u8DB9\u8DBB\u8DBD\u8DC0\u8DC1\u8DC2\u8DC5\u8DC7\u8DC8\u8DC9\u8DCA\u8DCD\u8DD0\u8DD2\u8DD3\u8DD4\u51C7\u5196\u51A2\u51A5\u8BA0\u8BA6\u8BA7\u8BAA\u8BB4\u8BB5\u8BB7\u8BC2\u8BC3\u8BCB\u8BCF\u8BCE\u8BD2\u8BD3\u8BD4\u8BD6\u8BD8\u8BD9\u8BDC\u8BDF\u8BE0\u8BE4\u8BE8\u8BE9\u8BEE\u8BF0\u8BF3\u8BF6\u8BF9\u8BFC\u8BFF\u8C00\u8C02\u8C04\u8C07\u8C0C\u8C0F\u8C11\u8C12\u8C14\u8C15\u8C16\u8C19\u8C1B\u8C18\u8C1D\u8C1F\u8C20\u8C21\u8C25\u8C27\u8C2A\u8C2B\u8C2E\u8C2F\u8C32\u8C33\u8C35\u8C36\u5369\u537A\u961D\u9622\u9621\u9631\u962A\u963D\u963C\u9642\u9649\u9654\u965F\u9667\u966C\u9672\u9674\u9688\u968D\u9697\u96B0\u9097\u909B\u909D\u9099\u90AC\u90A1\u90B4\u90B3\u90B6\u90BA"],["db40","\u8DD5\u8DD8\u8DD9\u8DDC\u8DE0\u8DE1\u8DE2\u8DE5\u8DE6\u8DE7\u8DE9\u8DED\u8DEE\u8DF0\u8DF1\u8DF2\u8DF4\u8DF6\u8DFC\u8DFE",6,"\u8E06\u8E07\u8E08\u8E0B\u8E0D\u8E0E\u8E10\u8E11\u8E12\u8E13\u8E15",7,"\u8E20\u8E21\u8E24",4,"\u8E2B\u8E2D\u8E30\u8E32\u8E33\u8E34\u8E36\u8E37\u8E38\u8E3B\u8E3C\u8E3E"],["db80","\u8E3F\u8E43\u8E45\u8E46\u8E4C",4,"\u8E53",5,"\u8E5A",11,"\u8E67\u8E68\u8E6A\u8E6B\u8E6E\u8E71\u90B8\u90B0\u90CF\u90C5\u90BE\u90D0\u90C4\u90C7\u90D3\u90E6\u90E2\u90DC\u90D7\u90DB\u90EB\u90EF\u90FE\u9104\u9122\u911E\u9123\u9131\u912F\u9139\u9143\u9146\u520D\u5942\u52A2\u52AC\u52AD\u52BE\u54FF\u52D0\u52D6\u52F0\u53DF\u71EE\u77CD\u5EF4\u51F5\u51FC\u9B2F\u53B6\u5F01\u755A\u5DEF\u574C\u57A9\u57A1\u587E\u58BC\u58C5\u58D1\u5729\u572C\u572A\u5733\u5739\u572E\u572F\u575C\u573B\u5742\u5769\u5785\u576B\u5786\u577C\u577B\u5768\u576D\u5776\u5773\u57AD\u57A4\u578C\u57B2\u57CF\u57A7\u57B4\u5793\u57A0\u57D5\u57D8\u57DA\u57D9\u57D2\u57B8\u57F4\u57EF\u57F8\u57E4\u57DD"],["dc40","\u8E73\u8E75\u8E77",4,"\u8E7D\u8E7E\u8E80\u8E82\u8E83\u8E84\u8E86\u8E88",6,"\u8E91\u8E92\u8E93\u8E95",6,"\u8E9D\u8E9F",11,"\u8EAD\u8EAE\u8EB0\u8EB1\u8EB3",6,"\u8EBB",7],["dc80","\u8EC3",10,"\u8ECF",21,"\u580B\u580D\u57FD\u57ED\u5800\u581E\u5819\u5844\u5820\u5865\u586C\u5881\u5889\u589A\u5880\u99A8\u9F19\u61FF\u8279\u827D\u827F\u828F\u828A\u82A8\u8284\u828E\u8291\u8297\u8299\u82AB\u82B8\u82BE\u82B0\u82C8\u82CA\u82E3\u8298\u82B7\u82AE\u82CB\u82CC\u82C1\u82A9\u82B4\u82A1\u82AA\u829F\u82C4\u82CE\u82A4\u82E1\u8309\u82F7\u82E4\u830F\u8307\u82DC\u82F4\u82D2\u82D8\u830C\u82FB\u82D3\u8311\u831A\u8306\u8314\u8315\u82E0\u82D5\u831C\u8351\u835B\u835C\u8308\u8392\u833C\u8334\u8331\u839B\u835E\u832F\u834F\u8347\u8343\u835F\u8340\u8317\u8360\u832D\u833A\u8333\u8366\u8365"],["dd40","\u8EE5",62],["dd80","\u8F24",32,"\u8368\u831B\u8369\u836C\u836A\u836D\u836E\u83B0\u8378\u83B3\u83B4\u83A0\u83AA\u8393\u839C\u8385\u837C\u83B6\u83A9\u837D\u83B8\u837B\u8398\u839E\u83A8\u83BA\u83BC\u83C1\u8401\u83E5\u83D8\u5807\u8418\u840B\u83DD\u83FD\u83D6\u841C\u8438\u8411\u8406\u83D4\u83DF\u840F\u8403\u83F8\u83F9\u83EA\u83C5\u83C0\u8426\u83F0\u83E1\u845C\u8451\u845A\u8459\u8473\u8487\u8488\u847A\u8489\u8478\u843C\u8446\u8469\u8476\u848C\u848E\u8431\u846D\u84C1\u84CD\u84D0\u84E6\u84BD\u84D3\u84CA\u84BF\u84BA\u84E0\u84A1\u84B9\u84B4\u8497\u84E5\u84E3\u850C\u750D\u8538\u84F0\u8539\u851F\u853A"],["de40","\u8F45",32,"\u8F6A\u8F80\u8F8C\u8F92\u8F9D\u8FA0\u8FA1\u8FA2\u8FA4\u8FA5\u8FA6\u8FA7\u8FAA\u8FAC\u8FAD\u8FAE\u8FAF\u8FB2\u8FB3\u8FB4\u8FB5\u8FB7\u8FB8\u8FBA\u8FBB\u8FBC\u8FBF\u8FC0\u8FC3\u8FC6"],["de80","\u8FC9",4,"\u8FCF\u8FD2\u8FD6\u8FD7\u8FDA\u8FE0\u8FE1\u8FE3\u8FE7\u8FEC\u8FEF\u8FF1\u8FF2\u8FF4\u8FF5\u8FF6\u8FFA\u8FFB\u8FFC\u8FFE\u8FFF\u9007\u9008\u900C\u900E\u9013\u9015\u9018\u8556\u853B\u84FF\u84FC\u8559\u8548\u8568\u8564\u855E\u857A\u77A2\u8543\u8572\u857B\u85A4\u85A8\u8587\u858F\u8579\u85AE\u859C\u8585\u85B9\u85B7\u85B0\u85D3\u85C1\u85DC\u85FF\u8627\u8605\u8629\u8616\u863C\u5EFE\u5F08\u593C\u5941\u8037\u5955\u595A\u5958\u530F\u5C22\u5C25\u5C2C\u5C34\u624C\u626A\u629F\u62BB\u62CA\u62DA\u62D7\u62EE\u6322\u62F6\u6339\u634B\u6343\u63AD\u63F6\u6371\u637A\u638E\u63B4\u636D\u63AC\u638A\u6369\u63AE\u63BC\u63F2\u63F8\u63E0\u63FF\u63C4\u63DE\u63CE\u6452\u63C6\u63BE\u6445\u6441\u640B\u641B\u6420\u640C\u6426\u6421\u645E\u6484\u646D\u6496"],["df40","\u9019\u901C\u9023\u9024\u9025\u9027",5,"\u9030",4,"\u9037\u9039\u903A\u903D\u903F\u9040\u9043\u9045\u9046\u9048",4,"\u904E\u9054\u9055\u9056\u9059\u905A\u905C",5,"\u9064\u9066\u9067\u9069\u906A\u906B\u906C\u906F",4,"\u9076",6,"\u907E\u9081"],["df80","\u9084\u9085\u9086\u9087\u9089\u908A\u908C",4,"\u9092\u9094\u9096\u9098\u909A\u909C\u909E\u909F\u90A0\u90A4\u90A5\u90A7\u90A8\u90A9\u90AB\u90AD\u90B2\u90B7\u90BC\u90BD\u90BF\u90C0\u647A\u64B7\u64B8\u6499\u64BA\u64C0\u64D0\u64D7\u64E4\u64E2\u6509\u6525\u652E\u5F0B\u5FD2\u7519\u5F11\u535F\u53F1\u53FD\u53E9\u53E8\u53FB\u5412\u5416\u5406\u544B\u5452\u5453\u5454\u5456\u5443\u5421\u5457\u5459\u5423\u5432\u5482\u5494\u5477\u5471\u5464\u549A\u549B\u5484\u5476\u5466\u549D\u54D0\u54AD\u54C2\u54B4\u54D2\u54A7\u54A6\u54D3\u54D4\u5472\u54A3\u54D5\u54BB\u54BF\u54CC\u54D9\u54DA\u54DC\u54A9\u54AA\u54A4\u54DD\u54CF\u54DE\u551B\u54E7\u5520\u54FD\u5514\u54F3\u5522\u5523\u550F\u5511\u5527\u552A\u5567\u558F\u55B5\u5549\u556D\u5541\u5555\u553F\u5550\u553C"],["e040","\u90C2\u90C3\u90C6\u90C8\u90C9\u90CB\u90CC\u90CD\u90D2\u90D4\u90D5\u90D6\u90D8\u90D9\u90DA\u90DE\u90DF\u90E0\u90E3\u90E4\u90E5\u90E9\u90EA\u90EC\u90EE\u90F0\u90F1\u90F2\u90F3\u90F5\u90F6\u90F7\u90F9\u90FA\u90FB\u90FC\u90FF\u9100\u9101\u9103\u9105",19,"\u911A\u911B\u911C"],["e080","\u911D\u911F\u9120\u9121\u9124",10,"\u9130\u9132",6,"\u913A",8,"\u9144\u5537\u5556\u5575\u5576\u5577\u5533\u5530\u555C\u558B\u55D2\u5583\u55B1\u55B9\u5588\u5581\u559F\u557E\u55D6\u5591\u557B\u55DF\u55BD\u55BE\u5594\u5599\u55EA\u55F7\u55C9\u561F\u55D1\u55EB\u55EC\u55D4\u55E6\u55DD\u55C4\u55EF\u55E5\u55F2\u55F3\u55CC\u55CD\u55E8\u55F5\u55E4\u8F94\u561E\u5608\u560C\u5601\u5624\u5623\u55FE\u5600\u5627\u562D\u5658\u5639\u5657\u562C\u564D\u5662\u5659\u565C\u564C\u5654\u5686\u5664\u5671\u566B\u567B\u567C\u5685\u5693\u56AF\u56D4\u56D7\u56DD\u56E1\u56F5\u56EB\u56F9\u56FF\u5704\u570A\u5709\u571C\u5E0F\u5E19\u5E14\u5E11\u5E31\u5E3B\u5E3C"],["e140","\u9145\u9147\u9148\u9151\u9153\u9154\u9155\u9156\u9158\u9159\u915B\u915C\u915F\u9160\u9166\u9167\u9168\u916B\u916D\u9173\u917A\u917B\u917C\u9180",4,"\u9186\u9188\u918A\u918E\u918F\u9193",6,"\u919C",5,"\u91A4",5,"\u91AB\u91AC\u91B0\u91B1\u91B2\u91B3\u91B6\u91B7\u91B8\u91B9\u91BB"],["e180","\u91BC",10,"\u91C8\u91CB\u91D0\u91D2",9,"\u91DD",8,"\u5E37\u5E44\u5E54\u5E5B\u5E5E\u5E61\u5C8C\u5C7A\u5C8D\u5C90\u5C96\u5C88\u5C98\u5C99\u5C91\u5C9A\u5C9C\u5CB5\u5CA2\u5CBD\u5CAC\u5CAB\u5CB1\u5CA3\u5CC1\u5CB7\u5CC4\u5CD2\u5CE4\u5CCB\u5CE5\u5D02\u5D03\u5D27\u5D26\u5D2E\u5D24\u5D1E\u5D06\u5D1B\u5D58\u5D3E\u5D34\u5D3D\u5D6C\u5D5B\u5D6F\u5D5D\u5D6B\u5D4B\u5D4A\u5D69\u5D74\u5D82\u5D99\u5D9D\u8C73\u5DB7\u5DC5\u5F73\u5F77\u5F82\u5F87\u5F89\u5F8C\u5F95\u5F99\u5F9C\u5FA8\u5FAD\u5FB5\u5FBC\u8862\u5F61\u72AD\u72B0\u72B4\u72B7\u72B8\u72C3\u72C1\u72CE\u72CD\u72D2\u72E8\u72EF\u72E9\u72F2\u72F4\u72F7\u7301\u72F3\u7303\u72FA"],["e240","\u91E6",62],["e280","\u9225",32,"\u72FB\u7317\u7313\u7321\u730A\u731E\u731D\u7315\u7322\u7339\u7325\u732C\u7338\u7331\u7350\u734D\u7357\u7360\u736C\u736F\u737E\u821B\u5925\u98E7\u5924\u5902\u9963\u9967",5,"\u9974\u9977\u997D\u9980\u9984\u9987\u998A\u998D\u9990\u9991\u9993\u9994\u9995\u5E80\u5E91\u5E8B\u5E96\u5EA5\u5EA0\u5EB9\u5EB5\u5EBE\u5EB3\u8D53\u5ED2\u5ED1\u5EDB\u5EE8\u5EEA\u81BA\u5FC4\u5FC9\u5FD6\u5FCF\u6003\u5FEE\u6004\u5FE1\u5FE4\u5FFE\u6005\u6006\u5FEA\u5FED\u5FF8\u6019\u6035\u6026\u601B\u600F\u600D\u6029\u602B\u600A\u603F\u6021\u6078\u6079\u607B\u607A\u6042"],["e340","\u9246",45,"\u9275",16],["e380","\u9286",7,"\u928F",24,"\u606A\u607D\u6096\u609A\u60AD\u609D\u6083\u6092\u608C\u609B\u60EC\u60BB\u60B1\u60DD\u60D8\u60C6\u60DA\u60B4\u6120\u6126\u6115\u6123\u60F4\u6100\u610E\u612B\u614A\u6175\u61AC\u6194\u61A7\u61B7\u61D4\u61F5\u5FDD\u96B3\u95E9\u95EB\u95F1\u95F3\u95F5\u95F6\u95FC\u95FE\u9603\u9604\u9606\u9608\u960A\u960B\u960C\u960D\u960F\u9612\u9615\u9616\u9617\u9619\u961A\u4E2C\u723F\u6215\u6C35\u6C54\u6C5C\u6C4A\u6CA3\u6C85\u6C90\u6C94\u6C8C\u6C68\u6C69\u6C74\u6C76\u6C86\u6CA9\u6CD0\u6CD4\u6CAD\u6CF7\u6CF8\u6CF1\u6CD7\u6CB2\u6CE0\u6CD6\u6CFA\u6CEB\u6CEE\u6CB1\u6CD3\u6CEF\u6CFE"],["e440","\u92A8",5,"\u92AF",24,"\u92C9",31],["e480","\u92E9",32,"\u6D39\u6D27\u6D0C\u6D43\u6D48\u6D07\u6D04\u6D19\u6D0E\u6D2B\u6D4D\u6D2E\u6D35\u6D1A\u6D4F\u6D52\u6D54\u6D33\u6D91\u6D6F\u6D9E\u6DA0\u6D5E\u6D93\u6D94\u6D5C\u6D60\u6D7C\u6D63\u6E1A\u6DC7\u6DC5\u6DDE\u6E0E\u6DBF\u6DE0\u6E11\u6DE6\u6DDD\u6DD9\u6E16\u6DAB\u6E0C\u6DAE\u6E2B\u6E6E\u6E4E\u6E6B\u6EB2\u6E5F\u6E86\u6E53\u6E54\u6E32\u6E25\u6E44\u6EDF\u6EB1\u6E98\u6EE0\u6F2D\u6EE2\u6EA5\u6EA7\u6EBD\u6EBB\u6EB7\u6ED7\u6EB4\u6ECF\u6E8F\u6EC2\u6E9F\u6F62\u6F46\u6F47\u6F24\u6F15\u6EF9\u6F2F\u6F36\u6F4B\u6F74\u6F2A\u6F09\u6F29\u6F89\u6F8D\u6F8C\u6F78\u6F72\u6F7C\u6F7A\u6FD1"],["e540","\u930A",51,"\u933F",10],["e580","\u934A",31,"\u936B\u6FC9\u6FA7\u6FB9\u6FB6\u6FC2\u6FE1\u6FEE\u6FDE\u6FE0\u6FEF\u701A\u7023\u701B\u7039\u7035\u704F\u705E\u5B80\u5B84\u5B95\u5B93\u5BA5\u5BB8\u752F\u9A9E\u6434\u5BE4\u5BEE\u8930\u5BF0\u8E47\u8B07\u8FB6\u8FD3\u8FD5\u8FE5\u8FEE\u8FE4\u8FE9\u8FE6\u8FF3\u8FE8\u9005\u9004\u900B\u9026\u9011\u900D\u9016\u9021\u9035\u9036\u902D\u902F\u9044\u9051\u9052\u9050\u9068\u9058\u9062\u905B\u66B9\u9074\u907D\u9082\u9088\u9083\u908B\u5F50\u5F57\u5F56\u5F58\u5C3B\u54AB\u5C50\u5C59\u5B71\u5C63\u5C66\u7FBC\u5F2A\u5F29\u5F2D\u8274\u5F3C\u9B3B\u5C6E\u5981\u5983\u598D\u59A9\u59AA\u59A3"],["e640","\u936C",34,"\u9390",27],["e680","\u93AC",29,"\u93CB\u93CC\u93CD\u5997\u59CA\u59AB\u599E\u59A4\u59D2\u59B2\u59AF\u59D7\u59BE\u5A05\u5A06\u59DD\u5A08\u59E3\u59D8\u59F9\u5A0C\u5A09\u5A32\u5A34\u5A11\u5A23\u5A13\u5A40\u5A67\u5A4A\u5A55\u5A3C\u5A62\u5A75\u80EC\u5AAA\u5A9B\u5A77\u5A7A\u5ABE\u5AEB\u5AB2\u5AD2\u5AD4\u5AB8\u5AE0\u5AE3\u5AF1\u5AD6\u5AE6\u5AD8\u5ADC\u5B09\u5B17\u5B16\u5B32\u5B37\u5B40\u5C15\u5C1C\u5B5A\u5B65\u5B73\u5B51\u5B53\u5B62\u9A75\u9A77\u9A78\u9A7A\u9A7F\u9A7D\u9A80\u9A81\u9A85\u9A88\u9A8A\u9A90\u9A92\u9A93\u9A96\u9A98\u9A9B\u9A9C\u9A9D\u9A9F\u9AA0\u9AA2\u9AA3\u9AA5\u9AA7\u7E9F\u7EA1\u7EA3\u7EA5\u7EA8\u7EA9"],["e740","\u93CE",7,"\u93D7",54],["e780","\u940E",32,"\u7EAD\u7EB0\u7EBE\u7EC0\u7EC1\u7EC2\u7EC9\u7ECB\u7ECC\u7ED0\u7ED4\u7ED7\u7EDB\u7EE0\u7EE1\u7EE8\u7EEB\u7EEE\u7EEF\u7EF1\u7EF2\u7F0D\u7EF6\u7EFA\u7EFB\u7EFE\u7F01\u7F02\u7F03\u7F07\u7F08\u7F0B\u7F0C\u7F0F\u7F11\u7F12\u7F17\u7F19\u7F1C\u7F1B\u7F1F\u7F21",6,"\u7F2A\u7F2B\u7F2C\u7F2D\u7F2F",4,"\u7F35\u5E7A\u757F\u5DDB\u753E\u9095\u738E\u7391\u73AE\u73A2\u739F\u73CF\u73C2\u73D1\u73B7\u73B3\u73C0\u73C9\u73C8\u73E5\u73D9\u987C\u740A\u73E9\u73E7\u73DE\u73BA\u73F2\u740F\u742A\u745B\u7426\u7425\u7428\u7430\u742E\u742C"],["e840","\u942F",14,"\u943F",43,"\u946C\u946D\u946E\u946F"],["e880","\u9470",20,"\u9491\u9496\u9498\u94C7\u94CF\u94D3\u94D4\u94DA\u94E6\u94FB\u951C\u9520\u741B\u741A\u7441\u745C\u7457\u7455\u7459\u7477\u746D\u747E\u749C\u748E\u7480\u7481\u7487\u748B\u749E\u74A8\u74A9\u7490\u74A7\u74D2\u74BA\u97EA\u97EB\u97EC\u674C\u6753\u675E\u6748\u6769\u67A5\u6787\u676A\u6773\u6798\u67A7\u6775\u67A8\u679E\u67AD\u678B\u6777\u677C\u67F0\u6809\u67D8\u680A\u67E9\u67B0\u680C\u67D9\u67B5\u67DA\u67B3\u67DD\u6800\u67C3\u67B8\u67E2\u680E\u67C1\u67FD\u6832\u6833\u6860\u6861\u684E\u6862\u6844\u6864\u6883\u681D\u6855\u6866\u6841\u6867\u6840\u683E\u684A\u6849\u6829\u68B5\u688F\u6874\u6877\u6893\u686B\u68C2\u696E\u68FC\u691F\u6920\u68F9"],["e940","\u9527\u9533\u953D\u9543\u9548\u954B\u9555\u955A\u9560\u956E\u9574\u9575\u9577",7,"\u9580",42],["e980","\u95AB",32,"\u6924\u68F0\u690B\u6901\u6957\u68E3\u6910\u6971\u6939\u6960\u6942\u695D\u6984\u696B\u6980\u6998\u6978\u6934\u69CC\u6987\u6988\u69CE\u6989\u6966\u6963\u6979\u699B\u69A7\u69BB\u69AB\u69AD\u69D4\u69B1\u69C1\u69CA\u69DF\u6995\u69E0\u698D\u69FF\u6A2F\u69ED\u6A17\u6A18\u6A65\u69F2\u6A44\u6A3E\u6AA0\u6A50\u6A5B\u6A35\u6A8E\u6A79\u6A3D\u6A28\u6A58\u6A7C\u6A91\u6A90\u6AA9\u6A97\u6AAB\u7337\u7352\u6B81\u6B82\u6B87\u6B84\u6B92\u6B93\u6B8D\u6B9A\u6B9B\u6BA1\u6BAA\u8F6B\u8F6D\u8F71\u8F72\u8F73\u8F75\u8F76\u8F78\u8F77\u8F79\u8F7A\u8F7C\u8F7E\u8F81\u8F82\u8F84\u8F87\u8F8B"],["ea40","\u95CC",27,"\u95EC\u95FF\u9607\u9613\u9618\u961B\u961E\u9620\u9623",6,"\u962B\u962C\u962D\u962F\u9630\u9637\u9638\u9639\u963A\u963E\u9641\u9643\u964A\u964E\u964F\u9651\u9652\u9653\u9656\u9657"],["ea80","\u9658\u9659\u965A\u965C\u965D\u965E\u9660\u9663\u9665\u9666\u966B\u966D",4,"\u9673\u9678",12,"\u9687\u9689\u968A\u8F8D\u8F8E\u8F8F\u8F98\u8F9A\u8ECE\u620B\u6217\u621B\u621F\u6222\u6221\u6225\u6224\u622C\u81E7\u74EF\u74F4\u74FF\u750F\u7511\u7513\u6534\u65EE\u65EF\u65F0\u660A\u6619\u6772\u6603\u6615\u6600\u7085\u66F7\u661D\u6634\u6631\u6636\u6635\u8006\u665F\u6654\u6641\u664F\u6656\u6661\u6657\u6677\u6684\u668C\u66A7\u669D\u66BE\u66DB\u66DC\u66E6\u66E9\u8D32\u8D33\u8D36\u8D3B\u8D3D\u8D40\u8D45\u8D46\u8D48\u8D49\u8D47\u8D4D\u8D55\u8D59\u89C7\u89CA\u89CB\u89CC\u89CE\u89CF\u89D0\u89D1\u726E\u729F\u725D\u7266\u726F\u727E\u727F\u7284\u728B\u728D\u728F\u7292\u6308\u6332\u63B0"],["eb40","\u968C\u968E\u9691\u9692\u9693\u9695\u9696\u969A\u969B\u969D",9,"\u96A8",7,"\u96B1\u96B2\u96B4\u96B5\u96B7\u96B8\u96BA\u96BB\u96BF\u96C2\u96C3\u96C8\u96CA\u96CB\u96D0\u96D1\u96D3\u96D4\u96D6",9,"\u96E1",6,"\u96EB"],["eb80","\u96EC\u96ED\u96EE\u96F0\u96F1\u96F2\u96F4\u96F5\u96F8\u96FA\u96FB\u96FC\u96FD\u96FF\u9702\u9703\u9705\u970A\u970B\u970C\u9710\u9711\u9712\u9714\u9715\u9717",4,"\u971D\u971F\u9720\u643F\u64D8\u8004\u6BEA\u6BF3\u6BFD\u6BF5\u6BF9\u6C05\u6C07\u6C06\u6C0D\u6C15\u6C18\u6C19\u6C1A\u6C21\u6C29\u6C24\u6C2A\u6C32\u6535\u6555\u656B\u724D\u7252\u7256\u7230\u8662\u5216\u809F\u809C\u8093\u80BC\u670A\u80BD\u80B1\u80AB\u80AD\u80B4\u80B7\u80E7\u80E8\u80E9\u80EA\u80DB\u80C2\u80C4\u80D9\u80CD\u80D7\u6710\u80DD\u80EB\u80F1\u80F4\u80ED\u810D\u810E\u80F2\u80FC\u6715\u8112\u8C5A\u8136\u811E\u812C\u8118\u8132\u8148\u814C\u8153\u8174\u8159\u815A\u8171\u8160\u8169\u817C\u817D\u816D\u8167\u584D\u5AB5\u8188\u8182\u8191\u6ED5\u81A3\u81AA\u81CC\u6726\u81CA\u81BB"],["ec40","\u9721",8,"\u972B\u972C\u972E\u972F\u9731\u9733",4,"\u973A\u973B\u973C\u973D\u973F",18,"\u9754\u9755\u9757\u9758\u975A\u975C\u975D\u975F\u9763\u9764\u9766\u9767\u9768\u976A",7],["ec80","\u9772\u9775\u9777",4,"\u977D",7,"\u9786",4,"\u978C\u978E\u978F\u9790\u9793\u9795\u9796\u9797\u9799",4,"\u81C1\u81A6\u6B24\u6B37\u6B39\u6B43\u6B46\u6B59\u98D1\u98D2\u98D3\u98D5\u98D9\u98DA\u6BB3\u5F40\u6BC2\u89F3\u6590\u9F51\u6593\u65BC\u65C6\u65C4\u65C3\u65CC\u65CE\u65D2\u65D6\u7080\u709C\u7096\u709D\u70BB\u70C0\u70B7\u70AB\u70B1\u70E8\u70CA\u7110\u7113\u7116\u712F\u7131\u7173\u715C\u7168\u7145\u7172\u714A\u7178\u717A\u7198\u71B3\u71B5\u71A8\u71A0\u71E0\u71D4\u71E7\u71F9\u721D\u7228\u706C\u7118\u7166\u71B9\u623E\u623D\u6243\u6248\u6249\u793B\u7940\u7946\u7949\u795B\u795C\u7953\u795A\u7962\u7957\u7960\u796F\u7967\u797A\u7985\u798A\u799A\u79A7\u79B3\u5FD1\u5FD0"],["ed40","\u979E\u979F\u97A1\u97A2\u97A4",6,"\u97AC\u97AE\u97B0\u97B1\u97B3\u97B5",46],["ed80","\u97E4\u97E5\u97E8\u97EE",4,"\u97F4\u97F7",23,"\u603C\u605D\u605A\u6067\u6041\u6059\u6063\u60AB\u6106\u610D\u615D\u61A9\u619D\u61CB\u61D1\u6206\u8080\u807F\u6C93\u6CF6\u6DFC\u77F6\u77F8\u7800\u7809\u7817\u7818\u7811\u65AB\u782D\u781C\u781D\u7839\u783A\u783B\u781F\u783C\u7825\u782C\u7823\u7829\u784E\u786D\u7856\u7857\u7826\u7850\u7847\u784C\u786A\u789B\u7893\u789A\u7887\u789C\u78A1\u78A3\u78B2\u78B9\u78A5\u78D4\u78D9\u78C9\u78EC\u78F2\u7905\u78F4\u7913\u7924\u791E\u7934\u9F9B\u9EF9\u9EFB\u9EFC\u76F1\u7704\u770D\u76F9\u7707\u7708\u771A\u7722\u7719\u772D\u7726\u7735\u7738\u7750\u7751\u7747\u7743\u775A\u7768"],["ee40","\u980F",62],["ee80","\u984E",32,"\u7762\u7765\u777F\u778D\u777D\u7780\u778C\u7791\u779F\u77A0\u77B0\u77B5\u77BD\u753A\u7540\u754E\u754B\u7548\u755B\u7572\u7579\u7583\u7F58\u7F61\u7F5F\u8A48\u7F68\u7F74\u7F71\u7F79\u7F81\u7F7E\u76CD\u76E5\u8832\u9485\u9486\u9487\u948B\u948A\u948C\u948D\u948F\u9490\u9494\u9497\u9495\u949A\u949B\u949C\u94A3\u94A4\u94AB\u94AA\u94AD\u94AC\u94AF\u94B0\u94B2\u94B4\u94B6",4,"\u94BC\u94BD\u94BF\u94C4\u94C8",6,"\u94D0\u94D1\u94D2\u94D5\u94D6\u94D7\u94D9\u94D8\u94DB\u94DE\u94DF\u94E0\u94E2\u94E4\u94E5\u94E7\u94E8\u94EA"],["ef40","\u986F",5,"\u988B\u988E\u9892\u9895\u9899\u98A3\u98A8",37,"\u98CF\u98D0\u98D4\u98D6\u98D7\u98DB\u98DC\u98DD\u98E0",4],["ef80","\u98E5\u98E6\u98E9",30,"\u94E9\u94EB\u94EE\u94EF\u94F3\u94F4\u94F5\u94F7\u94F9\u94FC\u94FD\u94FF\u9503\u9502\u9506\u9507\u9509\u950A\u950D\u950E\u950F\u9512",4,"\u9518\u951B\u951D\u951E\u951F\u9522\u952A\u952B\u9529\u952C\u9531\u9532\u9534\u9536\u9537\u9538\u953C\u953E\u953F\u9542\u9535\u9544\u9545\u9546\u9549\u954C\u954E\u954F\u9552\u9553\u9554\u9556\u9557\u9558\u9559\u955B\u955E\u955F\u955D\u9561\u9562\u9564",8,"\u956F\u9571\u9572\u9573\u953A\u77E7\u77EC\u96C9\u79D5\u79ED\u79E3\u79EB\u7A06\u5D47\u7A03\u7A02\u7A1E\u7A14"],["f040","\u9908",4,"\u990E\u990F\u9911",28,"\u992F",26],["f080","\u994A",9,"\u9956",12,"\u9964\u9966\u9973\u9978\u9979\u997B\u997E\u9982\u9983\u9989\u7A39\u7A37\u7A51\u9ECF\u99A5\u7A70\u7688\u768E\u7693\u7699\u76A4\u74DE\u74E0\u752C\u9E20\u9E22\u9E28",4,"\u9E32\u9E31\u9E36\u9E38\u9E37\u9E39\u9E3A\u9E3E\u9E41\u9E42\u9E44\u9E46\u9E47\u9E48\u9E49\u9E4B\u9E4C\u9E4E\u9E51\u9E55\u9E57\u9E5A\u9E5B\u9E5C\u9E5E\u9E63\u9E66",6,"\u9E71\u9E6D\u9E73\u7592\u7594\u7596\u75A0\u759D\u75AC\u75A3\u75B3\u75B4\u75B8\u75C4\u75B1\u75B0\u75C3\u75C2\u75D6\u75CD\u75E3\u75E8\u75E6\u75E4\u75EB\u75E7\u7603\u75F1\u75FC\u75FF\u7610\u7600\u7605\u760C\u7617\u760A\u7625\u7618\u7615\u7619"],["f140","\u998C\u998E\u999A",10,"\u99A6\u99A7\u99A9",47],["f180","\u99D9",32,"\u761B\u763C\u7622\u7620\u7640\u762D\u7630\u763F\u7635\u7643\u763E\u7633\u764D\u765E\u7654\u765C\u7656\u766B\u766F\u7FCA\u7AE6\u7A78\u7A79\u7A80\u7A86\u7A88\u7A95\u7AA6\u7AA0\u7AAC\u7AA8\u7AAD\u7AB3\u8864\u8869\u8872\u887D\u887F\u8882\u88A2\u88C6\u88B7\u88BC\u88C9\u88E2\u88CE\u88E3\u88E5\u88F1\u891A\u88FC\u88E8\u88FE\u88F0\u8921\u8919\u8913\u891B\u890A\u8934\u892B\u8936\u8941\u8966\u897B\u758B\u80E5\u76B2\u76B4\u77DC\u8012\u8014\u8016\u801C\u8020\u8022\u8025\u8026\u8027\u8029\u8028\u8031\u800B\u8035\u8043\u8046\u804D\u8052\u8069\u8071\u8983\u9878\u9880\u9883"],["f240","\u99FA",62],["f280","\u9A39",32,"\u9889\u988C\u988D\u988F\u9894\u989A\u989B\u989E\u989F\u98A1\u98A2\u98A5\u98A6\u864D\u8654\u866C\u866E\u867F\u867A\u867C\u867B\u86A8\u868D\u868B\u86AC\u869D\u86A7\u86A3\u86AA\u8693\u86A9\u86B6\u86C4\u86B5\u86CE\u86B0\u86BA\u86B1\u86AF\u86C9\u86CF\u86B4\u86E9\u86F1\u86F2\u86ED\u86F3\u86D0\u8713\u86DE\u86F4\u86DF\u86D8\u86D1\u8703\u8707\u86F8\u8708\u870A\u870D\u8709\u8723\u873B\u871E\u8725\u872E\u871A\u873E\u8748\u8734\u8731\u8729\u8737\u873F\u8782\u8722\u877D\u877E\u877B\u8760\u8770\u874C\u876E\u878B\u8753\u8763\u877C\u8764\u8759\u8765\u8793\u87AF\u87A8\u87D2"],["f340","\u9A5A",17,"\u9A72\u9A83\u9A89\u9A8D\u9A8E\u9A94\u9A95\u9A99\u9AA6\u9AA9",6,"\u9AB2\u9AB3\u9AB4\u9AB5\u9AB9\u9ABB\u9ABD\u9ABE\u9ABF\u9AC3\u9AC4\u9AC6",4,"\u9ACD\u9ACE\u9ACF\u9AD0\u9AD2\u9AD4\u9AD5\u9AD6\u9AD7\u9AD9\u9ADA\u9ADB\u9ADC"],["f380","\u9ADD\u9ADE\u9AE0\u9AE2\u9AE3\u9AE4\u9AE5\u9AE7\u9AE8\u9AE9\u9AEA\u9AEC\u9AEE\u9AF0",8,"\u9AFA\u9AFC",6,"\u9B04\u9B05\u9B06\u87C6\u8788\u8785\u87AD\u8797\u8783\u87AB\u87E5\u87AC\u87B5\u87B3\u87CB\u87D3\u87BD\u87D1\u87C0\u87CA\u87DB\u87EA\u87E0\u87EE\u8816\u8813\u87FE\u880A\u881B\u8821\u8839\u883C\u7F36\u7F42\u7F44\u7F45\u8210\u7AFA\u7AFD\u7B08\u7B03\u7B04\u7B15\u7B0A\u7B2B\u7B0F\u7B47\u7B38\u7B2A\u7B19\u7B2E\u7B31\u7B20\u7B25\u7B24\u7B33\u7B3E\u7B1E\u7B58\u7B5A\u7B45\u7B75\u7B4C\u7B5D\u7B60\u7B6E\u7B7B\u7B62\u7B72\u7B71\u7B90\u7BA6\u7BA7\u7BB8\u7BAC\u7B9D\u7BA8\u7B85\u7BAA\u7B9C\u7BA2\u7BAB\u7BB4\u7BD1\u7BC1\u7BCC\u7BDD\u7BDA\u7BE5\u7BE6\u7BEA\u7C0C\u7BFE\u7BFC\u7C0F\u7C16\u7C0B"],["f440","\u9B07\u9B09",5,"\u9B10\u9B11\u9B12\u9B14",10,"\u9B20\u9B21\u9B22\u9B24",10,"\u9B30\u9B31\u9B33",7,"\u9B3D\u9B3E\u9B3F\u9B40\u9B46\u9B4A\u9B4B\u9B4C\u9B4E\u9B50\u9B52\u9B53\u9B55",5],["f480","\u9B5B",32,"\u7C1F\u7C2A\u7C26\u7C38\u7C41\u7C40\u81FE\u8201\u8202\u8204\u81EC\u8844\u8221\u8222\u8223\u822D\u822F\u8228\u822B\u8238\u823B\u8233\u8234\u823E\u8244\u8249\u824B\u824F\u825A\u825F\u8268\u887E\u8885\u8888\u88D8\u88DF\u895E\u7F9D\u7F9F\u7FA7\u7FAF\u7FB0\u7FB2\u7C7C\u6549\u7C91\u7C9D\u7C9C\u7C9E\u7CA2\u7CB2\u7CBC\u7CBD\u7CC1\u7CC7\u7CCC\u7CCD\u7CC8\u7CC5\u7CD7\u7CE8\u826E\u66A8\u7FBF\u7FCE\u7FD5\u7FE5\u7FE1\u7FE6\u7FE9\u7FEE\u7FF3\u7CF8\u7D77\u7DA6\u7DAE\u7E47\u7E9B\u9EB8\u9EB4\u8D73\u8D84\u8D94\u8D91\u8DB1\u8D67\u8D6D\u8C47\u8C49\u914A\u9150\u914E\u914F\u9164"],["f540","\u9B7C",62],["f580","\u9BBB",32,"\u9162\u9161\u9170\u9169\u916F\u917D\u917E\u9172\u9174\u9179\u918C\u9185\u9190\u918D\u9191\u91A2\u91A3\u91AA\u91AD\u91AE\u91AF\u91B5\u91B4\u91BA\u8C55\u9E7E\u8DB8\u8DEB\u8E05\u8E59\u8E69\u8DB5\u8DBF\u8DBC\u8DBA\u8DC4\u8DD6\u8DD7\u8DDA\u8DDE\u8DCE\u8DCF\u8DDB\u8DC6\u8DEC\u8DF7\u8DF8\u8DE3\u8DF9\u8DFB\u8DE4\u8E09\u8DFD\u8E14\u8E1D\u8E1F\u8E2C\u8E2E\u8E23\u8E2F\u8E3A\u8E40\u8E39\u8E35\u8E3D\u8E31\u8E49\u8E41\u8E42\u8E51\u8E52\u8E4A\u8E70\u8E76\u8E7C\u8E6F\u8E74\u8E85\u8E8F\u8E94\u8E90\u8E9C\u8E9E\u8C78\u8C82\u8C8A\u8C85\u8C98\u8C94\u659B\u89D6\u89DE\u89DA\u89DC"],["f640","\u9BDC",62],["f680","\u9C1B",32,"\u89E5\u89EB\u89EF\u8A3E\u8B26\u9753\u96E9\u96F3\u96EF\u9706\u9701\u9708\u970F\u970E\u972A\u972D\u9730\u973E\u9F80\u9F83\u9F85",5,"\u9F8C\u9EFE\u9F0B\u9F0D\u96B9\u96BC\u96BD\u96CE\u96D2\u77BF\u96E0\u928E\u92AE\u92C8\u933E\u936A\u93CA\u938F\u943E\u946B\u9C7F\u9C82\u9C85\u9C86\u9C87\u9C88\u7A23\u9C8B\u9C8E\u9C90\u9C91\u9C92\u9C94\u9C95\u9C9A\u9C9B\u9C9E",5,"\u9CA5",4,"\u9CAB\u9CAD\u9CAE\u9CB0",7,"\u9CBA\u9CBB\u9CBC\u9CBD\u9CC4\u9CC5\u9CC6\u9CC7\u9CCA\u9CCB"],["f740","\u9C3C",62],["f780","\u9C7B\u9C7D\u9C7E\u9C80\u9C83\u9C84\u9C89\u9C8A\u9C8C\u9C8F\u9C93\u9C96\u9C97\u9C98\u9C99\u9C9D\u9CAA\u9CAC\u9CAF\u9CB9\u9CBE",4,"\u9CC8\u9CC9\u9CD1\u9CD2\u9CDA\u9CDB\u9CE0\u9CE1\u9CCC",4,"\u9CD3\u9CD4\u9CD5\u9CD7\u9CD8\u9CD9\u9CDC\u9CDD\u9CDF\u9CE2\u977C\u9785\u9791\u9792\u9794\u97AF\u97AB\u97A3\u97B2\u97B4\u9AB1\u9AB0\u9AB7\u9E58\u9AB6\u9ABA\u9ABC\u9AC1\u9AC0\u9AC5\u9AC2\u9ACB\u9ACC\u9AD1\u9B45\u9B43\u9B47\u9B49\u9B48\u9B4D\u9B51\u98E8\u990D\u992E\u9955\u9954\u9ADF\u9AE1\u9AE6\u9AEF\u9AEB\u9AFB\u9AED\u9AF9\u9B08\u9B0F\u9B13\u9B1F\u9B23\u9EBD\u9EBE\u7E3B\u9E82\u9E87\u9E88\u9E8B\u9E92\u93D6\u9E9D\u9E9F\u9EDB\u9EDC\u9EDD\u9EE0\u9EDF\u9EE2\u9EE9\u9EE7\u9EE5\u9EEA\u9EEF\u9F22\u9F2C\u9F2F\u9F39\u9F37\u9F3D\u9F3E\u9F44"],["f840","\u9CE3",62],["f880","\u9D22",32],["f940","\u9D43",62],["f980","\u9D82",32],["fa40","\u9DA3",62],["fa80","\u9DE2",32],["fb40","\u9E03",27,"\u9E24\u9E27\u9E2E\u9E30\u9E34\u9E3B\u9E3C\u9E40\u9E4D\u9E50\u9E52\u9E53\u9E54\u9E56\u9E59\u9E5D\u9E5F\u9E60\u9E61\u9E62\u9E65\u9E6E\u9E6F\u9E72\u9E74",9,"\u9E80"],["fb80","\u9E81\u9E83\u9E84\u9E85\u9E86\u9E89\u9E8A\u9E8C",5,"\u9E94",8,"\u9E9E\u9EA0",5,"\u9EA7\u9EA8\u9EA9\u9EAA"],["fc40","\u9EAB",8,"\u9EB5\u9EB6\u9EB7\u9EB9\u9EBA\u9EBC\u9EBF",4,"\u9EC5\u9EC6\u9EC7\u9EC8\u9ECA\u9ECB\u9ECC\u9ED0\u9ED2\u9ED3\u9ED5\u9ED6\u9ED7\u9ED9\u9EDA\u9EDE\u9EE1\u9EE3\u9EE4\u9EE6\u9EE8\u9EEB\u9EEC\u9EED\u9EEE\u9EF0",8,"\u9EFA\u9EFD\u9EFF",6],["fc80","\u9F06",4,"\u9F0C\u9F0F\u9F11\u9F12\u9F14\u9F15\u9F16\u9F18\u9F1A",5,"\u9F21\u9F23",8,"\u9F2D\u9F2E\u9F30\u9F31"],["fd40","\u9F32",4,"\u9F38\u9F3A\u9F3C\u9F3F",4,"\u9F45",10,"\u9F52",38],["fd80","\u9F79",5,"\u9F81\u9F82\u9F8D",11,"\u9F9C\u9F9D\u9F9E\u9FA1",4,"\uF92C\uF979\uF995\uF9E7\uF9F1"],["fe40","\uFA0C\uFA0D\uFA0E\uFA0F\uFA11\uFA13\uFA14\uFA18\uFA1F\uFA20\uFA21\uFA23\uFA24\uFA27\uFA28\uFA29"]]});var s0=h((xOe,vY)=>{vY.exports=[["a140","\uE4C6",62],["a180","\uE505",32],["a240","\uE526",62],["a280","\uE565",32],["a2ab","\uE766",5],["a2e3","\u20AC\uE76D"],["a2ef","\uE76E\uE76F"],["a2fd","\uE770\uE771"],["a340","\uE586",62],["a380","\uE5C5",31,"\u3000"],["a440","\uE5E6",62],["a480","\uE625",32],["a4f4","\uE772",10],["a540","\uE646",62],["a580","\uE685",32],["a5f7","\uE77D",7],["a640","\uE6A6",62],["a680","\uE6E5",32],["a6b9","\uE785",7],["a6d9","\uE78D",6],["a6ec","\uE794\uE795"],["a6f3","\uE796"],["a6f6","\uE797",8],["a740","\uE706",62],["a780","\uE745",32],["a7c2","\uE7A0",14],["a7f2","\uE7AF",12],["a896","\uE7BC",10],["a8bc","\u1E3F"],["a8bf","\u01F9"],["a8c1","\uE7C9\uE7CA\uE7CB\uE7CC"],["a8ea","\uE7CD",20],["a958","\uE7E2"],["a95b","\uE7E3"],["a95d","\uE7E4\uE7E5\uE7E6"],["a989","\u303E\u2FF0",11],["a997","\uE7F4",12],["a9f0","\uE801",14],["aaa1","\uE000",93],["aba1","\uE05E",93],["aca1","\uE0BC",93],["ada1","\uE11A",93],["aea1","\uE178",93],["afa1","\uE1D6",93],["d7fa","\uE810",4],["f8a1","\uE234",93],["f9a1","\uE292",93],["faa1","\uE2F0",93],["fba1","\uE34E",93],["fca1","\uE3AC",93],["fda1","\uE40A",93],["fe50","\u2E81\uE816\uE817\uE818\u2E84\u3473\u3447\u2E88\u2E8B\uE81E\u359E\u361A\u360E\u2E8C\u2E97\u396E\u3918\uE826\u39CF\u39DF\u3A73\u39D0\uE82B\uE82C\u3B4E\u3C6E\u3CE0\u2EA7\uE831\uE832\u2EAA\u4056\u415F\u2EAE\u4337\u2EB3\u2EB6\u2EB7\uE83B\u43B1\u43AC\u2EBB\u43DD\u44D6\u4661\u464C\uE843"],["fe80","\u4723\u4729\u477C\u478D\u2ECA\u4947\u497A\u497D\u4982\u4983\u4985\u4986\u499F\u499B\u49B7\u49B6\uE854\uE855\u4CA3\u4C9F\u4CA0\u4CA1\u4C77\u4CA2\u4D13",6,"\u4DAE\uE864\uE468",93],["8135f437","\uE7C7"]]});var HR=h((wOe,EY)=>{EY.exports={uChars:[128,165,169,178,184,216,226,235,238,244,248,251,253,258,276,284,300,325,329,334,364,463,465,467,469,471,473,475,477,506,594,610,712,716,730,930,938,962,970,1026,1104,1106,8209,8215,8218,8222,8231,8241,8244,8246,8252,8365,8452,8454,8458,8471,8482,8556,8570,8596,8602,8713,8720,8722,8726,8731,8737,8740,8742,8748,8751,8760,8766,8777,8781,8787,8802,8808,8816,8854,8858,8870,8896,8979,9322,9372,9548,9588,9616,9622,9634,9652,9662,9672,9676,9680,9702,9735,9738,9793,9795,11906,11909,11913,11917,11928,11944,11947,11951,11956,11960,11964,11979,12284,12292,12312,12319,12330,12351,12436,12447,12535,12543,12586,12842,12850,12964,13200,13215,13218,13253,13263,13267,13270,13384,13428,13727,13839,13851,14617,14703,14801,14816,14964,15183,15471,15585,16471,16736,17208,17325,17330,17374,17623,17997,18018,18212,18218,18301,18318,18760,18811,18814,18820,18823,18844,18848,18872,19576,19620,19738,19887,40870,59244,59336,59367,59413,59417,59423,59431,59437,59443,59452,59460,59478,59493,63789,63866,63894,63976,63986,64016,64018,64021,64025,64034,64037,64042,65074,65093,65107,65112,65127,65132,65375,65510,65536],gbChars:[0,36,38,45,50,81,89,95,96,100,103,104,105,109,126,133,148,172,175,179,208,306,307,308,309,310,311,312,313,341,428,443,544,545,558,741,742,749,750,805,819,820,7922,7924,7925,7927,7934,7943,7944,7945,7950,8062,8148,8149,8152,8164,8174,8236,8240,8262,8264,8374,8380,8381,8384,8388,8390,8392,8393,8394,8396,8401,8406,8416,8419,8424,8437,8439,8445,8482,8485,8496,8521,8603,8936,8946,9046,9050,9063,9066,9076,9092,9100,9108,9111,9113,9131,9162,9164,9218,9219,11329,11331,11334,11336,11346,11361,11363,11366,11370,11372,11375,11389,11682,11686,11687,11692,11694,11714,11716,11723,11725,11730,11736,11982,11989,12102,12336,12348,12350,12384,12393,12395,12397,12510,12553,12851,12962,12973,13738,13823,13919,13933,14080,14298,14585,14698,15583,15847,16318,16434,16438,16481,16729,17102,17122,17315,17320,17402,17418,17859,17909,17911,17915,17916,17936,17939,17961,18664,18703,18814,18962,19043,33469,33470,33471,33484,33485,33490,33497,33501,33505,33513,33520,33536,33550,37845,37921,37948,38029,38038,38064,38065,38066,38069,38075,38076,38078,39108,39109,39113,39114,39115,39116,39265,39394,189e3]}});var VR=h((_Oe,SY)=>{SY.exports=[["0","\0",127],["8141","\uAC02\uAC03\uAC05\uAC06\uAC0B",4,"\uAC18\uAC1E\uAC1F\uAC21\uAC22\uAC23\uAC25",6,"\uAC2E\uAC32\uAC33\uAC34"],["8161","\uAC35\uAC36\uAC37\uAC3A\uAC3B\uAC3D\uAC3E\uAC3F\uAC41",9,"\uAC4C\uAC4E",5,"\uAC55"],["8181","\uAC56\uAC57\uAC59\uAC5A\uAC5B\uAC5D",18,"\uAC72\uAC73\uAC75\uAC76\uAC79\uAC7B",4,"\uAC82\uAC87\uAC88\uAC8D\uAC8E\uAC8F\uAC91\uAC92\uAC93\uAC95",6,"\uAC9E\uACA2",5,"\uACAB\uACAD\uACAE\uACB1",6,"\uACBA\uACBE\uACBF\uACC0\uACC2\uACC3\uACC5\uACC6\uACC7\uACC9\uACCA\uACCB\uACCD",7,"\uACD6\uACD8",7,"\uACE2\uACE3\uACE5\uACE6\uACE9\uACEB\uACED\uACEE\uACF2\uACF4\uACF7",4,"\uACFE\uACFF\uAD01\uAD02\uAD03\uAD05\uAD07",4,"\uAD0E\uAD10\uAD12\uAD13"],["8241","\uAD14\uAD15\uAD16\uAD17\uAD19\uAD1A\uAD1B\uAD1D\uAD1E\uAD1F\uAD21",7,"\uAD2A\uAD2B\uAD2E",5],["8261","\uAD36\uAD37\uAD39\uAD3A\uAD3B\uAD3D",6,"\uAD46\uAD48\uAD4A",5,"\uAD51\uAD52\uAD53\uAD55\uAD56\uAD57"],["8281","\uAD59",7,"\uAD62\uAD64",7,"\uAD6E\uAD6F\uAD71\uAD72\uAD77\uAD78\uAD79\uAD7A\uAD7E\uAD80\uAD83",4,"\uAD8A\uAD8B\uAD8D\uAD8E\uAD8F\uAD91",10,"\uAD9E",5,"\uADA5",17,"\uADB8",7,"\uADC2\uADC3\uADC5\uADC6\uADC7\uADC9",6,"\uADD2\uADD4",7,"\uADDD\uADDE\uADDF\uADE1\uADE2\uADE3\uADE5",18],["8341","\uADFA\uADFB\uADFD\uADFE\uAE02",5,"\uAE0A\uAE0C\uAE0E",5,"\uAE15",7],["8361","\uAE1D",18,"\uAE32\uAE33\uAE35\uAE36\uAE39\uAE3B\uAE3C"],["8381","\uAE3D\uAE3E\uAE3F\uAE42\uAE44\uAE47\uAE48\uAE49\uAE4B\uAE4F\uAE51\uAE52\uAE53\uAE55\uAE57",4,"\uAE5E\uAE62\uAE63\uAE64\uAE66\uAE67\uAE6A\uAE6B\uAE6D\uAE6E\uAE6F\uAE71",6,"\uAE7A\uAE7E",5,"\uAE86",5,"\uAE8D",46,"\uAEBF\uAEC1\uAEC2\uAEC3\uAEC5",6,"\uAECE\uAED2",5,"\uAEDA\uAEDB\uAEDD",8],["8441","\uAEE6\uAEE7\uAEE9\uAEEA\uAEEC\uAEEE",5,"\uAEF5\uAEF6\uAEF7\uAEF9\uAEFA\uAEFB\uAEFD",8],["8461","\uAF06\uAF09\uAF0A\uAF0B\uAF0C\uAF0E\uAF0F\uAF11",18],["8481","\uAF24",7,"\uAF2E\uAF2F\uAF31\uAF33\uAF35",6,"\uAF3E\uAF40\uAF44\uAF45\uAF46\uAF47\uAF4A",5,"\uAF51",10,"\uAF5E",5,"\uAF66",18,"\uAF7A",5,"\uAF81\uAF82\uAF83\uAF85\uAF86\uAF87\uAF89",6,"\uAF92\uAF93\uAF94\uAF96",5,"\uAF9D",26,"\uAFBA\uAFBB\uAFBD\uAFBE"],["8541","\uAFBF\uAFC1",5,"\uAFCA\uAFCC\uAFCF",4,"\uAFD5",6,"\uAFDD",4],["8561","\uAFE2",5,"\uAFEA",5,"\uAFF2\uAFF3\uAFF5\uAFF6\uAFF7\uAFF9",6,"\uB002\uB003"],["8581","\uB005",6,"\uB00D\uB00E\uB00F\uB011\uB012\uB013\uB015",6,"\uB01E",9,"\uB029",26,"\uB046\uB047\uB049\uB04B\uB04D\uB04F\uB050\uB051\uB052\uB056\uB058\uB05A\uB05B\uB05C\uB05E",29,"\uB07E\uB07F\uB081\uB082\uB083\uB085",6,"\uB08E\uB090\uB092",5,"\uB09B\uB09D\uB09E\uB0A3\uB0A4"],["8641","\uB0A5\uB0A6\uB0A7\uB0AA\uB0B0\uB0B2\uB0B6\uB0B7\uB0B9\uB0BA\uB0BB\uB0BD",6,"\uB0C6\uB0CA",5,"\uB0D2"],["8661","\uB0D3\uB0D5\uB0D6\uB0D7\uB0D9",6,"\uB0E1\uB0E2\uB0E3\uB0E4\uB0E6",10],["8681","\uB0F1",22,"\uB10A\uB10D\uB10E\uB10F\uB111\uB114\uB115\uB116\uB117\uB11A\uB11E",4,"\uB126\uB127\uB129\uB12A\uB12B\uB12D",6,"\uB136\uB13A",5,"\uB142\uB143\uB145\uB146\uB147\uB149",6,"\uB152\uB153\uB156\uB157\uB159\uB15A\uB15B\uB15D\uB15E\uB15F\uB161",22,"\uB17A\uB17B\uB17D\uB17E\uB17F\uB181\uB183",4,"\uB18A\uB18C\uB18E\uB18F\uB190\uB191\uB195\uB196\uB197\uB199\uB19A\uB19B\uB19D"],["8741","\uB19E",9,"\uB1A9",15],["8761","\uB1B9",18,"\uB1CD\uB1CE\uB1CF\uB1D1\uB1D2\uB1D3\uB1D5"],["8781","\uB1D6",5,"\uB1DE\uB1E0",7,"\uB1EA\uB1EB\uB1ED\uB1EE\uB1EF\uB1F1",7,"\uB1FA\uB1FC\uB1FE",5,"\uB206\uB207\uB209\uB20A\uB20D",6,"\uB216\uB218\uB21A",5,"\uB221",18,"\uB235",6,"\uB23D",26,"\uB259\uB25A\uB25B\uB25D\uB25E\uB25F\uB261",6,"\uB26A",4],["8841","\uB26F",4,"\uB276",5,"\uB27D",6,"\uB286\uB287\uB288\uB28A",4],["8861","\uB28F\uB292\uB293\uB295\uB296\uB297\uB29B",4,"\uB2A2\uB2A4\uB2A7\uB2A8\uB2A9\uB2AB\uB2AD\uB2AE\uB2AF\uB2B1\uB2B2\uB2B3\uB2B5\uB2B6\uB2B7"],["8881","\uB2B8",15,"\uB2CA\uB2CB\uB2CD\uB2CE\uB2CF\uB2D1\uB2D3",4,"\uB2DA\uB2DC\uB2DE\uB2DF\uB2E0\uB2E1\uB2E3\uB2E7\uB2E9\uB2EA\uB2F0\uB2F1\uB2F2\uB2F6\uB2FC\uB2FD\uB2FE\uB302\uB303\uB305\uB306\uB307\uB309",6,"\uB312\uB316",5,"\uB31D",54,"\uB357\uB359\uB35A\uB35D\uB360\uB361\uB362\uB363"],["8941","\uB366\uB368\uB36A\uB36C\uB36D\uB36F\uB372\uB373\uB375\uB376\uB377\uB379",6,"\uB382\uB386",5,"\uB38D"],["8961","\uB38E\uB38F\uB391\uB392\uB393\uB395",10,"\uB3A2",5,"\uB3A9\uB3AA\uB3AB\uB3AD"],["8981","\uB3AE",21,"\uB3C6\uB3C7\uB3C9\uB3CA\uB3CD\uB3CF\uB3D1\uB3D2\uB3D3\uB3D6\uB3D8\uB3DA\uB3DC\uB3DE\uB3DF\uB3E1\uB3E2\uB3E3\uB3E5\uB3E6\uB3E7\uB3E9",18,"\uB3FD",18,"\uB411",6,"\uB419\uB41A\uB41B\uB41D\uB41E\uB41F\uB421",6,"\uB42A\uB42C",7,"\uB435",15],["8a41","\uB445",10,"\uB452\uB453\uB455\uB456\uB457\uB459",6,"\uB462\uB464\uB466"],["8a61","\uB467",4,"\uB46D",18,"\uB481\uB482"],["8a81","\uB483",4,"\uB489",19,"\uB49E",5,"\uB4A5\uB4A6\uB4A7\uB4A9\uB4AA\uB4AB\uB4AD",7,"\uB4B6\uB4B8\uB4BA",5,"\uB4C1\uB4C2\uB4C3\uB4C5\uB4C6\uB4C7\uB4C9",6,"\uB4D1\uB4D2\uB4D3\uB4D4\uB4D6",5,"\uB4DE\uB4DF\uB4E1\uB4E2\uB4E5\uB4E7",4,"\uB4EE\uB4F0\uB4F2",5,"\uB4F9",26,"\uB516\uB517\uB519\uB51A\uB51D"],["8b41","\uB51E",5,"\uB526\uB52B",4,"\uB532\uB533\uB535\uB536\uB537\uB539",6,"\uB542\uB546"],["8b61","\uB547\uB548\uB549\uB54A\uB54E\uB54F\uB551\uB552\uB553\uB555",6,"\uB55E\uB562",8],["8b81","\uB56B",52,"\uB5A2\uB5A3\uB5A5\uB5A6\uB5A7\uB5A9\uB5AC\uB5AD\uB5AE\uB5AF\uB5B2\uB5B6",4,"\uB5BE\uB5BF\uB5C1\uB5C2\uB5C3\uB5C5",6,"\uB5CE\uB5D2",5,"\uB5D9",18,"\uB5ED",18],["8c41","\uB600",15,"\uB612\uB613\uB615\uB616\uB617\uB619",4],["8c61","\uB61E",6,"\uB626",5,"\uB62D",6,"\uB635",5],["8c81","\uB63B",12,"\uB649",26,"\uB665\uB666\uB667\uB669",50,"\uB69E\uB69F\uB6A1\uB6A2\uB6A3\uB6A5",5,"\uB6AD\uB6AE\uB6AF\uB6B0\uB6B2",16],["8d41","\uB6C3",16,"\uB6D5",8],["8d61","\uB6DE",17,"\uB6F1\uB6F2\uB6F3\uB6F5\uB6F6\uB6F7\uB6F9\uB6FA"],["8d81","\uB6FB",4,"\uB702\uB703\uB704\uB706",33,"\uB72A\uB72B\uB72D\uB72E\uB731",6,"\uB73A\uB73C",7,"\uB745\uB746\uB747\uB749\uB74A\uB74B\uB74D",6,"\uB756",9,"\uB761\uB762\uB763\uB765\uB766\uB767\uB769",6,"\uB772\uB774\uB776",5,"\uB77E\uB77F\uB781\uB782\uB783\uB785",6,"\uB78E\uB793\uB794\uB795\uB79A\uB79B\uB79D\uB79E"],["8e41","\uB79F\uB7A1",6,"\uB7AA\uB7AE",5,"\uB7B6\uB7B7\uB7B9",8],["8e61","\uB7C2",4,"\uB7C8\uB7CA",19],["8e81","\uB7DE",13,"\uB7EE\uB7EF\uB7F1\uB7F2\uB7F3\uB7F5",6,"\uB7FE\uB802",4,"\uB80A\uB80B\uB80D\uB80E\uB80F\uB811",6,"\uB81A\uB81C\uB81E",5,"\uB826\uB827\uB829\uB82A\uB82B\uB82D",6,"\uB836\uB83A",5,"\uB841\uB842\uB843\uB845",11,"\uB852\uB854",7,"\uB85E\uB85F\uB861\uB862\uB863\uB865",6,"\uB86E\uB870\uB872",5,"\uB879\uB87A\uB87B\uB87D",7],["8f41","\uB885",7,"\uB88E",17],["8f61","\uB8A0",7,"\uB8A9",6,"\uB8B1\uB8B2\uB8B3\uB8B5\uB8B6\uB8B7\uB8B9",4],["8f81","\uB8BE\uB8BF\uB8C2\uB8C4\uB8C6",5,"\uB8CD\uB8CE\uB8CF\uB8D1\uB8D2\uB8D3\uB8D5",7,"\uB8DE\uB8E0\uB8E2",5,"\uB8EA\uB8EB\uB8ED\uB8EE\uB8EF\uB8F1",6,"\uB8FA\uB8FC\uB8FE",5,"\uB905",18,"\uB919",6,"\uB921",26,"\uB93E\uB93F\uB941\uB942\uB943\uB945",6,"\uB94D\uB94E\uB950\uB952",5],["9041","\uB95A\uB95B\uB95D\uB95E\uB95F\uB961",6,"\uB96A\uB96C\uB96E",5,"\uB976\uB977\uB979\uB97A\uB97B\uB97D"],["9061","\uB97E",5,"\uB986\uB988\uB98B\uB98C\uB98F",15],["9081","\uB99F",12,"\uB9AE\uB9AF\uB9B1\uB9B2\uB9B3\uB9B5",6,"\uB9BE\uB9C0\uB9C2",5,"\uB9CA\uB9CB\uB9CD\uB9D3",4,"\uB9DA\uB9DC\uB9DF\uB9E0\uB9E2\uB9E6\uB9E7\uB9E9\uB9EA\uB9EB\uB9ED",6,"\uB9F6\uB9FB",4,"\uBA02",5,"\uBA09",11,"\uBA16",33,"\uBA3A\uBA3B\uBA3D\uBA3E\uBA3F\uBA41\uBA43\uBA44\uBA45\uBA46"],["9141","\uBA47\uBA4A\uBA4C\uBA4F\uBA50\uBA51\uBA52\uBA56\uBA57\uBA59\uBA5A\uBA5B\uBA5D",6,"\uBA66\uBA6A",5],["9161","\uBA72\uBA73\uBA75\uBA76\uBA77\uBA79",9,"\uBA86\uBA88\uBA89\uBA8A\uBA8B\uBA8D",5],["9181","\uBA93",20,"\uBAAA\uBAAD\uBAAE\uBAAF\uBAB1\uBAB3",4,"\uBABA\uBABC\uBABE",5,"\uBAC5\uBAC6\uBAC7\uBAC9",14,"\uBADA",33,"\uBAFD\uBAFE\uBAFF\uBB01\uBB02\uBB03\uBB05",7,"\uBB0E\uBB10\uBB12",5,"\uBB19\uBB1A\uBB1B\uBB1D\uBB1E\uBB1F\uBB21",6],["9241","\uBB28\uBB2A\uBB2C",7,"\uBB37\uBB39\uBB3A\uBB3F",4,"\uBB46\uBB48\uBB4A\uBB4B\uBB4C\uBB4E\uBB51\uBB52"],["9261","\uBB53\uBB55\uBB56\uBB57\uBB59",7,"\uBB62\uBB64",7,"\uBB6D",4],["9281","\uBB72",21,"\uBB89\uBB8A\uBB8B\uBB8D\uBB8E\uBB8F\uBB91",18,"\uBBA5\uBBA6\uBBA7\uBBA9\uBBAA\uBBAB\uBBAD",6,"\uBBB5\uBBB6\uBBB8",7,"\uBBC1\uBBC2\uBBC3\uBBC5\uBBC6\uBBC7\uBBC9",6,"\uBBD1\uBBD2\uBBD4",35,"\uBBFA\uBBFB\uBBFD\uBBFE\uBC01"],["9341","\uBC03",4,"\uBC0A\uBC0E\uBC10\uBC12\uBC13\uBC19\uBC1A\uBC20\uBC21\uBC22\uBC23\uBC26\uBC28\uBC2A\uBC2B\uBC2C\uBC2E\uBC2F\uBC32\uBC33\uBC35"],["9361","\uBC36\uBC37\uBC39",6,"\uBC42\uBC46\uBC47\uBC48\uBC4A\uBC4B\uBC4E\uBC4F\uBC51",8],["9381","\uBC5A\uBC5B\uBC5C\uBC5E",37,"\uBC86\uBC87\uBC89\uBC8A\uBC8D\uBC8F",4,"\uBC96\uBC98\uBC9B",4,"\uBCA2\uBCA3\uBCA5\uBCA6\uBCA9",6,"\uBCB2\uBCB6",5,"\uBCBE\uBCBF\uBCC1\uBCC2\uBCC3\uBCC5",7,"\uBCCE\uBCD2\uBCD3\uBCD4\uBCD6\uBCD7\uBCD9\uBCDA\uBCDB\uBCDD",22,"\uBCF7\uBCF9\uBCFA\uBCFB\uBCFD"],["9441","\uBCFE",5,"\uBD06\uBD08\uBD0A",5,"\uBD11\uBD12\uBD13\uBD15",8],["9461","\uBD1E",5,"\uBD25",6,"\uBD2D",12],["9481","\uBD3A",5,"\uBD41",6,"\uBD4A\uBD4B\uBD4D\uBD4E\uBD4F\uBD51",6,"\uBD5A",9,"\uBD65\uBD66\uBD67\uBD69",22,"\uBD82\uBD83\uBD85\uBD86\uBD8B",4,"\uBD92\uBD94\uBD96\uBD97\uBD98\uBD9B\uBD9D",6,"\uBDA5",10,"\uBDB1",6,"\uBDB9",24],["9541","\uBDD2\uBDD3\uBDD6\uBDD7\uBDD9\uBDDA\uBDDB\uBDDD",11,"\uBDEA",5,"\uBDF1"],["9561","\uBDF2\uBDF3\uBDF5\uBDF6\uBDF7\uBDF9",6,"\uBE01\uBE02\uBE04\uBE06",5,"\uBE0E\uBE0F\uBE11\uBE12\uBE13"],["9581","\uBE15",6,"\uBE1E\uBE20",35,"\uBE46\uBE47\uBE49\uBE4A\uBE4B\uBE4D\uBE4F",4,"\uBE56\uBE58\uBE5C\uBE5D\uBE5E\uBE5F\uBE62\uBE63\uBE65\uBE66\uBE67\uBE69\uBE6B",4,"\uBE72\uBE76",4,"\uBE7E\uBE7F\uBE81\uBE82\uBE83\uBE85",6,"\uBE8E\uBE92",5,"\uBE9A",13,"\uBEA9",14],["9641","\uBEB8",23,"\uBED2\uBED3"],["9661","\uBED5\uBED6\uBED9",6,"\uBEE1\uBEE2\uBEE6",5,"\uBEED",8],["9681","\uBEF6",10,"\uBF02",5,"\uBF0A",13,"\uBF1A\uBF1E",33,"\uBF42\uBF43\uBF45\uBF46\uBF47\uBF49",6,"\uBF52\uBF53\uBF54\uBF56",44],["9741","\uBF83",16,"\uBF95",8],["9761","\uBF9E",17,"\uBFB1",7],["9781","\uBFB9",11,"\uBFC6",5,"\uBFCE\uBFCF\uBFD1\uBFD2\uBFD3\uBFD5",6,"\uBFDD\uBFDE\uBFE0\uBFE2",89,"\uC03D\uC03E\uC03F"],["9841","\uC040",16,"\uC052",5,"\uC059\uC05A\uC05B"],["9861","\uC05D\uC05E\uC05F\uC061",6,"\uC06A",15],["9881","\uC07A",21,"\uC092\uC093\uC095\uC096\uC097\uC099",6,"\uC0A2\uC0A4\uC0A6",5,"\uC0AE\uC0B1\uC0B2\uC0B7",4,"\uC0BE\uC0C2\uC0C3\uC0C4\uC0C6\uC0C7\uC0CA\uC0CB\uC0CD\uC0CE\uC0CF\uC0D1",6,"\uC0DA\uC0DE",5,"\uC0E6\uC0E7\uC0E9\uC0EA\uC0EB\uC0ED",6,"\uC0F6\uC0F8\uC0FA",5,"\uC101\uC102\uC103\uC105\uC106\uC107\uC109",6,"\uC111\uC112\uC113\uC114\uC116",5,"\uC121\uC122\uC125\uC128\uC129\uC12A\uC12B\uC12E"],["9941","\uC132\uC133\uC134\uC135\uC137\uC13A\uC13B\uC13D\uC13E\uC13F\uC141",6,"\uC14A\uC14E",5,"\uC156\uC157"],["9961","\uC159\uC15A\uC15B\uC15D",6,"\uC166\uC16A",5,"\uC171\uC172\uC173\uC175\uC176\uC177\uC179\uC17A\uC17B"],["9981","\uC17C",8,"\uC186",5,"\uC18F\uC191\uC192\uC193\uC195\uC197",4,"\uC19E\uC1A0\uC1A2\uC1A3\uC1A4\uC1A6\uC1A7\uC1AA\uC1AB\uC1AD\uC1AE\uC1AF\uC1B1",11,"\uC1BE",5,"\uC1C5\uC1C6\uC1C7\uC1C9\uC1CA\uC1CB\uC1CD",6,"\uC1D5\uC1D6\uC1D9",6,"\uC1E1\uC1E2\uC1E3\uC1E5\uC1E6\uC1E7\uC1E9",6,"\uC1F2\uC1F4",7,"\uC1FE\uC1FF\uC201\uC202\uC203\uC205",6,"\uC20E\uC210\uC212",5,"\uC21A\uC21B\uC21D\uC21E\uC221\uC222\uC223"],["9a41","\uC224\uC225\uC226\uC227\uC22A\uC22C\uC22E\uC230\uC233\uC235",16],["9a61","\uC246\uC247\uC249",6,"\uC252\uC253\uC255\uC256\uC257\uC259",6,"\uC261\uC262\uC263\uC264\uC266"],["9a81","\uC267",4,"\uC26E\uC26F\uC271\uC272\uC273\uC275",6,"\uC27E\uC280\uC282",5,"\uC28A",5,"\uC291",6,"\uC299\uC29A\uC29C\uC29E",5,"\uC2A6\uC2A7\uC2A9\uC2AA\uC2AB\uC2AE",5,"\uC2B6\uC2B8\uC2BA",33,"\uC2DE\uC2DF\uC2E1\uC2E2\uC2E5",5,"\uC2EE\uC2F0\uC2F2\uC2F3\uC2F4\uC2F5\uC2F7\uC2FA\uC2FD\uC2FE\uC2FF\uC301",6,"\uC30A\uC30B\uC30E\uC30F"],["9b41","\uC310\uC311\uC312\uC316\uC317\uC319\uC31A\uC31B\uC31D",6,"\uC326\uC327\uC32A",8],["9b61","\uC333",17,"\uC346",7],["9b81","\uC34E",25,"\uC36A\uC36B\uC36D\uC36E\uC36F\uC371\uC373",4,"\uC37A\uC37B\uC37E",5,"\uC385\uC386\uC387\uC389\uC38A\uC38B\uC38D",50,"\uC3C1",22,"\uC3DA"],["9c41","\uC3DB\uC3DD\uC3DE\uC3E1\uC3E3",4,"\uC3EA\uC3EB\uC3EC\uC3EE",5,"\uC3F6\uC3F7\uC3F9",5],["9c61","\uC3FF",8,"\uC409",6,"\uC411",9],["9c81","\uC41B",8,"\uC425",6,"\uC42D\uC42E\uC42F\uC431\uC432\uC433\uC435",6,"\uC43E",9,"\uC449",26,"\uC466\uC467\uC469\uC46A\uC46B\uC46D",6,"\uC476\uC477\uC478\uC47A",5,"\uC481",18,"\uC495",6,"\uC49D",12],["9d41","\uC4AA",13,"\uC4B9\uC4BA\uC4BB\uC4BD",8],["9d61","\uC4C6",25],["9d81","\uC4E0",8,"\uC4EA",5,"\uC4F2\uC4F3\uC4F5\uC4F6\uC4F7\uC4F9\uC4FB\uC4FC\uC4FD\uC4FE\uC502",9,"\uC50D\uC50E\uC50F\uC511\uC512\uC513\uC515",6,"\uC51D",10,"\uC52A\uC52B\uC52D\uC52E\uC52F\uC531",6,"\uC53A\uC53C\uC53E",5,"\uC546\uC547\uC54B\uC54F\uC550\uC551\uC552\uC556\uC55A\uC55B\uC55C\uC55F\uC562\uC563\uC565\uC566\uC567\uC569",6,"\uC572\uC576",5,"\uC57E\uC57F\uC581\uC582\uC583\uC585\uC586\uC588\uC589\uC58A\uC58B\uC58E\uC590\uC592\uC593\uC594"],["9e41","\uC596\uC599\uC59A\uC59B\uC59D\uC59E\uC59F\uC5A1",7,"\uC5AA",9,"\uC5B6"],["9e61","\uC5B7\uC5BA\uC5BF",4,"\uC5CB\uC5CD\uC5CF\uC5D2\uC5D3\uC5D5\uC5D6\uC5D7\uC5D9",6,"\uC5E2\uC5E4\uC5E6\uC5E7"],["9e81","\uC5E8\uC5E9\uC5EA\uC5EB\uC5EF\uC5F1\uC5F2\uC5F3\uC5F5\uC5F8\uC5F9\uC5FA\uC5FB\uC602\uC603\uC604\uC609\uC60A\uC60B\uC60D\uC60E\uC60F\uC611",6,"\uC61A\uC61D",6,"\uC626\uC627\uC629\uC62A\uC62B\uC62F\uC631\uC632\uC636\uC638\uC63A\uC63C\uC63D\uC63E\uC63F\uC642\uC643\uC645\uC646\uC647\uC649",6,"\uC652\uC656",5,"\uC65E\uC65F\uC661",10,"\uC66D\uC66E\uC670\uC672",5,"\uC67A\uC67B\uC67D\uC67E\uC67F\uC681",6,"\uC68A\uC68C\uC68E",5,"\uC696\uC697\uC699\uC69A\uC69B\uC69D",6,"\uC6A6"],["9f41","\uC6A8\uC6AA",5,"\uC6B2\uC6B3\uC6B5\uC6B6\uC6B7\uC6BB",4,"\uC6C2\uC6C4\uC6C6",5,"\uC6CE"],["9f61","\uC6CF\uC6D1\uC6D2\uC6D3\uC6D5",6,"\uC6DE\uC6DF\uC6E2",5,"\uC6EA\uC6EB\uC6ED\uC6EE\uC6EF\uC6F1\uC6F2"],["9f81","\uC6F3",4,"\uC6FA\uC6FB\uC6FC\uC6FE",5,"\uC706\uC707\uC709\uC70A\uC70B\uC70D",6,"\uC716\uC718\uC71A",5,"\uC722\uC723\uC725\uC726\uC727\uC729",6,"\uC732\uC734\uC736\uC738\uC739\uC73A\uC73B\uC73E\uC73F\uC741\uC742\uC743\uC745",4,"\uC74B\uC74E\uC750\uC759\uC75A\uC75B\uC75D\uC75E\uC75F\uC761",6,"\uC769\uC76A\uC76C",7,"\uC776\uC777\uC779\uC77A\uC77B\uC77F\uC780\uC781\uC782\uC786\uC78B\uC78C\uC78D\uC78F\uC792\uC793\uC795\uC799\uC79B",4,"\uC7A2\uC7A7",4,"\uC7AE\uC7AF\uC7B1\uC7B2\uC7B3\uC7B5\uC7B6\uC7B7"],["a041","\uC7B8\uC7B9\uC7BA\uC7BB\uC7BE\uC7C2",5,"\uC7CA\uC7CB\uC7CD\uC7CF\uC7D1",6,"\uC7D9\uC7DA\uC7DB\uC7DC"],["a061","\uC7DE",5,"\uC7E5\uC7E6\uC7E7\uC7E9\uC7EA\uC7EB\uC7ED",13],["a081","\uC7FB",4,"\uC802\uC803\uC805\uC806\uC807\uC809\uC80B",4,"\uC812\uC814\uC817",4,"\uC81E\uC81F\uC821\uC822\uC823\uC825",6,"\uC82E\uC830\uC832",5,"\uC839\uC83A\uC83B\uC83D\uC83E\uC83F\uC841",6,"\uC84A\uC84B\uC84E",5,"\uC855",26,"\uC872\uC873\uC875\uC876\uC877\uC879\uC87B",4,"\uC882\uC884\uC888\uC889\uC88A\uC88E",5,"\uC895",7,"\uC89E\uC8A0\uC8A2\uC8A3\uC8A4"],["a141","\uC8A5\uC8A6\uC8A7\uC8A9",18,"\uC8BE\uC8BF\uC8C0\uC8C1"],["a161","\uC8C2\uC8C3\uC8C5\uC8C6\uC8C7\uC8C9\uC8CA\uC8CB\uC8CD",6,"\uC8D6\uC8D8\uC8DA",5,"\uC8E2\uC8E3\uC8E5"],["a181","\uC8E6",14,"\uC8F6",5,"\uC8FE\uC8FF\uC901\uC902\uC903\uC907",4,"\uC90E\u3000\u3001\u3002\xB7\u2025\u2026\xA8\u3003\xAD\u2015\u2225\uFF3C\u223C\u2018\u2019\u201C\u201D\u3014\u3015\u3008",9,"\xB1\xD7\xF7\u2260\u2264\u2265\u221E\u2234\xB0\u2032\u2033\u2103\u212B\uFFE0\uFFE1\uFFE5\u2642\u2640\u2220\u22A5\u2312\u2202\u2207\u2261\u2252\xA7\u203B\u2606\u2605\u25CB\u25CF\u25CE\u25C7\u25C6\u25A1\u25A0\u25B3\u25B2\u25BD\u25BC\u2192\u2190\u2191\u2193\u2194\u3013\u226A\u226B\u221A\u223D\u221D\u2235\u222B\u222C\u2208\u220B\u2286\u2287\u2282\u2283\u222A\u2229\u2227\u2228\uFFE2"],["a241","\uC910\uC912",5,"\uC919",18],["a261","\uC92D",6,"\uC935",18],["a281","\uC948",7,"\uC952\uC953\uC955\uC956\uC957\uC959",6,"\uC962\uC964",7,"\uC96D\uC96E\uC96F\u21D2\u21D4\u2200\u2203\xB4\uFF5E\u02C7\u02D8\u02DD\u02DA\u02D9\xB8\u02DB\xA1\xBF\u02D0\u222E\u2211\u220F\xA4\u2109\u2030\u25C1\u25C0\u25B7\u25B6\u2664\u2660\u2661\u2665\u2667\u2663\u2299\u25C8\u25A3\u25D0\u25D1\u2592\u25A4\u25A5\u25A8\u25A7\u25A6\u25A9\u2668\u260F\u260E\u261C\u261E\xB6\u2020\u2021\u2195\u2197\u2199\u2196\u2198\u266D\u2669\u266A\u266C\u327F\u321C\u2116\u33C7\u2122\u33C2\u33D8\u2121\u20AC\xAE"],["a341","\uC971\uC972\uC973\uC975",6,"\uC97D",10,"\uC98A\uC98B\uC98D\uC98E\uC98F"],["a361","\uC991",6,"\uC99A\uC99C\uC99E",16],["a381","\uC9AF",16,"\uC9C2\uC9C3\uC9C5\uC9C6\uC9C9\uC9CB",4,"\uC9D2\uC9D4\uC9D7\uC9D8\uC9DB\uFF01",58,"\uFFE6\uFF3D",32,"\uFFE3"],["a441","\uC9DE\uC9DF\uC9E1\uC9E3\uC9E5\uC9E6\uC9E8\uC9E9\uC9EA\uC9EB\uC9EE\uC9F2",5,"\uC9FA\uC9FB\uC9FD\uC9FE\uC9FF\uCA01\uCA02\uCA03\uCA04"],["a461","\uCA05\uCA06\uCA07\uCA0A\uCA0E",5,"\uCA15\uCA16\uCA17\uCA19",12],["a481","\uCA26\uCA27\uCA28\uCA2A",28,"\u3131",93],["a541","\uCA47",4,"\uCA4E\uCA4F\uCA51\uCA52\uCA53\uCA55",6,"\uCA5E\uCA62",5,"\uCA69\uCA6A"],["a561","\uCA6B",17,"\uCA7E",5,"\uCA85\uCA86"],["a581","\uCA87",16,"\uCA99",14,"\u2170",9],["a5b0","\u2160",9],["a5c1","\u0391",16,"\u03A3",6],["a5e1","\u03B1",16,"\u03C3",6],["a641","\uCAA8",19,"\uCABE\uCABF\uCAC1\uCAC2\uCAC3\uCAC5"],["a661","\uCAC6",5,"\uCACE\uCAD0\uCAD2\uCAD4\uCAD5\uCAD6\uCAD7\uCADA",5,"\uCAE1",6],["a681","\uCAE8\uCAE9\uCAEA\uCAEB\uCAED",6,"\uCAF5",18,"\uCB09\uCB0A\u2500\u2502\u250C\u2510\u2518\u2514\u251C\u252C\u2524\u2534\u253C\u2501\u2503\u250F\u2513\u251B\u2517\u2523\u2533\u252B\u253B\u254B\u2520\u252F\u2528\u2537\u253F\u251D\u2530\u2525\u2538\u2542\u2512\u2511\u251A\u2519\u2516\u2515\u250E\u250D\u251E\u251F\u2521\u2522\u2526\u2527\u2529\u252A\u252D\u252E\u2531\u2532\u2535\u2536\u2539\u253A\u253D\u253E\u2540\u2541\u2543",7],["a741","\uCB0B",4,"\uCB11\uCB12\uCB13\uCB15\uCB16\uCB17\uCB19",6,"\uCB22",7],["a761","\uCB2A",22,"\uCB42\uCB43\uCB44"],["a781","\uCB45\uCB46\uCB47\uCB4A\uCB4B\uCB4D\uCB4E\uCB4F\uCB51",6,"\uCB5A\uCB5B\uCB5C\uCB5E",5,"\uCB65",7,"\u3395\u3396\u3397\u2113\u3398\u33C4\u33A3\u33A4\u33A5\u33A6\u3399",9,"\u33CA\u338D\u338E\u338F\u33CF\u3388\u3389\u33C8\u33A7\u33A8\u33B0",9,"\u3380",4,"\u33BA",5,"\u3390",4,"\u2126\u33C0\u33C1\u338A\u338B\u338C\u33D6\u33C5\u33AD\u33AE\u33AF\u33DB\u33A9\u33AA\u33AB\u33AC\u33DD\u33D0\u33D3\u33C3\u33C9\u33DC\u33C6"],["a841","\uCB6D",10,"\uCB7A",14],["a861","\uCB89",18,"\uCB9D",6],["a881","\uCBA4",19,"\uCBB9",11,"\xC6\xD0\xAA\u0126"],["a8a6","\u0132"],["a8a8","\u013F\u0141\xD8\u0152\xBA\xDE\u0166\u014A"],["a8b1","\u3260",27,"\u24D0",25,"\u2460",14,"\xBD\u2153\u2154\xBC\xBE\u215B\u215C\u215D\u215E"],["a941","\uCBC5",14,"\uCBD5",10],["a961","\uCBE0\uCBE1\uCBE2\uCBE3\uCBE5\uCBE6\uCBE8\uCBEA",18],["a981","\uCBFD",14,"\uCC0E\uCC0F\uCC11\uCC12\uCC13\uCC15",6,"\uCC1E\uCC1F\uCC20\uCC23\uCC24\xE6\u0111\xF0\u0127\u0131\u0133\u0138\u0140\u0142\xF8\u0153\xDF\xFE\u0167\u014B\u0149\u3200",27,"\u249C",25,"\u2474",14,"\xB9\xB2\xB3\u2074\u207F\u2081\u2082\u2083\u2084"],["aa41","\uCC25\uCC26\uCC2A\uCC2B\uCC2D\uCC2F\uCC31",6,"\uCC3A\uCC3F",4,"\uCC46\uCC47\uCC49\uCC4A\uCC4B\uCC4D\uCC4E"],["aa61","\uCC4F",4,"\uCC56\uCC5A",5,"\uCC61\uCC62\uCC63\uCC65\uCC67\uCC69",6,"\uCC71\uCC72"],["aa81","\uCC73\uCC74\uCC76",29,"\u3041",82],["ab41","\uCC94\uCC95\uCC96\uCC97\uCC9A\uCC9B\uCC9D\uCC9E\uCC9F\uCCA1",6,"\uCCAA\uCCAE",5,"\uCCB6\uCCB7\uCCB9"],["ab61","\uCCBA\uCCBB\uCCBD",6,"\uCCC6\uCCC8\uCCCA",5,"\uCCD1\uCCD2\uCCD3\uCCD5",5],["ab81","\uCCDB",8,"\uCCE5",6,"\uCCED\uCCEE\uCCEF\uCCF1",12,"\u30A1",85],["ac41","\uCCFE\uCCFF\uCD00\uCD02",5,"\uCD0A\uCD0B\uCD0D\uCD0E\uCD0F\uCD11",6,"\uCD1A\uCD1C\uCD1E\uCD1F\uCD20"],["ac61","\uCD21\uCD22\uCD23\uCD25\uCD26\uCD27\uCD29\uCD2A\uCD2B\uCD2D",11,"\uCD3A",4],["ac81","\uCD3F",28,"\uCD5D\uCD5E\uCD5F\u0410",5,"\u0401\u0416",25],["acd1","\u0430",5,"\u0451\u0436",25],["ad41","\uCD61\uCD62\uCD63\uCD65",6,"\uCD6E\uCD70\uCD72",5,"\uCD79",7],["ad61","\uCD81",6,"\uCD89",10,"\uCD96\uCD97\uCD99\uCD9A\uCD9B\uCD9D\uCD9E\uCD9F"],["ad81","\uCDA0\uCDA1\uCDA2\uCDA3\uCDA6\uCDA8\uCDAA",5,"\uCDB1",18,"\uCDC5"],["ae41","\uCDC6",5,"\uCDCD\uCDCE\uCDCF\uCDD1",16],["ae61","\uCDE2",5,"\uCDE9\uCDEA\uCDEB\uCDED\uCDEE\uCDEF\uCDF1",6,"\uCDFA\uCDFC\uCDFE",4],["ae81","\uCE03\uCE05\uCE06\uCE07\uCE09\uCE0A\uCE0B\uCE0D",6,"\uCE15\uCE16\uCE17\uCE18\uCE1A",5,"\uCE22\uCE23\uCE25\uCE26\uCE27\uCE29\uCE2A\uCE2B"],["af41","\uCE2C\uCE2D\uCE2E\uCE2F\uCE32\uCE34\uCE36",19],["af61","\uCE4A",13,"\uCE5A\uCE5B\uCE5D\uCE5E\uCE62",5,"\uCE6A\uCE6C"],["af81","\uCE6E",5,"\uCE76\uCE77\uCE79\uCE7A\uCE7B\uCE7D",6,"\uCE86\uCE88\uCE8A",5,"\uCE92\uCE93\uCE95\uCE96\uCE97\uCE99"],["b041","\uCE9A",5,"\uCEA2\uCEA6",5,"\uCEAE",12],["b061","\uCEBB",5,"\uCEC2",19],["b081","\uCED6",13,"\uCEE6\uCEE7\uCEE9\uCEEA\uCEED",6,"\uCEF6\uCEFA",5,"\uAC00\uAC01\uAC04\uAC07\uAC08\uAC09\uAC0A\uAC10",7,"\uAC19",4,"\uAC20\uAC24\uAC2C\uAC2D\uAC2F\uAC30\uAC31\uAC38\uAC39\uAC3C\uAC40\uAC4B\uAC4D\uAC54\uAC58\uAC5C\uAC70\uAC71\uAC74\uAC77\uAC78\uAC7A\uAC80\uAC81\uAC83\uAC84\uAC85\uAC86\uAC89\uAC8A\uAC8B\uAC8C\uAC90\uAC94\uAC9C\uAC9D\uAC9F\uACA0\uACA1\uACA8\uACA9\uACAA\uACAC\uACAF\uACB0\uACB8\uACB9\uACBB\uACBC\uACBD\uACC1\uACC4\uACC8\uACCC\uACD5\uACD7\uACE0\uACE1\uACE4\uACE7\uACE8\uACEA\uACEC\uACEF\uACF0\uACF1\uACF3\uACF5\uACF6\uACFC\uACFD\uAD00\uAD04\uAD06"],["b141","\uCF02\uCF03\uCF05\uCF06\uCF07\uCF09",6,"\uCF12\uCF14\uCF16",5,"\uCF1D\uCF1E\uCF1F\uCF21\uCF22\uCF23"],["b161","\uCF25",6,"\uCF2E\uCF32",5,"\uCF39",11],["b181","\uCF45",14,"\uCF56\uCF57\uCF59\uCF5A\uCF5B\uCF5D",6,"\uCF66\uCF68\uCF6A\uCF6B\uCF6C\uAD0C\uAD0D\uAD0F\uAD11\uAD18\uAD1C\uAD20\uAD29\uAD2C\uAD2D\uAD34\uAD35\uAD38\uAD3C\uAD44\uAD45\uAD47\uAD49\uAD50\uAD54\uAD58\uAD61\uAD63\uAD6C\uAD6D\uAD70\uAD73\uAD74\uAD75\uAD76\uAD7B\uAD7C\uAD7D\uAD7F\uAD81\uAD82\uAD88\uAD89\uAD8C\uAD90\uAD9C\uAD9D\uADA4\uADB7\uADC0\uADC1\uADC4\uADC8\uADD0\uADD1\uADD3\uADDC\uADE0\uADE4\uADF8\uADF9\uADFC\uADFF\uAE00\uAE01\uAE08\uAE09\uAE0B\uAE0D\uAE14\uAE30\uAE31\uAE34\uAE37\uAE38\uAE3A\uAE40\uAE41\uAE43\uAE45\uAE46\uAE4A\uAE4C\uAE4D\uAE4E\uAE50\uAE54\uAE56\uAE5C\uAE5D\uAE5F\uAE60\uAE61\uAE65\uAE68\uAE69\uAE6C\uAE70\uAE78"],["b241","\uCF6D\uCF6E\uCF6F\uCF72\uCF73\uCF75\uCF76\uCF77\uCF79",6,"\uCF81\uCF82\uCF83\uCF84\uCF86",5,"\uCF8D"],["b261","\uCF8E",18,"\uCFA2",5,"\uCFA9"],["b281","\uCFAA",5,"\uCFB1",18,"\uCFC5",6,"\uAE79\uAE7B\uAE7C\uAE7D\uAE84\uAE85\uAE8C\uAEBC\uAEBD\uAEBE\uAEC0\uAEC4\uAECC\uAECD\uAECF\uAED0\uAED1\uAED8\uAED9\uAEDC\uAEE8\uAEEB\uAEED\uAEF4\uAEF8\uAEFC\uAF07\uAF08\uAF0D\uAF10\uAF2C\uAF2D\uAF30\uAF32\uAF34\uAF3C\uAF3D\uAF3F\uAF41\uAF42\uAF43\uAF48\uAF49\uAF50\uAF5C\uAF5D\uAF64\uAF65\uAF79\uAF80\uAF84\uAF88\uAF90\uAF91\uAF95\uAF9C\uAFB8\uAFB9\uAFBC\uAFC0\uAFC7\uAFC8\uAFC9\uAFCB\uAFCD\uAFCE\uAFD4\uAFDC\uAFE8\uAFE9\uAFF0\uAFF1\uAFF4\uAFF8\uB000\uB001\uB004\uB00C\uB010\uB014\uB01C\uB01D\uB028\uB044\uB045\uB048\uB04A\uB04C\uB04E\uB053\uB054\uB055\uB057\uB059"],["b341","\uCFCC",19,"\uCFE2\uCFE3\uCFE5\uCFE6\uCFE7\uCFE9"],["b361","\uCFEA",5,"\uCFF2\uCFF4\uCFF6",5,"\uCFFD\uCFFE\uCFFF\uD001\uD002\uD003\uD005",5],["b381","\uD00B",5,"\uD012",5,"\uD019",19,"\uB05D\uB07C\uB07D\uB080\uB084\uB08C\uB08D\uB08F\uB091\uB098\uB099\uB09A\uB09C\uB09F\uB0A0\uB0A1\uB0A2\uB0A8\uB0A9\uB0AB",4,"\uB0B1\uB0B3\uB0B4\uB0B5\uB0B8\uB0BC\uB0C4\uB0C5\uB0C7\uB0C8\uB0C9\uB0D0\uB0D1\uB0D4\uB0D8\uB0E0\uB0E5\uB108\uB109\uB10B\uB10C\uB110\uB112\uB113\uB118\uB119\uB11B\uB11C\uB11D\uB123\uB124\uB125\uB128\uB12C\uB134\uB135\uB137\uB138\uB139\uB140\uB141\uB144\uB148\uB150\uB151\uB154\uB155\uB158\uB15C\uB160\uB178\uB179\uB17C\uB180\uB182\uB188\uB189\uB18B\uB18D\uB192\uB193\uB194\uB198\uB19C\uB1A8\uB1CC\uB1D0\uB1D4\uB1DC\uB1DD"],["b441","\uD02E",5,"\uD036\uD037\uD039\uD03A\uD03B\uD03D",6,"\uD046\uD048\uD04A",5],["b461","\uD051\uD052\uD053\uD055\uD056\uD057\uD059",6,"\uD061",10,"\uD06E\uD06F"],["b481","\uD071\uD072\uD073\uD075",6,"\uD07E\uD07F\uD080\uD082",18,"\uB1DF\uB1E8\uB1E9\uB1EC\uB1F0\uB1F9\uB1FB\uB1FD\uB204\uB205\uB208\uB20B\uB20C\uB214\uB215\uB217\uB219\uB220\uB234\uB23C\uB258\uB25C\uB260\uB268\uB269\uB274\uB275\uB27C\uB284\uB285\uB289\uB290\uB291\uB294\uB298\uB299\uB29A\uB2A0\uB2A1\uB2A3\uB2A5\uB2A6\uB2AA\uB2AC\uB2B0\uB2B4\uB2C8\uB2C9\uB2CC\uB2D0\uB2D2\uB2D8\uB2D9\uB2DB\uB2DD\uB2E2\uB2E4\uB2E5\uB2E6\uB2E8\uB2EB",4,"\uB2F3\uB2F4\uB2F5\uB2F7",4,"\uB2FF\uB300\uB301\uB304\uB308\uB310\uB311\uB313\uB314\uB315\uB31C\uB354\uB355\uB356\uB358\uB35B\uB35C\uB35E\uB35F\uB364\uB365"],["b541","\uD095",14,"\uD0A6\uD0A7\uD0A9\uD0AA\uD0AB\uD0AD",5],["b561","\uD0B3\uD0B6\uD0B8\uD0BA",5,"\uD0C2\uD0C3\uD0C5\uD0C6\uD0C7\uD0CA",5,"\uD0D2\uD0D6",4],["b581","\uD0DB\uD0DE\uD0DF\uD0E1\uD0E2\uD0E3\uD0E5",6,"\uD0EE\uD0F2",5,"\uD0F9",11,"\uB367\uB369\uB36B\uB36E\uB370\uB371\uB374\uB378\uB380\uB381\uB383\uB384\uB385\uB38C\uB390\uB394\uB3A0\uB3A1\uB3A8\uB3AC\uB3C4\uB3C5\uB3C8\uB3CB\uB3CC\uB3CE\uB3D0\uB3D4\uB3D5\uB3D7\uB3D9\uB3DB\uB3DD\uB3E0\uB3E4\uB3E8\uB3FC\uB410\uB418\uB41C\uB420\uB428\uB429\uB42B\uB434\uB450\uB451\uB454\uB458\uB460\uB461\uB463\uB465\uB46C\uB480\uB488\uB49D\uB4A4\uB4A8\uB4AC\uB4B5\uB4B7\uB4B9\uB4C0\uB4C4\uB4C8\uB4D0\uB4D5\uB4DC\uB4DD\uB4E0\uB4E3\uB4E4\uB4E6\uB4EC\uB4ED\uB4EF\uB4F1\uB4F8\uB514\uB515\uB518\uB51B\uB51C\uB524\uB525\uB527\uB528\uB529\uB52A\uB530\uB531\uB534\uB538"],["b641","\uD105",7,"\uD10E",17],["b661","\uD120",15,"\uD132\uD133\uD135\uD136\uD137\uD139\uD13B\uD13C\uD13D\uD13E"],["b681","\uD13F\uD142\uD146",5,"\uD14E\uD14F\uD151\uD152\uD153\uD155",6,"\uD15E\uD160\uD162",5,"\uD169\uD16A\uD16B\uD16D\uB540\uB541\uB543\uB544\uB545\uB54B\uB54C\uB54D\uB550\uB554\uB55C\uB55D\uB55F\uB560\uB561\uB5A0\uB5A1\uB5A4\uB5A8\uB5AA\uB5AB\uB5B0\uB5B1\uB5B3\uB5B4\uB5B5\uB5BB\uB5BC\uB5BD\uB5C0\uB5C4\uB5CC\uB5CD\uB5CF\uB5D0\uB5D1\uB5D8\uB5EC\uB610\uB611\uB614\uB618\uB625\uB62C\uB634\uB648\uB664\uB668\uB69C\uB69D\uB6A0\uB6A4\uB6AB\uB6AC\uB6B1\uB6D4\uB6F0\uB6F4\uB6F8\uB700\uB701\uB705\uB728\uB729\uB72C\uB72F\uB730\uB738\uB739\uB73B\uB744\uB748\uB74C\uB754\uB755\uB760\uB764\uB768\uB770\uB771\uB773\uB775\uB77C\uB77D\uB780\uB784\uB78C\uB78D\uB78F\uB790\uB791\uB792\uB796\uB797"],["b741","\uD16E",13,"\uD17D",6,"\uD185\uD186\uD187\uD189\uD18A"],["b761","\uD18B",20,"\uD1A2\uD1A3\uD1A5\uD1A6\uD1A7"],["b781","\uD1A9",6,"\uD1B2\uD1B4\uD1B6\uD1B7\uD1B8\uD1B9\uD1BB\uD1BD\uD1BE\uD1BF\uD1C1",14,"\uB798\uB799\uB79C\uB7A0\uB7A8\uB7A9\uB7AB\uB7AC\uB7AD\uB7B4\uB7B5\uB7B8\uB7C7\uB7C9\uB7EC\uB7ED\uB7F0\uB7F4\uB7FC\uB7FD\uB7FF\uB800\uB801\uB807\uB808\uB809\uB80C\uB810\uB818\uB819\uB81B\uB81D\uB824\uB825\uB828\uB82C\uB834\uB835\uB837\uB838\uB839\uB840\uB844\uB851\uB853\uB85C\uB85D\uB860\uB864\uB86C\uB86D\uB86F\uB871\uB878\uB87C\uB88D\uB8A8\uB8B0\uB8B4\uB8B8\uB8C0\uB8C1\uB8C3\uB8C5\uB8CC\uB8D0\uB8D4\uB8DD\uB8DF\uB8E1\uB8E8\uB8E9\uB8EC\uB8F0\uB8F8\uB8F9\uB8FB\uB8FD\uB904\uB918\uB920\uB93C\uB93D\uB940\uB944\uB94C\uB94F\uB951\uB958\uB959\uB95C\uB960\uB968\uB969"],["b841","\uD1D0",7,"\uD1D9",17],["b861","\uD1EB",8,"\uD1F5\uD1F6\uD1F7\uD1F9",13],["b881","\uD208\uD20A",5,"\uD211",24,"\uB96B\uB96D\uB974\uB975\uB978\uB97C\uB984\uB985\uB987\uB989\uB98A\uB98D\uB98E\uB9AC\uB9AD\uB9B0\uB9B4\uB9BC\uB9BD\uB9BF\uB9C1\uB9C8\uB9C9\uB9CC\uB9CE",4,"\uB9D8\uB9D9\uB9DB\uB9DD\uB9DE\uB9E1\uB9E3\uB9E4\uB9E5\uB9E8\uB9EC\uB9F4\uB9F5\uB9F7\uB9F8\uB9F9\uB9FA\uBA00\uBA01\uBA08\uBA15\uBA38\uBA39\uBA3C\uBA40\uBA42\uBA48\uBA49\uBA4B\uBA4D\uBA4E\uBA53\uBA54\uBA55\uBA58\uBA5C\uBA64\uBA65\uBA67\uBA68\uBA69\uBA70\uBA71\uBA74\uBA78\uBA83\uBA84\uBA85\uBA87\uBA8C\uBAA8\uBAA9\uBAAB\uBAAC\uBAB0\uBAB2\uBAB8\uBAB9\uBABB\uBABD\uBAC4\uBAC8\uBAD8\uBAD9\uBAFC"],["b941","\uD22A\uD22B\uD22E\uD22F\uD231\uD232\uD233\uD235",6,"\uD23E\uD240\uD242",5,"\uD249\uD24A\uD24B\uD24C"],["b961","\uD24D",14,"\uD25D",6,"\uD265\uD266\uD267\uD268"],["b981","\uD269",22,"\uD282\uD283\uD285\uD286\uD287\uD289\uD28A\uD28B\uD28C\uBB00\uBB04\uBB0D\uBB0F\uBB11\uBB18\uBB1C\uBB20\uBB29\uBB2B\uBB34\uBB35\uBB36\uBB38\uBB3B\uBB3C\uBB3D\uBB3E\uBB44\uBB45\uBB47\uBB49\uBB4D\uBB4F\uBB50\uBB54\uBB58\uBB61\uBB63\uBB6C\uBB88\uBB8C\uBB90\uBBA4\uBBA8\uBBAC\uBBB4\uBBB7\uBBC0\uBBC4\uBBC8\uBBD0\uBBD3\uBBF8\uBBF9\uBBFC\uBBFF\uBC00\uBC02\uBC08\uBC09\uBC0B\uBC0C\uBC0D\uBC0F\uBC11\uBC14",4,"\uBC1B",4,"\uBC24\uBC25\uBC27\uBC29\uBC2D\uBC30\uBC31\uBC34\uBC38\uBC40\uBC41\uBC43\uBC44\uBC45\uBC49\uBC4C\uBC4D\uBC50\uBC5D\uBC84\uBC85\uBC88\uBC8B\uBC8C\uBC8E\uBC94\uBC95\uBC97"],["ba41","\uD28D\uD28E\uD28F\uD292\uD293\uD294\uD296",5,"\uD29D\uD29E\uD29F\uD2A1\uD2A2\uD2A3\uD2A5",6,"\uD2AD"],["ba61","\uD2AE\uD2AF\uD2B0\uD2B2",5,"\uD2BA\uD2BB\uD2BD\uD2BE\uD2C1\uD2C3",4,"\uD2CA\uD2CC",5],["ba81","\uD2D2\uD2D3\uD2D5\uD2D6\uD2D7\uD2D9\uD2DA\uD2DB\uD2DD",6,"\uD2E6",9,"\uD2F2\uD2F3\uD2F5\uD2F6\uD2F7\uD2F9\uD2FA\uBC99\uBC9A\uBCA0\uBCA1\uBCA4\uBCA7\uBCA8\uBCB0\uBCB1\uBCB3\uBCB4\uBCB5\uBCBC\uBCBD\uBCC0\uBCC4\uBCCD\uBCCF\uBCD0\uBCD1\uBCD5\uBCD8\uBCDC\uBCF4\uBCF5\uBCF6\uBCF8\uBCFC\uBD04\uBD05\uBD07\uBD09\uBD10\uBD14\uBD24\uBD2C\uBD40\uBD48\uBD49\uBD4C\uBD50\uBD58\uBD59\uBD64\uBD68\uBD80\uBD81\uBD84\uBD87\uBD88\uBD89\uBD8A\uBD90\uBD91\uBD93\uBD95\uBD99\uBD9A\uBD9C\uBDA4\uBDB0\uBDB8\uBDD4\uBDD5\uBDD8\uBDDC\uBDE9\uBDF0\uBDF4\uBDF8\uBE00\uBE03\uBE05\uBE0C\uBE0D\uBE10\uBE14\uBE1C\uBE1D\uBE1F\uBE44\uBE45\uBE48\uBE4C\uBE4E\uBE54\uBE55\uBE57\uBE59\uBE5A\uBE5B\uBE60\uBE61\uBE64"],["bb41","\uD2FB",4,"\uD302\uD304\uD306",5,"\uD30F\uD311\uD312\uD313\uD315\uD317",4,"\uD31E\uD322\uD323"],["bb61","\uD324\uD326\uD327\uD32A\uD32B\uD32D\uD32E\uD32F\uD331",6,"\uD33A\uD33E",5,"\uD346\uD347\uD348\uD349"],["bb81","\uD34A",31,"\uBE68\uBE6A\uBE70\uBE71\uBE73\uBE74\uBE75\uBE7B\uBE7C\uBE7D\uBE80\uBE84\uBE8C\uBE8D\uBE8F\uBE90\uBE91\uBE98\uBE99\uBEA8\uBED0\uBED1\uBED4\uBED7\uBED8\uBEE0\uBEE3\uBEE4\uBEE5\uBEEC\uBF01\uBF08\uBF09\uBF18\uBF19\uBF1B\uBF1C\uBF1D\uBF40\uBF41\uBF44\uBF48\uBF50\uBF51\uBF55\uBF94\uBFB0\uBFC5\uBFCC\uBFCD\uBFD0\uBFD4\uBFDC\uBFDF\uBFE1\uC03C\uC051\uC058\uC05C\uC060\uC068\uC069\uC090\uC091\uC094\uC098\uC0A0\uC0A1\uC0A3\uC0A5\uC0AC\uC0AD\uC0AF\uC0B0\uC0B3\uC0B4\uC0B5\uC0B6\uC0BC\uC0BD\uC0BF\uC0C0\uC0C1\uC0C5\uC0C8\uC0C9\uC0CC\uC0D0\uC0D8\uC0D9\uC0DB\uC0DC\uC0DD\uC0E4"],["bc41","\uD36A",17,"\uD37E\uD37F\uD381\uD382\uD383\uD385\uD386\uD387"],["bc61","\uD388\uD389\uD38A\uD38B\uD38E\uD392",5,"\uD39A\uD39B\uD39D\uD39E\uD39F\uD3A1",6,"\uD3AA\uD3AC\uD3AE"],["bc81","\uD3AF",4,"\uD3B5\uD3B6\uD3B7\uD3B9\uD3BA\uD3BB\uD3BD",6,"\uD3C6\uD3C7\uD3CA",5,"\uD3D1",5,"\uC0E5\uC0E8\uC0EC\uC0F4\uC0F5\uC0F7\uC0F9\uC100\uC104\uC108\uC110\uC115\uC11C",4,"\uC123\uC124\uC126\uC127\uC12C\uC12D\uC12F\uC130\uC131\uC136\uC138\uC139\uC13C\uC140\uC148\uC149\uC14B\uC14C\uC14D\uC154\uC155\uC158\uC15C\uC164\uC165\uC167\uC168\uC169\uC170\uC174\uC178\uC185\uC18C\uC18D\uC18E\uC190\uC194\uC196\uC19C\uC19D\uC19F\uC1A1\uC1A5\uC1A8\uC1A9\uC1AC\uC1B0\uC1BD\uC1C4\uC1C8\uC1CC\uC1D4\uC1D7\uC1D8\uC1E0\uC1E4\uC1E8\uC1F0\uC1F1\uC1F3\uC1FC\uC1FD\uC200\uC204\uC20C\uC20D\uC20F\uC211\uC218\uC219\uC21C\uC21F\uC220\uC228\uC229\uC22B\uC22D"],["bd41","\uD3D7\uD3D9",7,"\uD3E2\uD3E4",7,"\uD3EE\uD3EF\uD3F1\uD3F2\uD3F3\uD3F5\uD3F6\uD3F7"],["bd61","\uD3F8\uD3F9\uD3FA\uD3FB\uD3FE\uD400\uD402",5,"\uD409",13],["bd81","\uD417",5,"\uD41E",25,"\uC22F\uC231\uC232\uC234\uC248\uC250\uC251\uC254\uC258\uC260\uC265\uC26C\uC26D\uC270\uC274\uC27C\uC27D\uC27F\uC281\uC288\uC289\uC290\uC298\uC29B\uC29D\uC2A4\uC2A5\uC2A8\uC2AC\uC2AD\uC2B4\uC2B5\uC2B7\uC2B9\uC2DC\uC2DD\uC2E0\uC2E3\uC2E4\uC2EB\uC2EC\uC2ED\uC2EF\uC2F1\uC2F6\uC2F8\uC2F9\uC2FB\uC2FC\uC300\uC308\uC309\uC30C\uC30D\uC313\uC314\uC315\uC318\uC31C\uC324\uC325\uC328\uC329\uC345\uC368\uC369\uC36C\uC370\uC372\uC378\uC379\uC37C\uC37D\uC384\uC388\uC38C\uC3C0\uC3D8\uC3D9\uC3DC\uC3DF\uC3E0\uC3E2\uC3E8\uC3E9\uC3ED\uC3F4\uC3F5\uC3F8\uC408\uC410\uC424\uC42C\uC430"],["be41","\uD438",7,"\uD441\uD442\uD443\uD445",14],["be61","\uD454",7,"\uD45D\uD45E\uD45F\uD461\uD462\uD463\uD465",7,"\uD46E\uD470\uD471\uD472"],["be81","\uD473",4,"\uD47A\uD47B\uD47D\uD47E\uD481\uD483",4,"\uD48A\uD48C\uD48E",5,"\uD495",8,"\uC434\uC43C\uC43D\uC448\uC464\uC465\uC468\uC46C\uC474\uC475\uC479\uC480\uC494\uC49C\uC4B8\uC4BC\uC4E9\uC4F0\uC4F1\uC4F4\uC4F8\uC4FA\uC4FF\uC500\uC501\uC50C\uC510\uC514\uC51C\uC528\uC529\uC52C\uC530\uC538\uC539\uC53B\uC53D\uC544\uC545\uC548\uC549\uC54A\uC54C\uC54D\uC54E\uC553\uC554\uC555\uC557\uC558\uC559\uC55D\uC55E\uC560\uC561\uC564\uC568\uC570\uC571\uC573\uC574\uC575\uC57C\uC57D\uC580\uC584\uC587\uC58C\uC58D\uC58F\uC591\uC595\uC597\uC598\uC59C\uC5A0\uC5A9\uC5B4\uC5B5\uC5B8\uC5B9\uC5BB\uC5BC\uC5BD\uC5BE\uC5C4",6,"\uC5CC\uC5CE"],["bf41","\uD49E",10,"\uD4AA",14],["bf61","\uD4B9",18,"\uD4CD\uD4CE\uD4CF\uD4D1\uD4D2\uD4D3\uD4D5"],["bf81","\uD4D6",5,"\uD4DD\uD4DE\uD4E0",7,"\uD4E9\uD4EA\uD4EB\uD4ED\uD4EE\uD4EF\uD4F1",6,"\uD4F9\uD4FA\uD4FC\uC5D0\uC5D1\uC5D4\uC5D8\uC5E0\uC5E1\uC5E3\uC5E5\uC5EC\uC5ED\uC5EE\uC5F0\uC5F4\uC5F6\uC5F7\uC5FC",5,"\uC605\uC606\uC607\uC608\uC60C\uC610\uC618\uC619\uC61B\uC61C\uC624\uC625\uC628\uC62C\uC62D\uC62E\uC630\uC633\uC634\uC635\uC637\uC639\uC63B\uC640\uC641\uC644\uC648\uC650\uC651\uC653\uC654\uC655\uC65C\uC65D\uC660\uC66C\uC66F\uC671\uC678\uC679\uC67C\uC680\uC688\uC689\uC68B\uC68D\uC694\uC695\uC698\uC69C\uC6A4\uC6A5\uC6A7\uC6A9\uC6B0\uC6B1\uC6B4\uC6B8\uC6B9\uC6BA\uC6C0\uC6C1\uC6C3\uC6C5\uC6CC\uC6CD\uC6D0\uC6D4\uC6DC\uC6DD\uC6E0\uC6E1\uC6E8"],["c041","\uD4FE",5,"\uD505\uD506\uD507\uD509\uD50A\uD50B\uD50D",6,"\uD516\uD518",5],["c061","\uD51E",25],["c081","\uD538\uD539\uD53A\uD53B\uD53E\uD53F\uD541\uD542\uD543\uD545",6,"\uD54E\uD550\uD552",5,"\uD55A\uD55B\uD55D\uD55E\uD55F\uD561\uD562\uD563\uC6E9\uC6EC\uC6F0\uC6F8\uC6F9\uC6FD\uC704\uC705\uC708\uC70C\uC714\uC715\uC717\uC719\uC720\uC721\uC724\uC728\uC730\uC731\uC733\uC735\uC737\uC73C\uC73D\uC740\uC744\uC74A\uC74C\uC74D\uC74F\uC751",7,"\uC75C\uC760\uC768\uC76B\uC774\uC775\uC778\uC77C\uC77D\uC77E\uC783\uC784\uC785\uC787\uC788\uC789\uC78A\uC78E\uC790\uC791\uC794\uC796\uC797\uC798\uC79A\uC7A0\uC7A1\uC7A3\uC7A4\uC7A5\uC7A6\uC7AC\uC7AD\uC7B0\uC7B4\uC7BC\uC7BD\uC7BF\uC7C0\uC7C1\uC7C8\uC7C9\uC7CC\uC7CE\uC7D0\uC7D8\uC7DD\uC7E4\uC7E8\uC7EC\uC800\uC801\uC804\uC808\uC80A"],["c141","\uD564\uD566\uD567\uD56A\uD56C\uD56E",5,"\uD576\uD577\uD579\uD57A\uD57B\uD57D",6,"\uD586\uD58A\uD58B"],["c161","\uD58C\uD58D\uD58E\uD58F\uD591",19,"\uD5A6\uD5A7"],["c181","\uD5A8",31,"\uC810\uC811\uC813\uC815\uC816\uC81C\uC81D\uC820\uC824\uC82C\uC82D\uC82F\uC831\uC838\uC83C\uC840\uC848\uC849\uC84C\uC84D\uC854\uC870\uC871\uC874\uC878\uC87A\uC880\uC881\uC883\uC885\uC886\uC887\uC88B\uC88C\uC88D\uC894\uC89D\uC89F\uC8A1\uC8A8\uC8BC\uC8BD\uC8C4\uC8C8\uC8CC\uC8D4\uC8D5\uC8D7\uC8D9\uC8E0\uC8E1\uC8E4\uC8F5\uC8FC\uC8FD\uC900\uC904\uC905\uC906\uC90C\uC90D\uC90F\uC911\uC918\uC92C\uC934\uC950\uC951\uC954\uC958\uC960\uC961\uC963\uC96C\uC970\uC974\uC97C\uC988\uC989\uC98C\uC990\uC998\uC999\uC99B\uC99D\uC9C0\uC9C1\uC9C4\uC9C7\uC9C8\uC9CA\uC9D0\uC9D1\uC9D3"],["c241","\uD5CA\uD5CB\uD5CD\uD5CE\uD5CF\uD5D1\uD5D3",4,"\uD5DA\uD5DC\uD5DE",5,"\uD5E6\uD5E7\uD5E9\uD5EA\uD5EB\uD5ED\uD5EE"],["c261","\uD5EF",4,"\uD5F6\uD5F8\uD5FA",5,"\uD602\uD603\uD605\uD606\uD607\uD609",6,"\uD612"],["c281","\uD616",5,"\uD61D\uD61E\uD61F\uD621\uD622\uD623\uD625",7,"\uD62E",9,"\uD63A\uD63B\uC9D5\uC9D6\uC9D9\uC9DA\uC9DC\uC9DD\uC9E0\uC9E2\uC9E4\uC9E7\uC9EC\uC9ED\uC9EF\uC9F0\uC9F1\uC9F8\uC9F9\uC9FC\uCA00\uCA08\uCA09\uCA0B\uCA0C\uCA0D\uCA14\uCA18\uCA29\uCA4C\uCA4D\uCA50\uCA54\uCA5C\uCA5D\uCA5F\uCA60\uCA61\uCA68\uCA7D\uCA84\uCA98\uCABC\uCABD\uCAC0\uCAC4\uCACC\uCACD\uCACF\uCAD1\uCAD3\uCAD8\uCAD9\uCAE0\uCAEC\uCAF4\uCB08\uCB10\uCB14\uCB18\uCB20\uCB21\uCB41\uCB48\uCB49\uCB4C\uCB50\uCB58\uCB59\uCB5D\uCB64\uCB78\uCB79\uCB9C\uCBB8\uCBD4\uCBE4\uCBE7\uCBE9\uCC0C\uCC0D\uCC10\uCC14\uCC1C\uCC1D\uCC21\uCC22\uCC27\uCC28\uCC29\uCC2C\uCC2E\uCC30\uCC38\uCC39\uCC3B"],["c341","\uD63D\uD63E\uD63F\uD641\uD642\uD643\uD644\uD646\uD647\uD64A\uD64C\uD64E\uD64F\uD650\uD652\uD653\uD656\uD657\uD659\uD65A\uD65B\uD65D",4],["c361","\uD662",4,"\uD668\uD66A",5,"\uD672\uD673\uD675",11],["c381","\uD681\uD682\uD684\uD686",5,"\uD68E\uD68F\uD691\uD692\uD693\uD695",7,"\uD69E\uD6A0\uD6A2",5,"\uD6A9\uD6AA\uCC3C\uCC3D\uCC3E\uCC44\uCC45\uCC48\uCC4C\uCC54\uCC55\uCC57\uCC58\uCC59\uCC60\uCC64\uCC66\uCC68\uCC70\uCC75\uCC98\uCC99\uCC9C\uCCA0\uCCA8\uCCA9\uCCAB\uCCAC\uCCAD\uCCB4\uCCB5\uCCB8\uCCBC\uCCC4\uCCC5\uCCC7\uCCC9\uCCD0\uCCD4\uCCE4\uCCEC\uCCF0\uCD01\uCD08\uCD09\uCD0C\uCD10\uCD18\uCD19\uCD1B\uCD1D\uCD24\uCD28\uCD2C\uCD39\uCD5C\uCD60\uCD64\uCD6C\uCD6D\uCD6F\uCD71\uCD78\uCD88\uCD94\uCD95\uCD98\uCD9C\uCDA4\uCDA5\uCDA7\uCDA9\uCDB0\uCDC4\uCDCC\uCDD0\uCDE8\uCDEC\uCDF0\uCDF8\uCDF9\uCDFB\uCDFD\uCE04\uCE08\uCE0C\uCE14\uCE19\uCE20\uCE21\uCE24\uCE28\uCE30\uCE31\uCE33\uCE35"],["c441","\uD6AB\uD6AD\uD6AE\uD6AF\uD6B1",7,"\uD6BA\uD6BC",7,"\uD6C6\uD6C7\uD6C9\uD6CA\uD6CB"],["c461","\uD6CD\uD6CE\uD6CF\uD6D0\uD6D2\uD6D3\uD6D5\uD6D6\uD6D8\uD6DA",5,"\uD6E1\uD6E2\uD6E3\uD6E5\uD6E6\uD6E7\uD6E9",4],["c481","\uD6EE\uD6EF\uD6F1\uD6F2\uD6F3\uD6F4\uD6F6",5,"\uD6FE\uD6FF\uD701\uD702\uD703\uD705",11,"\uD712\uD713\uD714\uCE58\uCE59\uCE5C\uCE5F\uCE60\uCE61\uCE68\uCE69\uCE6B\uCE6D\uCE74\uCE75\uCE78\uCE7C\uCE84\uCE85\uCE87\uCE89\uCE90\uCE91\uCE94\uCE98\uCEA0\uCEA1\uCEA3\uCEA4\uCEA5\uCEAC\uCEAD\uCEC1\uCEE4\uCEE5\uCEE8\uCEEB\uCEEC\uCEF4\uCEF5\uCEF7\uCEF8\uCEF9\uCF00\uCF01\uCF04\uCF08\uCF10\uCF11\uCF13\uCF15\uCF1C\uCF20\uCF24\uCF2C\uCF2D\uCF2F\uCF30\uCF31\uCF38\uCF54\uCF55\uCF58\uCF5C\uCF64\uCF65\uCF67\uCF69\uCF70\uCF71\uCF74\uCF78\uCF80\uCF85\uCF8C\uCFA1\uCFA8\uCFB0\uCFC4\uCFE0\uCFE1\uCFE4\uCFE8\uCFF0\uCFF1\uCFF3\uCFF5\uCFFC\uD000\uD004\uD011\uD018\uD02D\uD034\uD035\uD038\uD03C"],["c541","\uD715\uD716\uD717\uD71A\uD71B\uD71D\uD71E\uD71F\uD721",6,"\uD72A\uD72C\uD72E",5,"\uD736\uD737\uD739"],["c561","\uD73A\uD73B\uD73D",6,"\uD745\uD746\uD748\uD74A",5,"\uD752\uD753\uD755\uD75A",4],["c581","\uD75F\uD762\uD764\uD766\uD767\uD768\uD76A\uD76B\uD76D\uD76E\uD76F\uD771\uD772\uD773\uD775",6,"\uD77E\uD77F\uD780\uD782",5,"\uD78A\uD78B\uD044\uD045\uD047\uD049\uD050\uD054\uD058\uD060\uD06C\uD06D\uD070\uD074\uD07C\uD07D\uD081\uD0A4\uD0A5\uD0A8\uD0AC\uD0B4\uD0B5\uD0B7\uD0B9\uD0C0\uD0C1\uD0C4\uD0C8\uD0C9\uD0D0\uD0D1\uD0D3\uD0D4\uD0D5\uD0DC\uD0DD\uD0E0\uD0E4\uD0EC\uD0ED\uD0EF\uD0F0\uD0F1\uD0F8\uD10D\uD130\uD131\uD134\uD138\uD13A\uD140\uD141\uD143\uD144\uD145\uD14C\uD14D\uD150\uD154\uD15C\uD15D\uD15F\uD161\uD168\uD16C\uD17C\uD184\uD188\uD1A0\uD1A1\uD1A4\uD1A8\uD1B0\uD1B1\uD1B3\uD1B5\uD1BA\uD1BC\uD1C0\uD1D8\uD1F4\uD1F8\uD207\uD209\uD210\uD22C\uD22D\uD230\uD234\uD23C\uD23D\uD23F\uD241\uD248\uD25C"],["c641","\uD78D\uD78E\uD78F\uD791",6,"\uD79A\uD79C\uD79E",5],["c6a1","\uD264\uD280\uD281\uD284\uD288\uD290\uD291\uD295\uD29C\uD2A0\uD2A4\uD2AC\uD2B1\uD2B8\uD2B9\uD2BC\uD2BF\uD2C0\uD2C2\uD2C8\uD2C9\uD2CB\uD2D4\uD2D8\uD2DC\uD2E4\uD2E5\uD2F0\uD2F1\uD2F4\uD2F8\uD300\uD301\uD303\uD305\uD30C\uD30D\uD30E\uD310\uD314\uD316\uD31C\uD31D\uD31F\uD320\uD321\uD325\uD328\uD329\uD32C\uD330\uD338\uD339\uD33B\uD33C\uD33D\uD344\uD345\uD37C\uD37D\uD380\uD384\uD38C\uD38D\uD38F\uD390\uD391\uD398\uD399\uD39C\uD3A0\uD3A8\uD3A9\uD3AB\uD3AD\uD3B4\uD3B8\uD3BC\uD3C4\uD3C5\uD3C8\uD3C9\uD3D0\uD3D8\uD3E1\uD3E3\uD3EC\uD3ED\uD3F0\uD3F4\uD3FC\uD3FD\uD3FF\uD401"],["c7a1","\uD408\uD41D\uD440\uD444\uD45C\uD460\uD464\uD46D\uD46F\uD478\uD479\uD47C\uD47F\uD480\uD482\uD488\uD489\uD48B\uD48D\uD494\uD4A9\uD4CC\uD4D0\uD4D4\uD4DC\uD4DF\uD4E8\uD4EC\uD4F0\uD4F8\uD4FB\uD4FD\uD504\uD508\uD50C\uD514\uD515\uD517\uD53C\uD53D\uD540\uD544\uD54C\uD54D\uD54F\uD551\uD558\uD559\uD55C\uD560\uD565\uD568\uD569\uD56B\uD56D\uD574\uD575\uD578\uD57C\uD584\uD585\uD587\uD588\uD589\uD590\uD5A5\uD5C8\uD5C9\uD5CC\uD5D0\uD5D2\uD5D8\uD5D9\uD5DB\uD5DD\uD5E4\uD5E5\uD5E8\uD5EC\uD5F4\uD5F5\uD5F7\uD5F9\uD600\uD601\uD604\uD608\uD610\uD611\uD613\uD614\uD615\uD61C\uD620"],["c8a1","\uD624\uD62D\uD638\uD639\uD63C\uD640\uD645\uD648\uD649\uD64B\uD64D\uD651\uD654\uD655\uD658\uD65C\uD667\uD669\uD670\uD671\uD674\uD683\uD685\uD68C\uD68D\uD690\uD694\uD69D\uD69F\uD6A1\uD6A8\uD6AC\uD6B0\uD6B9\uD6BB\uD6C4\uD6C5\uD6C8\uD6CC\uD6D1\uD6D4\uD6D7\uD6D9\uD6E0\uD6E4\uD6E8\uD6F0\uD6F5\uD6FC\uD6FD\uD700\uD704\uD711\uD718\uD719\uD71C\uD720\uD728\uD729\uD72B\uD72D\uD734\uD735\uD738\uD73C\uD744\uD747\uD749\uD750\uD751\uD754\uD756\uD757\uD758\uD759\uD760\uD761\uD763\uD765\uD769\uD76C\uD770\uD774\uD77C\uD77D\uD781\uD788\uD789\uD78C\uD790\uD798\uD799\uD79B\uD79D"],["caa1","\u4F3D\u4F73\u5047\u50F9\u52A0\u53EF\u5475\u54E5\u5609\u5AC1\u5BB6\u6687\u67B6\u67B7\u67EF\u6B4C\u73C2\u75C2\u7A3C\u82DB\u8304\u8857\u8888\u8A36\u8CC8\u8DCF\u8EFB\u8FE6\u99D5\u523B\u5374\u5404\u606A\u6164\u6BBC\u73CF\u811A\u89BA\u89D2\u95A3\u4F83\u520A\u58BE\u5978\u59E6\u5E72\u5E79\u61C7\u63C0\u6746\u67EC\u687F\u6F97\u764E\u770B\u78F5\u7A08\u7AFF\u7C21\u809D\u826E\u8271\u8AEB\u9593\u4E6B\u559D\u66F7\u6E34\u78A3\u7AED\u845B\u8910\u874E\u97A8\u52D8\u574E\u582A\u5D4C\u611F\u61BE\u6221\u6562\u67D1\u6A44\u6E1B\u7518\u75B3\u76E3\u77B0\u7D3A\u90AF\u9451\u9452\u9F95"],["cba1","\u5323\u5CAC\u7532\u80DB\u9240\u9598\u525B\u5808\u59DC\u5CA1\u5D17\u5EB7\u5F3A\u5F4A\u6177\u6C5F\u757A\u7586\u7CE0\u7D73\u7DB1\u7F8C\u8154\u8221\u8591\u8941\u8B1B\u92FC\u964D\u9C47\u4ECB\u4EF7\u500B\u51F1\u584F\u6137\u613E\u6168\u6539\u69EA\u6F11\u75A5\u7686\u76D6\u7B87\u82A5\u84CB\uF900\u93A7\u958B\u5580\u5BA2\u5751\uF901\u7CB3\u7FB9\u91B5\u5028\u53BB\u5C45\u5DE8\u62D2\u636E\u64DA\u64E7\u6E20\u70AC\u795B\u8DDD\u8E1E\uF902\u907D\u9245\u92F8\u4E7E\u4EF6\u5065\u5DFE\u5EFA\u6106\u6957\u8171\u8654\u8E47\u9375\u9A2B\u4E5E\u5091\u6770\u6840\u5109\u528D\u5292\u6AA2"],["cca1","\u77BC\u9210\u9ED4\u52AB\u602F\u8FF2\u5048\u61A9\u63ED\u64CA\u683C\u6A84\u6FC0\u8188\u89A1\u9694\u5805\u727D\u72AC\u7504\u7D79\u7E6D\u80A9\u898B\u8B74\u9063\u9D51\u6289\u6C7A\u6F54\u7D50\u7F3A\u8A23\u517C\u614A\u7B9D\u8B19\u9257\u938C\u4EAC\u4FD3\u501E\u50BE\u5106\u52C1\u52CD\u537F\u5770\u5883\u5E9A\u5F91\u6176\u61AC\u64CE\u656C\u666F\u66BB\u66F4\u6897\u6D87\u7085\u70F1\u749F\u74A5\u74CA\u75D9\u786C\u78EC\u7ADF\u7AF6\u7D45\u7D93\u8015\u803F\u811B\u8396\u8B66\u8F15\u9015\u93E1\u9803\u9838\u9A5A\u9BE8\u4FC2\u5553\u583A\u5951\u5B63\u5C46\u60B8\u6212\u6842\u68B0"],["cda1","\u68E8\u6EAA\u754C\u7678\u78CE\u7A3D\u7CFB\u7E6B\u7E7C\u8A08\u8AA1\u8C3F\u968E\u9DC4\u53E4\u53E9\u544A\u5471\u56FA\u59D1\u5B64\u5C3B\u5EAB\u62F7\u6537\u6545\u6572\u66A0\u67AF\u69C1\u6CBD\u75FC\u7690\u777E\u7A3F\u7F94\u8003\u80A1\u818F\u82E6\u82FD\u83F0\u85C1\u8831\u88B4\u8AA5\uF903\u8F9C\u932E\u96C7\u9867\u9AD8\u9F13\u54ED\u659B\u66F2\u688F\u7A40\u8C37\u9D60\u56F0\u5764\u5D11\u6606\u68B1\u68CD\u6EFE\u7428\u889E\u9BE4\u6C68\uF904\u9AA8\u4F9B\u516C\u5171\u529F\u5B54\u5DE5\u6050\u606D\u62F1\u63A7\u653B\u73D9\u7A7A\u86A3\u8CA2\u978F\u4E32\u5BE1\u6208\u679C\u74DC"],["cea1","\u79D1\u83D3\u8A87\u8AB2\u8DE8\u904E\u934B\u9846\u5ED3\u69E8\u85FF\u90ED\uF905\u51A0\u5B98\u5BEC\u6163\u68FA\u6B3E\u704C\u742F\u74D8\u7BA1\u7F50\u83C5\u89C0\u8CAB\u95DC\u9928\u522E\u605D\u62EC\u9002\u4F8A\u5149\u5321\u58D9\u5EE3\u66E0\u6D38\u709A\u72C2\u73D6\u7B50\u80F1\u945B\u5366\u639B\u7F6B\u4E56\u5080\u584A\u58DE\u602A\u6127\u62D0\u69D0\u9B41\u5B8F\u7D18\u80B1\u8F5F\u4EA4\u50D1\u54AC\u55AC\u5B0C\u5DA0\u5DE7\u652A\u654E\u6821\u6A4B\u72E1\u768E\u77EF\u7D5E\u7FF9\u81A0\u854E\u86DF\u8F03\u8F4E\u90CA\u9903\u9A55\u9BAB\u4E18\u4E45\u4E5D\u4EC7\u4FF1\u5177\u52FE"],["cfa1","\u5340\u53E3\u53E5\u548E\u5614\u5775\u57A2\u5BC7\u5D87\u5ED0\u61FC\u62D8\u6551\u67B8\u67E9\u69CB\u6B50\u6BC6\u6BEC\u6C42\u6E9D\u7078\u72D7\u7396\u7403\u77BF\u77E9\u7A76\u7D7F\u8009\u81FC\u8205\u820A\u82DF\u8862\u8B33\u8CFC\u8EC0\u9011\u90B1\u9264\u92B6\u99D2\u9A45\u9CE9\u9DD7\u9F9C\u570B\u5C40\u83CA\u97A0\u97AB\u9EB4\u541B\u7A98\u7FA4\u88D9\u8ECD\u90E1\u5800\u5C48\u6398\u7A9F\u5BAE\u5F13\u7A79\u7AAE\u828E\u8EAC\u5026\u5238\u52F8\u5377\u5708\u62F3\u6372\u6B0A\u6DC3\u7737\u53A5\u7357\u8568\u8E76\u95D5\u673A\u6AC3\u6F70\u8A6D\u8ECC\u994B\uF906\u6677\u6B78\u8CB4"],["d0a1","\u9B3C\uF907\u53EB\u572D\u594E\u63C6\u69FB\u73EA\u7845\u7ABA\u7AC5\u7CFE\u8475\u898F\u8D73\u9035\u95A8\u52FB\u5747\u7547\u7B60\u83CC\u921E\uF908\u6A58\u514B\u524B\u5287\u621F\u68D8\u6975\u9699\u50C5\u52A4\u52E4\u61C3\u65A4\u6839\u69FF\u747E\u7B4B\u82B9\u83EB\u89B2\u8B39\u8FD1\u9949\uF909\u4ECA\u5997\u64D2\u6611\u6A8E\u7434\u7981\u79BD\u82A9\u887E\u887F\u895F\uF90A\u9326\u4F0B\u53CA\u6025\u6271\u6C72\u7D1A\u7D66\u4E98\u5162\u77DC\u80AF\u4F01\u4F0E\u5176\u5180\u55DC\u5668\u573B\u57FA\u57FC\u5914\u5947\u5993\u5BC4\u5C90\u5D0E\u5DF1\u5E7E\u5FCC\u6280\u65D7\u65E3"],["d1a1","\u671E\u671F\u675E\u68CB\u68C4\u6A5F\u6B3A\u6C23\u6C7D\u6C82\u6DC7\u7398\u7426\u742A\u7482\u74A3\u7578\u757F\u7881\u78EF\u7941\u7947\u7948\u797A\u7B95\u7D00\u7DBA\u7F88\u8006\u802D\u808C\u8A18\u8B4F\u8C48\u8D77\u9321\u9324\u98E2\u9951\u9A0E\u9A0F\u9A65\u9E92\u7DCA\u4F76\u5409\u62EE\u6854\u91D1\u55AB\u513A\uF90B\uF90C\u5A1C\u61E6\uF90D\u62CF\u62FF\uF90E",5,"\u90A3\uF914",4,"\u8AFE\uF919\uF91A\uF91B\uF91C\u6696\uF91D\u7156\uF91E\uF91F\u96E3\uF920\u634F\u637A\u5357\uF921\u678F\u6960\u6E73\uF922\u7537\uF923\uF924\uF925"],["d2a1","\u7D0D\uF926\uF927\u8872\u56CA\u5A18\uF928",4,"\u4E43\uF92D\u5167\u5948\u67F0\u8010\uF92E\u5973\u5E74\u649A\u79CA\u5FF5\u606C\u62C8\u637B\u5BE7\u5BD7\u52AA\uF92F\u5974\u5F29\u6012\uF930\uF931\uF932\u7459\uF933",5,"\u99D1\uF939",10,"\u6FC3\uF944\uF945\u81BF\u8FB2\u60F1\uF946\uF947\u8166\uF948\uF949\u5C3F\uF94A",7,"\u5AE9\u8A25\u677B\u7D10\uF952",5,"\u80FD\uF958\uF959\u5C3C\u6CE5\u533F\u6EBA\u591A\u8336"],["d3a1","\u4E39\u4EB6\u4F46\u55AE\u5718\u58C7\u5F56\u65B7\u65E6\u6A80\u6BB5\u6E4D\u77ED\u7AEF\u7C1E\u7DDE\u86CB\u8892\u9132\u935B\u64BB\u6FBE\u737A\u75B8\u9054\u5556\u574D\u61BA\u64D4\u66C7\u6DE1\u6E5B\u6F6D\u6FB9\u75F0\u8043\u81BD\u8541\u8983\u8AC7\u8B5A\u931F\u6C93\u7553\u7B54\u8E0F\u905D\u5510\u5802\u5858\u5E62\u6207\u649E\u68E0\u7576\u7CD6\u87B3\u9EE8\u4EE3\u5788\u576E\u5927\u5C0D\u5CB1\u5E36\u5F85\u6234\u64E1\u73B3\u81FA\u888B\u8CB8\u968A\u9EDB\u5B85\u5FB7\u60B3\u5012\u5200\u5230\u5716\u5835\u5857\u5C0E\u5C60\u5CF6\u5D8B\u5EA6\u5F92\u60BC\u6311\u6389\u6417\u6843"],["d4a1","\u68F9\u6AC2\u6DD8\u6E21\u6ED4\u6FE4\u71FE\u76DC\u7779\u79B1\u7A3B\u8404\u89A9\u8CED\u8DF3\u8E48\u9003\u9014\u9053\u90FD\u934D\u9676\u97DC\u6BD2\u7006\u7258\u72A2\u7368\u7763\u79BF\u7BE4\u7E9B\u8B80\u58A9\u60C7\u6566\u65FD\u66BE\u6C8C\u711E\u71C9\u8C5A\u9813\u4E6D\u7A81\u4EDD\u51AC\u51CD\u52D5\u540C\u61A7\u6771\u6850\u68DF\u6D1E\u6F7C\u75BC\u77B3\u7AE5\u80F4\u8463\u9285\u515C\u6597\u675C\u6793\u75D8\u7AC7\u8373\uF95A\u8C46\u9017\u982D\u5C6F\u81C0\u829A\u9041\u906F\u920D\u5F97\u5D9D\u6A59\u71C8\u767B\u7B49\u85E4\u8B04\u9127\u9A30\u5587\u61F6\uF95B\u7669\u7F85"],["d5a1","\u863F\u87BA\u88F8\u908F\uF95C\u6D1B\u70D9\u73DE\u7D61\u843D\uF95D\u916A\u99F1\uF95E\u4E82\u5375\u6B04\u6B12\u703E\u721B\u862D\u9E1E\u524C\u8FA3\u5D50\u64E5\u652C\u6B16\u6FEB\u7C43\u7E9C\u85CD\u8964\u89BD\u62C9\u81D8\u881F\u5ECA\u6717\u6D6A\u72FC\u7405\u746F\u8782\u90DE\u4F86\u5D0D\u5FA0\u840A\u51B7\u63A0\u7565\u4EAE\u5006\u5169\u51C9\u6881\u6A11\u7CAE\u7CB1\u7CE7\u826F\u8AD2\u8F1B\u91CF\u4FB6\u5137\u52F5\u5442\u5EEC\u616E\u623E\u65C5\u6ADA\u6FFE\u792A\u85DC\u8823\u95AD\u9A62\u9A6A\u9E97\u9ECE\u529B\u66C6\u6B77\u701D\u792B\u8F62\u9742\u6190\u6200\u6523\u6F23"],["d6a1","\u7149\u7489\u7DF4\u806F\u84EE\u8F26\u9023\u934A\u51BD\u5217\u52A3\u6D0C\u70C8\u88C2\u5EC9\u6582\u6BAE\u6FC2\u7C3E\u7375\u4EE4\u4F36\u56F9\uF95F\u5CBA\u5DBA\u601C\u73B2\u7B2D\u7F9A\u7FCE\u8046\u901E\u9234\u96F6\u9748\u9818\u9F61\u4F8B\u6FA7\u79AE\u91B4\u96B7\u52DE\uF960\u6488\u64C4\u6AD3\u6F5E\u7018\u7210\u76E7\u8001\u8606\u865C\u8DEF\u8F05\u9732\u9B6F\u9DFA\u9E75\u788C\u797F\u7DA0\u83C9\u9304\u9E7F\u9E93\u8AD6\u58DF\u5F04\u6727\u7027\u74CF\u7C60\u807E\u5121\u7028\u7262\u78CA\u8CC2\u8CDA\u8CF4\u96F7\u4E86\u50DA\u5BEE\u5ED6\u6599\u71CE\u7642\u77AD\u804A\u84FC"],["d7a1","\u907C\u9B27\u9F8D\u58D8\u5A41\u5C62\u6A13\u6DDA\u6F0F\u763B\u7D2F\u7E37\u851E\u8938\u93E4\u964B\u5289\u65D2\u67F3\u69B4\u6D41\u6E9C\u700F\u7409\u7460\u7559\u7624\u786B\u8B2C\u985E\u516D\u622E\u9678\u4F96\u502B\u5D19\u6DEA\u7DB8\u8F2A\u5F8B\u6144\u6817\uF961\u9686\u52D2\u808B\u51DC\u51CC\u695E\u7A1C\u7DBE\u83F1\u9675\u4FDA\u5229\u5398\u540F\u550E\u5C65\u60A7\u674E\u68A8\u6D6C\u7281\u72F8\u7406\u7483\uF962\u75E2\u7C6C\u7F79\u7FB8\u8389\u88CF\u88E1\u91CC\u91D0\u96E2\u9BC9\u541D\u6F7E\u71D0\u7498\u85FA\u8EAA\u96A3\u9C57\u9E9F\u6797\u6DCB\u7433\u81E8\u9716\u782C"],["d8a1","\u7ACB\u7B20\u7C92\u6469\u746A\u75F2\u78BC\u78E8\u99AC\u9B54\u9EBB\u5BDE\u5E55\u6F20\u819C\u83AB\u9088\u4E07\u534D\u5A29\u5DD2\u5F4E\u6162\u633D\u6669\u66FC\u6EFF\u6F2B\u7063\u779E\u842C\u8513\u883B\u8F13\u9945\u9C3B\u551C\u62B9\u672B\u6CAB\u8309\u896A\u977A\u4EA1\u5984\u5FD8\u5FD9\u671B\u7DB2\u7F54\u8292\u832B\u83BD\u8F1E\u9099\u57CB\u59B9\u5A92\u5BD0\u6627\u679A\u6885\u6BCF\u7164\u7F75\u8CB7\u8CE3\u9081\u9B45\u8108\u8C8A\u964C\u9A40\u9EA5\u5B5F\u6C13\u731B\u76F2\u76DF\u840C\u51AA\u8993\u514D\u5195\u52C9\u68C9\u6C94\u7704\u7720\u7DBF\u7DEC\u9762\u9EB5\u6EC5"],["d9a1","\u8511\u51A5\u540D\u547D\u660E\u669D\u6927\u6E9F\u76BF\u7791\u8317\u84C2\u879F\u9169\u9298\u9CF4\u8882\u4FAE\u5192\u52DF\u59C6\u5E3D\u6155\u6478\u6479\u66AE\u67D0\u6A21\u6BCD\u6BDB\u725F\u7261\u7441\u7738\u77DB\u8017\u82BC\u8305\u8B00\u8B28\u8C8C\u6728\u6C90\u7267\u76EE\u7766\u7A46\u9DA9\u6B7F\u6C92\u5922\u6726\u8499\u536F\u5893\u5999\u5EDF\u63CF\u6634\u6773\u6E3A\u732B\u7AD7\u82D7\u9328\u52D9\u5DEB\u61AE\u61CB\u620A\u62C7\u64AB\u65E0\u6959\u6B66\u6BCB\u7121\u73F7\u755D\u7E46\u821E\u8302\u856A\u8AA3\u8CBF\u9727\u9D61\u58A8\u9ED8\u5011\u520E\u543B\u554F\u6587"],["daa1","\u6C76\u7D0A\u7D0B\u805E\u868A\u9580\u96EF\u52FF\u6C95\u7269\u5473\u5A9A\u5C3E\u5D4B\u5F4C\u5FAE\u672A\u68B6\u6963\u6E3C\u6E44\u7709\u7C73\u7F8E\u8587\u8B0E\u8FF7\u9761\u9EF4\u5CB7\u60B6\u610D\u61AB\u654F\u65FB\u65FC\u6C11\u6CEF\u739F\u73C9\u7DE1\u9594\u5BC6\u871C\u8B10\u525D\u535A\u62CD\u640F\u64B2\u6734\u6A38\u6CCA\u73C0\u749E\u7B94\u7C95\u7E1B\u818A\u8236\u8584\u8FEB\u96F9\u99C1\u4F34\u534A\u53CD\u53DB\u62CC\u642C\u6500\u6591\u69C3\u6CEE\u6F58\u73ED\u7554\u7622\u76E4\u76FC\u78D0\u78FB\u792C\u7D46\u822C\u87E0\u8FD4\u9812\u98EF\u52C3\u62D4\u64A5\u6E24\u6F51"],["dba1","\u767C\u8DCB\u91B1\u9262\u9AEE\u9B43\u5023\u508D\u574A\u59A8\u5C28\u5E47\u5F77\u623F\u653E\u65B9\u65C1\u6609\u678B\u699C\u6EC2\u78C5\u7D21\u80AA\u8180\u822B\u82B3\u84A1\u868C\u8A2A\u8B17\u90A6\u9632\u9F90\u500D\u4FF3\uF963\u57F9\u5F98\u62DC\u6392\u676F\u6E43\u7119\u76C3\u80CC\u80DA\u88F4\u88F5\u8919\u8CE0\u8F29\u914D\u966A\u4F2F\u4F70\u5E1B\u67CF\u6822\u767D\u767E\u9B44\u5E61\u6A0A\u7169\u71D4\u756A\uF964\u7E41\u8543\u85E9\u98DC\u4F10\u7B4F\u7F70\u95A5\u51E1\u5E06\u68B5\u6C3E\u6C4E\u6CDB\u72AF\u7BC4\u8303\u6CD5\u743A\u50FB\u5288\u58C1\u64D8\u6A97\u74A7\u7656"],["dca1","\u78A7\u8617\u95E2\u9739\uF965\u535E\u5F01\u8B8A\u8FA8\u8FAF\u908A\u5225\u77A5\u9C49\u9F08\u4E19\u5002\u5175\u5C5B\u5E77\u661E\u663A\u67C4\u68C5\u70B3\u7501\u75C5\u79C9\u7ADD\u8F27\u9920\u9A08\u4FDD\u5821\u5831\u5BF6\u666E\u6B65\u6D11\u6E7A\u6F7D\u73E4\u752B\u83E9\u88DC\u8913\u8B5C\u8F14\u4F0F\u50D5\u5310\u535C\u5B93\u5FA9\u670D\u798F\u8179\u832F\u8514\u8907\u8986\u8F39\u8F3B\u99A5\u9C12\u672C\u4E76\u4FF8\u5949\u5C01\u5CEF\u5CF0\u6367\u68D2\u70FD\u71A2\u742B\u7E2B\u84EC\u8702\u9022\u92D2\u9CF3\u4E0D\u4ED8\u4FEF\u5085\u5256\u526F\u5426\u5490\u57E0\u592B\u5A66"],["dda1","\u5B5A\u5B75\u5BCC\u5E9C\uF966\u6276\u6577\u65A7\u6D6E\u6EA5\u7236\u7B26\u7C3F\u7F36\u8150\u8151\u819A\u8240\u8299\u83A9\u8A03\u8CA0\u8CE6\u8CFB\u8D74\u8DBA\u90E8\u91DC\u961C\u9644\u99D9\u9CE7\u5317\u5206\u5429\u5674\u58B3\u5954\u596E\u5FFF\u61A4\u626E\u6610\u6C7E\u711A\u76C6\u7C89\u7CDE\u7D1B\u82AC\u8CC1\u96F0\uF967\u4F5B\u5F17\u5F7F\u62C2\u5D29\u670B\u68DA\u787C\u7E43\u9D6C\u4E15\u5099\u5315\u532A\u5351\u5983\u5A62\u5E87\u60B2\u618A\u6249\u6279\u6590\u6787\u69A7\u6BD4\u6BD6\u6BD7\u6BD8\u6CB8\uF968\u7435\u75FA\u7812\u7891\u79D5\u79D8\u7C83\u7DCB\u7FE1\u80A5"],["dea1","\u813E\u81C2\u83F2\u871A\u88E8\u8AB9\u8B6C\u8CBB\u9119\u975E\u98DB\u9F3B\u56AC\u5B2A\u5F6C\u658C\u6AB3\u6BAF\u6D5C\u6FF1\u7015\u725D\u73AD\u8CA7\u8CD3\u983B\u6191\u6C37\u8058\u9A01\u4E4D\u4E8B\u4E9B\u4ED5\u4F3A\u4F3C\u4F7F\u4FDF\u50FF\u53F2\u53F8\u5506\u55E3\u56DB\u58EB\u5962\u5A11\u5BEB\u5BFA\u5C04\u5DF3\u5E2B\u5F99\u601D\u6368\u659C\u65AF\u67F6\u67FB\u68AD\u6B7B\u6C99\u6CD7\u6E23\u7009\u7345\u7802\u793E\u7940\u7960\u79C1\u7BE9\u7D17\u7D72\u8086\u820D\u838E\u84D1\u86C7\u88DF\u8A50\u8A5E\u8B1D\u8CDC\u8D66\u8FAD\u90AA\u98FC\u99DF\u9E9D\u524A\uF969\u6714\uF96A"],["dfa1","\u5098\u522A\u5C71\u6563\u6C55\u73CA\u7523\u759D\u7B97\u849C\u9178\u9730\u4E77\u6492\u6BBA\u715E\u85A9\u4E09\uF96B\u6749\u68EE\u6E17\u829F\u8518\u886B\u63F7\u6F81\u9212\u98AF\u4E0A\u50B7\u50CF\u511F\u5546\u55AA\u5617\u5B40\u5C19\u5CE0\u5E38\u5E8A\u5EA0\u5EC2\u60F3\u6851\u6A61\u6E58\u723D\u7240\u72C0\u76F8\u7965\u7BB1\u7FD4\u88F3\u89F4\u8A73\u8C61\u8CDE\u971C\u585E\u74BD\u8CFD\u55C7\uF96C\u7A61\u7D22\u8272\u7272\u751F\u7525\uF96D\u7B19\u5885\u58FB\u5DBC\u5E8F\u5EB6\u5F90\u6055\u6292\u637F\u654D\u6691\u66D9\u66F8\u6816\u68F2\u7280\u745E\u7B6E\u7D6E\u7DD6\u7F72"],["e0a1","\u80E5\u8212\u85AF\u897F\u8A93\u901D\u92E4\u9ECD\u9F20\u5915\u596D\u5E2D\u60DC\u6614\u6673\u6790\u6C50\u6DC5\u6F5F\u77F3\u78A9\u84C6\u91CB\u932B\u4ED9\u50CA\u5148\u5584\u5B0B\u5BA3\u6247\u657E\u65CB\u6E32\u717D\u7401\u7444\u7487\u74BF\u766C\u79AA\u7DDA\u7E55\u7FA8\u817A\u81B3\u8239\u861A\u87EC\u8A75\u8DE3\u9078\u9291\u9425\u994D\u9BAE\u5368\u5C51\u6954\u6CC4\u6D29\u6E2B\u820C\u859B\u893B\u8A2D\u8AAA\u96EA\u9F67\u5261\u66B9\u6BB2\u7E96\u87FE\u8D0D\u9583\u965D\u651D\u6D89\u71EE\uF96E\u57CE\u59D3\u5BAC\u6027\u60FA\u6210\u661F\u665F\u7329\u73F9\u76DB\u7701\u7B6C"],["e1a1","\u8056\u8072\u8165\u8AA0\u9192\u4E16\u52E2\u6B72\u6D17\u7A05\u7B39\u7D30\uF96F\u8CB0\u53EC\u562F\u5851\u5BB5\u5C0F\u5C11\u5DE2\u6240\u6383\u6414\u662D\u68B3\u6CBC\u6D88\u6EAF\u701F\u70A4\u71D2\u7526\u758F\u758E\u7619\u7B11\u7BE0\u7C2B\u7D20\u7D39\u852C\u856D\u8607\u8A34\u900D\u9061\u90B5\u92B7\u97F6\u9A37\u4FD7\u5C6C\u675F\u6D91\u7C9F\u7E8C\u8B16\u8D16\u901F\u5B6B\u5DFD\u640D\u84C0\u905C\u98E1\u7387\u5B8B\u609A\u677E\u6DDE\u8A1F\u8AA6\u9001\u980C\u5237\uF970\u7051\u788E\u9396\u8870\u91D7\u4FEE\u53D7\u55FD\u56DA\u5782\u58FD\u5AC2\u5B88\u5CAB\u5CC0\u5E25\u6101"],["e2a1","\u620D\u624B\u6388\u641C\u6536\u6578\u6A39\u6B8A\u6C34\u6D19\u6F31\u71E7\u72E9\u7378\u7407\u74B2\u7626\u7761\u79C0\u7A57\u7AEA\u7CB9\u7D8F\u7DAC\u7E61\u7F9E\u8129\u8331\u8490\u84DA\u85EA\u8896\u8AB0\u8B90\u8F38\u9042\u9083\u916C\u9296\u92B9\u968B\u96A7\u96A8\u96D6\u9700\u9808\u9996\u9AD3\u9B1A\u53D4\u587E\u5919\u5B70\u5BBF\u6DD1\u6F5A\u719F\u7421\u74B9\u8085\u83FD\u5DE1\u5F87\u5FAA\u6042\u65EC\u6812\u696F\u6A53\u6B89\u6D35\u6DF3\u73E3\u76FE\u77AC\u7B4D\u7D14\u8123\u821C\u8340\u84F4\u8563\u8A62\u8AC4\u9187\u931E\u9806\u99B4\u620C\u8853\u8FF0\u9265\u5D07\u5D27"],["e3a1","\u5D69\u745F\u819D\u8768\u6FD5\u62FE\u7FD2\u8936\u8972\u4E1E\u4E58\u50E7\u52DD\u5347\u627F\u6607\u7E69\u8805\u965E\u4F8D\u5319\u5636\u59CB\u5AA4\u5C38\u5C4E\u5C4D\u5E02\u5F11\u6043\u65BD\u662F\u6642\u67BE\u67F4\u731C\u77E2\u793A\u7FC5\u8494\u84CD\u8996\u8A66\u8A69\u8AE1\u8C55\u8C7A\u57F4\u5BD4\u5F0F\u606F\u62ED\u690D\u6B96\u6E5C\u7184\u7BD2\u8755\u8B58\u8EFE\u98DF\u98FE\u4F38\u4F81\u4FE1\u547B\u5A20\u5BB8\u613C\u65B0\u6668\u71FC\u7533\u795E\u7D33\u814E\u81E3\u8398\u85AA\u85CE\u8703\u8A0A\u8EAB\u8F9B\uF971\u8FC5\u5931\u5BA4\u5BE6\u6089\u5BE9\u5C0B\u5FC3\u6C81"],["e4a1","\uF972\u6DF1\u700B\u751A\u82AF\u8AF6\u4EC0\u5341\uF973\u96D9\u6C0F\u4E9E\u4FC4\u5152\u555E\u5A25\u5CE8\u6211\u7259\u82BD\u83AA\u86FE\u8859\u8A1D\u963F\u96C5\u9913\u9D09\u9D5D\u580A\u5CB3\u5DBD\u5E44\u60E1\u6115\u63E1\u6A02\u6E25\u9102\u9354\u984E\u9C10\u9F77\u5B89\u5CB8\u6309\u664F\u6848\u773C\u96C1\u978D\u9854\u9B9F\u65A1\u8B01\u8ECB\u95BC\u5535\u5CA9\u5DD6\u5EB5\u6697\u764C\u83F4\u95C7\u58D3\u62BC\u72CE\u9D28\u4EF0\u592E\u600F\u663B\u6B83\u79E7\u9D26\u5393\u54C0\u57C3\u5D16\u611B\u66D6\u6DAF\u788D\u827E\u9698\u9744\u5384\u627C\u6396\u6DB2\u7E0A\u814B\u984D"],["e5a1","\u6AFB\u7F4C\u9DAF\u9E1A\u4E5F\u503B\u51B6\u591C\u60F9\u63F6\u6930\u723A\u8036\uF974\u91CE\u5F31\uF975\uF976\u7D04\u82E5\u846F\u84BB\u85E5\u8E8D\uF977\u4F6F\uF978\uF979\u58E4\u5B43\u6059\u63DA\u6518\u656D\u6698\uF97A\u694A\u6A23\u6D0B\u7001\u716C\u75D2\u760D\u79B3\u7A70\uF97B\u7F8A\uF97C\u8944\uF97D\u8B93\u91C0\u967D\uF97E\u990A\u5704\u5FA1\u65BC\u6F01\u7600\u79A6\u8A9E\u99AD\u9B5A\u9F6C\u5104\u61B6\u6291\u6A8D\u81C6\u5043\u5830\u5F66\u7109\u8A00\u8AFA\u5B7C\u8616\u4FFA\u513C\u56B4\u5944\u63A9\u6DF9\u5DAA\u696D\u5186\u4E88\u4F59\uF97F\uF980\uF981\u5982\uF982"],["e6a1","\uF983\u6B5F\u6C5D\uF984\u74B5\u7916\uF985\u8207\u8245\u8339\u8F3F\u8F5D\uF986\u9918\uF987\uF988\uF989\u4EA6\uF98A\u57DF\u5F79\u6613\uF98B\uF98C\u75AB\u7E79\u8B6F\uF98D\u9006\u9A5B\u56A5\u5827\u59F8\u5A1F\u5BB4\uF98E\u5EF6\uF98F\uF990\u6350\u633B\uF991\u693D\u6C87\u6CBF\u6D8E\u6D93\u6DF5\u6F14\uF992\u70DF\u7136\u7159\uF993\u71C3\u71D5\uF994\u784F\u786F\uF995\u7B75\u7DE3\uF996\u7E2F\uF997\u884D\u8EDF\uF998\uF999\uF99A\u925B\uF99B\u9CF6\uF99C\uF99D\uF99E\u6085\u6D85\uF99F\u71B1\uF9A0\uF9A1\u95B1\u53AD\uF9A2\uF9A3\uF9A4\u67D3\uF9A5\u708E\u7130\u7430\u8276\u82D2"],["e7a1","\uF9A6\u95BB\u9AE5\u9E7D\u66C4\uF9A7\u71C1\u8449\uF9A8\uF9A9\u584B\uF9AA\uF9AB\u5DB8\u5F71\uF9AC\u6620\u668E\u6979\u69AE\u6C38\u6CF3\u6E36\u6F41\u6FDA\u701B\u702F\u7150\u71DF\u7370\uF9AD\u745B\uF9AE\u74D4\u76C8\u7A4E\u7E93\uF9AF\uF9B0\u82F1\u8A60\u8FCE\uF9B1\u9348\uF9B2\u9719\uF9B3\uF9B4\u4E42\u502A\uF9B5\u5208\u53E1\u66F3\u6C6D\u6FCA\u730A\u777F\u7A62\u82AE\u85DD\u8602\uF9B6\u88D4\u8A63\u8B7D\u8C6B\uF9B7\u92B3\uF9B8\u9713\u9810\u4E94\u4F0D\u4FC9\u50B2\u5348\u543E\u5433\u55DA\u5862\u58BA\u5967\u5A1B\u5BE4\u609F\uF9B9\u61CA\u6556\u65FF\u6664\u68A7\u6C5A\u6FB3"],["e8a1","\u70CF\u71AC\u7352\u7B7D\u8708\u8AA4\u9C32\u9F07\u5C4B\u6C83\u7344\u7389\u923A\u6EAB\u7465\u761F\u7A69\u7E15\u860A\u5140\u58C5\u64C1\u74EE\u7515\u7670\u7FC1\u9095\u96CD\u9954\u6E26\u74E6\u7AA9\u7AAA\u81E5\u86D9\u8778\u8A1B\u5A49\u5B8C\u5B9B\u68A1\u6900\u6D63\u73A9\u7413\u742C\u7897\u7DE9\u7FEB\u8118\u8155\u839E\u8C4C\u962E\u9811\u66F0\u5F80\u65FA\u6789\u6C6A\u738B\u502D\u5A03\u6B6A\u77EE\u5916\u5D6C\u5DCD\u7325\u754F\uF9BA\uF9BB\u50E5\u51F9\u582F\u592D\u5996\u59DA\u5BE5\uF9BC\uF9BD\u5DA2\u62D7\u6416\u6493\u64FE\uF9BE\u66DC\uF9BF\u6A48\uF9C0\u71FF\u7464\uF9C1"],["e9a1","\u7A88\u7AAF\u7E47\u7E5E\u8000\u8170\uF9C2\u87EF\u8981\u8B20\u9059\uF9C3\u9080\u9952\u617E\u6B32\u6D74\u7E1F\u8925\u8FB1\u4FD1\u50AD\u5197\u52C7\u57C7\u5889\u5BB9\u5EB8\u6142\u6995\u6D8C\u6E67\u6EB6\u7194\u7462\u7528\u752C\u8073\u8338\u84C9\u8E0A\u9394\u93DE\uF9C4\u4E8E\u4F51\u5076\u512A\u53C8\u53CB\u53F3\u5B87\u5BD3\u5C24\u611A\u6182\u65F4\u725B\u7397\u7440\u76C2\u7950\u7991\u79B9\u7D06\u7FBD\u828B\u85D5\u865E\u8FC2\u9047\u90F5\u91EA\u9685\u96E8\u96E9\u52D6\u5F67\u65ED\u6631\u682F\u715C\u7A36\u90C1\u980A\u4E91\uF9C5\u6A52\u6B9E\u6F90\u7189\u8018\u82B8\u8553"],["eaa1","\u904B\u9695\u96F2\u97FB\u851A\u9B31\u4E90\u718A\u96C4\u5143\u539F\u54E1\u5713\u5712\u57A3\u5A9B\u5AC4\u5BC3\u6028\u613F\u63F4\u6C85\u6D39\u6E72\u6E90\u7230\u733F\u7457\u82D1\u8881\u8F45\u9060\uF9C6\u9662\u9858\u9D1B\u6708\u8D8A\u925E\u4F4D\u5049\u50DE\u5371\u570D\u59D4\u5A01\u5C09\u6170\u6690\u6E2D\u7232\u744B\u7DEF\u80C3\u840E\u8466\u853F\u875F\u885B\u8918\u8B02\u9055\u97CB\u9B4F\u4E73\u4F91\u5112\u516A\uF9C7\u552F\u55A9\u5B7A\u5BA5\u5E7C\u5E7D\u5EBE\u60A0\u60DF\u6108\u6109\u63C4\u6538\u6709\uF9C8\u67D4\u67DA\uF9C9\u6961\u6962\u6CB9\u6D27\uF9CA\u6E38\uF9CB"],["eba1","\u6FE1\u7336\u7337\uF9CC\u745C\u7531\uF9CD\u7652\uF9CE\uF9CF\u7DAD\u81FE\u8438\u88D5\u8A98\u8ADB\u8AED\u8E30\u8E42\u904A\u903E\u907A\u9149\u91C9\u936E\uF9D0\uF9D1\u5809\uF9D2\u6BD3\u8089\u80B2\uF9D3\uF9D4\u5141\u596B\u5C39\uF9D5\uF9D6\u6F64\u73A7\u80E4\u8D07\uF9D7\u9217\u958F\uF9D8\uF9D9\uF9DA\uF9DB\u807F\u620E\u701C\u7D68\u878D\uF9DC\u57A0\u6069\u6147\u6BB7\u8ABE\u9280\u96B1\u4E59\u541F\u6DEB\u852D\u9670\u97F3\u98EE\u63D6\u6CE3\u9091\u51DD\u61C9\u81BA\u9DF9\u4F9D\u501A\u5100\u5B9C\u610F\u61FF\u64EC\u6905\u6BC5\u7591\u77E3\u7FA9\u8264\u858F\u87FB\u8863\u8ABC"],["eca1","\u8B70\u91AB\u4E8C\u4EE5\u4F0A\uF9DD\uF9DE\u5937\u59E8\uF9DF\u5DF2\u5F1B\u5F5B\u6021\uF9E0\uF9E1\uF9E2\uF9E3\u723E\u73E5\uF9E4\u7570\u75CD\uF9E5\u79FB\uF9E6\u800C\u8033\u8084\u82E1\u8351\uF9E7\uF9E8\u8CBD\u8CB3\u9087\uF9E9\uF9EA\u98F4\u990C\uF9EB\uF9EC\u7037\u76CA\u7FCA\u7FCC\u7FFC\u8B1A\u4EBA\u4EC1\u5203\u5370\uF9ED\u54BD\u56E0\u59FB\u5BC5\u5F15\u5FCD\u6E6E\uF9EE\uF9EF\u7D6A\u8335\uF9F0\u8693\u8A8D\uF9F1\u976D\u9777\uF9F2\uF9F3\u4E00\u4F5A\u4F7E\u58F9\u65E5\u6EA2\u9038\u93B0\u99B9\u4EFB\u58EC\u598A\u59D9\u6041\uF9F4\uF9F5\u7A14\uF9F6\u834F\u8CC3\u5165\u5344"],["eda1","\uF9F7\uF9F8\uF9F9\u4ECD\u5269\u5B55\u82BF\u4ED4\u523A\u54A8\u59C9\u59FF\u5B50\u5B57\u5B5C\u6063\u6148\u6ECB\u7099\u716E\u7386\u74F7\u75B5\u78C1\u7D2B\u8005\u81EA\u8328\u8517\u85C9\u8AEE\u8CC7\u96CC\u4F5C\u52FA\u56BC\u65AB\u6628\u707C\u70B8\u7235\u7DBD\u828D\u914C\u96C0\u9D72\u5B71\u68E7\u6B98\u6F7A\u76DE\u5C91\u66AB\u6F5B\u7BB4\u7C2A\u8836\u96DC\u4E08\u4ED7\u5320\u5834\u58BB\u58EF\u596C\u5C07\u5E33\u5E84\u5F35\u638C\u66B2\u6756\u6A1F\u6AA3\u6B0C\u6F3F\u7246\uF9FA\u7350\u748B\u7AE0\u7CA7\u8178\u81DF\u81E7\u838A\u846C\u8523\u8594\u85CF\u88DD\u8D13\u91AC\u9577"],["eea1","\u969C\u518D\u54C9\u5728\u5BB0\u624D\u6750\u683D\u6893\u6E3D\u6ED3\u707D\u7E21\u88C1\u8CA1\u8F09\u9F4B\u9F4E\u722D\u7B8F\u8ACD\u931A\u4F47\u4F4E\u5132\u5480\u59D0\u5E95\u62B5\u6775\u696E\u6A17\u6CAE\u6E1A\u72D9\u732A\u75BD\u7BB8\u7D35\u82E7\u83F9\u8457\u85F7\u8A5B\u8CAF\u8E87\u9019\u90B8\u96CE\u9F5F\u52E3\u540A\u5AE1\u5BC2\u6458\u6575\u6EF4\u72C4\uF9FB\u7684\u7A4D\u7B1B\u7C4D\u7E3E\u7FDF\u837B\u8B2B\u8CCA\u8D64\u8DE1\u8E5F\u8FEA\u8FF9\u9069\u93D1\u4F43\u4F7A\u50B3\u5168\u5178\u524D\u526A\u5861\u587C\u5960\u5C08\u5C55\u5EDB\u609B\u6230\u6813\u6BBF\u6C08\u6FB1"],["efa1","\u714E\u7420\u7530\u7538\u7551\u7672\u7B4C\u7B8B\u7BAD\u7BC6\u7E8F\u8A6E\u8F3E\u8F49\u923F\u9293\u9322\u942B\u96FB\u985A\u986B\u991E\u5207\u622A\u6298\u6D59\u7664\u7ACA\u7BC0\u7D76\u5360\u5CBE\u5E97\u6F38\u70B9\u7C98\u9711\u9B8E\u9EDE\u63A5\u647A\u8776\u4E01\u4E95\u4EAD\u505C\u5075\u5448\u59C3\u5B9A\u5E40\u5EAD\u5EF7\u5F81\u60C5\u633A\u653F\u6574\u65CC\u6676\u6678\u67FE\u6968\u6A89\u6B63\u6C40\u6DC0\u6DE8\u6E1F\u6E5E\u701E\u70A1\u738E\u73FD\u753A\u775B\u7887\u798E\u7A0B\u7A7D\u7CBE\u7D8E\u8247\u8A02\u8AEA\u8C9E\u912D\u914A\u91D8\u9266\u92CC\u9320\u9706\u9756"],["f0a1","\u975C\u9802\u9F0E\u5236\u5291\u557C\u5824\u5E1D\u5F1F\u608C\u63D0\u68AF\u6FDF\u796D\u7B2C\u81CD\u85BA\u88FD\u8AF8\u8E44\u918D\u9664\u969B\u973D\u984C\u9F4A\u4FCE\u5146\u51CB\u52A9\u5632\u5F14\u5F6B\u63AA\u64CD\u65E9\u6641\u66FA\u66F9\u671D\u689D\u68D7\u69FD\u6F15\u6F6E\u7167\u71E5\u722A\u74AA\u773A\u7956\u795A\u79DF\u7A20\u7A95\u7C97\u7CDF\u7D44\u7E70\u8087\u85FB\u86A4\u8A54\u8ABF\u8D99\u8E81\u9020\u906D\u91E3\u963B\u96D5\u9CE5\u65CF\u7C07\u8DB3\u93C3\u5B58\u5C0A\u5352\u62D9\u731D\u5027\u5B97\u5F9E\u60B0\u616B\u68D5\u6DD9\u742E\u7A2E\u7D42\u7D9C\u7E31\u816B"],["f1a1","\u8E2A\u8E35\u937E\u9418\u4F50\u5750\u5DE6\u5EA7\u632B\u7F6A\u4E3B\u4F4F\u4F8F\u505A\u59DD\u80C4\u546A\u5468\u55FE\u594F\u5B99\u5DDE\u5EDA\u665D\u6731\u67F1\u682A\u6CE8\u6D32\u6E4A\u6F8D\u70B7\u73E0\u7587\u7C4C\u7D02\u7D2C\u7DA2\u821F\u86DB\u8A3B\u8A85\u8D70\u8E8A\u8F33\u9031\u914E\u9152\u9444\u99D0\u7AF9\u7CA5\u4FCA\u5101\u51C6\u57C8\u5BEF\u5CFB\u6659\u6A3D\u6D5A\u6E96\u6FEC\u710C\u756F\u7AE3\u8822\u9021\u9075\u96CB\u99FF\u8301\u4E2D\u4EF2\u8846\u91CD\u537D\u6ADB\u696B\u6C41\u847A\u589E\u618E\u66FE\u62EF\u70DD\u7511\u75C7\u7E52\u84B8\u8B49\u8D08\u4E4B\u53EA"],["f2a1","\u54AB\u5730\u5740\u5FD7\u6301\u6307\u646F\u652F\u65E8\u667A\u679D\u67B3\u6B62\u6C60\u6C9A\u6F2C\u77E5\u7825\u7949\u7957\u7D19\u80A2\u8102\u81F3\u829D\u82B7\u8718\u8A8C\uF9FC\u8D04\u8DBE\u9072\u76F4\u7A19\u7A37\u7E54\u8077\u5507\u55D4\u5875\u632F\u6422\u6649\u664B\u686D\u699B\u6B84\u6D25\u6EB1\u73CD\u7468\u74A1\u755B\u75B9\u76E1\u771E\u778B\u79E6\u7E09\u7E1D\u81FB\u852F\u8897\u8A3A\u8CD1\u8EEB\u8FB0\u9032\u93AD\u9663\u9673\u9707\u4F84\u53F1\u59EA\u5AC9\u5E19\u684E\u74C6\u75BE\u79E9\u7A92\u81A3\u86ED\u8CEA\u8DCC\u8FED\u659F\u6715\uF9FD\u57F7\u6F57\u7DDD\u8F2F"],["f3a1","\u93F6\u96C6\u5FB5\u61F2\u6F84\u4E14\u4F98\u501F\u53C9\u55DF\u5D6F\u5DEE\u6B21\u6B64\u78CB\u7B9A\uF9FE\u8E49\u8ECA\u906E\u6349\u643E\u7740\u7A84\u932F\u947F\u9F6A\u64B0\u6FAF\u71E6\u74A8\u74DA\u7AC4\u7C12\u7E82\u7CB2\u7E98\u8B9A\u8D0A\u947D\u9910\u994C\u5239\u5BDF\u64E6\u672D\u7D2E\u50ED\u53C3\u5879\u6158\u6159\u61FA\u65AC\u7AD9\u8B92\u8B96\u5009\u5021\u5275\u5531\u5A3C\u5EE0\u5F70\u6134\u655E\u660C\u6636\u66A2\u69CD\u6EC4\u6F32\u7316\u7621\u7A93\u8139\u8259\u83D6\u84BC\u50B5\u57F0\u5BC0\u5BE8\u5F69\u63A1\u7826\u7DB5\u83DC\u8521\u91C7\u91F5\u518A\u67F5\u7B56"],["f4a1","\u8CAC\u51C4\u59BB\u60BD\u8655\u501C\uF9FF\u5254\u5C3A\u617D\u621A\u62D3\u64F2\u65A5\u6ECC\u7620\u810A\u8E60\u965F\u96BB\u4EDF\u5343\u5598\u5929\u5DDD\u64C5\u6CC9\u6DFA\u7394\u7A7F\u821B\u85A6\u8CE4\u8E10\u9077\u91E7\u95E1\u9621\u97C6\u51F8\u54F2\u5586\u5FB9\u64A4\u6F88\u7DB4\u8F1F\u8F4D\u9435\u50C9\u5C16\u6CBE\u6DFB\u751B\u77BB\u7C3D\u7C64\u8A79\u8AC2\u581E\u59BE\u5E16\u6377\u7252\u758A\u776B\u8ADC\u8CBC\u8F12\u5EF3\u6674\u6DF8\u807D\u83C1\u8ACB\u9751\u9BD6\uFA00\u5243\u66FF\u6D95\u6EEF\u7DE0\u8AE6\u902E\u905E\u9AD4\u521D\u527F\u54E8\u6194\u6284\u62DB\u68A2"],["f5a1","\u6912\u695A\u6A35\u7092\u7126\u785D\u7901\u790E\u79D2\u7A0D\u8096\u8278\u82D5\u8349\u8549\u8C82\u8D85\u9162\u918B\u91AE\u4FC3\u56D1\u71ED\u77D7\u8700\u89F8\u5BF8\u5FD6\u6751\u90A8\u53E2\u585A\u5BF5\u60A4\u6181\u6460\u7E3D\u8070\u8525\u9283\u64AE\u50AC\u5D14\u6700\u589C\u62BD\u63A8\u690E\u6978\u6A1E\u6E6B\u76BA\u79CB\u82BB\u8429\u8ACF\u8DA8\u8FFD\u9112\u914B\u919C\u9310\u9318\u939A\u96DB\u9A36\u9C0D\u4E11\u755C\u795D\u7AFA\u7B51\u7BC9\u7E2E\u84C4\u8E59\u8E74\u8EF8\u9010\u6625\u693F\u7443\u51FA\u672E\u9EDC\u5145\u5FE0\u6C96\u87F2\u885D\u8877\u60B4\u81B5\u8403"],["f6a1","\u8D05\u53D6\u5439\u5634\u5A36\u5C31\u708A\u7FE0\u805A\u8106\u81ED\u8DA3\u9189\u9A5F\u9DF2\u5074\u4EC4\u53A0\u60FB\u6E2C\u5C64\u4F88\u5024\u55E4\u5CD9\u5E5F\u6065\u6894\u6CBB\u6DC4\u71BE\u75D4\u75F4\u7661\u7A1A\u7A49\u7DC7\u7DFB\u7F6E\u81F4\u86A9\u8F1C\u96C9\u99B3\u9F52\u5247\u52C5\u98ED\u89AA\u4E03\u67D2\u6F06\u4FB5\u5BE2\u6795\u6C88\u6D78\u741B\u7827\u91DD\u937C\u87C4\u79E4\u7A31\u5FEB\u4ED6\u54A4\u553E\u58AE\u59A5\u60F0\u6253\u62D6\u6736\u6955\u8235\u9640\u99B1\u99DD\u502C\u5353\u5544\u577C\uFA01\u6258\uFA02\u64E2\u666B\u67DD\u6FC1\u6FEF\u7422\u7438\u8A17"],["f7a1","\u9438\u5451\u5606\u5766\u5F48\u619A\u6B4E\u7058\u70AD\u7DBB\u8A95\u596A\u812B\u63A2\u7708\u803D\u8CAA\u5854\u642D\u69BB\u5B95\u5E11\u6E6F\uFA03\u8569\u514C\u53F0\u592A\u6020\u614B\u6B86\u6C70\u6CF0\u7B1E\u80CE\u82D4\u8DC6\u90B0\u98B1\uFA04\u64C7\u6FA4\u6491\u6504\u514E\u5410\u571F\u8A0E\u615F\u6876\uFA05\u75DB\u7B52\u7D71\u901A\u5806\u69CC\u817F\u892A\u9000\u9839\u5078\u5957\u59AC\u6295\u900F\u9B2A\u615D\u7279\u95D6\u5761\u5A46\u5DF4\u628A\u64AD\u64FA\u6777\u6CE2\u6D3E\u722C\u7436\u7834\u7F77\u82AD\u8DDB\u9817\u5224\u5742\u677F\u7248\u74E3\u8CA9\u8FA6\u9211"],["f8a1","\u962A\u516B\u53ED\u634C\u4F69\u5504\u6096\u6557\u6C9B\u6D7F\u724C\u72FD\u7A17\u8987\u8C9D\u5F6D\u6F8E\u70F9\u81A8\u610E\u4FBF\u504F\u6241\u7247\u7BC7\u7DE8\u7FE9\u904D\u97AD\u9A19\u8CB6\u576A\u5E73\u67B0\u840D\u8A55\u5420\u5B16\u5E63\u5EE2\u5F0A\u6583\u80BA\u853D\u9589\u965B\u4F48\u5305\u530D\u530F\u5486\u54FA\u5703\u5E03\u6016\u629B\u62B1\u6355\uFA06\u6CE1\u6D66\u75B1\u7832\u80DE\u812F\u82DE\u8461\u84B2\u888D\u8912\u900B\u92EA\u98FD\u9B91\u5E45\u66B4\u66DD\u7011\u7206\uFA07\u4FF5\u527D\u5F6A\u6153\u6753\u6A19\u6F02\u74E2\u7968\u8868\u8C79\u98C7\u98C4\u9A43"],["f9a1","\u54C1\u7A1F\u6953\u8AF7\u8C4A\u98A8\u99AE\u5F7C\u62AB\u75B2\u76AE\u88AB\u907F\u9642\u5339\u5F3C\u5FC5\u6CCC\u73CC\u7562\u758B\u7B46\u82FE\u999D\u4E4F\u903C\u4E0B\u4F55\u53A6\u590F\u5EC8\u6630\u6CB3\u7455\u8377\u8766\u8CC0\u9050\u971E\u9C15\u58D1\u5B78\u8650\u8B14\u9DB4\u5BD2\u6068\u608D\u65F1\u6C57\u6F22\u6FA3\u701A\u7F55\u7FF0\u9591\u9592\u9650\u97D3\u5272\u8F44\u51FD\u542B\u54B8\u5563\u558A\u6ABB\u6DB5\u7DD8\u8266\u929C\u9677\u9E79\u5408\u54C8\u76D2\u86E4\u95A4\u95D4\u965C\u4EA2\u4F09\u59EE\u5AE6\u5DF7\u6052\u6297\u676D\u6841\u6C86\u6E2F\u7F38\u809B\u822A"],["faa1","\uFA08\uFA09\u9805\u4EA5\u5055\u54B3\u5793\u595A\u5B69\u5BB3\u61C8\u6977\u6D77\u7023\u87F9\u89E3\u8A72\u8AE7\u9082\u99ED\u9AB8\u52BE\u6838\u5016\u5E78\u674F\u8347\u884C\u4EAB\u5411\u56AE\u73E6\u9115\u97FF\u9909\u9957\u9999\u5653\u589F\u865B\u8A31\u61B2\u6AF6\u737B\u8ED2\u6B47\u96AA\u9A57\u5955\u7200\u8D6B\u9769\u4FD4\u5CF4\u5F26\u61F8\u665B\u6CEB\u70AB\u7384\u73B9\u73FE\u7729\u774D\u7D43\u7D62\u7E23\u8237\u8852\uFA0A\u8CE2\u9249\u986F\u5B51\u7A74\u8840\u9801\u5ACC\u4FE0\u5354\u593E\u5CFD\u633E\u6D79\u72F9\u8105\u8107\u83A2\u92CF\u9830\u4EA8\u5144\u5211\u578B"],["fba1","\u5F62\u6CC2\u6ECE\u7005\u7050\u70AF\u7192\u73E9\u7469\u834A\u87A2\u8861\u9008\u90A2\u93A3\u99A8\u516E\u5F57\u60E0\u6167\u66B3\u8559\u8E4A\u91AF\u978B\u4E4E\u4E92\u547C\u58D5\u58FA\u597D\u5CB5\u5F27\u6236\u6248\u660A\u6667\u6BEB\u6D69\u6DCF\u6E56\u6EF8\u6F94\u6FE0\u6FE9\u705D\u72D0\u7425\u745A\u74E0\u7693\u795C\u7CCA\u7E1E\u80E1\u82A6\u846B\u84BF\u864E\u865F\u8774\u8B77\u8C6A\u93AC\u9800\u9865\u60D1\u6216\u9177\u5A5A\u660F\u6DF7\u6E3E\u743F\u9B42\u5FFD\u60DA\u7B0F\u54C4\u5F18\u6C5E\u6CD3\u6D2A\u70D8\u7D05\u8679\u8A0C\u9D3B\u5316\u548C\u5B05\u6A3A\u706B\u7575"],["fca1","\u798D\u79BE\u82B1\u83EF\u8A71\u8B41\u8CA8\u9774\uFA0B\u64F4\u652B\u78BA\u78BB\u7A6B\u4E38\u559A\u5950\u5BA6\u5E7B\u60A3\u63DB\u6B61\u6665\u6853\u6E19\u7165\u74B0\u7D08\u9084\u9A69\u9C25\u6D3B\u6ED1\u733E\u8C41\u95CA\u51F0\u5E4C\u5FA8\u604D\u60F6\u6130\u614C\u6643\u6644\u69A5\u6CC1\u6E5F\u6EC9\u6F62\u714C\u749C\u7687\u7BC1\u7C27\u8352\u8757\u9051\u968D\u9EC3\u532F\u56DE\u5EFB\u5F8A\u6062\u6094\u61F7\u6666\u6703\u6A9C\u6DEE\u6FAE\u7070\u736A\u7E6A\u81BE\u8334\u86D4\u8AA8\u8CC4\u5283\u7372\u5B96\u6A6B\u9404\u54EE\u5686\u5B5D\u6548\u6585\u66C9\u689F\u6D8D\u6DC6"],["fda1","\u723B\u80B4\u9175\u9A4D\u4FAF\u5019\u539A\u540E\u543C\u5589\u55C5\u5E3F\u5F8C\u673D\u7166\u73DD\u9005\u52DB\u52F3\u5864\u58CE\u7104\u718F\u71FB\u85B0\u8A13\u6688\u85A8\u55A7\u6684\u714A\u8431\u5349\u5599\u6BC1\u5F59\u5FBD\u63EE\u6689\u7147\u8AF1\u8F1D\u9EBE\u4F11\u643A\u70CB\u7566\u8667\u6064\u8B4E\u9DF8\u5147\u51F6\u5308\u6D36\u80F8\u9ED1\u6615\u6B23\u7098\u75D5\u5403\u5C79\u7D07\u8A16\u6B20\u6B3D\u6B46\u5438\u6070\u6D3D\u7FD5\u8208\u50D6\u51DE\u559C\u566B\u56CD\u59EC\u5B09\u5E0C\u6199\u6198\u6231\u665E\u66E6\u7199\u71B9\u71BA\u72A7\u79A7\u7A00\u7FB2\u8A70"]]});var o0=h((IOe,xY)=>{xY.exports=[["0","\0",127],["a140","\u3000\uFF0C\u3001\u3002\uFF0E\u2027\uFF1B\uFF1A\uFF1F\uFF01\uFE30\u2026\u2025\uFE50\uFE51\uFE52\xB7\uFE54\uFE55\uFE56\uFE57\uFF5C\u2013\uFE31\u2014\uFE33\u2574\uFE34\uFE4F\uFF08\uFF09\uFE35\uFE36\uFF5B\uFF5D\uFE37\uFE38\u3014\u3015\uFE39\uFE3A\u3010\u3011\uFE3B\uFE3C\u300A\u300B\uFE3D\uFE3E\u3008\u3009\uFE3F\uFE40\u300C\u300D\uFE41\uFE42\u300E\u300F\uFE43\uFE44\uFE59\uFE5A"],["a1a1","\uFE5B\uFE5C\uFE5D\uFE5E\u2018\u2019\u201C\u201D\u301D\u301E\u2035\u2032\uFF03\uFF06\uFF0A\u203B\xA7\u3003\u25CB\u25CF\u25B3\u25B2\u25CE\u2606\u2605\u25C7\u25C6\u25A1\u25A0\u25BD\u25BC\u32A3\u2105\xAF\uFFE3\uFF3F\u02CD\uFE49\uFE4A\uFE4D\uFE4E\uFE4B\uFE4C\uFE5F\uFE60\uFE61\uFF0B\uFF0D\xD7\xF7\xB1\u221A\uFF1C\uFF1E\uFF1D\u2266\u2267\u2260\u221E\u2252\u2261\uFE62",4,"\uFF5E\u2229\u222A\u22A5\u2220\u221F\u22BF\u33D2\u33D1\u222B\u222E\u2235\u2234\u2640\u2642\u2295\u2299\u2191\u2193\u2190\u2192\u2196\u2197\u2199\u2198\u2225\u2223\uFF0F"],["a240","\uFF3C\u2215\uFE68\uFF04\uFFE5\u3012\uFFE0\uFFE1\uFF05\uFF20\u2103\u2109\uFE69\uFE6A\uFE6B\u33D5\u339C\u339D\u339E\u33CE\u33A1\u338E\u338F\u33C4\xB0\u5159\u515B\u515E\u515D\u5161\u5163\u55E7\u74E9\u7CCE\u2581",7,"\u258F\u258E\u258D\u258C\u258B\u258A\u2589\u253C\u2534\u252C\u2524\u251C\u2594\u2500\u2502\u2595\u250C\u2510\u2514\u2518\u256D"],["a2a1","\u256E\u2570\u256F\u2550\u255E\u256A\u2561\u25E2\u25E3\u25E5\u25E4\u2571\u2572\u2573\uFF10",9,"\u2160",9,"\u3021",8,"\u5341\u5344\u5345\uFF21",25,"\uFF41",21],["a340","\uFF57\uFF58\uFF59\uFF5A\u0391",16,"\u03A3",6,"\u03B1",16,"\u03C3",6,"\u3105",10],["a3a1","\u3110",25,"\u02D9\u02C9\u02CA\u02C7\u02CB"],["a3e1","\u20AC"],["a440","\u4E00\u4E59\u4E01\u4E03\u4E43\u4E5D\u4E86\u4E8C\u4EBA\u513F\u5165\u516B\u51E0\u5200\u5201\u529B\u5315\u5341\u535C\u53C8\u4E09\u4E0B\u4E08\u4E0A\u4E2B\u4E38\u51E1\u4E45\u4E48\u4E5F\u4E5E\u4E8E\u4EA1\u5140\u5203\u52FA\u5343\u53C9\u53E3\u571F\u58EB\u5915\u5927\u5973\u5B50\u5B51\u5B53\u5BF8\u5C0F\u5C22\u5C38\u5C71\u5DDD\u5DE5\u5DF1\u5DF2\u5DF3\u5DFE\u5E72\u5EFE\u5F0B\u5F13\u624D"],["a4a1","\u4E11\u4E10\u4E0D\u4E2D\u4E30\u4E39\u4E4B\u5C39\u4E88\u4E91\u4E95\u4E92\u4E94\u4EA2\u4EC1\u4EC0\u4EC3\u4EC6\u4EC7\u4ECD\u4ECA\u4ECB\u4EC4\u5143\u5141\u5167\u516D\u516E\u516C\u5197\u51F6\u5206\u5207\u5208\u52FB\u52FE\u52FF\u5316\u5339\u5348\u5347\u5345\u535E\u5384\u53CB\u53CA\u53CD\u58EC\u5929\u592B\u592A\u592D\u5B54\u5C11\u5C24\u5C3A\u5C6F\u5DF4\u5E7B\u5EFF\u5F14\u5F15\u5FC3\u6208\u6236\u624B\u624E\u652F\u6587\u6597\u65A4\u65B9\u65E5\u66F0\u6708\u6728\u6B20\u6B62\u6B79\u6BCB\u6BD4\u6BDB\u6C0F\u6C34\u706B\u722A\u7236\u723B\u7247\u7259\u725B\u72AC\u738B\u4E19"],["a540","\u4E16\u4E15\u4E14\u4E18\u4E3B\u4E4D\u4E4F\u4E4E\u4EE5\u4ED8\u4ED4\u4ED5\u4ED6\u4ED7\u4EE3\u4EE4\u4ED9\u4EDE\u5145\u5144\u5189\u518A\u51AC\u51F9\u51FA\u51F8\u520A\u52A0\u529F\u5305\u5306\u5317\u531D\u4EDF\u534A\u5349\u5361\u5360\u536F\u536E\u53BB\u53EF\u53E4\u53F3\u53EC\u53EE\u53E9\u53E8\u53FC\u53F8\u53F5\u53EB\u53E6\u53EA\u53F2\u53F1\u53F0\u53E5\u53ED\u53FB\u56DB\u56DA\u5916"],["a5a1","\u592E\u5931\u5974\u5976\u5B55\u5B83\u5C3C\u5DE8\u5DE7\u5DE6\u5E02\u5E03\u5E73\u5E7C\u5F01\u5F18\u5F17\u5FC5\u620A\u6253\u6254\u6252\u6251\u65A5\u65E6\u672E\u672C\u672A\u672B\u672D\u6B63\u6BCD\u6C11\u6C10\u6C38\u6C41\u6C40\u6C3E\u72AF\u7384\u7389\u74DC\u74E6\u7518\u751F\u7528\u7529\u7530\u7531\u7532\u7533\u758B\u767D\u76AE\u76BF\u76EE\u77DB\u77E2\u77F3\u793A\u79BE\u7A74\u7ACB\u4E1E\u4E1F\u4E52\u4E53\u4E69\u4E99\u4EA4\u4EA6\u4EA5\u4EFF\u4F09\u4F19\u4F0A\u4F15\u4F0D\u4F10\u4F11\u4F0F\u4EF2\u4EF6\u4EFB\u4EF0\u4EF3\u4EFD\u4F01\u4F0B\u5149\u5147\u5146\u5148\u5168"],["a640","\u5171\u518D\u51B0\u5217\u5211\u5212\u520E\u5216\u52A3\u5308\u5321\u5320\u5370\u5371\u5409\u540F\u540C\u540A\u5410\u5401\u540B\u5404\u5411\u540D\u5408\u5403\u540E\u5406\u5412\u56E0\u56DE\u56DD\u5733\u5730\u5728\u572D\u572C\u572F\u5729\u5919\u591A\u5937\u5938\u5984\u5978\u5983\u597D\u5979\u5982\u5981\u5B57\u5B58\u5B87\u5B88\u5B85\u5B89\u5BFA\u5C16\u5C79\u5DDE\u5E06\u5E76\u5E74"],["a6a1","\u5F0F\u5F1B\u5FD9\u5FD6\u620E\u620C\u620D\u6210\u6263\u625B\u6258\u6536\u65E9\u65E8\u65EC\u65ED\u66F2\u66F3\u6709\u673D\u6734\u6731\u6735\u6B21\u6B64\u6B7B\u6C16\u6C5D\u6C57\u6C59\u6C5F\u6C60\u6C50\u6C55\u6C61\u6C5B\u6C4D\u6C4E\u7070\u725F\u725D\u767E\u7AF9\u7C73\u7CF8\u7F36\u7F8A\u7FBD\u8001\u8003\u800C\u8012\u8033\u807F\u8089\u808B\u808C\u81E3\u81EA\u81F3\u81FC\u820C\u821B\u821F\u826E\u8272\u827E\u866B\u8840\u884C\u8863\u897F\u9621\u4E32\u4EA8\u4F4D\u4F4F\u4F47\u4F57\u4F5E\u4F34\u4F5B\u4F55\u4F30\u4F50\u4F51\u4F3D\u4F3A\u4F38\u4F43\u4F54\u4F3C\u4F46\u4F63"],["a740","\u4F5C\u4F60\u4F2F\u4F4E\u4F36\u4F59\u4F5D\u4F48\u4F5A\u514C\u514B\u514D\u5175\u51B6\u51B7\u5225\u5224\u5229\u522A\u5228\u52AB\u52A9\u52AA\u52AC\u5323\u5373\u5375\u541D\u542D\u541E\u543E\u5426\u544E\u5427\u5446\u5443\u5433\u5448\u5442\u541B\u5429\u544A\u5439\u543B\u5438\u542E\u5435\u5436\u5420\u543C\u5440\u5431\u542B\u541F\u542C\u56EA\u56F0\u56E4\u56EB\u574A\u5751\u5740\u574D"],["a7a1","\u5747\u574E\u573E\u5750\u574F\u573B\u58EF\u593E\u599D\u5992\u59A8\u599E\u59A3\u5999\u5996\u598D\u59A4\u5993\u598A\u59A5\u5B5D\u5B5C\u5B5A\u5B5B\u5B8C\u5B8B\u5B8F\u5C2C\u5C40\u5C41\u5C3F\u5C3E\u5C90\u5C91\u5C94\u5C8C\u5DEB\u5E0C\u5E8F\u5E87\u5E8A\u5EF7\u5F04\u5F1F\u5F64\u5F62\u5F77\u5F79\u5FD8\u5FCC\u5FD7\u5FCD\u5FF1\u5FEB\u5FF8\u5FEA\u6212\u6211\u6284\u6297\u6296\u6280\u6276\u6289\u626D\u628A\u627C\u627E\u6279\u6273\u6292\u626F\u6298\u626E\u6295\u6293\u6291\u6286\u6539\u653B\u6538\u65F1\u66F4\u675F\u674E\u674F\u6750\u6751\u675C\u6756\u675E\u6749\u6746\u6760"],["a840","\u6753\u6757\u6B65\u6BCF\u6C42\u6C5E\u6C99\u6C81\u6C88\u6C89\u6C85\u6C9B\u6C6A\u6C7A\u6C90\u6C70\u6C8C\u6C68\u6C96\u6C92\u6C7D\u6C83\u6C72\u6C7E\u6C74\u6C86\u6C76\u6C8D\u6C94\u6C98\u6C82\u7076\u707C\u707D\u7078\u7262\u7261\u7260\u72C4\u72C2\u7396\u752C\u752B\u7537\u7538\u7682\u76EF\u77E3\u79C1\u79C0\u79BF\u7A76\u7CFB\u7F55\u8096\u8093\u809D\u8098\u809B\u809A\u80B2\u826F\u8292"],["a8a1","\u828B\u828D\u898B\u89D2\u8A00\u8C37\u8C46\u8C55\u8C9D\u8D64\u8D70\u8DB3\u8EAB\u8ECA\u8F9B\u8FB0\u8FC2\u8FC6\u8FC5\u8FC4\u5DE1\u9091\u90A2\u90AA\u90A6\u90A3\u9149\u91C6\u91CC\u9632\u962E\u9631\u962A\u962C\u4E26\u4E56\u4E73\u4E8B\u4E9B\u4E9E\u4EAB\u4EAC\u4F6F\u4F9D\u4F8D\u4F73\u4F7F\u4F6C\u4F9B\u4F8B\u4F86\u4F83\u4F70\u4F75\u4F88\u4F69\u4F7B\u4F96\u4F7E\u4F8F\u4F91\u4F7A\u5154\u5152\u5155\u5169\u5177\u5176\u5178\u51BD\u51FD\u523B\u5238\u5237\u523A\u5230\u522E\u5236\u5241\u52BE\u52BB\u5352\u5354\u5353\u5351\u5366\u5377\u5378\u5379\u53D6\u53D4\u53D7\u5473\u5475"],["a940","\u5496\u5478\u5495\u5480\u547B\u5477\u5484\u5492\u5486\u547C\u5490\u5471\u5476\u548C\u549A\u5462\u5468\u548B\u547D\u548E\u56FA\u5783\u5777\u576A\u5769\u5761\u5766\u5764\u577C\u591C\u5949\u5947\u5948\u5944\u5954\u59BE\u59BB\u59D4\u59B9\u59AE\u59D1\u59C6\u59D0\u59CD\u59CB\u59D3\u59CA\u59AF\u59B3\u59D2\u59C5\u5B5F\u5B64\u5B63\u5B97\u5B9A\u5B98\u5B9C\u5B99\u5B9B\u5C1A\u5C48\u5C45"],["a9a1","\u5C46\u5CB7\u5CA1\u5CB8\u5CA9\u5CAB\u5CB1\u5CB3\u5E18\u5E1A\u5E16\u5E15\u5E1B\u5E11\u5E78\u5E9A\u5E97\u5E9C\u5E95\u5E96\u5EF6\u5F26\u5F27\u5F29\u5F80\u5F81\u5F7F\u5F7C\u5FDD\u5FE0\u5FFD\u5FF5\u5FFF\u600F\u6014\u602F\u6035\u6016\u602A\u6015\u6021\u6027\u6029\u602B\u601B\u6216\u6215\u623F\u623E\u6240\u627F\u62C9\u62CC\u62C4\u62BF\u62C2\u62B9\u62D2\u62DB\u62AB\u62D3\u62D4\u62CB\u62C8\u62A8\u62BD\u62BC\u62D0\u62D9\u62C7\u62CD\u62B5\u62DA\u62B1\u62D8\u62D6\u62D7\u62C6\u62AC\u62CE\u653E\u65A7\u65BC\u65FA\u6614\u6613\u660C\u6606\u6602\u660E\u6600\u660F\u6615\u660A"],["aa40","\u6607\u670D\u670B\u676D\u678B\u6795\u6771\u679C\u6773\u6777\u6787\u679D\u6797\u676F\u6770\u677F\u6789\u677E\u6790\u6775\u679A\u6793\u677C\u676A\u6772\u6B23\u6B66\u6B67\u6B7F\u6C13\u6C1B\u6CE3\u6CE8\u6CF3\u6CB1\u6CCC\u6CE5\u6CB3\u6CBD\u6CBE\u6CBC\u6CE2\u6CAB\u6CD5\u6CD3\u6CB8\u6CC4\u6CB9\u6CC1\u6CAE\u6CD7\u6CC5\u6CF1\u6CBF\u6CBB\u6CE1\u6CDB\u6CCA\u6CAC\u6CEF\u6CDC\u6CD6\u6CE0"],["aaa1","\u7095\u708E\u7092\u708A\u7099\u722C\u722D\u7238\u7248\u7267\u7269\u72C0\u72CE\u72D9\u72D7\u72D0\u73A9\u73A8\u739F\u73AB\u73A5\u753D\u759D\u7599\u759A\u7684\u76C2\u76F2\u76F4\u77E5\u77FD\u793E\u7940\u7941\u79C9\u79C8\u7A7A\u7A79\u7AFA\u7CFE\u7F54\u7F8C\u7F8B\u8005\u80BA\u80A5\u80A2\u80B1\u80A1\u80AB\u80A9\u80B4\u80AA\u80AF\u81E5\u81FE\u820D\u82B3\u829D\u8299\u82AD\u82BD\u829F\u82B9\u82B1\u82AC\u82A5\u82AF\u82B8\u82A3\u82B0\u82BE\u82B7\u864E\u8671\u521D\u8868\u8ECB\u8FCE\u8FD4\u8FD1\u90B5\u90B8\u90B1\u90B6\u91C7\u91D1\u9577\u9580\u961C\u9640\u963F\u963B\u9644"],["ab40","\u9642\u96B9\u96E8\u9752\u975E\u4E9F\u4EAD\u4EAE\u4FE1\u4FB5\u4FAF\u4FBF\u4FE0\u4FD1\u4FCF\u4FDD\u4FC3\u4FB6\u4FD8\u4FDF\u4FCA\u4FD7\u4FAE\u4FD0\u4FC4\u4FC2\u4FDA\u4FCE\u4FDE\u4FB7\u5157\u5192\u5191\u51A0\u524E\u5243\u524A\u524D\u524C\u524B\u5247\u52C7\u52C9\u52C3\u52C1\u530D\u5357\u537B\u539A\u53DB\u54AC\u54C0\u54A8\u54CE\u54C9\u54B8\u54A6\u54B3\u54C7\u54C2\u54BD\u54AA\u54C1"],["aba1","\u54C4\u54C8\u54AF\u54AB\u54B1\u54BB\u54A9\u54A7\u54BF\u56FF\u5782\u578B\u57A0\u57A3\u57A2\u57CE\u57AE\u5793\u5955\u5951\u594F\u594E\u5950\u59DC\u59D8\u59FF\u59E3\u59E8\u5A03\u59E5\u59EA\u59DA\u59E6\u5A01\u59FB\u5B69\u5BA3\u5BA6\u5BA4\u5BA2\u5BA5\u5C01\u5C4E\u5C4F\u5C4D\u5C4B\u5CD9\u5CD2\u5DF7\u5E1D\u5E25\u5E1F\u5E7D\u5EA0\u5EA6\u5EFA\u5F08\u5F2D\u5F65\u5F88\u5F85\u5F8A\u5F8B\u5F87\u5F8C\u5F89\u6012\u601D\u6020\u6025\u600E\u6028\u604D\u6070\u6068\u6062\u6046\u6043\u606C\u606B\u606A\u6064\u6241\u62DC\u6316\u6309\u62FC\u62ED\u6301\u62EE\u62FD\u6307\u62F1\u62F7"],["ac40","\u62EF\u62EC\u62FE\u62F4\u6311\u6302\u653F\u6545\u65AB\u65BD\u65E2\u6625\u662D\u6620\u6627\u662F\u661F\u6628\u6631\u6624\u66F7\u67FF\u67D3\u67F1\u67D4\u67D0\u67EC\u67B6\u67AF\u67F5\u67E9\u67EF\u67C4\u67D1\u67B4\u67DA\u67E5\u67B8\u67CF\u67DE\u67F3\u67B0\u67D9\u67E2\u67DD\u67D2\u6B6A\u6B83\u6B86\u6BB5\u6BD2\u6BD7\u6C1F\u6CC9\u6D0B\u6D32\u6D2A\u6D41\u6D25\u6D0C\u6D31\u6D1E\u6D17"],["aca1","\u6D3B\u6D3D\u6D3E\u6D36\u6D1B\u6CF5\u6D39\u6D27\u6D38\u6D29\u6D2E\u6D35\u6D0E\u6D2B\u70AB\u70BA\u70B3\u70AC\u70AF\u70AD\u70B8\u70AE\u70A4\u7230\u7272\u726F\u7274\u72E9\u72E0\u72E1\u73B7\u73CA\u73BB\u73B2\u73CD\u73C0\u73B3\u751A\u752D\u754F\u754C\u754E\u754B\u75AB\u75A4\u75A5\u75A2\u75A3\u7678\u7686\u7687\u7688\u76C8\u76C6\u76C3\u76C5\u7701\u76F9\u76F8\u7709\u770B\u76FE\u76FC\u7707\u77DC\u7802\u7814\u780C\u780D\u7946\u7949\u7948\u7947\u79B9\u79BA\u79D1\u79D2\u79CB\u7A7F\u7A81\u7AFF\u7AFD\u7C7D\u7D02\u7D05\u7D00\u7D09\u7D07\u7D04\u7D06\u7F38\u7F8E\u7FBF\u8004"],["ad40","\u8010\u800D\u8011\u8036\u80D6\u80E5\u80DA\u80C3\u80C4\u80CC\u80E1\u80DB\u80CE\u80DE\u80E4\u80DD\u81F4\u8222\u82E7\u8303\u8305\u82E3\u82DB\u82E6\u8304\u82E5\u8302\u8309\u82D2\u82D7\u82F1\u8301\u82DC\u82D4\u82D1\u82DE\u82D3\u82DF\u82EF\u8306\u8650\u8679\u867B\u867A\u884D\u886B\u8981\u89D4\u8A08\u8A02\u8A03\u8C9E\u8CA0\u8D74\u8D73\u8DB4\u8ECD\u8ECC\u8FF0\u8FE6\u8FE2\u8FEA\u8FE5"],["ada1","\u8FED\u8FEB\u8FE4\u8FE8\u90CA\u90CE\u90C1\u90C3\u914B\u914A\u91CD\u9582\u9650\u964B\u964C\u964D\u9762\u9769\u97CB\u97ED\u97F3\u9801\u98A8\u98DB\u98DF\u9996\u9999\u4E58\u4EB3\u500C\u500D\u5023\u4FEF\u5026\u5025\u4FF8\u5029\u5016\u5006\u503C\u501F\u501A\u5012\u5011\u4FFA\u5000\u5014\u5028\u4FF1\u5021\u500B\u5019\u5018\u4FF3\u4FEE\u502D\u502A\u4FFE\u502B\u5009\u517C\u51A4\u51A5\u51A2\u51CD\u51CC\u51C6\u51CB\u5256\u525C\u5254\u525B\u525D\u532A\u537F\u539F\u539D\u53DF\u54E8\u5510\u5501\u5537\u54FC\u54E5\u54F2\u5506\u54FA\u5514\u54E9\u54ED\u54E1\u5509\u54EE\u54EA"],["ae40","\u54E6\u5527\u5507\u54FD\u550F\u5703\u5704\u57C2\u57D4\u57CB\u57C3\u5809\u590F\u5957\u5958\u595A\u5A11\u5A18\u5A1C\u5A1F\u5A1B\u5A13\u59EC\u5A20\u5A23\u5A29\u5A25\u5A0C\u5A09\u5B6B\u5C58\u5BB0\u5BB3\u5BB6\u5BB4\u5BAE\u5BB5\u5BB9\u5BB8\u5C04\u5C51\u5C55\u5C50\u5CED\u5CFD\u5CFB\u5CEA\u5CE8\u5CF0\u5CF6\u5D01\u5CF4\u5DEE\u5E2D\u5E2B\u5EAB\u5EAD\u5EA7\u5F31\u5F92\u5F91\u5F90\u6059"],["aea1","\u6063\u6065\u6050\u6055\u606D\u6069\u606F\u6084\u609F\u609A\u608D\u6094\u608C\u6085\u6096\u6247\u62F3\u6308\u62FF\u634E\u633E\u632F\u6355\u6342\u6346\u634F\u6349\u633A\u6350\u633D\u632A\u632B\u6328\u634D\u634C\u6548\u6549\u6599\u65C1\u65C5\u6642\u6649\u664F\u6643\u6652\u664C\u6645\u6641\u66F8\u6714\u6715\u6717\u6821\u6838\u6848\u6846\u6853\u6839\u6842\u6854\u6829\u68B3\u6817\u684C\u6851\u683D\u67F4\u6850\u6840\u683C\u6843\u682A\u6845\u6813\u6818\u6841\u6B8A\u6B89\u6BB7\u6C23\u6C27\u6C28\u6C26\u6C24\u6CF0\u6D6A\u6D95\u6D88\u6D87\u6D66\u6D78\u6D77\u6D59\u6D93"],["af40","\u6D6C\u6D89\u6D6E\u6D5A\u6D74\u6D69\u6D8C\u6D8A\u6D79\u6D85\u6D65\u6D94\u70CA\u70D8\u70E4\u70D9\u70C8\u70CF\u7239\u7279\u72FC\u72F9\u72FD\u72F8\u72F7\u7386\u73ED\u7409\u73EE\u73E0\u73EA\u73DE\u7554\u755D\u755C\u755A\u7559\u75BE\u75C5\u75C7\u75B2\u75B3\u75BD\u75BC\u75B9\u75C2\u75B8\u768B\u76B0\u76CA\u76CD\u76CE\u7729\u771F\u7720\u7728\u77E9\u7830\u7827\u7838\u781D\u7834\u7837"],["afa1","\u7825\u782D\u7820\u781F\u7832\u7955\u7950\u7960\u795F\u7956\u795E\u795D\u7957\u795A\u79E4\u79E3\u79E7\u79DF\u79E6\u79E9\u79D8\u7A84\u7A88\u7AD9\u7B06\u7B11\u7C89\u7D21\u7D17\u7D0B\u7D0A\u7D20\u7D22\u7D14\u7D10\u7D15\u7D1A\u7D1C\u7D0D\u7D19\u7D1B\u7F3A\u7F5F\u7F94\u7FC5\u7FC1\u8006\u8018\u8015\u8019\u8017\u803D\u803F\u80F1\u8102\u80F0\u8105\u80ED\u80F4\u8106\u80F8\u80F3\u8108\u80FD\u810A\u80FC\u80EF\u81ED\u81EC\u8200\u8210\u822A\u822B\u8228\u822C\u82BB\u832B\u8352\u8354\u834A\u8338\u8350\u8349\u8335\u8334\u834F\u8332\u8339\u8336\u8317\u8340\u8331\u8328\u8343"],["b040","\u8654\u868A\u86AA\u8693\u86A4\u86A9\u868C\u86A3\u869C\u8870\u8877\u8881\u8882\u887D\u8879\u8A18\u8A10\u8A0E\u8A0C\u8A15\u8A0A\u8A17\u8A13\u8A16\u8A0F\u8A11\u8C48\u8C7A\u8C79\u8CA1\u8CA2\u8D77\u8EAC\u8ED2\u8ED4\u8ECF\u8FB1\u9001\u9006\u8FF7\u9000\u8FFA\u8FF4\u9003\u8FFD\u9005\u8FF8\u9095\u90E1\u90DD\u90E2\u9152\u914D\u914C\u91D8\u91DD\u91D7\u91DC\u91D9\u9583\u9662\u9663\u9661"],["b0a1","\u965B\u965D\u9664\u9658\u965E\u96BB\u98E2\u99AC\u9AA8\u9AD8\u9B25\u9B32\u9B3C\u4E7E\u507A\u507D\u505C\u5047\u5043\u504C\u505A\u5049\u5065\u5076\u504E\u5055\u5075\u5074\u5077\u504F\u500F\u506F\u506D\u515C\u5195\u51F0\u526A\u526F\u52D2\u52D9\u52D8\u52D5\u5310\u530F\u5319\u533F\u5340\u533E\u53C3\u66FC\u5546\u556A\u5566\u5544\u555E\u5561\u5543\u554A\u5531\u5556\u554F\u5555\u552F\u5564\u5538\u552E\u555C\u552C\u5563\u5533\u5541\u5557\u5708\u570B\u5709\u57DF\u5805\u580A\u5806\u57E0\u57E4\u57FA\u5802\u5835\u57F7\u57F9\u5920\u5962\u5A36\u5A41\u5A49\u5A66\u5A6A\u5A40"],["b140","\u5A3C\u5A62\u5A5A\u5A46\u5A4A\u5B70\u5BC7\u5BC5\u5BC4\u5BC2\u5BBF\u5BC6\u5C09\u5C08\u5C07\u5C60\u5C5C\u5C5D\u5D07\u5D06\u5D0E\u5D1B\u5D16\u5D22\u5D11\u5D29\u5D14\u5D19\u5D24\u5D27\u5D17\u5DE2\u5E38\u5E36\u5E33\u5E37\u5EB7\u5EB8\u5EB6\u5EB5\u5EBE\u5F35\u5F37\u5F57\u5F6C\u5F69\u5F6B\u5F97\u5F99\u5F9E\u5F98\u5FA1\u5FA0\u5F9C\u607F\u60A3\u6089\u60A0\u60A8\u60CB\u60B4\u60E6\u60BD"],["b1a1","\u60C5\u60BB\u60B5\u60DC\u60BC\u60D8\u60D5\u60C6\u60DF\u60B8\u60DA\u60C7\u621A\u621B\u6248\u63A0\u63A7\u6372\u6396\u63A2\u63A5\u6377\u6367\u6398\u63AA\u6371\u63A9\u6389\u6383\u639B\u636B\u63A8\u6384\u6388\u6399\u63A1\u63AC\u6392\u638F\u6380\u637B\u6369\u6368\u637A\u655D\u6556\u6551\u6559\u6557\u555F\u654F\u6558\u6555\u6554\u659C\u659B\u65AC\u65CF\u65CB\u65CC\u65CE\u665D\u665A\u6664\u6668\u6666\u665E\u66F9\u52D7\u671B\u6881\u68AF\u68A2\u6893\u68B5\u687F\u6876\u68B1\u68A7\u6897\u68B0\u6883\u68C4\u68AD\u6886\u6885\u6894\u689D\u68A8\u689F\u68A1\u6882\u6B32\u6BBA"],["b240","\u6BEB\u6BEC\u6C2B\u6D8E\u6DBC\u6DF3\u6DD9\u6DB2\u6DE1\u6DCC\u6DE4\u6DFB\u6DFA\u6E05\u6DC7\u6DCB\u6DAF\u6DD1\u6DAE\u6DDE\u6DF9\u6DB8\u6DF7\u6DF5\u6DC5\u6DD2\u6E1A\u6DB5\u6DDA\u6DEB\u6DD8\u6DEA\u6DF1\u6DEE\u6DE8\u6DC6\u6DC4\u6DAA\u6DEC\u6DBF\u6DE6\u70F9\u7109\u710A\u70FD\u70EF\u723D\u727D\u7281\u731C\u731B\u7316\u7313\u7319\u7387\u7405\u740A\u7403\u7406\u73FE\u740D\u74E0\u74F6"],["b2a1","\u74F7\u751C\u7522\u7565\u7566\u7562\u7570\u758F\u75D4\u75D5\u75B5\u75CA\u75CD\u768E\u76D4\u76D2\u76DB\u7737\u773E\u773C\u7736\u7738\u773A\u786B\u7843\u784E\u7965\u7968\u796D\u79FB\u7A92\u7A95\u7B20\u7B28\u7B1B\u7B2C\u7B26\u7B19\u7B1E\u7B2E\u7C92\u7C97\u7C95\u7D46\u7D43\u7D71\u7D2E\u7D39\u7D3C\u7D40\u7D30\u7D33\u7D44\u7D2F\u7D42\u7D32\u7D31\u7F3D\u7F9E\u7F9A\u7FCC\u7FCE\u7FD2\u801C\u804A\u8046\u812F\u8116\u8123\u812B\u8129\u8130\u8124\u8202\u8235\u8237\u8236\u8239\u838E\u839E\u8398\u8378\u83A2\u8396\u83BD\u83AB\u8392\u838A\u8393\u8389\u83A0\u8377\u837B\u837C"],["b340","\u8386\u83A7\u8655\u5F6A\u86C7\u86C0\u86B6\u86C4\u86B5\u86C6\u86CB\u86B1\u86AF\u86C9\u8853\u889E\u8888\u88AB\u8892\u8896\u888D\u888B\u8993\u898F\u8A2A\u8A1D\u8A23\u8A25\u8A31\u8A2D\u8A1F\u8A1B\u8A22\u8C49\u8C5A\u8CA9\u8CAC\u8CAB\u8CA8\u8CAA\u8CA7\u8D67\u8D66\u8DBE\u8DBA\u8EDB\u8EDF\u9019\u900D\u901A\u9017\u9023\u901F\u901D\u9010\u9015\u901E\u9020\u900F\u9022\u9016\u901B\u9014"],["b3a1","\u90E8\u90ED\u90FD\u9157\u91CE\u91F5\u91E6\u91E3\u91E7\u91ED\u91E9\u9589\u966A\u9675\u9673\u9678\u9670\u9674\u9676\u9677\u966C\u96C0\u96EA\u96E9\u7AE0\u7ADF\u9802\u9803\u9B5A\u9CE5\u9E75\u9E7F\u9EA5\u9EBB\u50A2\u508D\u5085\u5099\u5091\u5080\u5096\u5098\u509A\u6700\u51F1\u5272\u5274\u5275\u5269\u52DE\u52DD\u52DB\u535A\u53A5\u557B\u5580\u55A7\u557C\u558A\u559D\u5598\u5582\u559C\u55AA\u5594\u5587\u558B\u5583\u55B3\u55AE\u559F\u553E\u55B2\u559A\u55BB\u55AC\u55B1\u557E\u5589\u55AB\u5599\u570D\u582F\u582A\u5834\u5824\u5830\u5831\u5821\u581D\u5820\u58F9\u58FA\u5960"],["b440","\u5A77\u5A9A\u5A7F\u5A92\u5A9B\u5AA7\u5B73\u5B71\u5BD2\u5BCC\u5BD3\u5BD0\u5C0A\u5C0B\u5C31\u5D4C\u5D50\u5D34\u5D47\u5DFD\u5E45\u5E3D\u5E40\u5E43\u5E7E\u5ECA\u5EC1\u5EC2\u5EC4\u5F3C\u5F6D\u5FA9\u5FAA\u5FA8\u60D1\u60E1\u60B2\u60B6\u60E0\u611C\u6123\u60FA\u6115\u60F0\u60FB\u60F4\u6168\u60F1\u610E\u60F6\u6109\u6100\u6112\u621F\u6249\u63A3\u638C\u63CF\u63C0\u63E9\u63C9\u63C6\u63CD"],["b4a1","\u63D2\u63E3\u63D0\u63E1\u63D6\u63ED\u63EE\u6376\u63F4\u63EA\u63DB\u6452\u63DA\u63F9\u655E\u6566\u6562\u6563\u6591\u6590\u65AF\u666E\u6670\u6674\u6676\u666F\u6691\u667A\u667E\u6677\u66FE\u66FF\u671F\u671D\u68FA\u68D5\u68E0\u68D8\u68D7\u6905\u68DF\u68F5\u68EE\u68E7\u68F9\u68D2\u68F2\u68E3\u68CB\u68CD\u690D\u6912\u690E\u68C9\u68DA\u696E\u68FB\u6B3E\u6B3A\u6B3D\u6B98\u6B96\u6BBC\u6BEF\u6C2E\u6C2F\u6C2C\u6E2F\u6E38\u6E54\u6E21\u6E32\u6E67\u6E4A\u6E20\u6E25\u6E23\u6E1B\u6E5B\u6E58\u6E24\u6E56\u6E6E\u6E2D\u6E26\u6E6F\u6E34\u6E4D\u6E3A\u6E2C\u6E43\u6E1D\u6E3E\u6ECB"],["b540","\u6E89\u6E19\u6E4E\u6E63\u6E44\u6E72\u6E69\u6E5F\u7119\u711A\u7126\u7130\u7121\u7136\u716E\u711C\u724C\u7284\u7280\u7336\u7325\u7334\u7329\u743A\u742A\u7433\u7422\u7425\u7435\u7436\u7434\u742F\u741B\u7426\u7428\u7525\u7526\u756B\u756A\u75E2\u75DB\u75E3\u75D9\u75D8\u75DE\u75E0\u767B\u767C\u7696\u7693\u76B4\u76DC\u774F\u77ED\u785D\u786C\u786F\u7A0D\u7A08\u7A0B\u7A05\u7A00\u7A98"],["b5a1","\u7A97\u7A96\u7AE5\u7AE3\u7B49\u7B56\u7B46\u7B50\u7B52\u7B54\u7B4D\u7B4B\u7B4F\u7B51\u7C9F\u7CA5\u7D5E\u7D50\u7D68\u7D55\u7D2B\u7D6E\u7D72\u7D61\u7D66\u7D62\u7D70\u7D73\u5584\u7FD4\u7FD5\u800B\u8052\u8085\u8155\u8154\u814B\u8151\u814E\u8139\u8146\u813E\u814C\u8153\u8174\u8212\u821C\u83E9\u8403\u83F8\u840D\u83E0\u83C5\u840B\u83C1\u83EF\u83F1\u83F4\u8457\u840A\u83F0\u840C\u83CC\u83FD\u83F2\u83CA\u8438\u840E\u8404\u83DC\u8407\u83D4\u83DF\u865B\u86DF\u86D9\u86ED\u86D4\u86DB\u86E4\u86D0\u86DE\u8857\u88C1\u88C2\u88B1\u8983\u8996\u8A3B\u8A60\u8A55\u8A5E\u8A3C\u8A41"],["b640","\u8A54\u8A5B\u8A50\u8A46\u8A34\u8A3A\u8A36\u8A56\u8C61\u8C82\u8CAF\u8CBC\u8CB3\u8CBD\u8CC1\u8CBB\u8CC0\u8CB4\u8CB7\u8CB6\u8CBF\u8CB8\u8D8A\u8D85\u8D81\u8DCE\u8DDD\u8DCB\u8DDA\u8DD1\u8DCC\u8DDB\u8DC6\u8EFB\u8EF8\u8EFC\u8F9C\u902E\u9035\u9031\u9038\u9032\u9036\u9102\u90F5\u9109\u90FE\u9163\u9165\u91CF\u9214\u9215\u9223\u9209\u921E\u920D\u9210\u9207\u9211\u9594\u958F\u958B\u9591"],["b6a1","\u9593\u9592\u958E\u968A\u968E\u968B\u967D\u9685\u9686\u968D\u9672\u9684\u96C1\u96C5\u96C4\u96C6\u96C7\u96EF\u96F2\u97CC\u9805\u9806\u9808\u98E7\u98EA\u98EF\u98E9\u98F2\u98ED\u99AE\u99AD\u9EC3\u9ECD\u9ED1\u4E82\u50AD\u50B5\u50B2\u50B3\u50C5\u50BE\u50AC\u50B7\u50BB\u50AF\u50C7\u527F\u5277\u527D\u52DF\u52E6\u52E4\u52E2\u52E3\u532F\u55DF\u55E8\u55D3\u55E6\u55CE\u55DC\u55C7\u55D1\u55E3\u55E4\u55EF\u55DA\u55E1\u55C5\u55C6\u55E5\u55C9\u5712\u5713\u585E\u5851\u5858\u5857\u585A\u5854\u586B\u584C\u586D\u584A\u5862\u5852\u584B\u5967\u5AC1\u5AC9\u5ACC\u5ABE\u5ABD\u5ABC"],["b740","\u5AB3\u5AC2\u5AB2\u5D69\u5D6F\u5E4C\u5E79\u5EC9\u5EC8\u5F12\u5F59\u5FAC\u5FAE\u611A\u610F\u6148\u611F\u60F3\u611B\u60F9\u6101\u6108\u614E\u614C\u6144\u614D\u613E\u6134\u6127\u610D\u6106\u6137\u6221\u6222\u6413\u643E\u641E\u642A\u642D\u643D\u642C\u640F\u641C\u6414\u640D\u6436\u6416\u6417\u6406\u656C\u659F\u65B0\u6697\u6689\u6687\u6688\u6696\u6684\u6698\u668D\u6703\u6994\u696D"],["b7a1","\u695A\u6977\u6960\u6954\u6975\u6930\u6982\u694A\u6968\u696B\u695E\u6953\u6979\u6986\u695D\u6963\u695B\u6B47\u6B72\u6BC0\u6BBF\u6BD3\u6BFD\u6EA2\u6EAF\u6ED3\u6EB6\u6EC2\u6E90\u6E9D\u6EC7\u6EC5\u6EA5\u6E98\u6EBC\u6EBA\u6EAB\u6ED1\u6E96\u6E9C\u6EC4\u6ED4\u6EAA\u6EA7\u6EB4\u714E\u7159\u7169\u7164\u7149\u7167\u715C\u716C\u7166\u714C\u7165\u715E\u7146\u7168\u7156\u723A\u7252\u7337\u7345\u733F\u733E\u746F\u745A\u7455\u745F\u745E\u7441\u743F\u7459\u745B\u745C\u7576\u7578\u7600\u75F0\u7601\u75F2\u75F1\u75FA\u75FF\u75F4\u75F3\u76DE\u76DF\u775B\u776B\u7766\u775E\u7763"],["b840","\u7779\u776A\u776C\u775C\u7765\u7768\u7762\u77EE\u788E\u78B0\u7897\u7898\u788C\u7889\u787C\u7891\u7893\u787F\u797A\u797F\u7981\u842C\u79BD\u7A1C\u7A1A\u7A20\u7A14\u7A1F\u7A1E\u7A9F\u7AA0\u7B77\u7BC0\u7B60\u7B6E\u7B67\u7CB1\u7CB3\u7CB5\u7D93\u7D79\u7D91\u7D81\u7D8F\u7D5B\u7F6E\u7F69\u7F6A\u7F72\u7FA9\u7FA8\u7FA4\u8056\u8058\u8086\u8084\u8171\u8170\u8178\u8165\u816E\u8173\u816B"],["b8a1","\u8179\u817A\u8166\u8205\u8247\u8482\u8477\u843D\u8431\u8475\u8466\u846B\u8449\u846C\u845B\u843C\u8435\u8461\u8463\u8469\u846D\u8446\u865E\u865C\u865F\u86F9\u8713\u8708\u8707\u8700\u86FE\u86FB\u8702\u8703\u8706\u870A\u8859\u88DF\u88D4\u88D9\u88DC\u88D8\u88DD\u88E1\u88CA\u88D5\u88D2\u899C\u89E3\u8A6B\u8A72\u8A73\u8A66\u8A69\u8A70\u8A87\u8A7C\u8A63\u8AA0\u8A71\u8A85\u8A6D\u8A62\u8A6E\u8A6C\u8A79\u8A7B\u8A3E\u8A68\u8C62\u8C8A\u8C89\u8CCA\u8CC7\u8CC8\u8CC4\u8CB2\u8CC3\u8CC2\u8CC5\u8DE1\u8DDF\u8DE8\u8DEF\u8DF3\u8DFA\u8DEA\u8DE4\u8DE6\u8EB2\u8F03\u8F09\u8EFE\u8F0A"],["b940","\u8F9F\u8FB2\u904B\u904A\u9053\u9042\u9054\u903C\u9055\u9050\u9047\u904F\u904E\u904D\u9051\u903E\u9041\u9112\u9117\u916C\u916A\u9169\u91C9\u9237\u9257\u9238\u923D\u9240\u923E\u925B\u924B\u9264\u9251\u9234\u9249\u924D\u9245\u9239\u923F\u925A\u9598\u9698\u9694\u9695\u96CD\u96CB\u96C9\u96CA\u96F7\u96FB\u96F9\u96F6\u9756\u9774\u9776\u9810\u9811\u9813\u980A\u9812\u980C\u98FC\u98F4"],["b9a1","\u98FD\u98FE\u99B3\u99B1\u99B4\u9AE1\u9CE9\u9E82\u9F0E\u9F13\u9F20\u50E7\u50EE\u50E5\u50D6\u50ED\u50DA\u50D5\u50CF\u50D1\u50F1\u50CE\u50E9\u5162\u51F3\u5283\u5282\u5331\u53AD\u55FE\u5600\u561B\u5617\u55FD\u5614\u5606\u5609\u560D\u560E\u55F7\u5616\u561F\u5608\u5610\u55F6\u5718\u5716\u5875\u587E\u5883\u5893\u588A\u5879\u5885\u587D\u58FD\u5925\u5922\u5924\u596A\u5969\u5AE1\u5AE6\u5AE9\u5AD7\u5AD6\u5AD8\u5AE3\u5B75\u5BDE\u5BE7\u5BE1\u5BE5\u5BE6\u5BE8\u5BE2\u5BE4\u5BDF\u5C0D\u5C62\u5D84\u5D87\u5E5B\u5E63\u5E55\u5E57\u5E54\u5ED3\u5ED6\u5F0A\u5F46\u5F70\u5FB9\u6147"],["ba40","\u613F\u614B\u6177\u6162\u6163\u615F\u615A\u6158\u6175\u622A\u6487\u6458\u6454\u64A4\u6478\u645F\u647A\u6451\u6467\u6434\u646D\u647B\u6572\u65A1\u65D7\u65D6\u66A2\u66A8\u669D\u699C\u69A8\u6995\u69C1\u69AE\u69D3\u69CB\u699B\u69B7\u69BB\u69AB\u69B4\u69D0\u69CD\u69AD\u69CC\u69A6\u69C3\u69A3\u6B49\u6B4C\u6C33\u6F33\u6F14\u6EFE\u6F13\u6EF4\u6F29\u6F3E\u6F20\u6F2C\u6F0F\u6F02\u6F22"],["baa1","\u6EFF\u6EEF\u6F06\u6F31\u6F38\u6F32\u6F23\u6F15\u6F2B\u6F2F\u6F88\u6F2A\u6EEC\u6F01\u6EF2\u6ECC\u6EF7\u7194\u7199\u717D\u718A\u7184\u7192\u723E\u7292\u7296\u7344\u7350\u7464\u7463\u746A\u7470\u746D\u7504\u7591\u7627\u760D\u760B\u7609\u7613\u76E1\u76E3\u7784\u777D\u777F\u7761\u78C1\u789F\u78A7\u78B3\u78A9\u78A3\u798E\u798F\u798D\u7A2E\u7A31\u7AAA\u7AA9\u7AED\u7AEF\u7BA1\u7B95\u7B8B\u7B75\u7B97\u7B9D\u7B94\u7B8F\u7BB8\u7B87\u7B84\u7CB9\u7CBD\u7CBE\u7DBB\u7DB0\u7D9C\u7DBD\u7DBE\u7DA0\u7DCA\u7DB4\u7DB2\u7DB1\u7DBA\u7DA2\u7DBF\u7DB5\u7DB8\u7DAD\u7DD2\u7DC7\u7DAC"],["bb40","\u7F70\u7FE0\u7FE1\u7FDF\u805E\u805A\u8087\u8150\u8180\u818F\u8188\u818A\u817F\u8182\u81E7\u81FA\u8207\u8214\u821E\u824B\u84C9\u84BF\u84C6\u84C4\u8499\u849E\u84B2\u849C\u84CB\u84B8\u84C0\u84D3\u8490\u84BC\u84D1\u84CA\u873F\u871C\u873B\u8722\u8725\u8734\u8718\u8755\u8737\u8729\u88F3\u8902\u88F4\u88F9\u88F8\u88FD\u88E8\u891A\u88EF\u8AA6\u8A8C\u8A9E\u8AA3\u8A8D\u8AA1\u8A93\u8AA4"],["bba1","\u8AAA\u8AA5\u8AA8\u8A98\u8A91\u8A9A\u8AA7\u8C6A\u8C8D\u8C8C\u8CD3\u8CD1\u8CD2\u8D6B\u8D99\u8D95\u8DFC\u8F14\u8F12\u8F15\u8F13\u8FA3\u9060\u9058\u905C\u9063\u9059\u905E\u9062\u905D\u905B\u9119\u9118\u911E\u9175\u9178\u9177\u9174\u9278\u9280\u9285\u9298\u9296\u927B\u9293\u929C\u92A8\u927C\u9291\u95A1\u95A8\u95A9\u95A3\u95A5\u95A4\u9699\u969C\u969B\u96CC\u96D2\u9700\u977C\u9785\u97F6\u9817\u9818\u98AF\u98B1\u9903\u9905\u990C\u9909\u99C1\u9AAF\u9AB0\u9AE6\u9B41\u9B42\u9CF4\u9CF6\u9CF3\u9EBC\u9F3B\u9F4A\u5104\u5100\u50FB\u50F5\u50F9\u5102\u5108\u5109\u5105\u51DC"],["bc40","\u5287\u5288\u5289\u528D\u528A\u52F0\u53B2\u562E\u563B\u5639\u5632\u563F\u5634\u5629\u5653\u564E\u5657\u5674\u5636\u562F\u5630\u5880\u589F\u589E\u58B3\u589C\u58AE\u58A9\u58A6\u596D\u5B09\u5AFB\u5B0B\u5AF5\u5B0C\u5B08\u5BEE\u5BEC\u5BE9\u5BEB\u5C64\u5C65\u5D9D\u5D94\u5E62\u5E5F\u5E61\u5EE2\u5EDA\u5EDF\u5EDD\u5EE3\u5EE0\u5F48\u5F71\u5FB7\u5FB5\u6176\u6167\u616E\u615D\u6155\u6182"],["bca1","\u617C\u6170\u616B\u617E\u61A7\u6190\u61AB\u618E\u61AC\u619A\u61A4\u6194\u61AE\u622E\u6469\u646F\u6479\u649E\u64B2\u6488\u6490\u64B0\u64A5\u6493\u6495\u64A9\u6492\u64AE\u64AD\u64AB\u649A\u64AC\u6499\u64A2\u64B3\u6575\u6577\u6578\u66AE\u66AB\u66B4\u66B1\u6A23\u6A1F\u69E8\u6A01\u6A1E\u6A19\u69FD\u6A21\u6A13\u6A0A\u69F3\u6A02\u6A05\u69ED\u6A11\u6B50\u6B4E\u6BA4\u6BC5\u6BC6\u6F3F\u6F7C\u6F84\u6F51\u6F66\u6F54\u6F86\u6F6D\u6F5B\u6F78\u6F6E\u6F8E\u6F7A\u6F70\u6F64\u6F97\u6F58\u6ED5\u6F6F\u6F60\u6F5F\u719F\u71AC\u71B1\u71A8\u7256\u729B\u734E\u7357\u7469\u748B\u7483"],["bd40","\u747E\u7480\u757F\u7620\u7629\u761F\u7624\u7626\u7621\u7622\u769A\u76BA\u76E4\u778E\u7787\u778C\u7791\u778B\u78CB\u78C5\u78BA\u78CA\u78BE\u78D5\u78BC\u78D0\u7A3F\u7A3C\u7A40\u7A3D\u7A37\u7A3B\u7AAF\u7AAE\u7BAD\u7BB1\u7BC4\u7BB4\u7BC6\u7BC7\u7BC1\u7BA0\u7BCC\u7CCA\u7DE0\u7DF4\u7DEF\u7DFB\u7DD8\u7DEC\u7DDD\u7DE8\u7DE3\u7DDA\u7DDE\u7DE9\u7D9E\u7DD9\u7DF2\u7DF9\u7F75\u7F77\u7FAF"],["bda1","\u7FE9\u8026\u819B\u819C\u819D\u81A0\u819A\u8198\u8517\u853D\u851A\u84EE\u852C\u852D\u8513\u8511\u8523\u8521\u8514\u84EC\u8525\u84FF\u8506\u8782\u8774\u8776\u8760\u8766\u8778\u8768\u8759\u8757\u874C\u8753\u885B\u885D\u8910\u8907\u8912\u8913\u8915\u890A\u8ABC\u8AD2\u8AC7\u8AC4\u8A95\u8ACB\u8AF8\u8AB2\u8AC9\u8AC2\u8ABF\u8AB0\u8AD6\u8ACD\u8AB6\u8AB9\u8ADB\u8C4C\u8C4E\u8C6C\u8CE0\u8CDE\u8CE6\u8CE4\u8CEC\u8CED\u8CE2\u8CE3\u8CDC\u8CEA\u8CE1\u8D6D\u8D9F\u8DA3\u8E2B\u8E10\u8E1D\u8E22\u8E0F\u8E29\u8E1F\u8E21\u8E1E\u8EBA\u8F1D\u8F1B\u8F1F\u8F29\u8F26\u8F2A\u8F1C\u8F1E"],["be40","\u8F25\u9069\u906E\u9068\u906D\u9077\u9130\u912D\u9127\u9131\u9187\u9189\u918B\u9183\u92C5\u92BB\u92B7\u92EA\u92AC\u92E4\u92C1\u92B3\u92BC\u92D2\u92C7\u92F0\u92B2\u95AD\u95B1\u9704\u9706\u9707\u9709\u9760\u978D\u978B\u978F\u9821\u982B\u981C\u98B3\u990A\u9913\u9912\u9918\u99DD\u99D0\u99DF\u99DB\u99D1\u99D5\u99D2\u99D9\u9AB7\u9AEE\u9AEF\u9B27\u9B45\u9B44\u9B77\u9B6F\u9D06\u9D09"],["bea1","\u9D03\u9EA9\u9EBE\u9ECE\u58A8\u9F52\u5112\u5118\u5114\u5110\u5115\u5180\u51AA\u51DD\u5291\u5293\u52F3\u5659\u566B\u5679\u5669\u5664\u5678\u566A\u5668\u5665\u5671\u566F\u566C\u5662\u5676\u58C1\u58BE\u58C7\u58C5\u596E\u5B1D\u5B34\u5B78\u5BF0\u5C0E\u5F4A\u61B2\u6191\u61A9\u618A\u61CD\u61B6\u61BE\u61CA\u61C8\u6230\u64C5\u64C1\u64CB\u64BB\u64BC\u64DA\u64C4\u64C7\u64C2\u64CD\u64BF\u64D2\u64D4\u64BE\u6574\u66C6\u66C9\u66B9\u66C4\u66C7\u66B8\u6A3D\u6A38\u6A3A\u6A59\u6A6B\u6A58\u6A39\u6A44\u6A62\u6A61\u6A4B\u6A47\u6A35\u6A5F\u6A48\u6B59\u6B77\u6C05\u6FC2\u6FB1\u6FA1"],["bf40","\u6FC3\u6FA4\u6FC1\u6FA7\u6FB3\u6FC0\u6FB9\u6FB6\u6FA6\u6FA0\u6FB4\u71BE\u71C9\u71D0\u71D2\u71C8\u71D5\u71B9\u71CE\u71D9\u71DC\u71C3\u71C4\u7368\u749C\u74A3\u7498\u749F\u749E\u74E2\u750C\u750D\u7634\u7638\u763A\u76E7\u76E5\u77A0\u779E\u779F\u77A5\u78E8\u78DA\u78EC\u78E7\u79A6\u7A4D\u7A4E\u7A46\u7A4C\u7A4B\u7ABA\u7BD9\u7C11\u7BC9\u7BE4\u7BDB\u7BE1\u7BE9\u7BE6\u7CD5\u7CD6\u7E0A"],["bfa1","\u7E11\u7E08\u7E1B\u7E23\u7E1E\u7E1D\u7E09\u7E10\u7F79\u7FB2\u7FF0\u7FF1\u7FEE\u8028\u81B3\u81A9\u81A8\u81FB\u8208\u8258\u8259\u854A\u8559\u8548\u8568\u8569\u8543\u8549\u856D\u856A\u855E\u8783\u879F\u879E\u87A2\u878D\u8861\u892A\u8932\u8925\u892B\u8921\u89AA\u89A6\u8AE6\u8AFA\u8AEB\u8AF1\u8B00\u8ADC\u8AE7\u8AEE\u8AFE\u8B01\u8B02\u8AF7\u8AED\u8AF3\u8AF6\u8AFC\u8C6B\u8C6D\u8C93\u8CF4\u8E44\u8E31\u8E34\u8E42\u8E39\u8E35\u8F3B\u8F2F\u8F38\u8F33\u8FA8\u8FA6\u9075\u9074\u9078\u9072\u907C\u907A\u9134\u9192\u9320\u9336\u92F8\u9333\u932F\u9322\u92FC\u932B\u9304\u931A"],["c040","\u9310\u9326\u9321\u9315\u932E\u9319\u95BB\u96A7\u96A8\u96AA\u96D5\u970E\u9711\u9716\u970D\u9713\u970F\u975B\u975C\u9766\u9798\u9830\u9838\u983B\u9837\u982D\u9839\u9824\u9910\u9928\u991E\u991B\u9921\u991A\u99ED\u99E2\u99F1\u9AB8\u9ABC\u9AFB\u9AED\u9B28\u9B91\u9D15\u9D23\u9D26\u9D28\u9D12\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121\u5132\u52F5\u568E\u5680\u5690\u5685\u5687"],["c0a1","\u568F\u58D5\u58D3\u58D1\u58CE\u5B30\u5B2A\u5B24\u5B7A\u5C37\u5C68\u5DBC\u5DBA\u5DBD\u5DB8\u5E6B\u5F4C\u5FBD\u61C9\u61C2\u61C7\u61E6\u61CB\u6232\u6234\u64CE\u64CA\u64D8\u64E0\u64F0\u64E6\u64EC\u64F1\u64E2\u64ED\u6582\u6583\u66D9\u66D6\u6A80\u6A94\u6A84\u6AA2\u6A9C\u6ADB\u6AA3\u6A7E\u6A97\u6A90\u6AA0\u6B5C\u6BAE\u6BDA\u6C08\u6FD8\u6FF1\u6FDF\u6FE0\u6FDB\u6FE4\u6FEB\u6FEF\u6F80\u6FEC\u6FE1\u6FE9\u6FD5\u6FEE\u6FF0\u71E7\u71DF\u71EE\u71E6\u71E5\u71ED\u71EC\u71F4\u71E0\u7235\u7246\u7370\u7372\u74A9\u74B0\u74A6\u74A8\u7646\u7642\u764C\u76EA\u77B3\u77AA\u77B0\u77AC"],["c140","\u77A7\u77AD\u77EF\u78F7\u78FA\u78F4\u78EF\u7901\u79A7\u79AA\u7A57\u7ABF\u7C07\u7C0D\u7BFE\u7BF7\u7C0C\u7BE0\u7CE0\u7CDC\u7CDE\u7CE2\u7CDF\u7CD9\u7CDD\u7E2E\u7E3E\u7E46\u7E37\u7E32\u7E43\u7E2B\u7E3D\u7E31\u7E45\u7E41\u7E34\u7E39\u7E48\u7E35\u7E3F\u7E2F\u7F44\u7FF3\u7FFC\u8071\u8072\u8070\u806F\u8073\u81C6\u81C3\u81BA\u81C2\u81C0\u81BF\u81BD\u81C9\u81BE\u81E8\u8209\u8271\u85AA"],["c1a1","\u8584\u857E\u859C\u8591\u8594\u85AF\u859B\u8587\u85A8\u858A\u8667\u87C0\u87D1\u87B3\u87D2\u87C6\u87AB\u87BB\u87BA\u87C8\u87CB\u893B\u8936\u8944\u8938\u893D\u89AC\u8B0E\u8B17\u8B19\u8B1B\u8B0A\u8B20\u8B1D\u8B04\u8B10\u8C41\u8C3F\u8C73\u8CFA\u8CFD\u8CFC\u8CF8\u8CFB\u8DA8\u8E49\u8E4B\u8E48\u8E4A\u8F44\u8F3E\u8F42\u8F45\u8F3F\u907F\u907D\u9084\u9081\u9082\u9080\u9139\u91A3\u919E\u919C\u934D\u9382\u9328\u9375\u934A\u9365\u934B\u9318\u937E\u936C\u935B\u9370\u935A\u9354\u95CA\u95CB\u95CC\u95C8\u95C6\u96B1\u96B8\u96D6\u971C\u971E\u97A0\u97D3\u9846\u98B6\u9935\u9A01"],["c240","\u99FF\u9BAE\u9BAB\u9BAA\u9BAD\u9D3B\u9D3F\u9E8B\u9ECF\u9EDE\u9EDC\u9EDD\u9EDB\u9F3E\u9F4B\u53E2\u5695\u56AE\u58D9\u58D8\u5B38\u5F5D\u61E3\u6233\u64F4\u64F2\u64FE\u6506\u64FA\u64FB\u64F7\u65B7\u66DC\u6726\u6AB3\u6AAC\u6AC3\u6ABB\u6AB8\u6AC2\u6AAE\u6AAF\u6B5F\u6B78\u6BAF\u7009\u700B\u6FFE\u7006\u6FFA\u7011\u700F\u71FB\u71FC\u71FE\u71F8\u7377\u7375\u74A7\u74BF\u7515\u7656\u7658"],["c2a1","\u7652\u77BD\u77BF\u77BB\u77BC\u790E\u79AE\u7A61\u7A62\u7A60\u7AC4\u7AC5\u7C2B\u7C27\u7C2A\u7C1E\u7C23\u7C21\u7CE7\u7E54\u7E55\u7E5E\u7E5A\u7E61\u7E52\u7E59\u7F48\u7FF9\u7FFB\u8077\u8076\u81CD\u81CF\u820A\u85CF\u85A9\u85CD\u85D0\u85C9\u85B0\u85BA\u85B9\u85A6\u87EF\u87EC\u87F2\u87E0\u8986\u89B2\u89F4\u8B28\u8B39\u8B2C\u8B2B\u8C50\u8D05\u8E59\u8E63\u8E66\u8E64\u8E5F\u8E55\u8EC0\u8F49\u8F4D\u9087\u9083\u9088\u91AB\u91AC\u91D0\u9394\u938A\u9396\u93A2\u93B3\u93AE\u93AC\u93B0\u9398\u939A\u9397\u95D4\u95D6\u95D0\u95D5\u96E2\u96DC\u96D9\u96DB\u96DE\u9724\u97A3\u97A6"],["c340","\u97AD\u97F9\u984D\u984F\u984C\u984E\u9853\u98BA\u993E\u993F\u993D\u992E\u99A5\u9A0E\u9AC1\u9B03\u9B06\u9B4F\u9B4E\u9B4D\u9BCA\u9BC9\u9BFD\u9BC8\u9BC0\u9D51\u9D5D\u9D60\u9EE0\u9F15\u9F2C\u5133\u56A5\u58DE\u58DF\u58E2\u5BF5\u9F90\u5EEC\u61F2\u61F7\u61F6\u61F5\u6500\u650F\u66E0\u66DD\u6AE5\u6ADD\u6ADA\u6AD3\u701B\u701F\u7028\u701A\u701D\u7015\u7018\u7206\u720D\u7258\u72A2\u7378"],["c3a1","\u737A\u74BD\u74CA\u74E3\u7587\u7586\u765F\u7661\u77C7\u7919\u79B1\u7A6B\u7A69\u7C3E\u7C3F\u7C38\u7C3D\u7C37\u7C40\u7E6B\u7E6D\u7E79\u7E69\u7E6A\u7F85\u7E73\u7FB6\u7FB9\u7FB8\u81D8\u85E9\u85DD\u85EA\u85D5\u85E4\u85E5\u85F7\u87FB\u8805\u880D\u87F9\u87FE\u8960\u895F\u8956\u895E\u8B41\u8B5C\u8B58\u8B49\u8B5A\u8B4E\u8B4F\u8B46\u8B59\u8D08\u8D0A\u8E7C\u8E72\u8E87\u8E76\u8E6C\u8E7A\u8E74\u8F54\u8F4E\u8FAD\u908A\u908B\u91B1\u91AE\u93E1\u93D1\u93DF\u93C3\u93C8\u93DC\u93DD\u93D6\u93E2\u93CD\u93D8\u93E4\u93D7\u93E8\u95DC\u96B4\u96E3\u972A\u9727\u9761\u97DC\u97FB\u985E"],["c440","\u9858\u985B\u98BC\u9945\u9949\u9A16\u9A19\u9B0D\u9BE8\u9BE7\u9BD6\u9BDB\u9D89\u9D61\u9D72\u9D6A\u9D6C\u9E92\u9E97\u9E93\u9EB4\u52F8\u56A8\u56B7\u56B6\u56B4\u56BC\u58E4\u5B40\u5B43\u5B7D\u5BF6\u5DC9\u61F8\u61FA\u6518\u6514\u6519\u66E6\u6727\u6AEC\u703E\u7030\u7032\u7210\u737B\u74CF\u7662\u7665\u7926\u792A\u792C\u792B\u7AC7\u7AF6\u7C4C\u7C43\u7C4D\u7CEF\u7CF0\u8FAE\u7E7D\u7E7C"],["c4a1","\u7E82\u7F4C\u8000\u81DA\u8266\u85FB\u85F9\u8611\u85FA\u8606\u860B\u8607\u860A\u8814\u8815\u8964\u89BA\u89F8\u8B70\u8B6C\u8B66\u8B6F\u8B5F\u8B6B\u8D0F\u8D0D\u8E89\u8E81\u8E85\u8E82\u91B4\u91CB\u9418\u9403\u93FD\u95E1\u9730\u98C4\u9952\u9951\u99A8\u9A2B\u9A30\u9A37\u9A35\u9C13\u9C0D\u9E79\u9EB5\u9EE8\u9F2F\u9F5F\u9F63\u9F61\u5137\u5138\u56C1\u56C0\u56C2\u5914\u5C6C\u5DCD\u61FC\u61FE\u651D\u651C\u6595\u66E9\u6AFB\u6B04\u6AFA\u6BB2\u704C\u721B\u72A7\u74D6\u74D4\u7669\u77D3\u7C50\u7E8F\u7E8C\u7FBC\u8617\u862D\u861A\u8823\u8822\u8821\u881F\u896A\u896C\u89BD\u8B74"],["c540","\u8B77\u8B7D\u8D13\u8E8A\u8E8D\u8E8B\u8F5F\u8FAF\u91BA\u942E\u9433\u9435\u943A\u9438\u9432\u942B\u95E2\u9738\u9739\u9732\u97FF\u9867\u9865\u9957\u9A45\u9A43\u9A40\u9A3E\u9ACF\u9B54\u9B51\u9C2D\u9C25\u9DAF\u9DB4\u9DC2\u9DB8\u9E9D\u9EEF\u9F19\u9F5C\u9F66\u9F67\u513C\u513B\u56C8\u56CA\u56C9\u5B7F\u5DD4\u5DD2\u5F4E\u61FF\u6524\u6B0A\u6B61\u7051\u7058\u7380\u74E4\u758A\u766E\u766C"],["c5a1","\u79B3\u7C60\u7C5F\u807E\u807D\u81DF\u8972\u896F\u89FC\u8B80\u8D16\u8D17\u8E91\u8E93\u8F61\u9148\u9444\u9451\u9452\u973D\u973E\u97C3\u97C1\u986B\u9955\u9A55\u9A4D\u9AD2\u9B1A\u9C49\u9C31\u9C3E\u9C3B\u9DD3\u9DD7\u9F34\u9F6C\u9F6A\u9F94\u56CC\u5DD6\u6200\u6523\u652B\u652A\u66EC\u6B10\u74DA\u7ACA\u7C64\u7C63\u7C65\u7E93\u7E96\u7E94\u81E2\u8638\u863F\u8831\u8B8A\u9090\u908F\u9463\u9460\u9464\u9768\u986F\u995C\u9A5A\u9A5B\u9A57\u9AD3\u9AD4\u9AD1\u9C54\u9C57\u9C56\u9DE5\u9E9F\u9EF4\u56D1\u58E9\u652C\u705E\u7671\u7672\u77D7\u7F50\u7F88\u8836\u8839\u8862\u8B93\u8B92"],["c640","\u8B96\u8277\u8D1B\u91C0\u946A\u9742\u9748\u9744\u97C6\u9870\u9A5F\u9B22\u9B58\u9C5F\u9DF9\u9DFA\u9E7C\u9E7D\u9F07\u9F77\u9F72\u5EF3\u6B16\u7063\u7C6C\u7C6E\u883B\u89C0\u8EA1\u91C1\u9472\u9470\u9871\u995E\u9AD6\u9B23\u9ECC\u7064\u77DA\u8B9A\u9477\u97C9\u9A62\u9A65\u7E9C\u8B9C\u8EAA\u91C5\u947D\u947E\u947C\u9C77\u9C78\u9EF7\u8C54\u947F\u9E1A\u7228\u9A6A\u9B31\u9E1B\u9E1E\u7C72"],["c940","\u4E42\u4E5C\u51F5\u531A\u5382\u4E07\u4E0C\u4E47\u4E8D\u56D7\uFA0C\u5C6E\u5F73\u4E0F\u5187\u4E0E\u4E2E\u4E93\u4EC2\u4EC9\u4EC8\u5198\u52FC\u536C\u53B9\u5720\u5903\u592C\u5C10\u5DFF\u65E1\u6BB3\u6BCC\u6C14\u723F\u4E31\u4E3C\u4EE8\u4EDC\u4EE9\u4EE1\u4EDD\u4EDA\u520C\u531C\u534C\u5722\u5723\u5917\u592F\u5B81\u5B84\u5C12\u5C3B\u5C74\u5C73\u5E04\u5E80\u5E82\u5FC9\u6209\u6250\u6C15"],["c9a1","\u6C36\u6C43\u6C3F\u6C3B\u72AE\u72B0\u738A\u79B8\u808A\u961E\u4F0E\u4F18\u4F2C\u4EF5\u4F14\u4EF1\u4F00\u4EF7\u4F08\u4F1D\u4F02\u4F05\u4F22\u4F13\u4F04\u4EF4\u4F12\u51B1\u5213\u5209\u5210\u52A6\u5322\u531F\u534D\u538A\u5407\u56E1\u56DF\u572E\u572A\u5734\u593C\u5980\u597C\u5985\u597B\u597E\u5977\u597F\u5B56\u5C15\u5C25\u5C7C\u5C7A\u5C7B\u5C7E\u5DDF\u5E75\u5E84\u5F02\u5F1A\u5F74\u5FD5\u5FD4\u5FCF\u625C\u625E\u6264\u6261\u6266\u6262\u6259\u6260\u625A\u6265\u65EF\u65EE\u673E\u6739\u6738\u673B\u673A\u673F\u673C\u6733\u6C18\u6C46\u6C52\u6C5C\u6C4F\u6C4A\u6C54\u6C4B"],["ca40","\u6C4C\u7071\u725E\u72B4\u72B5\u738E\u752A\u767F\u7A75\u7F51\u8278\u827C\u8280\u827D\u827F\u864D\u897E\u9099\u9097\u9098\u909B\u9094\u9622\u9624\u9620\u9623\u4F56\u4F3B\u4F62\u4F49\u4F53\u4F64\u4F3E\u4F67\u4F52\u4F5F\u4F41\u4F58\u4F2D\u4F33\u4F3F\u4F61\u518F\u51B9\u521C\u521E\u5221\u52AD\u52AE\u5309\u5363\u5372\u538E\u538F\u5430\u5437\u542A\u5454\u5445\u5419\u541C\u5425\u5418"],["caa1","\u543D\u544F\u5441\u5428\u5424\u5447\u56EE\u56E7\u56E5\u5741\u5745\u574C\u5749\u574B\u5752\u5906\u5940\u59A6\u5998\u59A0\u5997\u598E\u59A2\u5990\u598F\u59A7\u59A1\u5B8E\u5B92\u5C28\u5C2A\u5C8D\u5C8F\u5C88\u5C8B\u5C89\u5C92\u5C8A\u5C86\u5C93\u5C95\u5DE0\u5E0A\u5E0E\u5E8B\u5E89\u5E8C\u5E88\u5E8D\u5F05\u5F1D\u5F78\u5F76\u5FD2\u5FD1\u5FD0\u5FED\u5FE8\u5FEE\u5FF3\u5FE1\u5FE4\u5FE3\u5FFA\u5FEF\u5FF7\u5FFB\u6000\u5FF4\u623A\u6283\u628C\u628E\u628F\u6294\u6287\u6271\u627B\u627A\u6270\u6281\u6288\u6277\u627D\u6272\u6274\u6537\u65F0\u65F4\u65F3\u65F2\u65F5\u6745\u6747"],["cb40","\u6759\u6755\u674C\u6748\u675D\u674D\u675A\u674B\u6BD0\u6C19\u6C1A\u6C78\u6C67\u6C6B\u6C84\u6C8B\u6C8F\u6C71\u6C6F\u6C69\u6C9A\u6C6D\u6C87\u6C95\u6C9C\u6C66\u6C73\u6C65\u6C7B\u6C8E\u7074\u707A\u7263\u72BF\u72BD\u72C3\u72C6\u72C1\u72BA\u72C5\u7395\u7397\u7393\u7394\u7392\u753A\u7539\u7594\u7595\u7681\u793D\u8034\u8095\u8099\u8090\u8092\u809C\u8290\u828F\u8285\u828E\u8291\u8293"],["cba1","\u828A\u8283\u8284\u8C78\u8FC9\u8FBF\u909F\u90A1\u90A5\u909E\u90A7\u90A0\u9630\u9628\u962F\u962D\u4E33\u4F98\u4F7C\u4F85\u4F7D\u4F80\u4F87\u4F76\u4F74\u4F89\u4F84\u4F77\u4F4C\u4F97\u4F6A\u4F9A\u4F79\u4F81\u4F78\u4F90\u4F9C\u4F94\u4F9E\u4F92\u4F82\u4F95\u4F6B\u4F6E\u519E\u51BC\u51BE\u5235\u5232\u5233\u5246\u5231\u52BC\u530A\u530B\u533C\u5392\u5394\u5487\u547F\u5481\u5491\u5482\u5488\u546B\u547A\u547E\u5465\u546C\u5474\u5466\u548D\u546F\u5461\u5460\u5498\u5463\u5467\u5464\u56F7\u56F9\u576F\u5772\u576D\u576B\u5771\u5770\u5776\u5780\u5775\u577B\u5773\u5774\u5762"],["cc40","\u5768\u577D\u590C\u5945\u59B5\u59BA\u59CF\u59CE\u59B2\u59CC\u59C1\u59B6\u59BC\u59C3\u59D6\u59B1\u59BD\u59C0\u59C8\u59B4\u59C7\u5B62\u5B65\u5B93\u5B95\u5C44\u5C47\u5CAE\u5CA4\u5CA0\u5CB5\u5CAF\u5CA8\u5CAC\u5C9F\u5CA3\u5CAD\u5CA2\u5CAA\u5CA7\u5C9D\u5CA5\u5CB6\u5CB0\u5CA6\u5E17\u5E14\u5E19\u5F28\u5F22\u5F23\u5F24\u5F54\u5F82\u5F7E\u5F7D\u5FDE\u5FE5\u602D\u6026\u6019\u6032\u600B"],["cca1","\u6034\u600A\u6017\u6033\u601A\u601E\u602C\u6022\u600D\u6010\u602E\u6013\u6011\u600C\u6009\u601C\u6214\u623D\u62AD\u62B4\u62D1\u62BE\u62AA\u62B6\u62CA\u62AE\u62B3\u62AF\u62BB\u62A9\u62B0\u62B8\u653D\u65A8\u65BB\u6609\u65FC\u6604\u6612\u6608\u65FB\u6603\u660B\u660D\u6605\u65FD\u6611\u6610\u66F6\u670A\u6785\u676C\u678E\u6792\u6776\u677B\u6798\u6786\u6784\u6774\u678D\u678C\u677A\u679F\u6791\u6799\u6783\u677D\u6781\u6778\u6779\u6794\u6B25\u6B80\u6B7E\u6BDE\u6C1D\u6C93\u6CEC\u6CEB\u6CEE\u6CD9\u6CB6\u6CD4\u6CAD\u6CE7\u6CB7\u6CD0\u6CC2\u6CBA\u6CC3\u6CC6\u6CED\u6CF2"],["cd40","\u6CD2\u6CDD\u6CB4\u6C8A\u6C9D\u6C80\u6CDE\u6CC0\u6D30\u6CCD\u6CC7\u6CB0\u6CF9\u6CCF\u6CE9\u6CD1\u7094\u7098\u7085\u7093\u7086\u7084\u7091\u7096\u7082\u709A\u7083\u726A\u72D6\u72CB\u72D8\u72C9\u72DC\u72D2\u72D4\u72DA\u72CC\u72D1\u73A4\u73A1\u73AD\u73A6\u73A2\u73A0\u73AC\u739D\u74DD\u74E8\u753F\u7540\u753E\u758C\u7598\u76AF\u76F3\u76F1\u76F0\u76F5\u77F8\u77FC\u77F9\u77FB\u77FA"],["cda1","\u77F7\u7942\u793F\u79C5\u7A78\u7A7B\u7AFB\u7C75\u7CFD\u8035\u808F\u80AE\u80A3\u80B8\u80B5\u80AD\u8220\u82A0\u82C0\u82AB\u829A\u8298\u829B\u82B5\u82A7\u82AE\u82BC\u829E\u82BA\u82B4\u82A8\u82A1\u82A9\u82C2\u82A4\u82C3\u82B6\u82A2\u8670\u866F\u866D\u866E\u8C56\u8FD2\u8FCB\u8FD3\u8FCD\u8FD6\u8FD5\u8FD7\u90B2\u90B4\u90AF\u90B3\u90B0\u9639\u963D\u963C\u963A\u9643\u4FCD\u4FC5\u4FD3\u4FB2\u4FC9\u4FCB\u4FC1\u4FD4\u4FDC\u4FD9\u4FBB\u4FB3\u4FDB\u4FC7\u4FD6\u4FBA\u4FC0\u4FB9\u4FEC\u5244\u5249\u52C0\u52C2\u533D\u537C\u5397\u5396\u5399\u5398\u54BA\u54A1\u54AD\u54A5\u54CF"],["ce40","\u54C3\u830D\u54B7\u54AE\u54D6\u54B6\u54C5\u54C6\u54A0\u5470\u54BC\u54A2\u54BE\u5472\u54DE\u54B0\u57B5\u579E\u579F\u57A4\u578C\u5797\u579D\u579B\u5794\u5798\u578F\u5799\u57A5\u579A\u5795\u58F4\u590D\u5953\u59E1\u59DE\u59EE\u5A00\u59F1\u59DD\u59FA\u59FD\u59FC\u59F6\u59E4\u59F2\u59F7\u59DB\u59E9\u59F3\u59F5\u59E0\u59FE\u59F4\u59ED\u5BA8\u5C4C\u5CD0\u5CD8\u5CCC\u5CD7\u5CCB\u5CDB"],["cea1","\u5CDE\u5CDA\u5CC9\u5CC7\u5CCA\u5CD6\u5CD3\u5CD4\u5CCF\u5CC8\u5CC6\u5CCE\u5CDF\u5CF8\u5DF9\u5E21\u5E22\u5E23\u5E20\u5E24\u5EB0\u5EA4\u5EA2\u5E9B\u5EA3\u5EA5\u5F07\u5F2E\u5F56\u5F86\u6037\u6039\u6054\u6072\u605E\u6045\u6053\u6047\u6049\u605B\u604C\u6040\u6042\u605F\u6024\u6044\u6058\u6066\u606E\u6242\u6243\u62CF\u630D\u630B\u62F5\u630E\u6303\u62EB\u62F9\u630F\u630C\u62F8\u62F6\u6300\u6313\u6314\u62FA\u6315\u62FB\u62F0\u6541\u6543\u65AA\u65BF\u6636\u6621\u6632\u6635\u661C\u6626\u6622\u6633\u662B\u663A\u661D\u6634\u6639\u662E\u670F\u6710\u67C1\u67F2\u67C8\u67BA"],["cf40","\u67DC\u67BB\u67F8\u67D8\u67C0\u67B7\u67C5\u67EB\u67E4\u67DF\u67B5\u67CD\u67B3\u67F7\u67F6\u67EE\u67E3\u67C2\u67B9\u67CE\u67E7\u67F0\u67B2\u67FC\u67C6\u67ED\u67CC\u67AE\u67E6\u67DB\u67FA\u67C9\u67CA\u67C3\u67EA\u67CB\u6B28\u6B82\u6B84\u6BB6\u6BD6\u6BD8\u6BE0\u6C20\u6C21\u6D28\u6D34\u6D2D\u6D1F\u6D3C\u6D3F\u6D12\u6D0A\u6CDA\u6D33\u6D04\u6D19\u6D3A\u6D1A\u6D11\u6D00\u6D1D\u6D42"],["cfa1","\u6D01\u6D18\u6D37\u6D03\u6D0F\u6D40\u6D07\u6D20\u6D2C\u6D08\u6D22\u6D09\u6D10\u70B7\u709F\u70BE\u70B1\u70B0\u70A1\u70B4\u70B5\u70A9\u7241\u7249\u724A\u726C\u7270\u7273\u726E\u72CA\u72E4\u72E8\u72EB\u72DF\u72EA\u72E6\u72E3\u7385\u73CC\u73C2\u73C8\u73C5\u73B9\u73B6\u73B5\u73B4\u73EB\u73BF\u73C7\u73BE\u73C3\u73C6\u73B8\u73CB\u74EC\u74EE\u752E\u7547\u7548\u75A7\u75AA\u7679\u76C4\u7708\u7703\u7704\u7705\u770A\u76F7\u76FB\u76FA\u77E7\u77E8\u7806\u7811\u7812\u7805\u7810\u780F\u780E\u7809\u7803\u7813\u794A\u794C\u794B\u7945\u7944\u79D5\u79CD\u79CF\u79D6\u79CE\u7A80"],["d040","\u7A7E\u7AD1\u7B00\u7B01\u7C7A\u7C78\u7C79\u7C7F\u7C80\u7C81\u7D03\u7D08\u7D01\u7F58\u7F91\u7F8D\u7FBE\u8007\u800E\u800F\u8014\u8037\u80D8\u80C7\u80E0\u80D1\u80C8\u80C2\u80D0\u80C5\u80E3\u80D9\u80DC\u80CA\u80D5\u80C9\u80CF\u80D7\u80E6\u80CD\u81FF\u8221\u8294\u82D9\u82FE\u82F9\u8307\u82E8\u8300\u82D5\u833A\u82EB\u82D6\u82F4\u82EC\u82E1\u82F2\u82F5\u830C\u82FB\u82F6\u82F0\u82EA"],["d0a1","\u82E4\u82E0\u82FA\u82F3\u82ED\u8677\u8674\u867C\u8673\u8841\u884E\u8867\u886A\u8869\u89D3\u8A04\u8A07\u8D72\u8FE3\u8FE1\u8FEE\u8FE0\u90F1\u90BD\u90BF\u90D5\u90C5\u90BE\u90C7\u90CB\u90C8\u91D4\u91D3\u9654\u964F\u9651\u9653\u964A\u964E\u501E\u5005\u5007\u5013\u5022\u5030\u501B\u4FF5\u4FF4\u5033\u5037\u502C\u4FF6\u4FF7\u5017\u501C\u5020\u5027\u5035\u502F\u5031\u500E\u515A\u5194\u5193\u51CA\u51C4\u51C5\u51C8\u51CE\u5261\u525A\u5252\u525E\u525F\u5255\u5262\u52CD\u530E\u539E\u5526\u54E2\u5517\u5512\u54E7\u54F3\u54E4\u551A\u54FF\u5504\u5508\u54EB\u5511\u5505\u54F1"],["d140","\u550A\u54FB\u54F7\u54F8\u54E0\u550E\u5503\u550B\u5701\u5702\u57CC\u5832\u57D5\u57D2\u57BA\u57C6\u57BD\u57BC\u57B8\u57B6\u57BF\u57C7\u57D0\u57B9\u57C1\u590E\u594A\u5A19\u5A16\u5A2D\u5A2E\u5A15\u5A0F\u5A17\u5A0A\u5A1E\u5A33\u5B6C\u5BA7\u5BAD\u5BAC\u5C03\u5C56\u5C54\u5CEC\u5CFF\u5CEE\u5CF1\u5CF7\u5D00\u5CF9\u5E29\u5E28\u5EA8\u5EAE\u5EAA\u5EAC\u5F33\u5F30\u5F67\u605D\u605A\u6067"],["d1a1","\u6041\u60A2\u6088\u6080\u6092\u6081\u609D\u6083\u6095\u609B\u6097\u6087\u609C\u608E\u6219\u6246\u62F2\u6310\u6356\u632C\u6344\u6345\u6336\u6343\u63E4\u6339\u634B\u634A\u633C\u6329\u6341\u6334\u6358\u6354\u6359\u632D\u6347\u6333\u635A\u6351\u6338\u6357\u6340\u6348\u654A\u6546\u65C6\u65C3\u65C4\u65C2\u664A\u665F\u6647\u6651\u6712\u6713\u681F\u681A\u6849\u6832\u6833\u683B\u684B\u684F\u6816\u6831\u681C\u6835\u682B\u682D\u682F\u684E\u6844\u6834\u681D\u6812\u6814\u6826\u6828\u682E\u684D\u683A\u6825\u6820\u6B2C\u6B2F\u6B2D\u6B31\u6B34\u6B6D\u8082\u6B88\u6BE6\u6BE4"],["d240","\u6BE8\u6BE3\u6BE2\u6BE7\u6C25\u6D7A\u6D63\u6D64\u6D76\u6D0D\u6D61\u6D92\u6D58\u6D62\u6D6D\u6D6F\u6D91\u6D8D\u6DEF\u6D7F\u6D86\u6D5E\u6D67\u6D60\u6D97\u6D70\u6D7C\u6D5F\u6D82\u6D98\u6D2F\u6D68\u6D8B\u6D7E\u6D80\u6D84\u6D16\u6D83\u6D7B\u6D7D\u6D75\u6D90\u70DC\u70D3\u70D1\u70DD\u70CB\u7F39\u70E2\u70D7\u70D2\u70DE\u70E0\u70D4\u70CD\u70C5\u70C6\u70C7\u70DA\u70CE\u70E1\u7242\u7278"],["d2a1","\u7277\u7276\u7300\u72FA\u72F4\u72FE\u72F6\u72F3\u72FB\u7301\u73D3\u73D9\u73E5\u73D6\u73BC\u73E7\u73E3\u73E9\u73DC\u73D2\u73DB\u73D4\u73DD\u73DA\u73D7\u73D8\u73E8\u74DE\u74DF\u74F4\u74F5\u7521\u755B\u755F\u75B0\u75C1\u75BB\u75C4\u75C0\u75BF\u75B6\u75BA\u768A\u76C9\u771D\u771B\u7710\u7713\u7712\u7723\u7711\u7715\u7719\u771A\u7722\u7727\u7823\u782C\u7822\u7835\u782F\u7828\u782E\u782B\u7821\u7829\u7833\u782A\u7831\u7954\u795B\u794F\u795C\u7953\u7952\u7951\u79EB\u79EC\u79E0\u79EE\u79ED\u79EA\u79DC\u79DE\u79DD\u7A86\u7A89\u7A85\u7A8B\u7A8C\u7A8A\u7A87\u7AD8\u7B10"],["d340","\u7B04\u7B13\u7B05\u7B0F\u7B08\u7B0A\u7B0E\u7B09\u7B12\u7C84\u7C91\u7C8A\u7C8C\u7C88\u7C8D\u7C85\u7D1E\u7D1D\u7D11\u7D0E\u7D18\u7D16\u7D13\u7D1F\u7D12\u7D0F\u7D0C\u7F5C\u7F61\u7F5E\u7F60\u7F5D\u7F5B\u7F96\u7F92\u7FC3\u7FC2\u7FC0\u8016\u803E\u8039\u80FA\u80F2\u80F9\u80F5\u8101\u80FB\u8100\u8201\u822F\u8225\u8333\u832D\u8344\u8319\u8351\u8325\u8356\u833F\u8341\u8326\u831C\u8322"],["d3a1","\u8342\u834E\u831B\u832A\u8308\u833C\u834D\u8316\u8324\u8320\u8337\u832F\u8329\u8347\u8345\u834C\u8353\u831E\u832C\u834B\u8327\u8348\u8653\u8652\u86A2\u86A8\u8696\u868D\u8691\u869E\u8687\u8697\u8686\u868B\u869A\u8685\u86A5\u8699\u86A1\u86A7\u8695\u8698\u868E\u869D\u8690\u8694\u8843\u8844\u886D\u8875\u8876\u8872\u8880\u8871\u887F\u886F\u8883\u887E\u8874\u887C\u8A12\u8C47\u8C57\u8C7B\u8CA4\u8CA3\u8D76\u8D78\u8DB5\u8DB7\u8DB6\u8ED1\u8ED3\u8FFE\u8FF5\u9002\u8FFF\u8FFB\u9004\u8FFC\u8FF6\u90D6\u90E0\u90D9\u90DA\u90E3\u90DF\u90E5\u90D8\u90DB\u90D7\u90DC\u90E4\u9150"],["d440","\u914E\u914F\u91D5\u91E2\u91DA\u965C\u965F\u96BC\u98E3\u9ADF\u9B2F\u4E7F\u5070\u506A\u5061\u505E\u5060\u5053\u504B\u505D\u5072\u5048\u504D\u5041\u505B\u504A\u5062\u5015\u5045\u505F\u5069\u506B\u5063\u5064\u5046\u5040\u506E\u5073\u5057\u5051\u51D0\u526B\u526D\u526C\u526E\u52D6\u52D3\u532D\u539C\u5575\u5576\u553C\u554D\u5550\u5534\u552A\u5551\u5562\u5536\u5535\u5530\u5552\u5545"],["d4a1","\u550C\u5532\u5565\u554E\u5539\u5548\u552D\u553B\u5540\u554B\u570A\u5707\u57FB\u5814\u57E2\u57F6\u57DC\u57F4\u5800\u57ED\u57FD\u5808\u57F8\u580B\u57F3\u57CF\u5807\u57EE\u57E3\u57F2\u57E5\u57EC\u57E1\u580E\u57FC\u5810\u57E7\u5801\u580C\u57F1\u57E9\u57F0\u580D\u5804\u595C\u5A60\u5A58\u5A55\u5A67\u5A5E\u5A38\u5A35\u5A6D\u5A50\u5A5F\u5A65\u5A6C\u5A53\u5A64\u5A57\u5A43\u5A5D\u5A52\u5A44\u5A5B\u5A48\u5A8E\u5A3E\u5A4D\u5A39\u5A4C\u5A70\u5A69\u5A47\u5A51\u5A56\u5A42\u5A5C\u5B72\u5B6E\u5BC1\u5BC0\u5C59\u5D1E\u5D0B\u5D1D\u5D1A\u5D20\u5D0C\u5D28\u5D0D\u5D26\u5D25\u5D0F"],["d540","\u5D30\u5D12\u5D23\u5D1F\u5D2E\u5E3E\u5E34\u5EB1\u5EB4\u5EB9\u5EB2\u5EB3\u5F36\u5F38\u5F9B\u5F96\u5F9F\u608A\u6090\u6086\u60BE\u60B0\u60BA\u60D3\u60D4\u60CF\u60E4\u60D9\u60DD\u60C8\u60B1\u60DB\u60B7\u60CA\u60BF\u60C3\u60CD\u60C0\u6332\u6365\u638A\u6382\u637D\u63BD\u639E\u63AD\u639D\u6397\u63AB\u638E\u636F\u6387\u6390\u636E\u63AF\u6375\u639C\u636D\u63AE\u637C\u63A4\u633B\u639F"],["d5a1","\u6378\u6385\u6381\u6391\u638D\u6370\u6553\u65CD\u6665\u6661\u665B\u6659\u665C\u6662\u6718\u6879\u6887\u6890\u689C\u686D\u686E\u68AE\u68AB\u6956\u686F\u68A3\u68AC\u68A9\u6875\u6874\u68B2\u688F\u6877\u6892\u687C\u686B\u6872\u68AA\u6880\u6871\u687E\u689B\u6896\u688B\u68A0\u6889\u68A4\u6878\u687B\u6891\u688C\u688A\u687D\u6B36\u6B33\u6B37\u6B38\u6B91\u6B8F\u6B8D\u6B8E\u6B8C\u6C2A\u6DC0\u6DAB\u6DB4\u6DB3\u6E74\u6DAC\u6DE9\u6DE2\u6DB7\u6DF6\u6DD4\u6E00\u6DC8\u6DE0\u6DDF\u6DD6\u6DBE\u6DE5\u6DDC\u6DDD\u6DDB\u6DF4\u6DCA\u6DBD\u6DED\u6DF0\u6DBA\u6DD5\u6DC2\u6DCF\u6DC9"],["d640","\u6DD0\u6DF2\u6DD3\u6DFD\u6DD7\u6DCD\u6DE3\u6DBB\u70FA\u710D\u70F7\u7117\u70F4\u710C\u70F0\u7104\u70F3\u7110\u70FC\u70FF\u7106\u7113\u7100\u70F8\u70F6\u710B\u7102\u710E\u727E\u727B\u727C\u727F\u731D\u7317\u7307\u7311\u7318\u730A\u7308\u72FF\u730F\u731E\u7388\u73F6\u73F8\u73F5\u7404\u7401\u73FD\u7407\u7400\u73FA\u73FC\u73FF\u740C\u740B\u73F4\u7408\u7564\u7563\u75CE\u75D2\u75CF"],["d6a1","\u75CB\u75CC\u75D1\u75D0\u768F\u7689\u76D3\u7739\u772F\u772D\u7731\u7732\u7734\u7733\u773D\u7725\u773B\u7735\u7848\u7852\u7849\u784D\u784A\u784C\u7826\u7845\u7850\u7964\u7967\u7969\u796A\u7963\u796B\u7961\u79BB\u79FA\u79F8\u79F6\u79F7\u7A8F\u7A94\u7A90\u7B35\u7B47\u7B34\u7B25\u7B30\u7B22\u7B24\u7B33\u7B18\u7B2A\u7B1D\u7B31\u7B2B\u7B2D\u7B2F\u7B32\u7B38\u7B1A\u7B23\u7C94\u7C98\u7C96\u7CA3\u7D35\u7D3D\u7D38\u7D36\u7D3A\u7D45\u7D2C\u7D29\u7D41\u7D47\u7D3E\u7D3F\u7D4A\u7D3B\u7D28\u7F63\u7F95\u7F9C\u7F9D\u7F9B\u7FCA\u7FCB\u7FCD\u7FD0\u7FD1\u7FC7\u7FCF\u7FC9\u801F"],["d740","\u801E\u801B\u8047\u8043\u8048\u8118\u8125\u8119\u811B\u812D\u811F\u812C\u811E\u8121\u8115\u8127\u811D\u8122\u8211\u8238\u8233\u823A\u8234\u8232\u8274\u8390\u83A3\u83A8\u838D\u837A\u8373\u83A4\u8374\u838F\u8381\u8395\u8399\u8375\u8394\u83A9\u837D\u8383\u838C\u839D\u839B\u83AA\u838B\u837E\u83A5\u83AF\u8388\u8397\u83B0\u837F\u83A6\u8387\u83AE\u8376\u839A\u8659\u8656\u86BF\u86B7"],["d7a1","\u86C2\u86C1\u86C5\u86BA\u86B0\u86C8\u86B9\u86B3\u86B8\u86CC\u86B4\u86BB\u86BC\u86C3\u86BD\u86BE\u8852\u8889\u8895\u88A8\u88A2\u88AA\u889A\u8891\u88A1\u889F\u8898\u88A7\u8899\u889B\u8897\u88A4\u88AC\u888C\u8893\u888E\u8982\u89D6\u89D9\u89D5\u8A30\u8A27\u8A2C\u8A1E\u8C39\u8C3B\u8C5C\u8C5D\u8C7D\u8CA5\u8D7D\u8D7B\u8D79\u8DBC\u8DC2\u8DB9\u8DBF\u8DC1\u8ED8\u8EDE\u8EDD\u8EDC\u8ED7\u8EE0\u8EE1\u9024\u900B\u9011\u901C\u900C\u9021\u90EF\u90EA\u90F0\u90F4\u90F2\u90F3\u90D4\u90EB\u90EC\u90E9\u9156\u9158\u915A\u9153\u9155\u91EC\u91F4\u91F1\u91F3\u91F8\u91E4\u91F9\u91EA"],["d840","\u91EB\u91F7\u91E8\u91EE\u957A\u9586\u9588\u967C\u966D\u966B\u9671\u966F\u96BF\u976A\u9804\u98E5\u9997\u509B\u5095\u5094\u509E\u508B\u50A3\u5083\u508C\u508E\u509D\u5068\u509C\u5092\u5082\u5087\u515F\u51D4\u5312\u5311\u53A4\u53A7\u5591\u55A8\u55A5\u55AD\u5577\u5645\u55A2\u5593\u5588\u558F\u55B5\u5581\u55A3\u5592\u55A4\u557D\u558C\u55A6\u557F\u5595\u55A1\u558E\u570C\u5829\u5837"],["d8a1","\u5819\u581E\u5827\u5823\u5828\u57F5\u5848\u5825\u581C\u581B\u5833\u583F\u5836\u582E\u5839\u5838\u582D\u582C\u583B\u5961\u5AAF\u5A94\u5A9F\u5A7A\u5AA2\u5A9E\u5A78\u5AA6\u5A7C\u5AA5\u5AAC\u5A95\u5AAE\u5A37\u5A84\u5A8A\u5A97\u5A83\u5A8B\u5AA9\u5A7B\u5A7D\u5A8C\u5A9C\u5A8F\u5A93\u5A9D\u5BEA\u5BCD\u5BCB\u5BD4\u5BD1\u5BCA\u5BCE\u5C0C\u5C30\u5D37\u5D43\u5D6B\u5D41\u5D4B\u5D3F\u5D35\u5D51\u5D4E\u5D55\u5D33\u5D3A\u5D52\u5D3D\u5D31\u5D59\u5D42\u5D39\u5D49\u5D38\u5D3C\u5D32\u5D36\u5D40\u5D45\u5E44\u5E41\u5F58\u5FA6\u5FA5\u5FAB\u60C9\u60B9\u60CC\u60E2\u60CE\u60C4\u6114"],["d940","\u60F2\u610A\u6116\u6105\u60F5\u6113\u60F8\u60FC\u60FE\u60C1\u6103\u6118\u611D\u6110\u60FF\u6104\u610B\u624A\u6394\u63B1\u63B0\u63CE\u63E5\u63E8\u63EF\u63C3\u649D\u63F3\u63CA\u63E0\u63F6\u63D5\u63F2\u63F5\u6461\u63DF\u63BE\u63DD\u63DC\u63C4\u63D8\u63D3\u63C2\u63C7\u63CC\u63CB\u63C8\u63F0\u63D7\u63D9\u6532\u6567\u656A\u6564\u655C\u6568\u6565\u658C\u659D\u659E\u65AE\u65D0\u65D2"],["d9a1","\u667C\u666C\u667B\u6680\u6671\u6679\u666A\u6672\u6701\u690C\u68D3\u6904\u68DC\u692A\u68EC\u68EA\u68F1\u690F\u68D6\u68F7\u68EB\u68E4\u68F6\u6913\u6910\u68F3\u68E1\u6907\u68CC\u6908\u6970\u68B4\u6911\u68EF\u68C6\u6914\u68F8\u68D0\u68FD\u68FC\u68E8\u690B\u690A\u6917\u68CE\u68C8\u68DD\u68DE\u68E6\u68F4\u68D1\u6906\u68D4\u68E9\u6915\u6925\u68C7\u6B39\u6B3B\u6B3F\u6B3C\u6B94\u6B97\u6B99\u6B95\u6BBD\u6BF0\u6BF2\u6BF3\u6C30\u6DFC\u6E46\u6E47\u6E1F\u6E49\u6E88\u6E3C\u6E3D\u6E45\u6E62\u6E2B\u6E3F\u6E41\u6E5D\u6E73\u6E1C\u6E33\u6E4B\u6E40\u6E51\u6E3B\u6E03\u6E2E\u6E5E"],["da40","\u6E68\u6E5C\u6E61\u6E31\u6E28\u6E60\u6E71\u6E6B\u6E39\u6E22\u6E30\u6E53\u6E65\u6E27\u6E78\u6E64\u6E77\u6E55\u6E79\u6E52\u6E66\u6E35\u6E36\u6E5A\u7120\u711E\u712F\u70FB\u712E\u7131\u7123\u7125\u7122\u7132\u711F\u7128\u713A\u711B\u724B\u725A\u7288\u7289\u7286\u7285\u728B\u7312\u730B\u7330\u7322\u7331\u7333\u7327\u7332\u732D\u7326\u7323\u7335\u730C\u742E\u742C\u7430\u742B\u7416"],["daa1","\u741A\u7421\u742D\u7431\u7424\u7423\u741D\u7429\u7420\u7432\u74FB\u752F\u756F\u756C\u75E7\u75DA\u75E1\u75E6\u75DD\u75DF\u75E4\u75D7\u7695\u7692\u76DA\u7746\u7747\u7744\u774D\u7745\u774A\u774E\u774B\u774C\u77DE\u77EC\u7860\u7864\u7865\u785C\u786D\u7871\u786A\u786E\u7870\u7869\u7868\u785E\u7862\u7974\u7973\u7972\u7970\u7A02\u7A0A\u7A03\u7A0C\u7A04\u7A99\u7AE6\u7AE4\u7B4A\u7B3B\u7B44\u7B48\u7B4C\u7B4E\u7B40\u7B58\u7B45\u7CA2\u7C9E\u7CA8\u7CA1\u7D58\u7D6F\u7D63\u7D53\u7D56\u7D67\u7D6A\u7D4F\u7D6D\u7D5C\u7D6B\u7D52\u7D54\u7D69\u7D51\u7D5F\u7D4E\u7F3E\u7F3F\u7F65"],["db40","\u7F66\u7FA2\u7FA0\u7FA1\u7FD7\u8051\u804F\u8050\u80FE\u80D4\u8143\u814A\u8152\u814F\u8147\u813D\u814D\u813A\u81E6\u81EE\u81F7\u81F8\u81F9\u8204\u823C\u823D\u823F\u8275\u833B\u83CF\u83F9\u8423\u83C0\u83E8\u8412\u83E7\u83E4\u83FC\u83F6\u8410\u83C6\u83C8\u83EB\u83E3\u83BF\u8401\u83DD\u83E5\u83D8\u83FF\u83E1\u83CB\u83CE\u83D6\u83F5\u83C9\u8409\u840F\u83DE\u8411\u8406\u83C2\u83F3"],["dba1","\u83D5\u83FA\u83C7\u83D1\u83EA\u8413\u83C3\u83EC\u83EE\u83C4\u83FB\u83D7\u83E2\u841B\u83DB\u83FE\u86D8\u86E2\u86E6\u86D3\u86E3\u86DA\u86EA\u86DD\u86EB\u86DC\u86EC\u86E9\u86D7\u86E8\u86D1\u8848\u8856\u8855\u88BA\u88D7\u88B9\u88B8\u88C0\u88BE\u88B6\u88BC\u88B7\u88BD\u88B2\u8901\u88C9\u8995\u8998\u8997\u89DD\u89DA\u89DB\u8A4E\u8A4D\u8A39\u8A59\u8A40\u8A57\u8A58\u8A44\u8A45\u8A52\u8A48\u8A51\u8A4A\u8A4C\u8A4F\u8C5F\u8C81\u8C80\u8CBA\u8CBE\u8CB0\u8CB9\u8CB5\u8D84\u8D80\u8D89\u8DD8\u8DD3\u8DCD\u8DC7\u8DD6\u8DDC\u8DCF\u8DD5\u8DD9\u8DC8\u8DD7\u8DC5\u8EEF\u8EF7\u8EFA"],["dc40","\u8EF9\u8EE6\u8EEE\u8EE5\u8EF5\u8EE7\u8EE8\u8EF6\u8EEB\u8EF1\u8EEC\u8EF4\u8EE9\u902D\u9034\u902F\u9106\u912C\u9104\u90FF\u90FC\u9108\u90F9\u90FB\u9101\u9100\u9107\u9105\u9103\u9161\u9164\u915F\u9162\u9160\u9201\u920A\u9225\u9203\u921A\u9226\u920F\u920C\u9200\u9212\u91FF\u91FD\u9206\u9204\u9227\u9202\u921C\u9224\u9219\u9217\u9205\u9216\u957B\u958D\u958C\u9590\u9687\u967E\u9688"],["dca1","\u9689\u9683\u9680\u96C2\u96C8\u96C3\u96F1\u96F0\u976C\u9770\u976E\u9807\u98A9\u98EB\u9CE6\u9EF9\u4E83\u4E84\u4EB6\u50BD\u50BF\u50C6\u50AE\u50C4\u50CA\u50B4\u50C8\u50C2\u50B0\u50C1\u50BA\u50B1\u50CB\u50C9\u50B6\u50B8\u51D7\u527A\u5278\u527B\u527C\u55C3\u55DB\u55CC\u55D0\u55CB\u55CA\u55DD\u55C0\u55D4\u55C4\u55E9\u55BF\u55D2\u558D\u55CF\u55D5\u55E2\u55D6\u55C8\u55F2\u55CD\u55D9\u55C2\u5714\u5853\u5868\u5864\u584F\u584D\u5849\u586F\u5855\u584E\u585D\u5859\u5865\u585B\u583D\u5863\u5871\u58FC\u5AC7\u5AC4\u5ACB\u5ABA\u5AB8\u5AB1\u5AB5\u5AB0\u5ABF\u5AC8\u5ABB\u5AC6"],["dd40","\u5AB7\u5AC0\u5ACA\u5AB4\u5AB6\u5ACD\u5AB9\u5A90\u5BD6\u5BD8\u5BD9\u5C1F\u5C33\u5D71\u5D63\u5D4A\u5D65\u5D72\u5D6C\u5D5E\u5D68\u5D67\u5D62\u5DF0\u5E4F\u5E4E\u5E4A\u5E4D\u5E4B\u5EC5\u5ECC\u5EC6\u5ECB\u5EC7\u5F40\u5FAF\u5FAD\u60F7\u6149\u614A\u612B\u6145\u6136\u6132\u612E\u6146\u612F\u614F\u6129\u6140\u6220\u9168\u6223\u6225\u6224\u63C5\u63F1\u63EB\u6410\u6412\u6409\u6420\u6424"],["dda1","\u6433\u6443\u641F\u6415\u6418\u6439\u6437\u6422\u6423\u640C\u6426\u6430\u6428\u6441\u6435\u642F\u640A\u641A\u6440\u6425\u6427\u640B\u63E7\u641B\u642E\u6421\u640E\u656F\u6592\u65D3\u6686\u668C\u6695\u6690\u668B\u668A\u6699\u6694\u6678\u6720\u6966\u695F\u6938\u694E\u6962\u6971\u693F\u6945\u696A\u6939\u6942\u6957\u6959\u697A\u6948\u6949\u6935\u696C\u6933\u693D\u6965\u68F0\u6978\u6934\u6969\u6940\u696F\u6944\u6976\u6958\u6941\u6974\u694C\u693B\u694B\u6937\u695C\u694F\u6951\u6932\u6952\u692F\u697B\u693C\u6B46\u6B45\u6B43\u6B42\u6B48\u6B41\u6B9B\uFA0D\u6BFB\u6BFC"],["de40","\u6BF9\u6BF7\u6BF8\u6E9B\u6ED6\u6EC8\u6E8F\u6EC0\u6E9F\u6E93\u6E94\u6EA0\u6EB1\u6EB9\u6EC6\u6ED2\u6EBD\u6EC1\u6E9E\u6EC9\u6EB7\u6EB0\u6ECD\u6EA6\u6ECF\u6EB2\u6EBE\u6EC3\u6EDC\u6ED8\u6E99\u6E92\u6E8E\u6E8D\u6EA4\u6EA1\u6EBF\u6EB3\u6ED0\u6ECA\u6E97\u6EAE\u6EA3\u7147\u7154\u7152\u7163\u7160\u7141\u715D\u7162\u7172\u7178\u716A\u7161\u7142\u7158\u7143\u714B\u7170\u715F\u7150\u7153"],["dea1","\u7144\u714D\u715A\u724F\u728D\u728C\u7291\u7290\u728E\u733C\u7342\u733B\u733A\u7340\u734A\u7349\u7444\u744A\u744B\u7452\u7451\u7457\u7440\u744F\u7450\u744E\u7442\u7446\u744D\u7454\u74E1\u74FF\u74FE\u74FD\u751D\u7579\u7577\u6983\u75EF\u760F\u7603\u75F7\u75FE\u75FC\u75F9\u75F8\u7610\u75FB\u75F6\u75ED\u75F5\u75FD\u7699\u76B5\u76DD\u7755\u775F\u7760\u7752\u7756\u775A\u7769\u7767\u7754\u7759\u776D\u77E0\u7887\u789A\u7894\u788F\u7884\u7895\u7885\u7886\u78A1\u7883\u7879\u7899\u7880\u7896\u787B\u797C\u7982\u797D\u7979\u7A11\u7A18\u7A19\u7A12\u7A17\u7A15\u7A22\u7A13"],["df40","\u7A1B\u7A10\u7AA3\u7AA2\u7A9E\u7AEB\u7B66\u7B64\u7B6D\u7B74\u7B69\u7B72\u7B65\u7B73\u7B71\u7B70\u7B61\u7B78\u7B76\u7B63\u7CB2\u7CB4\u7CAF\u7D88\u7D86\u7D80\u7D8D\u7D7F\u7D85\u7D7A\u7D8E\u7D7B\u7D83\u7D7C\u7D8C\u7D94\u7D84\u7D7D\u7D92\u7F6D\u7F6B\u7F67\u7F68\u7F6C\u7FA6\u7FA5\u7FA7\u7FDB\u7FDC\u8021\u8164\u8160\u8177\u815C\u8169\u815B\u8162\u8172\u6721\u815E\u8176\u8167\u816F"],["dfa1","\u8144\u8161\u821D\u8249\u8244\u8240\u8242\u8245\u84F1\u843F\u8456\u8476\u8479\u848F\u848D\u8465\u8451\u8440\u8486\u8467\u8430\u844D\u847D\u845A\u8459\u8474\u8473\u845D\u8507\u845E\u8437\u843A\u8434\u847A\u8443\u8478\u8432\u8445\u8429\u83D9\u844B\u842F\u8442\u842D\u845F\u8470\u8439\u844E\u844C\u8452\u846F\u84C5\u848E\u843B\u8447\u8436\u8433\u8468\u847E\u8444\u842B\u8460\u8454\u846E\u8450\u870B\u8704\u86F7\u870C\u86FA\u86D6\u86F5\u874D\u86F8\u870E\u8709\u8701\u86F6\u870D\u8705\u88D6\u88CB\u88CD\u88CE\u88DE\u88DB\u88DA\u88CC\u88D0\u8985\u899B\u89DF\u89E5\u89E4"],["e040","\u89E1\u89E0\u89E2\u89DC\u89E6\u8A76\u8A86\u8A7F\u8A61\u8A3F\u8A77\u8A82\u8A84\u8A75\u8A83\u8A81\u8A74\u8A7A\u8C3C\u8C4B\u8C4A\u8C65\u8C64\u8C66\u8C86\u8C84\u8C85\u8CCC\u8D68\u8D69\u8D91\u8D8C\u8D8E\u8D8F\u8D8D\u8D93\u8D94\u8D90\u8D92\u8DF0\u8DE0\u8DEC\u8DF1\u8DEE\u8DD0\u8DE9\u8DE3\u8DE2\u8DE7\u8DF2\u8DEB\u8DF4\u8F06\u8EFF\u8F01\u8F00\u8F05\u8F07\u8F08\u8F02\u8F0B\u9052\u903F"],["e0a1","\u9044\u9049\u903D\u9110\u910D\u910F\u9111\u9116\u9114\u910B\u910E\u916E\u916F\u9248\u9252\u9230\u923A\u9266\u9233\u9265\u925E\u9283\u922E\u924A\u9246\u926D\u926C\u924F\u9260\u9267\u926F\u9236\u9261\u9270\u9231\u9254\u9263\u9250\u9272\u924E\u9253\u924C\u9256\u9232\u959F\u959C\u959E\u959B\u9692\u9693\u9691\u9697\u96CE\u96FA\u96FD\u96F8\u96F5\u9773\u9777\u9778\u9772\u980F\u980D\u980E\u98AC\u98F6\u98F9\u99AF\u99B2\u99B0\u99B5\u9AAD\u9AAB\u9B5B\u9CEA\u9CED\u9CE7\u9E80\u9EFD\u50E6\u50D4\u50D7\u50E8\u50F3\u50DB\u50EA\u50DD\u50E4\u50D3\u50EC\u50F0\u50EF\u50E3\u50E0"],["e140","\u51D8\u5280\u5281\u52E9\u52EB\u5330\u53AC\u5627\u5615\u560C\u5612\u55FC\u560F\u561C\u5601\u5613\u5602\u55FA\u561D\u5604\u55FF\u55F9\u5889\u587C\u5890\u5898\u5886\u5881\u587F\u5874\u588B\u587A\u5887\u5891\u588E\u5876\u5882\u5888\u587B\u5894\u588F\u58FE\u596B\u5ADC\u5AEE\u5AE5\u5AD5\u5AEA\u5ADA\u5AED\u5AEB\u5AF3\u5AE2\u5AE0\u5ADB\u5AEC\u5ADE\u5ADD\u5AD9\u5AE8\u5ADF\u5B77\u5BE0"],["e1a1","\u5BE3\u5C63\u5D82\u5D80\u5D7D\u5D86\u5D7A\u5D81\u5D77\u5D8A\u5D89\u5D88\u5D7E\u5D7C\u5D8D\u5D79\u5D7F\u5E58\u5E59\u5E53\u5ED8\u5ED1\u5ED7\u5ECE\u5EDC\u5ED5\u5ED9\u5ED2\u5ED4\u5F44\u5F43\u5F6F\u5FB6\u612C\u6128\u6141\u615E\u6171\u6173\u6152\u6153\u6172\u616C\u6180\u6174\u6154\u617A\u615B\u6165\u613B\u616A\u6161\u6156\u6229\u6227\u622B\u642B\u644D\u645B\u645D\u6474\u6476\u6472\u6473\u647D\u6475\u6466\u64A6\u644E\u6482\u645E\u645C\u644B\u6453\u6460\u6450\u647F\u643F\u646C\u646B\u6459\u6465\u6477\u6573\u65A0\u66A1\u66A0\u669F\u6705\u6704\u6722\u69B1\u69B6\u69C9"],["e240","\u69A0\u69CE\u6996\u69B0\u69AC\u69BC\u6991\u6999\u698E\u69A7\u698D\u69A9\u69BE\u69AF\u69BF\u69C4\u69BD\u69A4\u69D4\u69B9\u69CA\u699A\u69CF\u69B3\u6993\u69AA\u69A1\u699E\u69D9\u6997\u6990\u69C2\u69B5\u69A5\u69C6\u6B4A\u6B4D\u6B4B\u6B9E\u6B9F\u6BA0\u6BC3\u6BC4\u6BFE\u6ECE\u6EF5\u6EF1\u6F03\u6F25\u6EF8\u6F37\u6EFB\u6F2E\u6F09\u6F4E\u6F19\u6F1A\u6F27\u6F18\u6F3B\u6F12\u6EED\u6F0A"],["e2a1","\u6F36\u6F73\u6EF9\u6EEE\u6F2D\u6F40\u6F30\u6F3C\u6F35\u6EEB\u6F07\u6F0E\u6F43\u6F05\u6EFD\u6EF6\u6F39\u6F1C\u6EFC\u6F3A\u6F1F\u6F0D\u6F1E\u6F08\u6F21\u7187\u7190\u7189\u7180\u7185\u7182\u718F\u717B\u7186\u7181\u7197\u7244\u7253\u7297\u7295\u7293\u7343\u734D\u7351\u734C\u7462\u7473\u7471\u7475\u7472\u7467\u746E\u7500\u7502\u7503\u757D\u7590\u7616\u7608\u760C\u7615\u7611\u760A\u7614\u76B8\u7781\u777C\u7785\u7782\u776E\u7780\u776F\u777E\u7783\u78B2\u78AA\u78B4\u78AD\u78A8\u787E\u78AB\u789E\u78A5\u78A0\u78AC\u78A2\u78A4\u7998\u798A\u798B\u7996\u7995\u7994\u7993"],["e340","\u7997\u7988\u7992\u7990\u7A2B\u7A4A\u7A30\u7A2F\u7A28\u7A26\u7AA8\u7AAB\u7AAC\u7AEE\u7B88\u7B9C\u7B8A\u7B91\u7B90\u7B96\u7B8D\u7B8C\u7B9B\u7B8E\u7B85\u7B98\u5284\u7B99\u7BA4\u7B82\u7CBB\u7CBF\u7CBC\u7CBA\u7DA7\u7DB7\u7DC2\u7DA3\u7DAA\u7DC1\u7DC0\u7DC5\u7D9D\u7DCE\u7DC4\u7DC6\u7DCB\u7DCC\u7DAF\u7DB9\u7D96\u7DBC\u7D9F\u7DA6\u7DAE\u7DA9\u7DA1\u7DC9\u7F73\u7FE2\u7FE3\u7FE5\u7FDE"],["e3a1","\u8024\u805D\u805C\u8189\u8186\u8183\u8187\u818D\u818C\u818B\u8215\u8497\u84A4\u84A1\u849F\u84BA\u84CE\u84C2\u84AC\u84AE\u84AB\u84B9\u84B4\u84C1\u84CD\u84AA\u849A\u84B1\u84D0\u849D\u84A7\u84BB\u84A2\u8494\u84C7\u84CC\u849B\u84A9\u84AF\u84A8\u84D6\u8498\u84B6\u84CF\u84A0\u84D7\u84D4\u84D2\u84DB\u84B0\u8491\u8661\u8733\u8723\u8728\u876B\u8740\u872E\u871E\u8721\u8719\u871B\u8743\u872C\u8741\u873E\u8746\u8720\u8732\u872A\u872D\u873C\u8712\u873A\u8731\u8735\u8742\u8726\u8727\u8738\u8724\u871A\u8730\u8711\u88F7\u88E7\u88F1\u88F2\u88FA\u88FE\u88EE\u88FC\u88F6\u88FB"],["e440","\u88F0\u88EC\u88EB\u899D\u89A1\u899F\u899E\u89E9\u89EB\u89E8\u8AAB\u8A99\u8A8B\u8A92\u8A8F\u8A96\u8C3D\u8C68\u8C69\u8CD5\u8CCF\u8CD7\u8D96\u8E09\u8E02\u8DFF\u8E0D\u8DFD\u8E0A\u8E03\u8E07\u8E06\u8E05\u8DFE\u8E00\u8E04\u8F10\u8F11\u8F0E\u8F0D\u9123\u911C\u9120\u9122\u911F\u911D\u911A\u9124\u9121\u911B\u917A\u9172\u9179\u9173\u92A5\u92A4\u9276\u929B\u927A\u92A0\u9294\u92AA\u928D"],["e4a1","\u92A6\u929A\u92AB\u9279\u9297\u927F\u92A3\u92EE\u928E\u9282\u9295\u92A2\u927D\u9288\u92A1\u928A\u9286\u928C\u9299\u92A7\u927E\u9287\u92A9\u929D\u928B\u922D\u969E\u96A1\u96FF\u9758\u977D\u977A\u977E\u9783\u9780\u9782\u977B\u9784\u9781\u977F\u97CE\u97CD\u9816\u98AD\u98AE\u9902\u9900\u9907\u999D\u999C\u99C3\u99B9\u99BB\u99BA\u99C2\u99BD\u99C7\u9AB1\u9AE3\u9AE7\u9B3E\u9B3F\u9B60\u9B61\u9B5F\u9CF1\u9CF2\u9CF5\u9EA7\u50FF\u5103\u5130\u50F8\u5106\u5107\u50F6\u50FE\u510B\u510C\u50FD\u510A\u528B\u528C\u52F1\u52EF\u5648\u5642\u564C\u5635\u5641\u564A\u5649\u5646\u5658"],["e540","\u565A\u5640\u5633\u563D\u562C\u563E\u5638\u562A\u563A\u571A\u58AB\u589D\u58B1\u58A0\u58A3\u58AF\u58AC\u58A5\u58A1\u58FF\u5AFF\u5AF4\u5AFD\u5AF7\u5AF6\u5B03\u5AF8\u5B02\u5AF9\u5B01\u5B07\u5B05\u5B0F\u5C67\u5D99\u5D97\u5D9F\u5D92\u5DA2\u5D93\u5D95\u5DA0\u5D9C\u5DA1\u5D9A\u5D9E\u5E69\u5E5D\u5E60\u5E5C\u7DF3\u5EDB\u5EDE\u5EE1\u5F49\u5FB2\u618B\u6183\u6179\u61B1\u61B0\u61A2\u6189"],["e5a1","\u619B\u6193\u61AF\u61AD\u619F\u6192\u61AA\u61A1\u618D\u6166\u61B3\u622D\u646E\u6470\u6496\u64A0\u6485\u6497\u649C\u648F\u648B\u648A\u648C\u64A3\u649F\u6468\u64B1\u6498\u6576\u657A\u6579\u657B\u65B2\u65B3\u66B5\u66B0\u66A9\u66B2\u66B7\u66AA\u66AF\u6A00\u6A06\u6A17\u69E5\u69F8\u6A15\u69F1\u69E4\u6A20\u69FF\u69EC\u69E2\u6A1B\u6A1D\u69FE\u6A27\u69F2\u69EE\u6A14\u69F7\u69E7\u6A40\u6A08\u69E6\u69FB\u6A0D\u69FC\u69EB\u6A09\u6A04\u6A18\u6A25\u6A0F\u69F6\u6A26\u6A07\u69F4\u6A16\u6B51\u6BA5\u6BA3\u6BA2\u6BA6\u6C01\u6C00\u6BFF\u6C02\u6F41\u6F26\u6F7E\u6F87\u6FC6\u6F92"],["e640","\u6F8D\u6F89\u6F8C\u6F62\u6F4F\u6F85\u6F5A\u6F96\u6F76\u6F6C\u6F82\u6F55\u6F72\u6F52\u6F50\u6F57\u6F94\u6F93\u6F5D\u6F00\u6F61\u6F6B\u6F7D\u6F67\u6F90\u6F53\u6F8B\u6F69\u6F7F\u6F95\u6F63\u6F77\u6F6A\u6F7B\u71B2\u71AF\u719B\u71B0\u71A0\u719A\u71A9\u71B5\u719D\u71A5\u719E\u71A4\u71A1\u71AA\u719C\u71A7\u71B3\u7298\u729A\u7358\u7352\u735E\u735F\u7360\u735D\u735B\u7361\u735A\u7359"],["e6a1","\u7362\u7487\u7489\u748A\u7486\u7481\u747D\u7485\u7488\u747C\u7479\u7508\u7507\u757E\u7625\u761E\u7619\u761D\u761C\u7623\u761A\u7628\u761B\u769C\u769D\u769E\u769B\u778D\u778F\u7789\u7788\u78CD\u78BB\u78CF\u78CC\u78D1\u78CE\u78D4\u78C8\u78C3\u78C4\u78C9\u799A\u79A1\u79A0\u799C\u79A2\u799B\u6B76\u7A39\u7AB2\u7AB4\u7AB3\u7BB7\u7BCB\u7BBE\u7BAC\u7BCE\u7BAF\u7BB9\u7BCA\u7BB5\u7CC5\u7CC8\u7CCC\u7CCB\u7DF7\u7DDB\u7DEA\u7DE7\u7DD7\u7DE1\u7E03\u7DFA\u7DE6\u7DF6\u7DF1\u7DF0\u7DEE\u7DDF\u7F76\u7FAC\u7FB0\u7FAD\u7FED\u7FEB\u7FEA\u7FEC\u7FE6\u7FE8\u8064\u8067\u81A3\u819F"],["e740","\u819E\u8195\u81A2\u8199\u8197\u8216\u824F\u8253\u8252\u8250\u824E\u8251\u8524\u853B\u850F\u8500\u8529\u850E\u8509\u850D\u851F\u850A\u8527\u851C\u84FB\u852B\u84FA\u8508\u850C\u84F4\u852A\u84F2\u8515\u84F7\u84EB\u84F3\u84FC\u8512\u84EA\u84E9\u8516\u84FE\u8528\u851D\u852E\u8502\u84FD\u851E\u84F6\u8531\u8526\u84E7\u84E8\u84F0\u84EF\u84F9\u8518\u8520\u8530\u850B\u8519\u852F\u8662"],["e7a1","\u8756\u8763\u8764\u8777\u87E1\u8773\u8758\u8754\u875B\u8752\u8761\u875A\u8751\u875E\u876D\u876A\u8750\u874E\u875F\u875D\u876F\u876C\u877A\u876E\u875C\u8765\u874F\u877B\u8775\u8762\u8767\u8769\u885A\u8905\u890C\u8914\u890B\u8917\u8918\u8919\u8906\u8916\u8911\u890E\u8909\u89A2\u89A4\u89A3\u89ED\u89F0\u89EC\u8ACF\u8AC6\u8AB8\u8AD3\u8AD1\u8AD4\u8AD5\u8ABB\u8AD7\u8ABE\u8AC0\u8AC5\u8AD8\u8AC3\u8ABA\u8ABD\u8AD9\u8C3E\u8C4D\u8C8F\u8CE5\u8CDF\u8CD9\u8CE8\u8CDA\u8CDD\u8CE7\u8DA0\u8D9C\u8DA1\u8D9B\u8E20\u8E23\u8E25\u8E24\u8E2E\u8E15\u8E1B\u8E16\u8E11\u8E19\u8E26\u8E27"],["e840","\u8E14\u8E12\u8E18\u8E13\u8E1C\u8E17\u8E1A\u8F2C\u8F24\u8F18\u8F1A\u8F20\u8F23\u8F16\u8F17\u9073\u9070\u906F\u9067\u906B\u912F\u912B\u9129\u912A\u9132\u9126\u912E\u9185\u9186\u918A\u9181\u9182\u9184\u9180\u92D0\u92C3\u92C4\u92C0\u92D9\u92B6\u92CF\u92F1\u92DF\u92D8\u92E9\u92D7\u92DD\u92CC\u92EF\u92C2\u92E8\u92CA\u92C8\u92CE\u92E6\u92CD\u92D5\u92C9\u92E0\u92DE\u92E7\u92D1\u92D3"],["e8a1","\u92B5\u92E1\u92C6\u92B4\u957C\u95AC\u95AB\u95AE\u95B0\u96A4\u96A2\u96D3\u9705\u9708\u9702\u975A\u978A\u978E\u9788\u97D0\u97CF\u981E\u981D\u9826\u9829\u9828\u9820\u981B\u9827\u98B2\u9908\u98FA\u9911\u9914\u9916\u9917\u9915\u99DC\u99CD\u99CF\u99D3\u99D4\u99CE\u99C9\u99D6\u99D8\u99CB\u99D7\u99CC\u9AB3\u9AEC\u9AEB\u9AF3\u9AF2\u9AF1\u9B46\u9B43\u9B67\u9B74\u9B71\u9B66\u9B76\u9B75\u9B70\u9B68\u9B64\u9B6C\u9CFC\u9CFA\u9CFD\u9CFF\u9CF7\u9D07\u9D00\u9CF9\u9CFB\u9D08\u9D05\u9D04\u9E83\u9ED3\u9F0F\u9F10\u511C\u5113\u5117\u511A\u5111\u51DE\u5334\u53E1\u5670\u5660\u566E"],["e940","\u5673\u5666\u5663\u566D\u5672\u565E\u5677\u571C\u571B\u58C8\u58BD\u58C9\u58BF\u58BA\u58C2\u58BC\u58C6\u5B17\u5B19\u5B1B\u5B21\u5B14\u5B13\u5B10\u5B16\u5B28\u5B1A\u5B20\u5B1E\u5BEF\u5DAC\u5DB1\u5DA9\u5DA7\u5DB5\u5DB0\u5DAE\u5DAA\u5DA8\u5DB2\u5DAD\u5DAF\u5DB4\u5E67\u5E68\u5E66\u5E6F\u5EE9\u5EE7\u5EE6\u5EE8\u5EE5\u5F4B\u5FBC\u619D\u61A8\u6196\u61C5\u61B4\u61C6\u61C1\u61CC\u61BA"],["e9a1","\u61BF\u61B8\u618C\u64D7\u64D6\u64D0\u64CF\u64C9\u64BD\u6489\u64C3\u64DB\u64F3\u64D9\u6533\u657F\u657C\u65A2\u66C8\u66BE\u66C0\u66CA\u66CB\u66CF\u66BD\u66BB\u66BA\u66CC\u6723\u6A34\u6A66\u6A49\u6A67\u6A32\u6A68\u6A3E\u6A5D\u6A6D\u6A76\u6A5B\u6A51\u6A28\u6A5A\u6A3B\u6A3F\u6A41\u6A6A\u6A64\u6A50\u6A4F\u6A54\u6A6F\u6A69\u6A60\u6A3C\u6A5E\u6A56\u6A55\u6A4D\u6A4E\u6A46\u6B55\u6B54\u6B56\u6BA7\u6BAA\u6BAB\u6BC8\u6BC7\u6C04\u6C03\u6C06\u6FAD\u6FCB\u6FA3\u6FC7\u6FBC\u6FCE\u6FC8\u6F5E\u6FC4\u6FBD\u6F9E\u6FCA\u6FA8\u7004\u6FA5\u6FAE\u6FBA\u6FAC\u6FAA\u6FCF\u6FBF\u6FB8"],["ea40","\u6FA2\u6FC9\u6FAB\u6FCD\u6FAF\u6FB2\u6FB0\u71C5\u71C2\u71BF\u71B8\u71D6\u71C0\u71C1\u71CB\u71D4\u71CA\u71C7\u71CF\u71BD\u71D8\u71BC\u71C6\u71DA\u71DB\u729D\u729E\u7369\u7366\u7367\u736C\u7365\u736B\u736A\u747F\u749A\u74A0\u7494\u7492\u7495\u74A1\u750B\u7580\u762F\u762D\u7631\u763D\u7633\u763C\u7635\u7632\u7630\u76BB\u76E6\u779A\u779D\u77A1\u779C\u779B\u77A2\u77A3\u7795\u7799"],["eaa1","\u7797\u78DD\u78E9\u78E5\u78EA\u78DE\u78E3\u78DB\u78E1\u78E2\u78ED\u78DF\u78E0\u79A4\u7A44\u7A48\u7A47\u7AB6\u7AB8\u7AB5\u7AB1\u7AB7\u7BDE\u7BE3\u7BE7\u7BDD\u7BD5\u7BE5\u7BDA\u7BE8\u7BF9\u7BD4\u7BEA\u7BE2\u7BDC\u7BEB\u7BD8\u7BDF\u7CD2\u7CD4\u7CD7\u7CD0\u7CD1\u7E12\u7E21\u7E17\u7E0C\u7E1F\u7E20\u7E13\u7E0E\u7E1C\u7E15\u7E1A\u7E22\u7E0B\u7E0F\u7E16\u7E0D\u7E14\u7E25\u7E24\u7F43\u7F7B\u7F7C\u7F7A\u7FB1\u7FEF\u802A\u8029\u806C\u81B1\u81A6\u81AE\u81B9\u81B5\u81AB\u81B0\u81AC\u81B4\u81B2\u81B7\u81A7\u81F2\u8255\u8256\u8257\u8556\u8545\u856B\u854D\u8553\u8561\u8558"],["eb40","\u8540\u8546\u8564\u8541\u8562\u8544\u8551\u8547\u8563\u853E\u855B\u8571\u854E\u856E\u8575\u8555\u8567\u8560\u858C\u8566\u855D\u8554\u8565\u856C\u8663\u8665\u8664\u879B\u878F\u8797\u8793\u8792\u8788\u8781\u8796\u8798\u8779\u8787\u87A3\u8785\u8790\u8791\u879D\u8784\u8794\u879C\u879A\u8789\u891E\u8926\u8930\u892D\u892E\u8927\u8931\u8922\u8929\u8923\u892F\u892C\u891F\u89F1\u8AE0"],["eba1","\u8AE2\u8AF2\u8AF4\u8AF5\u8ADD\u8B14\u8AE4\u8ADF\u8AF0\u8AC8\u8ADE\u8AE1\u8AE8\u8AFF\u8AEF\u8AFB\u8C91\u8C92\u8C90\u8CF5\u8CEE\u8CF1\u8CF0\u8CF3\u8D6C\u8D6E\u8DA5\u8DA7\u8E33\u8E3E\u8E38\u8E40\u8E45\u8E36\u8E3C\u8E3D\u8E41\u8E30\u8E3F\u8EBD\u8F36\u8F2E\u8F35\u8F32\u8F39\u8F37\u8F34\u9076\u9079\u907B\u9086\u90FA\u9133\u9135\u9136\u9193\u9190\u9191\u918D\u918F\u9327\u931E\u9308\u931F\u9306\u930F\u937A\u9338\u933C\u931B\u9323\u9312\u9301\u9346\u932D\u930E\u930D\u92CB\u931D\u92FA\u9325\u9313\u92F9\u92F7\u9334\u9302\u9324\u92FF\u9329\u9339\u9335\u932A\u9314\u930C"],["ec40","\u930B\u92FE\u9309\u9300\u92FB\u9316\u95BC\u95CD\u95BE\u95B9\u95BA\u95B6\u95BF\u95B5\u95BD\u96A9\u96D4\u970B\u9712\u9710\u9799\u9797\u9794\u97F0\u97F8\u9835\u982F\u9832\u9924\u991F\u9927\u9929\u999E\u99EE\u99EC\u99E5\u99E4\u99F0\u99E3\u99EA\u99E9\u99E7\u9AB9\u9ABF\u9AB4\u9ABB\u9AF6\u9AFA\u9AF9\u9AF7\u9B33\u9B80\u9B85\u9B87\u9B7C\u9B7E\u9B7B\u9B82\u9B93\u9B92\u9B90\u9B7A\u9B95"],["eca1","\u9B7D\u9B88\u9D25\u9D17\u9D20\u9D1E\u9D14\u9D29\u9D1D\u9D18\u9D22\u9D10\u9D19\u9D1F\u9E88\u9E86\u9E87\u9EAE\u9EAD\u9ED5\u9ED6\u9EFA\u9F12\u9F3D\u5126\u5125\u5122\u5124\u5120\u5129\u52F4\u5693\u568C\u568D\u5686\u5684\u5683\u567E\u5682\u567F\u5681\u58D6\u58D4\u58CF\u58D2\u5B2D\u5B25\u5B32\u5B23\u5B2C\u5B27\u5B26\u5B2F\u5B2E\u5B7B\u5BF1\u5BF2\u5DB7\u5E6C\u5E6A\u5FBE\u5FBB\u61C3\u61B5\u61BC\u61E7\u61E0\u61E5\u61E4\u61E8\u61DE\u64EF\u64E9\u64E3\u64EB\u64E4\u64E8\u6581\u6580\u65B6\u65DA\u66D2\u6A8D\u6A96\u6A81\u6AA5\u6A89\u6A9F\u6A9B\u6AA1\u6A9E\u6A87\u6A93\u6A8E"],["ed40","\u6A95\u6A83\u6AA8\u6AA4\u6A91\u6A7F\u6AA6\u6A9A\u6A85\u6A8C\u6A92\u6B5B\u6BAD\u6C09\u6FCC\u6FA9\u6FF4\u6FD4\u6FE3\u6FDC\u6FED\u6FE7\u6FE6\u6FDE\u6FF2\u6FDD\u6FE2\u6FE8\u71E1\u71F1\u71E8\u71F2\u71E4\u71F0\u71E2\u7373\u736E\u736F\u7497\u74B2\u74AB\u7490\u74AA\u74AD\u74B1\u74A5\u74AF\u7510\u7511\u7512\u750F\u7584\u7643\u7648\u7649\u7647\u76A4\u76E9\u77B5\u77AB\u77B2\u77B7\u77B6"],["eda1","\u77B4\u77B1\u77A8\u77F0\u78F3\u78FD\u7902\u78FB\u78FC\u78F2\u7905\u78F9\u78FE\u7904\u79AB\u79A8\u7A5C\u7A5B\u7A56\u7A58\u7A54\u7A5A\u7ABE\u7AC0\u7AC1\u7C05\u7C0F\u7BF2\u7C00\u7BFF\u7BFB\u7C0E\u7BF4\u7C0B\u7BF3\u7C02\u7C09\u7C03\u7C01\u7BF8\u7BFD\u7C06\u7BF0\u7BF1\u7C10\u7C0A\u7CE8\u7E2D\u7E3C\u7E42\u7E33\u9848\u7E38\u7E2A\u7E49\u7E40\u7E47\u7E29\u7E4C\u7E30\u7E3B\u7E36\u7E44\u7E3A\u7F45\u7F7F\u7F7E\u7F7D\u7FF4\u7FF2\u802C\u81BB\u81C4\u81CC\u81CA\u81C5\u81C7\u81BC\u81E9\u825B\u825A\u825C\u8583\u8580\u858F\u85A7\u8595\u85A0\u858B\u85A3\u857B\u85A4\u859A\u859E"],["ee40","\u8577\u857C\u8589\u85A1\u857A\u8578\u8557\u858E\u8596\u8586\u858D\u8599\u859D\u8581\u85A2\u8582\u8588\u8585\u8579\u8576\u8598\u8590\u859F\u8668\u87BE\u87AA\u87AD\u87C5\u87B0\u87AC\u87B9\u87B5\u87BC\u87AE\u87C9\u87C3\u87C2\u87CC\u87B7\u87AF\u87C4\u87CA\u87B4\u87B6\u87BF\u87B8\u87BD\u87DE\u87B2\u8935\u8933\u893C\u893E\u8941\u8952\u8937\u8942\u89AD\u89AF\u89AE\u89F2\u89F3\u8B1E"],["eea1","\u8B18\u8B16\u8B11\u8B05\u8B0B\u8B22\u8B0F\u8B12\u8B15\u8B07\u8B0D\u8B08\u8B06\u8B1C\u8B13\u8B1A\u8C4F\u8C70\u8C72\u8C71\u8C6F\u8C95\u8C94\u8CF9\u8D6F\u8E4E\u8E4D\u8E53\u8E50\u8E4C\u8E47\u8F43\u8F40\u9085\u907E\u9138\u919A\u91A2\u919B\u9199\u919F\u91A1\u919D\u91A0\u93A1\u9383\u93AF\u9364\u9356\u9347\u937C\u9358\u935C\u9376\u9349\u9350\u9351\u9360\u936D\u938F\u934C\u936A\u9379\u9357\u9355\u9352\u934F\u9371\u9377\u937B\u9361\u935E\u9363\u9367\u9380\u934E\u9359\u95C7\u95C0\u95C9\u95C3\u95C5\u95B7\u96AE\u96B0\u96AC\u9720\u971F\u9718\u971D\u9719\u979A\u97A1\u979C"],["ef40","\u979E\u979D\u97D5\u97D4\u97F1\u9841\u9844\u984A\u9849\u9845\u9843\u9925\u992B\u992C\u992A\u9933\u9932\u992F\u992D\u9931\u9930\u9998\u99A3\u99A1\u9A02\u99FA\u99F4\u99F7\u99F9\u99F8\u99F6\u99FB\u99FD\u99FE\u99FC\u9A03\u9ABE\u9AFE\u9AFD\u9B01\u9AFC\u9B48\u9B9A\u9BA8\u9B9E\u9B9B\u9BA6\u9BA1\u9BA5\u9BA4\u9B86\u9BA2\u9BA0\u9BAF\u9D33\u9D41\u9D67\u9D36\u9D2E\u9D2F\u9D31\u9D38\u9D30"],["efa1","\u9D45\u9D42\u9D43\u9D3E\u9D37\u9D40\u9D3D\u7FF5\u9D2D\u9E8A\u9E89\u9E8D\u9EB0\u9EC8\u9EDA\u9EFB\u9EFF\u9F24\u9F23\u9F22\u9F54\u9FA0\u5131\u512D\u512E\u5698\u569C\u5697\u569A\u569D\u5699\u5970\u5B3C\u5C69\u5C6A\u5DC0\u5E6D\u5E6E\u61D8\u61DF\u61ED\u61EE\u61F1\u61EA\u61F0\u61EB\u61D6\u61E9\u64FF\u6504\u64FD\u64F8\u6501\u6503\u64FC\u6594\u65DB\u66DA\u66DB\u66D8\u6AC5\u6AB9\u6ABD\u6AE1\u6AC6\u6ABA\u6AB6\u6AB7\u6AC7\u6AB4\u6AAD\u6B5E\u6BC9\u6C0B\u7007\u700C\u700D\u7001\u7005\u7014\u700E\u6FFF\u7000\u6FFB\u7026\u6FFC\u6FF7\u700A\u7201\u71FF\u71F9\u7203\u71FD\u7376"],["f040","\u74B8\u74C0\u74B5\u74C1\u74BE\u74B6\u74BB\u74C2\u7514\u7513\u765C\u7664\u7659\u7650\u7653\u7657\u765A\u76A6\u76BD\u76EC\u77C2\u77BA\u78FF\u790C\u7913\u7914\u7909\u7910\u7912\u7911\u79AD\u79AC\u7A5F\u7C1C\u7C29\u7C19\u7C20\u7C1F\u7C2D\u7C1D\u7C26\u7C28\u7C22\u7C25\u7C30\u7E5C\u7E50\u7E56\u7E63\u7E58\u7E62\u7E5F\u7E51\u7E60\u7E57\u7E53\u7FB5\u7FB3\u7FF7\u7FF8\u8075\u81D1\u81D2"],["f0a1","\u81D0\u825F\u825E\u85B4\u85C6\u85C0\u85C3\u85C2\u85B3\u85B5\u85BD\u85C7\u85C4\u85BF\u85CB\u85CE\u85C8\u85C5\u85B1\u85B6\u85D2\u8624\u85B8\u85B7\u85BE\u8669\u87E7\u87E6\u87E2\u87DB\u87EB\u87EA\u87E5\u87DF\u87F3\u87E4\u87D4\u87DC\u87D3\u87ED\u87D8\u87E3\u87A4\u87D7\u87D9\u8801\u87F4\u87E8\u87DD\u8953\u894B\u894F\u894C\u8946\u8950\u8951\u8949\u8B2A\u8B27\u8B23\u8B33\u8B30\u8B35\u8B47\u8B2F\u8B3C\u8B3E\u8B31\u8B25\u8B37\u8B26\u8B36\u8B2E\u8B24\u8B3B\u8B3D\u8B3A\u8C42\u8C75\u8C99\u8C98\u8C97\u8CFE\u8D04\u8D02\u8D00\u8E5C\u8E62\u8E60\u8E57\u8E56\u8E5E\u8E65\u8E67"],["f140","\u8E5B\u8E5A\u8E61\u8E5D\u8E69\u8E54\u8F46\u8F47\u8F48\u8F4B\u9128\u913A\u913B\u913E\u91A8\u91A5\u91A7\u91AF\u91AA\u93B5\u938C\u9392\u93B7\u939B\u939D\u9389\u93A7\u938E\u93AA\u939E\u93A6\u9395\u9388\u9399\u939F\u938D\u93B1\u9391\u93B2\u93A4\u93A8\u93B4\u93A3\u93A5\u95D2\u95D3\u95D1\u96B3\u96D7\u96DA\u5DC2\u96DF\u96D8\u96DD\u9723\u9722\u9725\u97AC\u97AE\u97A8\u97AB\u97A4\u97AA"],["f1a1","\u97A2\u97A5\u97D7\u97D9\u97D6\u97D8\u97FA\u9850\u9851\u9852\u98B8\u9941\u993C\u993A\u9A0F\u9A0B\u9A09\u9A0D\u9A04\u9A11\u9A0A\u9A05\u9A07\u9A06\u9AC0\u9ADC\u9B08\u9B04\u9B05\u9B29\u9B35\u9B4A\u9B4C\u9B4B\u9BC7\u9BC6\u9BC3\u9BBF\u9BC1\u9BB5\u9BB8\u9BD3\u9BB6\u9BC4\u9BB9\u9BBD\u9D5C\u9D53\u9D4F\u9D4A\u9D5B\u9D4B\u9D59\u9D56\u9D4C\u9D57\u9D52\u9D54\u9D5F\u9D58\u9D5A\u9E8E\u9E8C\u9EDF\u9F01\u9F00\u9F16\u9F25\u9F2B\u9F2A\u9F29\u9F28\u9F4C\u9F55\u5134\u5135\u5296\u52F7\u53B4\u56AB\u56AD\u56A6\u56A7\u56AA\u56AC\u58DA\u58DD\u58DB\u5912\u5B3D\u5B3E\u5B3F\u5DC3\u5E70"],["f240","\u5FBF\u61FB\u6507\u6510\u650D\u6509\u650C\u650E\u6584\u65DE\u65DD\u66DE\u6AE7\u6AE0\u6ACC\u6AD1\u6AD9\u6ACB\u6ADF\u6ADC\u6AD0\u6AEB\u6ACF\u6ACD\u6ADE\u6B60\u6BB0\u6C0C\u7019\u7027\u7020\u7016\u702B\u7021\u7022\u7023\u7029\u7017\u7024\u701C\u702A\u720C\u720A\u7207\u7202\u7205\u72A5\u72A6\u72A4\u72A3\u72A1\u74CB\u74C5\u74B7\u74C3\u7516\u7660\u77C9\u77CA\u77C4\u77F1\u791D\u791B"],["f2a1","\u7921\u791C\u7917\u791E\u79B0\u7A67\u7A68\u7C33\u7C3C\u7C39\u7C2C\u7C3B\u7CEC\u7CEA\u7E76\u7E75\u7E78\u7E70\u7E77\u7E6F\u7E7A\u7E72\u7E74\u7E68\u7F4B\u7F4A\u7F83\u7F86\u7FB7\u7FFD\u7FFE\u8078\u81D7\u81D5\u8264\u8261\u8263\u85EB\u85F1\u85ED\u85D9\u85E1\u85E8\u85DA\u85D7\u85EC\u85F2\u85F8\u85D8\u85DF\u85E3\u85DC\u85D1\u85F0\u85E6\u85EF\u85DE\u85E2\u8800\u87FA\u8803\u87F6\u87F7\u8809\u880C\u880B\u8806\u87FC\u8808\u87FF\u880A\u8802\u8962\u895A\u895B\u8957\u8961\u895C\u8958\u895D\u8959\u8988\u89B7\u89B6\u89F6\u8B50\u8B48\u8B4A\u8B40\u8B53\u8B56\u8B54\u8B4B\u8B55"],["f340","\u8B51\u8B42\u8B52\u8B57\u8C43\u8C77\u8C76\u8C9A\u8D06\u8D07\u8D09\u8DAC\u8DAA\u8DAD\u8DAB\u8E6D\u8E78\u8E73\u8E6A\u8E6F\u8E7B\u8EC2\u8F52\u8F51\u8F4F\u8F50\u8F53\u8FB4\u9140\u913F\u91B0\u91AD\u93DE\u93C7\u93CF\u93C2\u93DA\u93D0\u93F9\u93EC\u93CC\u93D9\u93A9\u93E6\u93CA\u93D4\u93EE\u93E3\u93D5\u93C4\u93CE\u93C0\u93D2\u93E7\u957D\u95DA\u95DB\u96E1\u9729\u972B\u972C\u9728\u9726"],["f3a1","\u97B3\u97B7\u97B6\u97DD\u97DE\u97DF\u985C\u9859\u985D\u9857\u98BF\u98BD\u98BB\u98BE\u9948\u9947\u9943\u99A6\u99A7\u9A1A\u9A15\u9A25\u9A1D\u9A24\u9A1B\u9A22\u9A20\u9A27\u9A23\u9A1E\u9A1C\u9A14\u9AC2\u9B0B\u9B0A\u9B0E\u9B0C\u9B37\u9BEA\u9BEB\u9BE0\u9BDE\u9BE4\u9BE6\u9BE2\u9BF0\u9BD4\u9BD7\u9BEC\u9BDC\u9BD9\u9BE5\u9BD5\u9BE1\u9BDA\u9D77\u9D81\u9D8A\u9D84\u9D88\u9D71\u9D80\u9D78\u9D86\u9D8B\u9D8C\u9D7D\u9D6B\u9D74\u9D75\u9D70\u9D69\u9D85\u9D73\u9D7B\u9D82\u9D6F\u9D79\u9D7F\u9D87\u9D68\u9E94\u9E91\u9EC0\u9EFC\u9F2D\u9F40\u9F41\u9F4D\u9F56\u9F57\u9F58\u5337\u56B2"],["f440","\u56B5\u56B3\u58E3\u5B45\u5DC6\u5DC7\u5EEE\u5EEF\u5FC0\u5FC1\u61F9\u6517\u6516\u6515\u6513\u65DF\u66E8\u66E3\u66E4\u6AF3\u6AF0\u6AEA\u6AE8\u6AF9\u6AF1\u6AEE\u6AEF\u703C\u7035\u702F\u7037\u7034\u7031\u7042\u7038\u703F\u703A\u7039\u7040\u703B\u7033\u7041\u7213\u7214\u72A8\u737D\u737C\u74BA\u76AB\u76AA\u76BE\u76ED\u77CC\u77CE\u77CF\u77CD\u77F2\u7925\u7923\u7927\u7928\u7924\u7929"],["f4a1","\u79B2\u7A6E\u7A6C\u7A6D\u7AF7\u7C49\u7C48\u7C4A\u7C47\u7C45\u7CEE\u7E7B\u7E7E\u7E81\u7E80\u7FBA\u7FFF\u8079\u81DB\u81D9\u820B\u8268\u8269\u8622\u85FF\u8601\u85FE\u861B\u8600\u85F6\u8604\u8609\u8605\u860C\u85FD\u8819\u8810\u8811\u8817\u8813\u8816\u8963\u8966\u89B9\u89F7\u8B60\u8B6A\u8B5D\u8B68\u8B63\u8B65\u8B67\u8B6D\u8DAE\u8E86\u8E88\u8E84\u8F59\u8F56\u8F57\u8F55\u8F58\u8F5A\u908D\u9143\u9141\u91B7\u91B5\u91B2\u91B3\u940B\u9413\u93FB\u9420\u940F\u9414\u93FE\u9415\u9410\u9428\u9419\u940D\u93F5\u9400\u93F7\u9407\u940E\u9416\u9412\u93FA\u9409\u93F8\u940A\u93FF"],["f540","\u93FC\u940C\u93F6\u9411\u9406\u95DE\u95E0\u95DF\u972E\u972F\u97B9\u97BB\u97FD\u97FE\u9860\u9862\u9863\u985F\u98C1\u98C2\u9950\u994E\u9959\u994C\u994B\u9953\u9A32\u9A34\u9A31\u9A2C\u9A2A\u9A36\u9A29\u9A2E\u9A38\u9A2D\u9AC7\u9ACA\u9AC6\u9B10\u9B12\u9B11\u9C0B\u9C08\u9BF7\u9C05\u9C12\u9BF8\u9C40\u9C07\u9C0E\u9C06\u9C17\u9C14\u9C09\u9D9F\u9D99\u9DA4\u9D9D\u9D92\u9D98\u9D90\u9D9B"],["f5a1","\u9DA0\u9D94\u9D9C\u9DAA\u9D97\u9DA1\u9D9A\u9DA2\u9DA8\u9D9E\u9DA3\u9DBF\u9DA9\u9D96\u9DA6\u9DA7\u9E99\u9E9B\u9E9A\u9EE5\u9EE4\u9EE7\u9EE6\u9F30\u9F2E\u9F5B\u9F60\u9F5E\u9F5D\u9F59\u9F91\u513A\u5139\u5298\u5297\u56C3\u56BD\u56BE\u5B48\u5B47\u5DCB\u5DCF\u5EF1\u61FD\u651B\u6B02\u6AFC\u6B03\u6AF8\u6B00\u7043\u7044\u704A\u7048\u7049\u7045\u7046\u721D\u721A\u7219\u737E\u7517\u766A\u77D0\u792D\u7931\u792F\u7C54\u7C53\u7CF2\u7E8A\u7E87\u7E88\u7E8B\u7E86\u7E8D\u7F4D\u7FBB\u8030\u81DD\u8618\u862A\u8626\u861F\u8623\u861C\u8619\u8627\u862E\u8621\u8620\u8629\u861E\u8625"],["f640","\u8829\u881D\u881B\u8820\u8824\u881C\u882B\u884A\u896D\u8969\u896E\u896B\u89FA\u8B79\u8B78\u8B45\u8B7A\u8B7B\u8D10\u8D14\u8DAF\u8E8E\u8E8C\u8F5E\u8F5B\u8F5D\u9146\u9144\u9145\u91B9\u943F\u943B\u9436\u9429\u943D\u943C\u9430\u9439\u942A\u9437\u942C\u9440\u9431\u95E5\u95E4\u95E3\u9735\u973A\u97BF\u97E1\u9864\u98C9\u98C6\u98C0\u9958\u9956\u9A39\u9A3D\u9A46\u9A44\u9A42\u9A41\u9A3A"],["f6a1","\u9A3F\u9ACD\u9B15\u9B17\u9B18\u9B16\u9B3A\u9B52\u9C2B\u9C1D\u9C1C\u9C2C\u9C23\u9C28\u9C29\u9C24\u9C21\u9DB7\u9DB6\u9DBC\u9DC1\u9DC7\u9DCA\u9DCF\u9DBE\u9DC5\u9DC3\u9DBB\u9DB5\u9DCE\u9DB9\u9DBA\u9DAC\u9DC8\u9DB1\u9DAD\u9DCC\u9DB3\u9DCD\u9DB2\u9E7A\u9E9C\u9EEB\u9EEE\u9EED\u9F1B\u9F18\u9F1A\u9F31\u9F4E\u9F65\u9F64\u9F92\u4EB9\u56C6\u56C5\u56CB\u5971\u5B4B\u5B4C\u5DD5\u5DD1\u5EF2\u6521\u6520\u6526\u6522\u6B0B\u6B08\u6B09\u6C0D\u7055\u7056\u7057\u7052\u721E\u721F\u72A9\u737F\u74D8\u74D5\u74D9\u74D7\u766D\u76AD\u7935\u79B4\u7A70\u7A71\u7C57\u7C5C\u7C59\u7C5B\u7C5A"],["f740","\u7CF4\u7CF1\u7E91\u7F4F\u7F87\u81DE\u826B\u8634\u8635\u8633\u862C\u8632\u8636\u882C\u8828\u8826\u882A\u8825\u8971\u89BF\u89BE\u89FB\u8B7E\u8B84\u8B82\u8B86\u8B85\u8B7F\u8D15\u8E95\u8E94\u8E9A\u8E92\u8E90\u8E96\u8E97\u8F60\u8F62\u9147\u944C\u9450\u944A\u944B\u944F\u9447\u9445\u9448\u9449\u9446\u973F\u97E3\u986A\u9869\u98CB\u9954\u995B\u9A4E\u9A53\u9A54\u9A4C\u9A4F\u9A48\u9A4A"],["f7a1","\u9A49\u9A52\u9A50\u9AD0\u9B19\u9B2B\u9B3B\u9B56\u9B55\u9C46\u9C48\u9C3F\u9C44\u9C39\u9C33\u9C41\u9C3C\u9C37\u9C34\u9C32\u9C3D\u9C36\u9DDB\u9DD2\u9DDE\u9DDA\u9DCB\u9DD0\u9DDC\u9DD1\u9DDF\u9DE9\u9DD9\u9DD8\u9DD6\u9DF5\u9DD5\u9DDD\u9EB6\u9EF0\u9F35\u9F33\u9F32\u9F42\u9F6B\u9F95\u9FA2\u513D\u5299\u58E8\u58E7\u5972\u5B4D\u5DD8\u882F\u5F4F\u6201\u6203\u6204\u6529\u6525\u6596\u66EB\u6B11\u6B12\u6B0F\u6BCA\u705B\u705A\u7222\u7382\u7381\u7383\u7670\u77D4\u7C67\u7C66\u7E95\u826C\u863A\u8640\u8639\u863C\u8631\u863B\u863E\u8830\u8832\u882E\u8833\u8976\u8974\u8973\u89FE"],["f840","\u8B8C\u8B8E\u8B8B\u8B88\u8C45\u8D19\u8E98\u8F64\u8F63\u91BC\u9462\u9455\u945D\u9457\u945E\u97C4\u97C5\u9800\u9A56\u9A59\u9B1E\u9B1F\u9B20\u9C52\u9C58\u9C50\u9C4A\u9C4D\u9C4B\u9C55\u9C59\u9C4C\u9C4E\u9DFB\u9DF7\u9DEF\u9DE3\u9DEB\u9DF8\u9DE4\u9DF6\u9DE1\u9DEE\u9DE6\u9DF2\u9DF0\u9DE2\u9DEC\u9DF4\u9DF3\u9DE8\u9DED\u9EC2\u9ED0\u9EF2\u9EF3\u9F06\u9F1C\u9F38\u9F37\u9F36\u9F43\u9F4F"],["f8a1","\u9F71\u9F70\u9F6E\u9F6F\u56D3\u56CD\u5B4E\u5C6D\u652D\u66ED\u66EE\u6B13\u705F\u7061\u705D\u7060\u7223\u74DB\u74E5\u77D5\u7938\u79B7\u79B6\u7C6A\u7E97\u7F89\u826D\u8643\u8838\u8837\u8835\u884B\u8B94\u8B95\u8E9E\u8E9F\u8EA0\u8E9D\u91BE\u91BD\u91C2\u946B\u9468\u9469\u96E5\u9746\u9743\u9747\u97C7\u97E5\u9A5E\u9AD5\u9B59\u9C63\u9C67\u9C66\u9C62\u9C5E\u9C60\u9E02\u9DFE\u9E07\u9E03\u9E06\u9E05\u9E00\u9E01\u9E09\u9DFF\u9DFD\u9E04\u9EA0\u9F1E\u9F46\u9F74\u9F75\u9F76\u56D4\u652E\u65B8\u6B18\u6B19\u6B17\u6B1A\u7062\u7226\u72AA\u77D8\u77D9\u7939\u7C69\u7C6B\u7CF6\u7E9A"],["f940","\u7E98\u7E9B\u7E99\u81E0\u81E1\u8646\u8647\u8648\u8979\u897A\u897C\u897B\u89FF\u8B98\u8B99\u8EA5\u8EA4\u8EA3\u946E\u946D\u946F\u9471\u9473\u9749\u9872\u995F\u9C68\u9C6E\u9C6D\u9E0B\u9E0D\u9E10\u9E0F\u9E12\u9E11\u9EA1\u9EF5\u9F09\u9F47\u9F78\u9F7B\u9F7A\u9F79\u571E\u7066\u7C6F\u883C\u8DB2\u8EA6\u91C3\u9474\u9478\u9476\u9475\u9A60\u9C74\u9C73\u9C71\u9C75\u9E14\u9E13\u9EF6\u9F0A"],["f9a1","\u9FA4\u7068\u7065\u7CF7\u866A\u883E\u883D\u883F\u8B9E\u8C9C\u8EA9\u8EC9\u974B\u9873\u9874\u98CC\u9961\u99AB\u9A64\u9A66\u9A67\u9B24\u9E15\u9E17\u9F48\u6207\u6B1E\u7227\u864C\u8EA8\u9482\u9480\u9481\u9A69\u9A68\u9B2E\u9E19\u7229\u864B\u8B9F\u9483\u9C79\u9EB7\u7675\u9A6B\u9C7A\u9E1D\u7069\u706A\u9EA4\u9F7E\u9F49\u9F98\u7881\u92B9\u88CF\u58BB\u6052\u7CA7\u5AFA\u2554\u2566\u2557\u2560\u256C\u2563\u255A\u2569\u255D\u2552\u2564\u2555\u255E\u256A\u2561\u2558\u2567\u255B\u2553\u2565\u2556\u255F\u256B\u2562\u2559\u2568\u255C\u2551\u2550\u256D\u256E\u2570\u256F\u2593"]]});var WR=h((TOe,wY)=>{wY.exports=[["8740","\u43F0\u4C32\u4603\u45A6\u4578\u{27267}\u4D77\u45B3\u{27CB1}\u4CE2\u{27CC5}\u3B95\u4736\u4744\u4C47\u4C40\u{242BF}\u{23617}\u{27352}\u{26E8B}\u{270D2}\u4C57\u{2A351}\u474F\u45DA\u4C85\u{27C6C}\u4D07\u4AA4\u46A1\u{26B23}\u7225\u{25A54}\u{21A63}\u{23E06}\u{23F61}\u664D\u56FB"],["8767","\u7D95\u591D\u{28BB9}\u3DF4\u9734\u{27BEF}\u5BDB\u{21D5E}\u5AA4\u3625\u{29EB0}\u5AD1\u5BB7\u5CFC\u676E\u8593\u{29945}\u7461\u749D\u3875\u{21D53}\u{2369E}\u{26021}\u3EEC"],["87a1","\u{258DE}\u3AF5\u7AFC\u9F97\u{24161}\u{2890D}\u{231EA}\u{20A8A}\u{2325E}\u430A\u8484\u9F96\u942F\u4930\u8613\u5896\u974A\u9218\u79D0\u7A32\u6660\u6A29\u889D\u744C\u7BC5\u6782\u7A2C\u524F\u9046\u34E6\u73C4\u{25DB9}\u74C6\u9FC7\u57B3\u492F\u544C\u4131\u{2368E}\u5818\u7A72\u{27B65}\u8B8F\u46AE\u{26E88}\u4181\u{25D99}\u7BAE\u{224BC}\u9FC8\u{224C1}\u{224C9}\u{224CC}\u9FC9\u8504\u{235BB}\u40B4\u9FCA\u44E1\u{2ADFF}\u62C1\u706E\u9FCB"],["8840","\u31C0",4,"\u{2010C}\u31C5\u{200D1}\u{200CD}\u31C6\u31C7\u{200CB}\u{21FE8}\u31C8\u{200CA}\u31C9\u31CA\u31CB\u31CC\u{2010E}\u31CD\u31CE\u0100\xC1\u01CD\xC0\u0112\xC9\u011A\xC8\u014C\xD3\u01D1\xD2\u0FFF\xCA\u0304\u1EBE\u0FFF\xCA\u030C\u1EC0\xCA\u0101\xE1\u01CE\xE0\u0251\u0113\xE9\u011B\xE8\u012B\xED\u01D0\xEC\u014D\xF3\u01D2\xF2\u016B\xFA\u01D4\xF9\u01D6\u01D8\u01DA"],["88a1","\u01DC\xFC\u0FFF\xEA\u0304\u1EBF\u0FFF\xEA\u030C\u1EC1\xEA\u0261\u23DA\u23DB"],["8940","\u{2A3A9}\u{21145}"],["8943","\u650A"],["8946","\u4E3D\u6EDD\u9D4E\u91DF"],["894c","\u{27735}\u6491\u4F1A\u4F28\u4FA8\u5156\u5174\u519C\u51E4\u52A1\u52A8\u533B\u534E\u53D1\u53D8\u56E2\u58F0\u5904\u5907\u5932\u5934\u5B66\u5B9E\u5B9F\u5C9A\u5E86\u603B\u6589\u67FE\u6804\u6865\u6D4E\u70BC\u7535\u7EA4\u7EAC\u7EBA\u7EC7\u7ECF\u7EDF\u7F06\u7F37\u827A\u82CF\u836F\u89C6\u8BBE\u8BE2\u8F66\u8F67\u8F6E"],["89a1","\u7411\u7CFC\u7DCD\u6946\u7AC9\u5227"],["89ab","\u918C\u78B8\u915E\u80BC"],["89b0","\u8D0B\u80F6\u{209E7}"],["89b5","\u809F\u9EC7\u4CCD\u9DC9\u9E0C\u4C3E\u{29DF6}\u{2700E}\u9E0A\u{2A133}\u35C1"],["89c1","\u6E9A\u823E\u7519"],["89c5","\u4911\u9A6C\u9A8F\u9F99\u7987\u{2846C}\u{21DCA}\u{205D0}\u{22AE6}\u4E24\u4E81\u4E80\u4E87\u4EBF\u4EEB\u4F37\u344C\u4FBD\u3E48\u5003\u5088\u347D\u3493\u34A5\u5186\u5905\u51DB\u51FC\u5205\u4E89\u5279\u5290\u5327\u35C7\u53A9\u3551\u53B0\u3553\u53C2\u5423\u356D\u3572\u3681\u5493\u54A3\u54B4\u54B9\u54D0\u54EF\u5518\u5523\u5528\u3598\u553F\u35A5\u35BF\u55D7\u35C5"],["8a40","\u{27D84}\u5525"],["8a43","\u{20C42}\u{20D15}\u{2512B}\u5590\u{22CC6}\u39EC\u{20341}\u8E46\u{24DB8}\u{294E5}\u4053\u{280BE}\u777A\u{22C38}\u3A34\u47D5\u{2815D}\u{269F2}\u{24DEA}\u64DD\u{20D7C}\u{20FB4}\u{20CD5}\u{210F4}\u648D\u8E7E\u{20E96}\u{20C0B}\u{20F64}\u{22CA9}\u{28256}\u{244D3}"],["8a64","\u{20D46}\u{29A4D}\u{280E9}\u47F4\u{24EA7}\u{22CC2}\u9AB2\u3A67\u{295F4}\u3FED\u3506\u{252C7}\u{297D4}\u{278C8}\u{22D44}\u9D6E\u9815"],["8a76","\u43D9\u{260A5}\u64B4\u54E3\u{22D4C}\u{22BCA}\u{21077}\u39FB\u{2106F}"],["8aa1","\u{266DA}\u{26716}\u{279A0}\u64EA\u{25052}\u{20C43}\u8E68\u{221A1}\u{28B4C}\u{20731}"],["8aac","\u480B\u{201A9}\u3FFA\u5873\u{22D8D}"],["8ab2","\u{245C8}\u{204FC}\u{26097}\u{20F4C}\u{20D96}\u5579\u40BB\u43BA"],["8abb","\u4AB4\u{22A66}\u{2109D}\u81AA\u98F5\u{20D9C}\u6379\u39FE\u{22775}\u8DC0\u56A1\u647C\u3E43"],["8ac9","\u{2A601}\u{20E09}\u{22ACF}\u{22CC9}"],["8ace","\u{210C8}\u{239C2}\u3992\u3A06\u{2829B}\u3578\u{25E49}\u{220C7}\u5652\u{20F31}\u{22CB2}\u{29720}\u34BC\u6C3D\u{24E3B}"],["8adf","\u{27574}\u{22E8B}\u{22208}\u{2A65B}\u{28CCD}\u{20E7A}\u{20C34}\u{2681C}\u7F93\u{210CF}\u{22803}\u{22939}\u35FB\u{251E3}\u{20E8C}\u{20F8D}\u{20EAA}\u3F93\u{20F30}\u{20D47}\u{2114F}\u{20E4C}"],["8af6","\u{20EAB}\u{20BA9}\u{20D48}\u{210C0}\u{2113D}\u3FF9\u{22696}\u6432\u{20FAD}"],["8b40","\u{233F4}\u{27639}\u{22BCE}\u{20D7E}\u{20D7F}\u{22C51}\u{22C55}\u3A18\u{20E98}\u{210C7}\u{20F2E}\u{2A632}\u{26B50}\u{28CD2}\u{28D99}\u{28CCA}\u95AA\u54CC\u82C4\u55B9"],["8b55","\u{29EC3}\u9C26\u9AB6\u{2775E}\u{22DEE}\u7140\u816D\u80EC\u5C1C\u{26572}\u8134\u3797\u535F\u{280BD}\u91B6\u{20EFA}\u{20E0F}\u{20E77}\u{20EFB}\u35DD\u{24DEB}\u3609\u{20CD6}\u56AF\u{227B5}\u{210C9}\u{20E10}\u{20E78}\u{21078}\u{21148}\u{28207}\u{21455}\u{20E79}\u{24E50}\u{22DA4}\u5A54\u{2101D}\u{2101E}\u{210F5}\u{210F6}\u579C\u{20E11}"],["8ba1","\u{27694}\u{282CD}\u{20FB5}\u{20E7B}\u{2517E}\u3703\u{20FB6}\u{21180}\u{252D8}\u{2A2BD}\u{249DA}\u{2183A}\u{24177}\u{2827C}\u5899\u5268\u361A\u{2573D}\u7BB2\u5B68\u4800\u4B2C\u9F27\u49E7\u9C1F\u9B8D\u{25B74}\u{2313D}\u55FB\u35F2\u5689\u4E28\u5902\u{21BC1}\u{2F878}\u9751\u{20086}\u4E5B\u4EBB\u353E\u5C23\u5F51\u5FC4\u38FA\u624C\u6535\u6B7A\u6C35\u6C3A\u706C\u722B\u4E2C\u72AD\u{248E9}\u7F52\u793B\u7CF9\u7F53\u{2626A}\u34C1"],["8bde","\u{2634B}\u8002\u8080\u{26612}\u{26951}\u535D\u8864\u89C1\u{278B2}\u8BA0\u8D1D\u9485\u9578\u957F\u95E8\u{28E0F}\u97E6\u9875\u98CE\u98DE\u9963\u{29810}\u9C7C\u9E1F\u9EC4\u6B6F\uF907\u4E37\u{20087}\u961D\u6237\u94A2"],["8c40","\u503B\u6DFE\u{29C73}\u9FA6\u3DC9\u888F\u{2414E}\u7077\u5CF5\u4B20\u{251CD}\u3559\u{25D30}\u6122\u{28A32}\u8FA7\u91F6\u7191\u6719\u73BA\u{23281}\u{2A107}\u3C8B\u{21980}\u4B10\u78E4\u7402\u51AE\u{2870F}\u4009\u6A63\u{2A2BA}\u4223\u860F\u{20A6F}\u7A2A\u{29947}\u{28AEA}\u9755\u704D\u5324\u{2207E}\u93F4\u76D9\u{289E3}\u9FA7\u77DD\u4EA3\u4FF0\u50BC\u4E2F\u4F17\u9FA8\u5434\u7D8B\u5892\u58D0\u{21DB6}\u5E92\u5E99\u5FC2\u{22712}\u658B"],["8ca1","\u{233F9}\u6919\u6A43\u{23C63}\u6CFF"],["8ca7","\u7200\u{24505}\u738C\u3EDB\u{24A13}\u5B15\u74B9\u8B83\u{25CA4}\u{25695}\u7A93\u7BEC\u7CC3\u7E6C\u82F8\u8597\u9FA9\u8890\u9FAA\u8EB9\u9FAB\u8FCF\u855F\u99E0\u9221\u9FAC\u{28DB9}\u{2143F}\u4071\u42A2\u5A1A"],["8cc9","\u9868\u676B\u4276\u573D"],["8cce","\u85D6\u{2497B}\u82BF\u{2710D}\u4C81\u{26D74}\u5D7B\u{26B15}\u{26FBE}\u9FAD\u9FAE\u5B96\u9FAF\u66E7\u7E5B\u6E57\u79CA\u3D88\u44C3\u{23256}\u{22796}\u439A\u4536"],["8ce6","\u5CD5\u{23B1A}\u8AF9\u5C78\u3D12\u{23551}\u5D78\u9FB2\u7157\u4558\u{240EC}\u{21E23}\u4C77\u3978\u344A\u{201A4}\u{26C41}\u8ACC\u4FB4\u{20239}\u59BF\u816C\u9856\u{298FA}\u5F3B"],["8d40","\u{20B9F}"],["8d42","\u{221C1}\u{2896D}\u4102\u46BB\u{29079}\u3F07\u9FB3\u{2A1B5}\u40F8\u37D6\u46F7\u{26C46}\u417C\u{286B2}\u{273FF}\u456D\u38D4\u{2549A}\u4561\u451B\u4D89\u4C7B\u4D76\u45EA\u3FC8\u{24B0F}\u3661\u44DE\u44BD\u41ED\u5D3E\u5D48\u5D56\u3DFC\u380F\u5DA4\u5DB9\u3820\u3838\u5E42\u5EBD\u5F25\u5F83\u3908\u3914\u393F\u394D\u60D7\u613D\u5CE5\u3989\u61B7\u61B9\u61CF\u39B8\u622C\u6290\u62E5\u6318\u39F8\u56B1"],["8da1","\u3A03\u63E2\u63FB\u6407\u645A\u3A4B\u64C0\u5D15\u5621\u9F9F\u3A97\u6586\u3ABD\u65FF\u6653\u3AF2\u6692\u3B22\u6716\u3B42\u67A4\u6800\u3B58\u684A\u6884\u3B72\u3B71\u3B7B\u6909\u6943\u725C\u6964\u699F\u6985\u3BBC\u69D6\u3BDD\u6A65\u6A74\u6A71\u6A82\u3BEC\u6A99\u3BF2\u6AAB\u6AB5\u6AD4\u6AF6\u6B81\u6BC1\u6BEA\u6C75\u6CAA\u3CCB\u6D02\u6D06\u6D26\u6D81\u3CEF\u6DA4\u6DB1\u6E15\u6E18\u6E29\u6E86\u{289C0}\u6EBB\u6EE2\u6EDA\u9F7F\u6EE8\u6EE9\u6F24\u6F34\u3D46\u{23F41}\u6F81\u6FBE\u3D6A\u3D75\u71B7\u5C99\u3D8A\u702C\u3D91\u7050\u7054\u706F\u707F\u7089\u{20325}\u43C1\u35F1\u{20ED8}"],["8e40","\u{23ED7}\u57BE\u{26ED3}\u713E\u{257E0}\u364E\u69A2\u{28BE9}\u5B74\u7A49\u{258E1}\u{294D9}\u7A65\u7A7D\u{259AC}\u7ABB\u7AB0\u7AC2\u7AC3\u71D1\u{2648D}\u41CA\u7ADA\u7ADD\u7AEA\u41EF\u54B2\u{25C01}\u7B0B\u7B55\u7B29\u{2530E}\u{25CFE}\u7BA2\u7B6F\u839C\u{25BB4}\u{26C7F}\u7BD0\u8421\u7B92\u7BB8\u{25D20}\u3DAD\u{25C65}\u8492\u7BFA\u7C06\u7C35\u{25CC1}\u7C44\u7C83\u{24882}\u7CA6\u667D\u{24578}\u7CC9\u7CC7\u7CE6\u7C74\u7CF3\u7CF5\u7CCE"],["8ea1","\u7E67\u451D\u{26E44}\u7D5D\u{26ED6}\u748D\u7D89\u7DAB\u7135\u7DB3\u7DD2\u{24057}\u{26029}\u7DE4\u3D13\u7DF5\u{217F9}\u7DE5\u{2836D}\u7E1D\u{26121}\u{2615A}\u7E6E\u7E92\u432B\u946C\u7E27\u7F40\u7F41\u7F47\u7936\u{262D0}\u99E1\u7F97\u{26351}\u7FA3\u{21661}\u{20068}\u455C\u{23766}\u4503\u{2833A}\u7FFA\u{26489}\u8005\u8008\u801D\u8028\u802F\u{2A087}\u{26CC3}\u803B\u803C\u8061\u{22714}\u4989\u{26626}\u{23DE3}\u{266E8}\u6725\u80A7\u{28A48}\u8107\u811A\u58B0\u{226F6}\u6C7F\u{26498}\u{24FB8}\u64E7\u{2148A}\u8218\u{2185E}\u6A53\u{24A65}\u{24A95}\u447A\u8229\u{20B0D}\u{26A52}\u{23D7E}\u4FF9\u{214FD}\u84E2\u8362\u{26B0A}\u{249A7}\u{23530}\u{21773}\u{23DF8}\u82AA\u691B\u{2F994}\u41DB"],["8f40","\u854B\u82D0\u831A\u{20E16}\u{217B4}\u36C1\u{2317D}\u{2355A}\u827B\u82E2\u8318\u{23E8B}\u{26DA3}\u{26B05}\u{26B97}\u{235CE}\u3DBF\u831D\u55EC\u8385\u450B\u{26DA5}\u83AC\u83C1\u83D3\u347E\u{26ED4}\u6A57\u855A\u3496\u{26E42}\u{22EEF}\u8458\u{25BE4}\u8471\u3DD3\u44E4\u6AA7\u844A\u{23CB5}\u7958\u84A8\u{26B96}\u{26E77}\u{26E43}\u84DE\u840F\u8391\u44A0\u8493\u84E4\u{25C91}\u4240\u{25CC0}\u4543\u8534\u5AF2\u{26E99}\u4527\u8573\u4516\u67BF\u8616"],["8fa1","\u{28625}\u{2863B}\u85C1\u{27088}\u8602\u{21582}\u{270CD}\u{2F9B2}\u456A\u8628\u3648\u{218A2}\u53F7\u{2739A}\u867E\u8771\u{2A0F8}\u87EE\u{22C27}\u87B1\u87DA\u880F\u5661\u866C\u6856\u460F\u8845\u8846\u{275E0}\u{23DB9}\u{275E4}\u885E\u889C\u465B\u88B4\u88B5\u63C1\u88C5\u7777\u{2770F}\u8987\u898A\u89A6\u89A9\u89A7\u89BC\u{28A25}\u89E7\u{27924}\u{27ABD}\u8A9C\u7793\u91FE\u8A90\u{27A59}\u7AE9\u{27B3A}\u{23F8F}\u4713\u{27B38}\u717C\u8B0C\u8B1F\u{25430}\u{25565}\u8B3F\u8B4C\u8B4D\u8AA9\u{24A7A}\u8B90\u8B9B\u8AAF\u{216DF}\u4615\u884F\u8C9B\u{27D54}\u{27D8F}\u{2F9D4}\u3725\u{27D53}\u8CD6\u{27D98}\u{27DBD}\u8D12\u8D03\u{21910}\u8CDB\u705C\u8D11\u{24CC9}\u3ED0\u8D77"],["9040","\u8DA9\u{28002}\u{21014}\u{2498A}\u3B7C\u{281BC}\u{2710C}\u7AE7\u8EAD\u8EB6\u8EC3\u92D4\u8F19\u8F2D\u{28365}\u{28412}\u8FA5\u9303\u{2A29F}\u{20A50}\u8FB3\u492A\u{289DE}\u{2853D}\u{23DBB}\u5EF8\u{23262}\u8FF9\u{2A014}\u{286BC}\u{28501}\u{22325}\u3980\u{26ED7}\u9037\u{2853C}\u{27ABE}\u9061\u{2856C}\u{2860B}\u90A8\u{28713}\u90C4\u{286E6}\u90AE\u90FD\u9167\u3AF0\u91A9\u91C4\u7CAC\u{28933}\u{21E89}\u920E\u6C9F\u9241\u9262\u{255B9}\u92B9\u{28AC6}\u{23C9B}\u{28B0C}\u{255DB}"],["90a1","\u{20D31}\u932C\u936B\u{28AE1}\u{28BEB}\u708F\u5AC3\u{28AE2}\u{28AE5}\u4965\u9244\u{28BEC}\u{28C39}\u{28BFF}\u9373\u945B\u8EBC\u9585\u95A6\u9426\u95A0\u6FF6\u42B9\u{2267A}\u{286D8}\u{2127C}\u{23E2E}\u49DF\u6C1C\u967B\u9696\u416C\u96A3\u{26ED5}\u61DA\u96B6\u78F5\u{28AE0}\u96BD\u53CC\u49A1\u{26CB8}\u{20274}\u{26410}\u{290AF}\u{290E5}\u{24AD1}\u{21915}\u{2330A}\u9731\u8642\u9736\u4A0F\u453D\u4585\u{24AE9}\u7075\u5B41\u971B\u975C\u{291D5}\u9757\u5B4A\u{291EB}\u975F\u9425\u50D0\u{230B7}\u{230BC}\u9789\u979F\u97B1\u97BE\u97C0\u97D2\u97E0\u{2546C}\u97EE\u741C\u{29433}\u97FF\u97F5\u{2941D}\u{2797A}\u4AD1\u9834\u9833\u984B\u9866\u3B0E\u{27175}\u3D51\u{20630}\u{2415C}"],["9140","\u{25706}\u98CA\u98B7\u98C8\u98C7\u4AFF\u{26D27}\u{216D3}\u55B0\u98E1\u98E6\u98EC\u9378\u9939\u{24A29}\u4B72\u{29857}\u{29905}\u99F5\u9A0C\u9A3B\u9A10\u9A58\u{25725}\u36C4\u{290B1}\u{29BD5}\u9AE0\u9AE2\u{29B05}\u9AF4\u4C0E\u9B14\u9B2D\u{28600}\u5034\u9B34\u{269A8}\u38C3\u{2307D}\u9B50\u9B40\u{29D3E}\u5A45\u{21863}\u9B8E\u{2424B}\u9C02\u9BFF\u9C0C\u{29E68}\u9DD4\u{29FB7}\u{2A192}\u{2A1AB}\u{2A0E1}\u{2A123}\u{2A1DF}\u9D7E\u9D83\u{2A134}\u9E0E\u6888"],["91a1","\u9DC4\u{2215B}\u{2A193}\u{2A220}\u{2193B}\u{2A233}\u9D39\u{2A0B9}\u{2A2B4}\u9E90\u9E95\u9E9E\u9EA2\u4D34\u9EAA\u9EAF\u{24364}\u9EC1\u3B60\u39E5\u3D1D\u4F32\u37BE\u{28C2B}\u9F02\u9F08\u4B96\u9424\u{26DA2}\u9F17\u9F16\u9F39\u569F\u568A\u9F45\u99B8\u{2908B}\u97F2\u847F\u9F62\u9F69\u7ADC\u9F8E\u7216\u4BBE\u{24975}\u{249BB}\u7177\u{249F8}\u{24348}\u{24A51}\u739E\u{28BDA}\u{218FA}\u799F\u{2897E}\u{28E36}\u9369\u93F3\u{28A44}\u92EC\u9381\u93CB\u{2896C}\u{244B9}\u7217\u3EEB\u7772\u7A43\u70D0\u{24473}\u{243F8}\u717E\u{217EF}\u70A3\u{218BE}\u{23599}\u3EC7\u{21885}\u{2542F}\u{217F8}\u3722\u{216FB}\u{21839}\u36E1\u{21774}\u{218D1}\u{25F4B}\u3723\u{216C0}\u575B\u{24A25}\u{213FE}\u{212A8}"],["9240","\u{213C6}\u{214B6}\u8503\u{236A6}\u8503\u8455\u{24994}\u{27165}\u{23E31}\u{2555C}\u{23EFB}\u{27052}\u44F4\u{236EE}\u{2999D}\u{26F26}\u67F9\u3733\u3C15\u3DE7\u586C\u{21922}\u6810\u4057\u{2373F}\u{240E1}\u{2408B}\u{2410F}\u{26C21}\u54CB\u569E\u{266B1}\u5692\u{20FDF}\u{20BA8}\u{20E0D}\u93C6\u{28B13}\u939C\u4EF8\u512B\u3819\u{24436}\u4EBC\u{20465}\u{2037F}\u4F4B\u4F8A\u{25651}\u5A68\u{201AB}\u{203CB}\u3999\u{2030A}\u{20414}\u3435\u4F29\u{202C0}\u{28EB3}\u{20275}\u8ADA\u{2020C}\u4E98"],["92a1","\u50CD\u510D\u4FA2\u4F03\u{24A0E}\u{23E8A}\u4F42\u502E\u506C\u5081\u4FCC\u4FE5\u5058\u50FC\u5159\u515B\u515D\u515E\u6E76\u{23595}\u{23E39}\u{23EBF}\u6D72\u{21884}\u{23E89}\u51A8\u51C3\u{205E0}\u44DD\u{204A3}\u{20492}\u{20491}\u8D7A\u{28A9C}\u{2070E}\u5259\u52A4\u{20873}\u52E1\u936E\u467A\u718C\u{2438C}\u{20C20}\u{249AC}\u{210E4}\u69D1\u{20E1D}\u7479\u3EDE\u7499\u7414\u7456\u7398\u4B8E\u{24ABC}\u{2408D}\u53D0\u3584\u720F\u{240C9}\u55B4\u{20345}\u54CD\u{20BC6}\u571D\u925D\u96F4\u9366\u57DD\u578D\u577F\u363E\u58CB\u5A99\u{28A46}\u{216FA}\u{2176F}\u{21710}\u5A2C\u59B8\u928F\u5A7E\u5ACF\u5A12\u{25946}\u{219F3}\u{21861}\u{24295}\u36F5\u6D05\u7443\u5A21\u{25E83}"],["9340","\u5A81\u{28BD7}\u{20413}\u93E0\u748C\u{21303}\u7105\u4972\u9408\u{289FB}\u93BD\u37A0\u5C1E\u5C9E\u5E5E\u5E48\u{21996}\u{2197C}\u{23AEE}\u5ECD\u5B4F\u{21903}\u{21904}\u3701\u{218A0}\u36DD\u{216FE}\u36D3\u812A\u{28A47}\u{21DBA}\u{23472}\u{289A8}\u5F0C\u5F0E\u{21927}\u{217AB}\u5A6B\u{2173B}\u5B44\u8614\u{275FD}\u8860\u607E\u{22860}\u{2262B}\u5FDB\u3EB8\u{225AF}\u{225BE}\u{29088}\u{26F73}\u61C0\u{2003E}\u{20046}\u{2261B}\u6199\u6198\u6075\u{22C9B}\u{22D07}\u{246D4}\u{2914D}"],["93a1","\u6471\u{24665}\u{22B6A}\u3A29\u{22B22}\u{23450}\u{298EA}\u{22E78}\u6337\u{2A45B}\u64B6\u6331\u63D1\u{249E3}\u{22D67}\u62A4\u{22CA1}\u643B\u656B\u6972\u3BF4\u{2308E}\u{232AD}\u{24989}\u{232AB}\u550D\u{232E0}\u{218D9}\u{2943F}\u66CE\u{23289}\u{231B3}\u3AE0\u4190\u{25584}\u{28B22}\u{2558F}\u{216FC}\u{2555B}\u{25425}\u78EE\u{23103}\u{2182A}\u{23234}\u3464\u{2320F}\u{23182}\u{242C9}\u668E\u{26D24}\u666B\u4B93\u6630\u{27870}\u{21DEB}\u6663\u{232D2}\u{232E1}\u661E\u{25872}\u38D1\u{2383A}\u{237BC}\u3B99\u{237A2}\u{233FE}\u74D0\u3B96\u678F\u{2462A}\u68B6\u681E\u3BC4\u6ABE\u3863\u{237D5}\u{24487}\u6A33\u6A52\u6AC9\u6B05\u{21912}\u6511\u6898\u6A4C\u3BD7\u6A7A\u6B57\u{23FC0}\u{23C9A}\u93A0\u92F2\u{28BEA}\u{28ACB}"],["9440","\u9289\u{2801E}\u{289DC}\u9467\u6DA5\u6F0B\u{249EC}\u6D67\u{23F7F}\u3D8F\u6E04\u{2403C}\u5A3D\u6E0A\u5847\u6D24\u7842\u713B\u{2431A}\u{24276}\u70F1\u7250\u7287\u7294\u{2478F}\u{24725}\u5179\u{24AA4}\u{205EB}\u747A\u{23EF8}\u{2365F}\u{24A4A}\u{24917}\u{25FE1}\u3F06\u3EB1\u{24ADF}\u{28C23}\u{23F35}\u60A7\u3EF3\u74CC\u743C\u9387\u7437\u449F\u{26DEA}\u4551\u7583\u3F63\u{24CD9}\u{24D06}\u3F58\u7555\u7673\u{2A5C6}\u3B19\u7468\u{28ACC}\u{249AB}\u{2498E}\u3AFB"],["94a1","\u3DCD\u{24A4E}\u3EFF\u{249C5}\u{248F3}\u91FA\u5732\u9342\u{28AE3}\u{21864}\u50DF\u{25221}\u{251E7}\u7778\u{23232}\u770E\u770F\u777B\u{24697}\u{23781}\u3A5E\u{248F0}\u7438\u749B\u3EBF\u{24ABA}\u{24AC7}\u40C8\u{24A96}\u{261AE}\u9307\u{25581}\u781E\u788D\u7888\u78D2\u73D0\u7959\u{27741}\u{256E3}\u410E\u799B\u8496\u79A5\u6A2D\u{23EFA}\u7A3A\u79F4\u416E\u{216E6}\u4132\u9235\u79F1\u{20D4C}\u{2498C}\u{20299}\u{23DBA}\u{2176E}\u3597\u556B\u3570\u36AA\u{201D4}\u{20C0D}\u7AE2\u5A59\u{226F5}\u{25AAF}\u{25A9C}\u5A0D\u{2025B}\u78F0\u5A2A\u{25BC6}\u7AFE\u41F9\u7C5D\u7C6D\u4211\u{25BB3}\u{25EBC}\u{25EA6}\u7CCD\u{249F9}\u{217B0}\u7C8E\u7C7C\u7CAE\u6AB2\u7DDC\u7E07\u7DD3\u7F4E\u{26261}"],["9540","\u{2615C}\u{27B48}\u7D97\u{25E82}\u426A\u{26B75}\u{20916}\u67D6\u{2004E}\u{235CF}\u57C4\u{26412}\u{263F8}\u{24962}\u7FDD\u7B27\u{2082C}\u{25AE9}\u{25D43}\u7B0C\u{25E0E}\u99E6\u8645\u9A63\u6A1C\u{2343F}\u39E2\u{249F7}\u{265AD}\u9A1F\u{265A0}\u8480\u{27127}\u{26CD1}\u44EA\u8137\u4402\u80C6\u8109\u8142\u{267B4}\u98C3\u{26A42}\u8262\u8265\u{26A51}\u8453\u{26DA7}\u8610\u{2721B}\u5A86\u417F\u{21840}\u5B2B\u{218A1}\u5AE4\u{218D8}\u86A0\u{2F9BC}\u{23D8F}\u882D\u{27422}\u5A02"],["95a1","\u886E\u4F45\u8887\u88BF\u88E6\u8965\u894D\u{25683}\u8954\u{27785}\u{27784}\u{28BF5}\u{28BD9}\u{28B9C}\u{289F9}\u3EAD\u84A3\u46F5\u46CF\u37F2\u8A3D\u8A1C\u{29448}\u5F4D\u922B\u{24284}\u65D4\u7129\u70C4\u{21845}\u9D6D\u8C9F\u8CE9\u{27DDC}\u599A\u77C3\u59F0\u436E\u36D4\u8E2A\u8EA7\u{24C09}\u8F30\u8F4A\u42F4\u6C58\u6FBB\u{22321}\u489B\u6F79\u6E8B\u{217DA}\u9BE9\u36B5\u{2492F}\u90BB\u9097\u5571\u4906\u91BB\u9404\u{28A4B}\u4062\u{28AFC}\u9427\u{28C1D}\u{28C3B}\u84E5\u8A2B\u9599\u95A7\u9597\u9596\u{28D34}\u7445\u3EC2\u{248FF}\u{24A42}\u{243EA}\u3EE7\u{23225}\u968F\u{28EE7}\u{28E66}\u{28E65}\u3ECC\u{249ED}\u{24A78}\u{23FEE}\u7412\u746B\u3EFC\u9741\u{290B0}"],["9640","\u6847\u4A1D\u{29093}\u{257DF}\u975D\u9368\u{28989}\u{28C26}\u{28B2F}\u{263BE}\u92BA\u5B11\u8B69\u493C\u73F9\u{2421B}\u979B\u9771\u9938\u{20F26}\u5DC1\u{28BC5}\u{24AB2}\u981F\u{294DA}\u92F6\u{295D7}\u91E5\u44C0\u{28B50}\u{24A67}\u{28B64}\u98DC\u{28A45}\u3F00\u922A\u4925\u8414\u993B\u994D\u{27B06}\u3DFD\u999B\u4B6F\u99AA\u9A5C\u{28B65}\u{258C8}\u6A8F\u9A21\u5AFE\u9A2F\u{298F1}\u4B90\u{29948}\u99BC\u4BBD\u4B97\u937D\u5872\u{21302}\u5822\u{249B8}"],["96a1","\u{214E8}\u7844\u{2271F}\u{23DB8}\u68C5\u3D7D\u9458\u3927\u6150\u{22781}\u{2296B}\u6107\u9C4F\u9C53\u9C7B\u9C35\u9C10\u9B7F\u9BCF\u{29E2D}\u9B9F\u{2A1F5}\u{2A0FE}\u9D21\u4CAE\u{24104}\u9E18\u4CB0\u9D0C\u{2A1B4}\u{2A0ED}\u{2A0F3}\u{2992F}\u9DA5\u84BD\u{26E12}\u{26FDF}\u{26B82}\u85FC\u4533\u{26DA4}\u{26E84}\u{26DF0}\u8420\u85EE\u{26E00}\u{237D7}\u{26064}\u79E2\u{2359C}\u{23640}\u492D\u{249DE}\u3D62\u93DB\u92BE\u9348\u{202BF}\u78B9\u9277\u944D\u4FE4\u3440\u9064\u{2555D}\u783D\u7854\u78B6\u784B\u{21757}\u{231C9}\u{24941}\u369A\u4F72\u6FDA\u6FD9\u701E\u701E\u5414\u{241B5}\u57BB\u58F3\u578A\u9D16\u57D7\u7134\u34AF\u{241AC}\u71EB\u{26C40}\u{24F97}\u5B28\u{217B5}\u{28A49}"],["9740","\u610C\u5ACE\u5A0B\u42BC\u{24488}\u372C\u4B7B\u{289FC}\u93BB\u93B8\u{218D6}\u{20F1D}\u8472\u{26CC0}\u{21413}\u{242FA}\u{22C26}\u{243C1}\u5994\u{23DB7}\u{26741}\u7DA8\u{2615B}\u{260A4}\u{249B9}\u{2498B}\u{289FA}\u92E5\u73E2\u3EE9\u74B4\u{28B63}\u{2189F}\u3EE1\u{24AB3}\u6AD8\u73F3\u73FB\u3ED6\u{24A3E}\u{24A94}\u{217D9}\u{24A66}\u{203A7}\u{21424}\u{249E5}\u7448\u{24916}\u70A5\u{24976}\u9284\u73E6\u935F\u{204FE}\u9331\u{28ACE}\u{28A16}\u9386\u{28BE7}\u{255D5}\u4935\u{28A82}\u716B"],["97a1","\u{24943}\u{20CFF}\u56A4\u{2061A}\u{20BEB}\u{20CB8}\u5502\u79C4\u{217FA}\u7DFE\u{216C2}\u{24A50}\u{21852}\u452E\u9401\u370A\u{28AC0}\u{249AD}\u59B0\u{218BF}\u{21883}\u{27484}\u5AA1\u36E2\u{23D5B}\u36B0\u925F\u5A79\u{28A81}\u{21862}\u9374\u3CCD\u{20AB4}\u4A96\u398A\u50F4\u3D69\u3D4C\u{2139C}\u7175\u42FB\u{28218}\u6E0F\u{290E4}\u44EB\u6D57\u{27E4F}\u7067\u6CAF\u3CD6\u{23FED}\u{23E2D}\u6E02\u6F0C\u3D6F\u{203F5}\u7551\u36BC\u34C8\u4680\u3EDA\u4871\u59C4\u926E\u493E\u8F41\u{28C1C}\u{26BC0}\u5812\u57C8\u36D6\u{21452}\u70FE\u{24362}\u{24A71}\u{22FE3}\u{212B0}\u{223BD}\u68B9\u6967\u{21398}\u{234E5}\u{27BF4}\u{236DF}\u{28A83}\u{237D6}\u{233FA}\u{24C9F}\u6A1A\u{236AD}\u{26CB7}\u843E\u44DF\u44CE"],["9840","\u{26D26}\u{26D51}\u{26C82}\u{26FDE}\u6F17\u{27109}\u833D\u{2173A}\u83ED\u{26C80}\u{27053}\u{217DB}\u5989\u5A82\u{217B3}\u5A61\u5A71\u{21905}\u{241FC}\u372D\u59EF\u{2173C}\u36C7\u718E\u9390\u669A\u{242A5}\u5A6E\u5A2B\u{24293}\u6A2B\u{23EF9}\u{27736}\u{2445B}\u{242CA}\u711D\u{24259}\u{289E1}\u4FB0\u{26D28}\u5CC2\u{244CE}\u{27E4D}\u{243BD}\u6A0C\u{24256}\u{21304}\u70A6\u7133\u{243E9}\u3DA5\u6CDF\u{2F825}\u{24A4F}\u7E65\u59EB\u5D2F\u3DF3\u5F5C\u{24A5D}\u{217DF}\u7DA4\u8426"],["98a1","\u5485\u{23AFA}\u{23300}\u{20214}\u577E\u{208D5}\u{20619}\u3FE5\u{21F9E}\u{2A2B6}\u7003\u{2915B}\u5D70\u738F\u7CD3\u{28A59}\u{29420}\u4FC8\u7FE7\u72CD\u7310\u{27AF4}\u7338\u7339\u{256F6}\u7341\u7348\u3EA9\u{27B18}\u906C\u71F5\u{248F2}\u73E1\u81F6\u3ECA\u770C\u3ED1\u6CA2\u56FD\u7419\u741E\u741F\u3EE2\u3EF0\u3EF4\u3EFA\u74D3\u3F0E\u3F53\u7542\u756D\u7572\u758D\u3F7C\u75C8\u75DC\u3FC0\u764D\u3FD7\u7674\u3FDC\u767A\u{24F5C}\u7188\u5623\u8980\u5869\u401D\u7743\u4039\u6761\u4045\u35DB\u7798\u406A\u406F\u5C5E\u77BE\u77CB\u58F2\u7818\u70B9\u781C\u40A8\u7839\u7847\u7851\u7866\u8448\u{25535}\u7933\u6803\u7932\u4103"],["9940","\u4109\u7991\u7999\u8FBB\u7A06\u8FBC\u4167\u7A91\u41B2\u7ABC\u8279\u41C4\u7ACF\u7ADB\u41CF\u4E21\u7B62\u7B6C\u7B7B\u7C12\u7C1B\u4260\u427A\u7C7B\u7C9C\u428C\u7CB8\u4294\u7CED\u8F93\u70C0\u{20CCF}\u7DCF\u7DD4\u7DD0\u7DFD\u7FAE\u7FB4\u729F\u4397\u8020\u8025\u7B39\u802E\u8031\u8054\u3DCC\u57B4\u70A0\u80B7\u80E9\u43ED\u810C\u732A\u810E\u8112\u7560\u8114\u4401\u3B39\u8156\u8159\u815A"],["99a1","\u4413\u583A\u817C\u8184\u4425\u8193\u442D\u81A5\u57EF\u81C1\u81E4\u8254\u448F\u82A6\u8276\u82CA\u82D8\u82FF\u44B0\u8357\u9669\u698A\u8405\u70F5\u8464\u60E3\u8488\u4504\u84BE\u84E1\u84F8\u8510\u8538\u8552\u453B\u856F\u8570\u85E0\u4577\u8672\u8692\u86B2\u86EF\u9645\u878B\u4606\u4617\u88AE\u88FF\u8924\u8947\u8991\u{27967}\u8A29\u8A38\u8A94\u8AB4\u8C51\u8CD4\u8CF2\u8D1C\u4798\u585F\u8DC3\u47ED\u4EEE\u8E3A\u55D8\u5754\u8E71\u55F5\u8EB0\u4837\u8ECE\u8EE2\u8EE4\u8EED\u8EF2\u8FB7\u8FC1\u8FCA\u8FCC\u9033\u99C4\u48AD\u98E0\u9213\u491E\u9228\u9258\u926B\u92B1\u92AE\u92BF"],["9a40","\u92E3\u92EB\u92F3\u92F4\u92FD\u9343\u9384\u93AD\u4945\u4951\u9EBF\u9417\u5301\u941D\u942D\u943E\u496A\u9454\u9479\u952D\u95A2\u49A7\u95F4\u9633\u49E5\u67A0\u4A24\u9740\u4A35\u97B2\u97C2\u5654\u4AE4\u60E8\u98B9\u4B19\u98F1\u5844\u990E\u9919\u51B4\u991C\u9937\u9942\u995D\u9962\u4B70\u99C5\u4B9D\u9A3C\u9B0F\u7A83\u9B69\u9B81\u9BDD\u9BF1\u9BF4\u4C6D\u9C20\u376F\u{21BC2}\u9D49\u9C3A"],["9aa1","\u9EFE\u5650\u9D93\u9DBD\u9DC0\u9DFC\u94F6\u8FB6\u9E7B\u9EAC\u9EB1\u9EBD\u9EC6\u94DC\u9EE2\u9EF1\u9EF8\u7AC8\u9F44\u{20094}\u{202B7}\u{203A0}\u691A\u94C3\u59AC\u{204D7}\u5840\u94C1\u37B9\u{205D5}\u{20615}\u{20676}\u{216BA}\u5757\u7173\u{20AC2}\u{20ACD}\u{20BBF}\u546A\u{2F83B}\u{20BCB}\u549E\u{20BFB}\u{20C3B}\u{20C53}\u{20C65}\u{20C7C}\u60E7\u{20C8D}\u567A\u{20CB5}\u{20CDD}\u{20CED}\u{20D6F}\u{20DB2}\u{20DC8}\u6955\u9C2F\u87A5\u{20E04}\u{20E0E}\u{20ED7}\u{20F90}\u{20F2D}\u{20E73}\u5C20\u{20FBC}\u5E0B\u{2105C}\u{2104F}\u{21076}\u671E\u{2107B}\u{21088}\u{21096}\u3647\u{210BF}\u{210D3}\u{2112F}\u{2113B}\u5364\u84AD\u{212E3}\u{21375}\u{21336}\u8B81\u{21577}\u{21619}\u{217C3}\u{217C7}\u4E78\u70BB\u{2182D}\u{2196A}"],["9b40","\u{21A2D}\u{21A45}\u{21C2A}\u{21C70}\u{21CAC}\u{21EC8}\u62C3\u{21ED5}\u{21F15}\u7198\u6855\u{22045}\u69E9\u36C8\u{2227C}\u{223D7}\u{223FA}\u{2272A}\u{22871}\u{2294F}\u82FD\u{22967}\u{22993}\u{22AD5}\u89A5\u{22AE8}\u8FA0\u{22B0E}\u97B8\u{22B3F}\u9847\u9ABD\u{22C4C}"],["9b62","\u{22C88}\u{22CB7}\u{25BE8}\u{22D08}\u{22D12}\u{22DB7}\u{22D95}\u{22E42}\u{22F74}\u{22FCC}\u{23033}\u{23066}\u{2331F}\u{233DE}\u5FB1\u6648\u66BF\u{27A79}\u{23567}\u{235F3}\u7201\u{249BA}\u77D7\u{2361A}\u{23716}\u7E87\u{20346}\u58B5\u670E"],["9ba1","\u6918\u{23AA7}\u{27657}\u{25FE2}\u{23E11}\u{23EB9}\u{275FE}\u{2209A}\u48D0\u4AB8\u{24119}\u{28A9A}\u{242EE}\u{2430D}\u{2403B}\u{24334}\u{24396}\u{24A45}\u{205CA}\u51D2\u{20611}\u599F\u{21EA8}\u3BBE\u{23CFF}\u{24404}\u{244D6}\u5788\u{24674}\u399B\u{2472F}\u{285E8}\u{299C9}\u3762\u{221C3}\u8B5E\u{28B4E}\u99D6\u{24812}\u{248FB}\u{24A15}\u7209\u{24AC0}\u{20C78}\u5965\u{24EA5}\u{24F86}\u{20779}\u8EDA\u{2502C}\u528F\u573F\u7171\u{25299}\u{25419}\u{23F4A}\u{24AA7}\u55BC\u{25446}\u{2546E}\u{26B52}\u91D4\u3473\u{2553F}\u{27632}\u{2555E}\u4718\u{25562}\u{25566}\u{257C7}\u{2493F}\u{2585D}\u5066\u34FB\u{233CC}\u60DE\u{25903}\u477C\u{28948}\u{25AAE}\u{25B89}\u{25C06}\u{21D90}\u57A1\u7151\u6FB6\u{26102}\u{27C12}\u9056\u{261B2}\u{24F9A}\u8B62\u{26402}\u{2644A}"],["9c40","\u5D5B\u{26BF7}\u8F36\u{26484}\u{2191C}\u8AEA\u{249F6}\u{26488}\u{23FEF}\u{26512}\u4BC0\u{265BF}\u{266B5}\u{2271B}\u9465\u{257E1}\u6195\u5A27\u{2F8CD}\u4FBB\u56B9\u{24521}\u{266FC}\u4E6A\u{24934}\u9656\u6D8F\u{26CBD}\u3618\u8977\u{26799}\u{2686E}\u{26411}\u{2685E}\u71DF\u{268C7}\u7B42\u{290C0}\u{20A11}\u{26926}\u9104\u{26939}\u7A45\u9DF0\u{269FA}\u9A26\u{26A2D}\u365F\u{26469}\u{20021}\u7983\u{26A34}\u{26B5B}\u5D2C\u{23519}\u83CF\u{26B9D}\u46D0\u{26CA4}\u753B\u8865\u{26DAE}\u58B6"],["9ca1","\u371C\u{2258D}\u{2704B}\u{271CD}\u3C54\u{27280}\u{27285}\u9281\u{2217A}\u{2728B}\u9330\u{272E6}\u{249D0}\u6C39\u949F\u{27450}\u{20EF8}\u8827\u88F5\u{22926}\u{28473}\u{217B1}\u6EB8\u{24A2A}\u{21820}\u39A4\u36B9\u5C10\u79E3\u453F\u66B6\u{29CAD}\u{298A4}\u8943\u{277CC}\u{27858}\u56D6\u40DF\u{2160A}\u39A1\u{2372F}\u{280E8}\u{213C5}\u71AD\u8366\u{279DD}\u{291A8}\u5A67\u4CB7\u{270AF}\u{289AB}\u{279FD}\u{27A0A}\u{27B0B}\u{27D66}\u{2417A}\u7B43\u797E\u{28009}\u6FB5\u{2A2DF}\u6A03\u{28318}\u53A2\u{26E07}\u93BF\u6836\u975D\u{2816F}\u{28023}\u{269B5}\u{213ED}\u{2322F}\u{28048}\u5D85\u{28C30}\u{28083}\u5715\u9823\u{28949}\u5DAB\u{24988}\u65BE\u69D5\u53D2\u{24AA5}\u{23F81}\u3C11\u6736\u{28090}\u{280F4}\u{2812E}\u{21FA1}\u{2814F}"],["9d40","\u{28189}\u{281AF}\u{2821A}\u{28306}\u{2832F}\u{2838A}\u35CA\u{28468}\u{286AA}\u48FA\u63E6\u{28956}\u7808\u9255\u{289B8}\u43F2\u{289E7}\u43DF\u{289E8}\u{28B46}\u{28BD4}\u59F8\u{28C09}\u8F0B\u{28FC5}\u{290EC}\u7B51\u{29110}\u{2913C}\u3DF7\u{2915E}\u{24ACA}\u8FD0\u728F\u568B\u{294E7}\u{295E9}\u{295B0}\u{295B8}\u{29732}\u{298D1}\u{29949}\u{2996A}\u{299C3}\u{29A28}\u{29B0E}\u{29D5A}\u{29D9B}\u7E9F\u{29EF8}\u{29F23}\u4CA4\u9547\u{2A293}\u71A2\u{2A2FF}\u4D91\u9012\u{2A5CB}\u4D9C\u{20C9C}\u8FBE\u55C1"],["9da1","\u8FBA\u{224B0}\u8FB9\u{24A93}\u4509\u7E7F\u6F56\u6AB1\u4EEA\u34E4\u{28B2C}\u{2789D}\u373A\u8E80\u{217F5}\u{28024}\u{28B6C}\u{28B99}\u{27A3E}\u{266AF}\u3DEB\u{27655}\u{23CB7}\u{25635}\u{25956}\u4E9A\u{25E81}\u{26258}\u56BF\u{20E6D}\u8E0E\u5B6D\u{23E88}\u{24C9E}\u63DE\u62D0\u{217F6}\u{2187B}\u6530\u562D\u{25C4A}\u541A\u{25311}\u3DC6\u{29D98}\u4C7D\u5622\u561E\u7F49\u{25ED8}\u5975\u{23D40}\u8770\u4E1C\u{20FEA}\u{20D49}\u{236BA}\u8117\u9D5E\u8D18\u763B\u9C45\u764E\u77B9\u9345\u5432\u8148\u82F7\u5625\u8132\u8418\u80BD\u55EA\u7962\u5643\u5416\u{20E9D}\u35CE\u5605\u55F1\u66F1\u{282E2}\u362D\u7534\u55F0\u55BA\u5497\u5572\u{20C41}\u{20C96}\u5ED0\u{25148}\u{20E76}\u{22C62}"],["9e40","\u{20EA2}\u9EAB\u7D5A\u55DE\u{21075}\u629D\u976D\u5494\u8CCD\u71F6\u9176\u63FC\u63B9\u63FE\u5569\u{22B43}\u9C72\u{22EB3}\u519A\u34DF\u{20DA7}\u51A7\u544D\u551E\u5513\u7666\u8E2D\u{2688A}\u75B1\u80B6\u8804\u8786\u88C7\u81B6\u841C\u{210C1}\u44EC\u7304\u{24706}\u5B90\u830B\u{26893}\u567B\u{226F4}\u{27D2F}\u{241A3}\u{27D73}\u{26ED0}\u{272B6}\u9170\u{211D9}\u9208\u{23CFC}\u{2A6A9}\u{20EAC}\u{20EF9}\u7266\u{21CA2}\u474E\u{24FC2}\u{27FF9}\u{20FEB}\u40FA"],["9ea1","\u9C5D\u651F\u{22DA0}\u48F3\u{247E0}\u{29D7C}\u{20FEC}\u{20E0A}\u6062\u{275A3}\u{20FED}"],["9ead","\u{26048}\u{21187}\u71A3\u7E8E\u9D50\u4E1A\u4E04\u3577\u5B0D\u6CB2\u5367\u36AC\u39DC\u537D\u36A5\u{24618}\u589A\u{24B6E}\u822D\u544B\u57AA\u{25A95}\u{20979}"],["9ec5","\u3A52\u{22465}\u7374\u{29EAC}\u4D09\u9BED\u{23CFE}\u{29F30}\u4C5B\u{24FA9}\u{2959E}\u{29FDE}\u845C\u{23DB6}\u{272B2}\u{267B3}\u{23720}\u632E\u7D25\u{23EF7}\u{23E2C}\u3A2A\u9008\u52CC\u3E74\u367A\u45E9\u{2048E}\u7640\u5AF0\u{20EB6}\u787A\u{27F2E}\u58A7\u40BF\u567C\u9B8B\u5D74\u7654\u{2A434}\u9E85\u4CE1\u75F9\u37FB\u6119\u{230DA}\u{243F2}"],["9ef5","\u565D\u{212A9}\u57A7\u{24963}\u{29E06}\u5234\u{270AE}\u35AD\u6C4A\u9D7C"],["9f40","\u7C56\u9B39\u57DE\u{2176C}\u5C53\u64D3\u{294D0}\u{26335}\u{27164}\u86AD\u{20D28}\u{26D22}\u{24AE2}\u{20D71}"],["9f4f","\u51FE\u{21F0F}\u5D8E\u9703\u{21DD1}\u9E81\u904C\u7B1F\u9B02\u5CD1\u7BA3\u6268\u6335\u9AFF\u7BCF\u9B2A\u7C7E\u9B2E\u7C42\u7C86\u9C15\u7BFC\u9B09\u9F17\u9C1B\u{2493E}\u9F5A\u5573\u5BC3\u4FFD\u9E98\u4FF2\u5260\u3E06\u52D1\u5767\u5056\u59B7\u5E12\u97C8\u9DAB\u8F5C\u5469\u97B4\u9940\u97BA\u532C\u6130"],["9fa1","\u692C\u53DA\u9C0A\u9D02\u4C3B\u9641\u6980\u50A6\u7546\u{2176D}\u99DA\u5273"],["9fae","\u9159\u9681\u915C"],["9fb2","\u9151\u{28E97}\u637F\u{26D23}\u6ACA\u5611\u918E\u757A\u6285\u{203FC}\u734F\u7C70\u{25C21}\u{23CFD}"],["9fc1","\u{24919}\u76D6\u9B9D\u4E2A\u{20CD4}\u83BE\u8842"],["9fc9","\u5C4A\u69C0\u50ED\u577A\u521F\u5DF5\u4ECE\u6C31\u{201F2}\u4F39\u549C\u54DA\u529A\u8D82\u35FE\u5F0C\u35F3"],["9fdb","\u6B52\u917C\u9FA5\u9B97\u982E\u98B4\u9ABA\u9EA8\u9E84\u717A\u7B14"],["9fe7","\u6BFA\u8818\u7F78"],["9feb","\u5620\u{2A64A}\u8E77\u9F53"],["9ff0","\u8DD4\u8E4F\u9E1C\u8E01\u6282\u{2837D}\u8E28\u8E75\u7AD3\u{24A77}\u7A3E\u78D8\u6CEA\u8A67\u7607"],["a040","\u{28A5A}\u9F26\u6CCE\u87D6\u75C3\u{2A2B2}\u7853\u{2F840}\u8D0C\u72E2\u7371\u8B2D\u7302\u74F1\u8CEB\u{24ABB}\u862F\u5FBA\u88A0\u44B7"],["a055","\u{2183B}\u{26E05}"],["a058","\u8A7E\u{2251B}"],["a05b","\u60FD\u7667\u9AD7\u9D44\u936E\u9B8F\u87F5"],["a063","\u880F\u8CF7\u732C\u9721\u9BB0\u35D6\u72B2\u4C07\u7C51\u994A\u{26159}\u6159\u4C04\u9E96\u617D"],["a073","\u575F\u616F\u62A6\u6239\u62CE\u3A5C\u61E2\u53AA\u{233F5}\u6364\u6802\u35D2"],["a0a1","\u5D57\u{28BC2}\u8FDA\u{28E39}"],["a0a6","\u50D9\u{21D46}\u7906\u5332\u9638\u{20F3B}\u4065"],["a0ae","\u77FE"],["a0b0","\u7CC2\u{25F1A}\u7CDA\u7A2D\u8066\u8063\u7D4D\u7505\u74F2\u8994\u821A\u670C\u8062\u{27486}\u805B\u74F0\u8103\u7724\u8989\u{267CC}\u7553\u{26ED1}\u87A9\u87CE\u81C8\u878C\u8A49\u8CAD\u8B43\u772B\u74F8\u84DA\u3635\u69B2\u8DA6"],["a0d4","\u89A9\u7468\u6DB9\u87C1\u{24011}\u74E7\u3DDB\u7176\u60A4\u619C\u3CD1\u7162\u6077"],["a0e2","\u7F71\u{28B2D}\u7250\u60E9\u4B7E\u5220\u3C18\u{23CC7}\u{25ED7}\u{27656}\u{25531}\u{21944}\u{212FE}\u{29903}\u{26DDC}\u{270AD}\u5CC1\u{261AD}\u{28A0F}\u{23677}\u{200EE}\u{26846}\u{24F0E}\u4562\u5B1F\u{2634C}\u9F50\u9EA6\u{2626B}"],["a3c0","\u2400",31,"\u2421"],["c6a1","\u2460",9,"\u2474",9,"\u2170",9,"\u4E36\u4E3F\u4E85\u4EA0\u5182\u5196\u51AB\u52F9\u5338\u5369\u53B6\u590A\u5B80\u5DDB\u2F33\u5E7F\u5EF4\u5F50\u5F61\u6534\u65E0\u7592\u7676\u8FB5\u96B6\xA8\u02C6\u30FD\u30FE\u309D\u309E\u3003\u4EDD\u3005\u3006\u3007\u30FC\uFF3B\uFF3D\u273D\u3041",23],["c740","\u3059",58,"\u30A1\u30A2\u30A3\u30A4"],["c7a1","\u30A5",81,"\u0410",5,"\u0401\u0416",4],["c840","\u041B",26,"\u0451\u0436",25,"\u21E7\u21B8\u21B9\u31CF\u{200CC}\u4E5A\u{2008A}\u5202\u4491"],["c8a1","\u9FB0\u5188\u9FB1\u{27607}"],["c8cd","\uFFE2\uFFE4\uFF07\uFF02\u3231\u2116\u2121\u309B\u309C\u2E80\u2E84\u2E86\u2E87\u2E88\u2E8A\u2E8C\u2E8D\u2E95\u2E9C\u2E9D\u2EA5\u2EA7\u2EAA\u2EAC\u2EAE\u2EB6\u2EBC\u2EBE\u2EC6\u2ECA\u2ECC\u2ECD\u2ECF\u2ED6\u2ED7\u2EDE\u2EE3"],["c8f5","\u0283\u0250\u025B\u0254\u0275\u0153\xF8\u014B\u028A\u026A"],["f9fe","\uFFED"],["fa40","\u{20547}\u92DB\u{205DF}\u{23FC5}\u854C\u42B5\u73EF\u51B5\u3649\u{24942}\u{289E4}\u9344\u{219DB}\u82EE\u{23CC8}\u783C\u6744\u62DF\u{24933}\u{289AA}\u{202A0}\u{26BB3}\u{21305}\u4FAB\u{224ED}\u5008\u{26D29}\u{27A84}\u{23600}\u{24AB1}\u{22513}\u5029\u{2037E}\u5FA4\u{20380}\u{20347}\u6EDB\u{2041F}\u507D\u5101\u347A\u510E\u986C\u3743\u8416\u{249A4}\u{20487}\u5160\u{233B4}\u516A\u{20BFF}\u{220FC}\u{202E5}\u{22530}\u{2058E}\u{23233}\u{21983}\u5B82\u877D\u{205B3}\u{23C99}\u51B2\u51B8"],["faa1","\u9D34\u51C9\u51CF\u51D1\u3CDC\u51D3\u{24AA6}\u51B3\u51E2\u5342\u51ED\u83CD\u693E\u{2372D}\u5F7B\u520B\u5226\u523C\u52B5\u5257\u5294\u52B9\u52C5\u7C15\u8542\u52E0\u860D\u{26B13}\u5305\u{28ADE}\u5549\u6ED9\u{23F80}\u{20954}\u{23FEC}\u5333\u5344\u{20BE2}\u6CCB\u{21726}\u681B\u73D5\u604A\u3EAA\u38CC\u{216E8}\u71DD\u44A2\u536D\u5374\u{286AB}\u537E\u537F\u{21596}\u{21613}\u77E6\u5393\u{28A9B}\u53A0\u53AB\u53AE\u73A7\u{25772}\u3F59\u739C\u53C1\u53C5\u6C49\u4E49\u57FE\u53D9\u3AAB\u{20B8F}\u53E0\u{23FEB}\u{22DA3}\u53F6\u{20C77}\u5413\u7079\u552B\u6657\u6D5B\u546D\u{26B53}\u{20D74}\u555D\u548F\u54A4\u47A6\u{2170D}\u{20EDD}\u3DB4\u{20D4D}"],["fb40","\u{289BC}\u{22698}\u5547\u4CED\u542F\u7417\u5586\u55A9\u5605\u{218D7}\u{2403A}\u4552\u{24435}\u66B3\u{210B4}\u5637\u66CD\u{2328A}\u66A4\u66AD\u564D\u564F\u78F1\u56F1\u9787\u53FE\u5700\u56EF\u56ED\u{28B66}\u3623\u{2124F}\u5746\u{241A5}\u6C6E\u708B\u5742\u36B1\u{26C7E}\u57E6\u{21416}\u5803\u{21454}\u{24363}\u5826\u{24BF5}\u585C\u58AA\u3561\u58E0\u58DC\u{2123C}\u58FB\u5BFF\u5743\u{2A150}\u{24278}\u93D3\u35A1\u591F\u68A6\u36C3\u6E59"],["fba1","\u{2163E}\u5A24\u5553\u{21692}\u8505\u59C9\u{20D4E}\u{26C81}\u{26D2A}\u{217DC}\u59D9\u{217FB}\u{217B2}\u{26DA6}\u6D71\u{21828}\u{216D5}\u59F9\u{26E45}\u5AAB\u5A63\u36E6\u{249A9}\u5A77\u3708\u5A96\u7465\u5AD3\u{26FA1}\u{22554}\u3D85\u{21911}\u3732\u{216B8}\u5E83\u52D0\u5B76\u6588\u5B7C\u{27A0E}\u4004\u485D\u{20204}\u5BD5\u6160\u{21A34}\u{259CC}\u{205A5}\u5BF3\u5B9D\u4D10\u5C05\u{21B44}\u5C13\u73CE\u5C14\u{21CA5}\u{26B28}\u5C49\u48DD\u5C85\u5CE9\u5CEF\u5D8B\u{21DF9}\u{21E37}\u5D10\u5D18\u5D46\u{21EA4}\u5CBA\u5DD7\u82FC\u382D\u{24901}\u{22049}\u{22173}\u8287\u3836\u3BC2\u5E2E\u6A8A\u5E75\u5E7A\u{244BC}\u{20CD3}\u53A6\u4EB7\u5ED0\u53A8\u{21771}\u5E09\u5EF4\u{28482}"],["fc40","\u5EF9\u5EFB\u38A0\u5EFC\u683E\u941B\u5F0D\u{201C1}\u{2F894}\u3ADE\u48AE\u{2133A}\u5F3A\u{26888}\u{223D0}\u5F58\u{22471}\u5F63\u97BD\u{26E6E}\u5F72\u9340\u{28A36}\u5FA7\u5DB6\u3D5F\u{25250}\u{21F6A}\u{270F8}\u{22668}\u91D6\u{2029E}\u{28A29}\u6031\u6685\u{21877}\u3963\u3DC7\u3639\u5790\u{227B4}\u7971\u3E40\u609E\u60A4\u60B3\u{24982}\u{2498F}\u{27A53}\u74A4\u50E1\u5AA0\u6164\u8424\u6142\u{2F8A6}\u{26ED2}\u6181\u51F4\u{20656}\u6187\u5BAA\u{23FB7}"],["fca1","\u{2285F}\u61D3\u{28B9D}\u{2995D}\u61D0\u3932\u{22980}\u{228C1}\u6023\u615C\u651E\u638B\u{20118}\u62C5\u{21770}\u62D5\u{22E0D}\u636C\u{249DF}\u3A17\u6438\u63F8\u{2138E}\u{217FC}\u6490\u6F8A\u{22E36}\u9814\u{2408C}\u{2571D}\u64E1\u64E5\u947B\u3A66\u643A\u3A57\u654D\u6F16\u{24A28}\u{24A23}\u6585\u656D\u655F\u{2307E}\u65B5\u{24940}\u4B37\u65D1\u40D8\u{21829}\u65E0\u65E3\u5FDF\u{23400}\u6618\u{231F7}\u{231F8}\u6644\u{231A4}\u{231A5}\u664B\u{20E75}\u6667\u{251E6}\u6673\u6674\u{21E3D}\u{23231}\u{285F4}\u{231C8}\u{25313}\u77C5\u{228F7}\u99A4\u6702\u{2439C}\u{24A21}\u3B2B\u69FA\u{237C2}\u675E\u6767\u6762\u{241CD}\u{290ED}\u67D7\u44E9\u6822\u6E50\u923C\u6801\u{233E6}\u{26DA0}\u685D"],["fd40","\u{2346F}\u69E1\u6A0B\u{28ADF}\u6973\u68C3\u{235CD}\u6901\u6900\u3D32\u3A01\u{2363C}\u3B80\u67AC\u6961\u{28A4A}\u42FC\u6936\u6998\u3BA1\u{203C9}\u8363\u5090\u69F9\u{23659}\u{2212A}\u6A45\u{23703}\u6A9D\u3BF3\u67B1\u6AC8\u{2919C}\u3C0D\u6B1D\u{20923}\u60DE\u6B35\u6B74\u{227CD}\u6EB5\u{23ADB}\u{203B5}\u{21958}\u3740\u5421\u{23B5A}\u6BE1\u{23EFC}\u6BDC\u6C37\u{2248B}\u{248F1}\u{26B51}\u6C5A\u8226\u6C79\u{23DBC}\u44C5\u{23DBD}\u{241A4}\u{2490C}\u{24900}"],["fda1","\u{23CC9}\u36E5\u3CEB\u{20D32}\u9B83\u{231F9}\u{22491}\u7F8F\u6837\u{26D25}\u{26DA1}\u{26DEB}\u6D96\u6D5C\u6E7C\u6F04\u{2497F}\u{24085}\u{26E72}\u8533\u{26F74}\u51C7\u6C9C\u6E1D\u842E\u{28B21}\u6E2F\u{23E2F}\u7453\u{23F82}\u79CC\u6E4F\u5A91\u{2304B}\u6FF8\u370D\u6F9D\u{23E30}\u6EFA\u{21497}\u{2403D}\u4555\u93F0\u6F44\u6F5C\u3D4E\u6F74\u{29170}\u3D3B\u6F9F\u{24144}\u6FD3\u{24091}\u{24155}\u{24039}\u{23FF0}\u{23FB4}\u{2413F}\u51DF\u{24156}\u{24157}\u{24140}\u{261DD}\u704B\u707E\u70A7\u7081\u70CC\u70D5\u70D6\u70DF\u4104\u3DE8\u71B4\u7196\u{24277}\u712B\u7145\u5A88\u714A\u716E\u5C9C\u{24365}\u714F\u9362\u{242C1}\u712C\u{2445A}\u{24A27}\u{24A22}\u71BA\u{28BE8}\u70BD\u720E"],["fe40","\u9442\u7215\u5911\u9443\u7224\u9341\u{25605}\u722E\u7240\u{24974}\u68BD\u7255\u7257\u3E55\u{23044}\u680D\u6F3D\u7282\u732A\u732B\u{24823}\u{2882B}\u48ED\u{28804}\u7328\u732E\u73CF\u73AA\u{20C3A}\u{26A2E}\u73C9\u7449\u{241E2}\u{216E7}\u{24A24}\u6623\u36C5\u{249B7}\u{2498D}\u{249FB}\u73F7\u7415\u6903\u{24A26}\u7439\u{205C3}\u3ED7\u745C\u{228AD}\u7460\u{28EB2}\u7447\u73E4\u7476\u83B9\u746C\u3730\u7474\u93F1\u6A2C\u7482\u4953\u{24A8C}"],["fea1","\u{2415F}\u{24A79}\u{28B8F}\u5B46\u{28C03}\u{2189E}\u74C8\u{21988}\u750E\u74E9\u751E\u{28ED9}\u{21A4B}\u5BD7\u{28EAC}\u9385\u754D\u754A\u7567\u756E\u{24F82}\u3F04\u{24D13}\u758E\u745D\u759E\u75B4\u7602\u762C\u7651\u764F\u766F\u7676\u{263F5}\u7690\u81EF\u37F8\u{26911}\u{2690E}\u76A1\u76A5\u76B7\u76CC\u{26F9F}\u8462\u{2509D}\u{2517D}\u{21E1C}\u771E\u7726\u7740\u64AF\u{25220}\u7758\u{232AC}\u77AF\u{28964}\u{28968}\u{216C1}\u77F4\u7809\u{21376}\u{24A12}\u68CA\u78AF\u78C7\u78D3\u96A5\u792E\u{255E0}\u78D7\u7934\u78B1\u{2760C}\u8FB8\u8884\u{28B2B}\u{26083}\u{2261C}\u7986\u8900\u6902\u7980\u{25857}\u799D\u{27B39}\u793C\u79A9\u6E2A\u{27126}\u3EA8\u79C6\u{2910D}\u79D4"]]});var QR=h((kOe,YR)=>{"use strict";YR.exports={shiftjis:{type:"_dbcs",table:function(){return GR()},encodeAdd:{"\xA5":92,"\u203E":126},encodeSkipVals:[{from:60736,to:63808}]},csshiftjis:"shiftjis",mskanji:"shiftjis",sjis:"shiftjis",windows31j:"shiftjis",ms31j:"shiftjis",xsjis:"shiftjis",windows932:"shiftjis",ms932:"shiftjis",932:"shiftjis",cp932:"shiftjis",eucjp:{type:"_dbcs",table:function(){return BR()},encodeAdd:{"\xA5":92,"\u203E":126}},gb2312:"cp936",gb231280:"cp936",gb23121980:"cp936",csgb2312:"cp936",csiso58gb231280:"cp936",euccn:"cp936",windows936:"cp936",ms936:"cp936",936:"cp936",cp936:{type:"_dbcs",table:function(){return kp()}},gbk:{type:"_dbcs",table:function(){return kp().concat(s0())}},xgbk:"gbk",isoir58:"gbk",gb18030:{type:"_dbcs",table:function(){return kp().concat(s0())},gb18030:function(){return HR()},encodeSkipVals:[128],encodeAdd:{"\u20AC":41699}},chinese:"gb18030",windows949:"cp949",ms949:"cp949",949:"cp949",cp949:{type:"_dbcs",table:function(){return VR()}},cseuckr:"cp949",csksc56011987:"cp949",euckr:"cp949",isoir149:"cp949",korean:"cp949",ksc56011987:"cp949",ksc56011989:"cp949",ksc5601:"cp949",windows950:"cp950",ms950:"cp950",950:"cp950",cp950:{type:"_dbcs",table:function(){return o0()}},big5:"big5hkscs",big5hkscs:{type:"_dbcs",table:function(){return o0().concat(WR())},encodeSkipVals:[36457,36463,36478,36523,36532,36557,36560,36695,36713,36718,36811,36862,36973,36986,37060,37084,37105,37311,37551,37552,37553,37554,37585,37959,38090,38361,38652,39285,39798,39800,39803,39878,39902,39916,39926,40002,40019,40034,40040,40043,40055,40124,40125,40144,40279,40282,40388,40431,40443,40617,40687,40701,40800,40907,41079,41180,41183,36812,37576,38468,38637,41636,41637,41639,41638,41676,41678]},cnbig5:"big5hkscs",csbig5:"big5hkscs",xxbig5:"big5hkscs"}});var eO=h((ZR,Rp)=>{"use strict";var _Y=kv(),XR=[kR(),OR(),PR(),DR(),NR(),qR(),$R(),zR(),QR()];for(Ap=0;Ap<XR.length;Ap++)Rp=XR[Ap],_Y(ZR,Rp);var Rp,Ap});var nO=h((AOe,rO)=>{"use strict";var tO=bi().Buffer;rO.exports=function(t){var e=t.Transform;function r(i,s){this.conv=i,s=s||{},s.decodeStrings=!1,e.call(this,s)}r.prototype=Object.create(e.prototype,{constructor:{value:r}}),r.prototype._transform=function(i,s,o){if(typeof i!="string")return o(new Error("Iconv encoding stream needs strings as its input."));try{var a=this.conv.write(i);a&&a.length&&this.push(a),o()}catch(c){o(c)}},r.prototype._flush=function(i){try{var s=this.conv.end();s&&s.length&&this.push(s),i()}catch(o){i(o)}},r.prototype.collect=function(i){var s=[];return this.on("error",i),this.on("data",function(o){s.push(o)}),this.on("end",function(){i(null,tO.concat(s))}),this};function n(i,s){this.conv=i,s=s||{},s.encoding=this.encoding="utf8",e.call(this,s)}return n.prototype=Object.create(e.prototype,{constructor:{value:n}}),n.prototype._transform=function(i,s,o){if(!tO.isBuffer(i)&&!(i instanceof Uint8Array))return o(new Error("Iconv decoding stream needs buffers as its input."));try{var a=this.conv.write(i);a&&a.length&&this.push(a,this.encoding),o()}catch(c){o(c)}},n.prototype._flush=function(i){try{var s=this.conv.end();s&&s.length&&this.push(s,this.encoding),i()}catch(o){i(o)}},n.prototype.collect=function(i){var s="";return this.on("error",i),this.on("data",function(o){s+=o}),this.on("end",function(){i(null,s)}),this},{IconvLiteEncoderStream:r,IconvLiteDecoderStream:n}}});var a0=h((ROe,re)=>{"use strict";var iO=bi().Buffer,sO=_R(),IY=kv();re.exports.encodings=null;re.exports.defaultCharUnicode="\uFFFD";re.exports.defaultCharSingleByte="?";re.exports.encode=function(e,r,n){e=""+(e||"");var i=re.exports.getEncoder(r,n),s=i.write(e),o=i.end();return o&&o.length>0?iO.concat([s,o]):s};re.exports.decode=function(e,r,n){typeof e=="string"&&(re.exports.skipDecodeWarning||(console.error("Iconv-lite warning: decode()-ing strings is deprecated. Refer to https://github.com/ashtuchkin/iconv-lite/wiki/Use-Buffers-when-decoding"),re.exports.skipDecodeWarning=!0),e=iO.from(""+(e||""),"binary"));var i=re.exports.getDecoder(r,n),s=i.write(e),o=i.end();return o?s+o:s};re.exports.encodingExists=function(e){try{return re.exports.getCodec(e),!0}catch{return!1}};re.exports.toEncoding=re.exports.encode;re.exports.fromEncoding=re.exports.decode;re.exports._codecDataCache={__proto__:null};re.exports.getCodec=function(e){if(!re.exports.encodings){var r=eO();re.exports.encodings={__proto__:null},IY(re.exports.encodings,r)}for(var n=re.exports._canonicalizeEncoding(e),i={};;){var s=re.exports._codecDataCache[n];if(s)return s;var o=re.exports.encodings[n];switch(typeof o){case"string":n=o;break;case"object":for(var a in o)i[a]=o[a];i.encodingName||(i.encodingName=n),n=o.type;break;case"function":return i.encodingName||(i.encodingName=n),s=new o(i,re.exports),re.exports._codecDataCache[i.encodingName]=s,s;default:throw new Error("Encoding not recognized: '"+e+"' (searched as: '"+n+"')")}}};re.exports._canonicalizeEncoding=function(t){return(""+t).toLowerCase().replace(/:\d{4}$|[^0-9a-z]/g,"")};re.exports.getEncoder=function(e,r){var n=re.exports.getCodec(e),i=new n.encoder(r,n);return n.bomAware&&r&&r.addBOM&&(i=new sO.PrependBOM(i,r)),i};re.exports.getDecoder=function(e,r){var n=re.exports.getCodec(e),i=new n.decoder(r,n);return n.bomAware&&!(r&&r.stripBOM===!1)&&(i=new sO.StripBOM(i,r)),i};re.exports.enableStreamingAPI=function(e){if(!re.exports.supportsStreams){var r=nO()(e);re.exports.IconvLiteEncoderStream=r.IconvLiteEncoderStream,re.exports.IconvLiteDecoderStream=r.IconvLiteDecoderStream,re.exports.encodeStream=function(i,s){return new re.exports.IconvLiteEncoderStream(re.exports.getEncoder(i,s),s)},re.exports.decodeStream=function(i,s){return new re.exports.IconvLiteDecoderStream(re.exports.getDecoder(i,s),s)},re.exports.supportsStreams=!0}};var Op;try{Op=require("stream")}catch{}Op&&Op.Transform?re.exports.enableStreamingAPI(Op):re.exports.encodeStream=re.exports.decodeStream=function(){throw new Error("iconv-lite Streaming API is not enabled. Use iconv.enableStreamingAPI(require('stream')); to enable it.")}});var aO=h((OOe,oO)=>{"use strict";oO.exports=kY;function TY(t){for(var e=t.listeners("data"),r=0;r<e.length;r++)if(e[r].name==="ondata")return!0;return!1}function kY(t){if(!t)throw new TypeError("argument stream is required");if(typeof t.unpipe=="function"){t.unpipe();return}if(TY(t))for(var e,r=t.listeners("close"),n=0;n<r.length;n++)e=r[n],!(e.name!=="cleanup"&&e.name!=="onclose")&&e.call(t)}});var dO=h((COe,uO)=>{"use strict";var cO=DY(),AY=wv(),co=Ta(),RY=a0(),OY=aO();uO.exports=PY;var CY=/^Encoding not recognized: /;function jY(t){if(!t)return null;try{return RY.getDecoder(t)}catch(e){throw CY.test(e.message)?co(415,"specified encoding unsupported",{encoding:t,type:"encoding.unsupported"}):e}}function PY(t,e,r){var n=r,i=e||{};if(t===void 0)throw new TypeError("argument stream is required");if(typeof t!="object"||t===null||typeof t.on!="function")throw new TypeError("argument stream must be a stream");if((e===!0||typeof e=="string")&&(i={encoding:e}),typeof e=="function"&&(n=e,i={}),n!==void 0&&typeof n!="function")throw new TypeError("argument callback must be a function");if(!n&&!global.Promise)throw new TypeError("argument callback is required");var s=i.encoding!==!0?i.encoding:"utf-8",o=AY.parse(i.limit),a=i.length!=null&&!isNaN(i.length)?parseInt(i.length,10):null;return n?lO(t,s,a,o,MY(n)):new Promise(function(l,u){lO(t,s,a,o,function(p,f){if(p)return u(p);l(f)})})}function KY(t){OY(t),typeof t.pause=="function"&&t.pause()}function lO(t,e,r,n,i){var s=!1,o=!0;if(n!==null&&r!==null&&r>n)return d(co(413,"request entity too large",{expected:r,length:r,limit:n,type:"entity.too.large"}));var a=t._readableState;if(t._decoder||a&&(a.encoding||a.decoder))return d(co(500,"stream encoding should not be set",{type:"stream.encoding.set"}));if(typeof t.readable<"u"&&!t.readable)return d(co(500,"stream is not readable",{type:"stream.not.readable"}));var c=0,l;try{l=jY(e)}catch(b){return d(b)}var u=l?"":[];t.on("aborted",p),t.on("close",y),t.on("data",f),t.on("end",m),t.on("error",m),o=!1;function d(){for(var b=new Array(arguments.length),v=0;v<b.length;v++)b[v]=arguments[v];s=!0,o?process.nextTick(E):E();function E(){y(),b[0]&&KY(t),i.apply(null,b)}}function p(){s||d(co(400,"request aborted",{code:"ECONNABORTED",expected:r,length:r,received:c,type:"request.aborted"}))}function f(b){s||(c+=b.length,n!==null&&c>n?d(co(413,"request entity too large",{limit:n,received:c,type:"entity.too.large"})):l?u+=l.write(b):u.push(b))}function m(b){if(!s){if(b)return d(b);if(r!==null&&c!==r)d(co(400,"request size did not match content length",{expected:r,length:r,received:c,type:"request.size.invalid"}));else{var v=l?u+(l.end()||""):Buffer.concat(u);d(null,v)}}}function y(){u=null,t.removeListener("aborted",p),t.removeListener("data",f),t.removeListener("end",m),t.removeListener("error",m),t.removeListener("close",y)}}function DY(){try{return require("async_hooks")}catch{return{}}}function MY(t){var e;return cO.AsyncResource&&(e=new cO.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var fO=h((jOe,pO)=>{"use strict";pO.exports=NY;function NY(t,e){if(!Array.isArray(t))throw new TypeError("arg must be an array of [ee, events...] arrays");for(var r=[],n=0;n<t.length;n++){var i=t[n];if(!Array.isArray(i)||i.length<2)throw new TypeError("each array member must be [ee, events...]");for(var s=i[0],o=1;o<i.length;o++){var a=i[o],c=LY(a,l);s.on(a,c),r.push({ee:s,event:a,fn:c})}}function l(){u(),e.apply(null,arguments)}function u(){for(var p,f=0;f<r.length;f++)p=r[f],p.ee.removeListener(p.event,p.fn)}function d(p){e=p}return d.cancel=u,d}function LY(t,e){return function(n){for(var i=new Array(arguments.length),s=this,o=t==="error"?n:null,a=0;a<i.length;a++)i[a]=arguments[a];e(o,s,t,i)}}});var Cl=h((POe,c0)=>{"use strict";c0.exports=FY;c0.exports.isFinished=yO;var mO=GY(),hO=fO(),qY=typeof setImmediate=="function"?setImmediate:function(t){process.nextTick(t.bind.apply(t,arguments))};function FY(t,e){return yO(t)!==!1?(qY(e,null,t),t):(UY(t,BY(e)),t)}function yO(t){var e=t.socket;if(typeof t.finished=="boolean")return!!(t.finished||e&&!e.writable);if(typeof t.complete=="boolean")return!!(t.upgrade||!e||!e.readable||t.complete&&!t.readable)}function $Y(t,e){var r,n,i=!1;function s(a){r.cancel(),n.cancel(),i=!0,e(a)}r=n=hO([[t,"end","finish"]],s);function o(a){t.removeListener("socket",o),!i&&r===n&&(n=hO([[a,"error","close"]],s))}if(t.socket){o(t.socket);return}t.on("socket",o),t.socket===void 0&&zY(t,o)}function UY(t,e){var r=t.__onFinished;(!r||!r.queue)&&(r=t.__onFinished=JY(t),$Y(t,r)),r.queue.push(e)}function JY(t){function e(r){if(t.__onFinished===e&&(t.__onFinished=null),!!e.queue){var n=e.queue;e.queue=null;for(var i=0;i<n.length;i++)n[i](r,t)}}return e.queue=[],e}function zY(t,e){var r=t.assignSocket;typeof r=="function"&&(t.assignSocket=function(i){r.call(this,i),e(i)})}function GY(){try{return require("async_hooks")}catch{return{}}}function BY(t){var e;return mO.AsyncResource&&(e=new mO.AsyncResource(t.name||"bound-anonymous-fn")),!e||!e.runInAsyncScope?t:e.runInAsyncScope.bind(e,t,null)}});var wO=h(Cp=>{"use strict";Object.defineProperty(Cp,"__esModule",{value:!0});Cp.format=YY;Cp.parse=QY;var HY=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,bO=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,VY=/[\\"]/g,WY=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,vO=(()=>{let t=function(){};return t.prototype=Object.create(null),t})();function YY(t){let{type:e,parameters:r}=t;if(!e||!WY.test(e))throw new TypeError(`Invalid type: ${e}`);let n=e;if(r)for(let i of Object.keys(r)){if(!bO.test(i))throw new TypeError(`Invalid parameter name: ${i}`);n+=`; ${i}=${r7(r[i])}`}return n}function QY(t,e){let r=e?.comma===!0?e7:65536,n=t.length,i=u0(t,e?.start??0,n),s=i;i=l0(t,i,n,r);let o=d0(t,s,i),a=t.slice(s,o).toLowerCase();return e?.parameters===!1?{type:a,index:i,parameters:new vO}:t7(t,a,i,n,r)}var EO=32,SO=9,xO=59,XY=61,gO=34,ZY=92,e7=44;function t7(t,e,r,n,i){let s=new vO;e:for(;r<n&&t.charCodeAt(r)!==i;){r=u0(t,r+1,n);let o=r;for(;r<n;){let a=t.charCodeAt(r);if(a===i)break e;if(a===xO)continue e;if(a===XY){let c=d0(t,o,r),l=t.slice(o,c).toLowerCase();if(r=u0(t,r+1,n),r<n&&t.charCodeAt(r)===gO){r++;let d="";for(;r<n;){let p=t.charCodeAt(r++);if(p===gO){r=l0(t,r,n,i),s[l]===void 0&&(s[l]=d);break}if(p===ZY&&r<n){d+=t[r++];continue}d+=String.fromCharCode(p)}continue e}let u=r;if(r=l0(t,r,n,i),s[l]===void 0){let d=d0(t,u,r);s[l]=t.slice(u,d)}continue e}r++}}return{type:e,index:r,parameters:s}}function l0(t,e,r,n){for(;e<r;){let i=t.charCodeAt(e);if(i===xO||i===n)break;e++}return e}function u0(t,e,r){for(;e<r;){let n=t.charCodeAt(e);if(n!==EO&&n!==SO)break;e++}return e}function d0(t,e,r){for(;r>e;){let n=t.charCodeAt(r-1);if(n!==EO&&n!==SO)break;r--}return r}function r7(t){if(bO.test(t))return t;if(HY.test(t))return`"${t.replace(VY,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${t}`)}});var _O=h((DOe,n7)=>{n7.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 TO=h((MOe,IO)=>{IO.exports=_O()});var CO=h((NOe,OO)=>{var kO={"prs.":100,"x-":200,"x.":300,"vnd.":400,default:900},AO={nginx:10,apache:20,iana:40,default:30},RO={application:1,font:2,audio:2,video:3,default:0};OO.exports=function(e,r="default"){if(e==="application/octet-stream")return 0;let[n,i]=e.split("/"),s=i.replace(/(\.|x-).*/,"$1"),o=kO[s]||kO.default,a=AO[r]||AO.default,c=RO[n]||RO.default,l=1-e.length/100;return o+a+c+l}});var Oa=h(Tt=>{"use strict";var lo=TO(),i7=require("path").extname,jO=CO(),PO=/^\s*([^;\s]*)(?:;|\s|$)/,s7=/^text\//i;Tt.charset=KO;Tt.charsets={lookup:KO};Tt.contentType=o7;Tt.extension=p0;Tt.extensions=Object.create(null);Tt.lookup=a7;Tt.types=Object.create(null);Tt._extensionConflicts=[];c7(Tt.extensions,Tt.types);function KO(t){if(!t||typeof t!="string")return!1;var e=PO.exec(t),r=e&&lo[e[1].toLowerCase()];return r&&r.charset?r.charset:e&&s7.test(e[1])?"UTF-8":!1}function o7(t){if(!t||typeof t!="string")return!1;var e=t.indexOf("/")===-1?Tt.lookup(t):t;if(!e)return!1;if(e.indexOf("charset")===-1){var r=Tt.charset(e);r&&(e+="; charset="+r.toLowerCase())}return e}function p0(t){if(!t||typeof t!="string")return!1;var e=PO.exec(t),r=e&&Tt.extensions[e[1].toLowerCase()];return!r||!r.length?!1:r[0]}function a7(t){if(!t||typeof t!="string")return!1;var e=i7("x."+t).toLowerCase().slice(1);return e&&Tt.types[e]||!1}function c7(t,e){Object.keys(lo).forEach(function(n){var i=lo[n],s=i.extensions;if(!(!s||!s.length)){t[n]=s;for(var o=0;o<s.length;o++){var a=s[o];e[a]=l7(a,e[a],n);let c=u7(a,e[a],n);c!==e[a]&&Tt._extensionConflicts.push([a,c,e[a]])}}})}function l7(t,e,r){var n=e?jO(e,lo[e].source):0,i=r?jO(r,lo[r].source):0;return n>i?e:r}function u7(t,e,r){var n=["nginx","apache",void 0,"iana"],i=e?n.indexOf(lo[e].source):0,s=r?n.indexOf(lo[r].source):0;return Tt.types[p0]!=="application/octet-stream"&&(i>s||i===s&&Tt.types[p0]?.slice(0,12)==="application/")||i>s?e:r}});var NO=h(jp=>{"use strict";var d7=/^[A-Za-z0-9][A-Za-z0-9!#$&^_.-]{0,126}$/,DO=/^[A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126}$/,MO=/^ *([A-Za-z0-9][A-Za-z0-9!#$&^_-]{0,126})\/([A-Za-z0-9][A-Za-z0-9!#$&^_.+-]{0,126}) *$/;jp.format=p7;jp.parse=m7;jp.test=f7;function p7(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.subtype,r=t.suffix,n=t.type;if(!n||!DO.test(n))throw new TypeError("invalid type");if(!e||!d7.test(e))throw new TypeError("invalid subtype");var i=n+"/"+e;if(r){if(!DO.test(r))throw new TypeError("invalid suffix");i+="+"+r}return i}function f7(t){if(typeof t!="string")throw new TypeError("argument string is required to be a string");return MO.test(t.toLowerCase())}function m7(t){if(typeof t!="string")throw new TypeError("argument string is required to be a string");var e=MO.exec(t.toLowerCase());if(!e)throw new TypeError("invalid media type");var r=e[1],n=e[2],i,s=n.lastIndexOf("+");return s!==-1&&(i=n.substr(s+1),n=n.substr(0,s)),new h7(r,n,i)}function h7(t,e,r){this.type=t,this.subtype=e,this.suffix=r}});var Pp=h((FOe,Ca)=>{"use strict";var y7=wO(),g7=Oa(),b7=NO();Ca.exports=v7;Ca.exports.is=LO;Ca.exports.hasBody=qO;Ca.exports.normalize=FO;Ca.exports.match=$O;function LO(t,e){t&&typeof t=="object"&&(t=t.headers["content-type"]);var r,n=e,i=E7(t);if(!i)return!1;if(n&&!Array.isArray(n))for(n=new Array(arguments.length-1),r=0;r<n.length;r++)n[r]=arguments[r+1];if(!n||!n.length)return i;var s;for(r=0;r<n.length;r++)if($O(FO(s=n[r]),i))return s[0]==="+"||s.indexOf("*")!==-1?i:s;return!1}function qO(t){return t.headers["transfer-encoding"]!==void 0||!isNaN(t.headers["content-length"])}function v7(t,e){if(!qO(t))return null;var r=arguments.length>2?Array.prototype.slice.call(arguments,1):e,n=t.headers["content-type"];return LO(n,r)}function FO(t){if(typeof t!="string")return!1;switch(t){case"urlencoded":return"application/x-www-form-urlencoded";case"multipart":return"multipart/*"}return t[0]==="+"?"*/*"+t:t.indexOf("/")===-1?g7.lookup(t):t}function $O(t,e){if(t===!1)return!1;var r=e.split("/"),n=t.split("/");return r.length!==2||n.length!==2||n[0]!=="*"&&n[0]!==r[0]?!1:n[1].slice(0,2)==="*+"?n[1].length<=r[1].length+1&&n[1].slice(1)===r[1].slice(1-n[1].length):!(n[1]!=="*"&&n[1]!==r[1])}function E7(t){if(!t)return null;var e=y7.parse(t,{parameters:!1}).type;return b7.test(e)?e:null}});var VO=h(Kp=>{"use strict";Object.defineProperty(Kp,"__esModule",{value:!0});Kp.format=_7;Kp.parse=I7;var S7=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,JO=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,x7=/[\\"]/g,w7=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,zO=(()=>{let t=function(){};return t.prototype=Object.create(null),t})();function _7(t){let{type:e,parameters:r}=t;if(!e||!w7.test(e))throw new TypeError(`Invalid type: ${e}`);let n=e;if(r)for(let i of Object.keys(r)){if(!JO.test(i))throw new TypeError(`Invalid parameter name: ${i}`);n+=`; ${i}=${O7(r[i])}`}return n}function I7(t,e){let r=e?.comma===!0?A7:65536,n=t.length,i=m0(t,e?.start??0,n),s=i;i=f0(t,i,n,r);let o=h0(t,s,i),a=t.slice(s,o).toLowerCase();return e?.parameters===!1?{type:a,index:i,parameters:new zO}:R7(t,a,i,n,r)}var GO=32,BO=9,HO=59,T7=61,UO=34,k7=92,A7=44;function R7(t,e,r,n,i){let s=new zO;e:for(;r<n&&t.charCodeAt(r)!==i;){r=m0(t,r+1,n);let o=r;for(;r<n;){let a=t.charCodeAt(r);if(a===i)break e;if(a===HO)continue e;if(a===T7){let c=h0(t,o,r),l=t.slice(o,c).toLowerCase();if(r=m0(t,r+1,n),r<n&&t.charCodeAt(r)===UO){r++;let d="";for(;r<n;){let p=t.charCodeAt(r++);if(p===UO){r=f0(t,r,n,i),s[l]===void 0&&(s[l]=d);break}if(p===k7&&r<n){d+=t[r++];continue}d+=String.fromCharCode(p)}continue e}let u=r;if(r=f0(t,r,n,i),s[l]===void 0){let d=h0(t,u,r);s[l]=t.slice(u,d)}continue e}r++}}return{type:e,index:r,parameters:s}}function f0(t,e,r,n){for(;e<r;){let i=t.charCodeAt(e);if(i===HO||i===n)break;e++}return e}function m0(t,e,r){for(;e<r;){let n=t.charCodeAt(e);if(n!==GO&&n!==BO)break;e++}return e}function h0(t,e,r){for(;r>e;){let n=t.charCodeAt(r-1);if(n!==GO&&n!==BO)break;r--}return r}function O7(t){if(JO.test(t))return t;if(S7.test(t))return`"${t.replace(x7,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${t}`)}});var ja=h((UOe,WO)=>{"use strict";var C7=wv(),j7=VO(),P7=Pp();WO.exports={getCharset:K7,normalizeOptions:M7,passthrough:N7};function K7(t){let e=t.headers["content-type"];if(e)return j7.parse(e).parameters.charset?.toLowerCase()}function D7(t){return function(r){return!!P7(r,t)}}function M7(t,e){if(!e)throw new TypeError("defaultType must be provided");let r=t?.inflate!==!1,n=typeof t?.limit>"u"||t?.limit===null?102400:C7.parse(t.limit),i=t?.type||e,s=t?.verify||!1,o=t?.defaultCharset||"utf-8";if(n===null)throw new TypeError(`option limit "${String(t.limit)}" is invalid`);if(s!==!1&&typeof s!="function")throw new TypeError("option verify must be function");let a=typeof i!="function"?D7(i):i;return{inflate:r,limit:n,verify:s,defaultCharset:o,shouldParse:a}}function N7(t){return t}});var jl=h((JOe,QO)=>{"use strict";var Si=Ta(),L7=dO(),YO=a0(),g0=Cl(),y0=require("node:zlib"),q7=Pp().hasBody,{getCharset:F7}=ja();QO.exports=$7;function $7(t,e,r,n,i,s){if(g0.isFinished(t)){i("body already parsed"),r();return}if("body"in t||(t.body=void 0),!q7(t)){i("skip empty body"),r();return}if(i("content-type %j",t.headers["content-type"]),!s.shouldParse(t)){i("skip parsing"),r();return}let o=null;if(s?.skipCharset!==!0&&(o=F7(t)||s.defaultCharset,s?.isValidCharset&&!s.isValidCharset(o))){i("invalid charset"),r(Si(415,'unsupported charset "'+o.toUpperCase()+'"',{charset:o,type:"charset.unsupported"}));return}let a,c=s,l,u=c.verify;try{l=U7(t,i,c.inflate),a=l.length,l.length=void 0}catch(d){return r(d)}if(c.length=a,c.encoding=u?null:o,c.encoding===null&&o!==null&&!YO.encodingExists(o))return r(Si(415,'unsupported charset "'+o.toUpperCase()+'"',{charset:o.toLowerCase(),type:"charset.unsupported"}));i("read body"),L7(l,c,function(d,p){if(d){let m;d.type==="encoding.unsupported"?m=Si(415,'unsupported charset "'+o.toUpperCase()+'"',{charset:o.toLowerCase(),type:"charset.unsupported"}):m=Si(400,d),l!==t&&(t.unpipe(),l.destroy()),z7(t,function(){r(Si(400,m))});return}if(u)try{i("verify body"),u(t,e,p,o)}catch(m){r(Si(403,m,{body:p,type:m.type||"entity.verify.failed"}));return}let f=p;try{i("parse body"),f=typeof p!="string"&&o!==null?YO.decode(p,o):p,t.body=n(f,o)}catch(m){r(Si(400,m,{body:f,type:m.type||"entity.parse.failed"}));return}r()})}function U7(t,e,r){let n=(t.headers["content-encoding"]||"identity").toLowerCase(),i=t.headers["content-length"];if(e('content-encoding "%s"',n),r===!1&&n!=="identity")throw Si(415,"content encoding unsupported",{encoding:n,type:"encoding.unsupported"});if(n==="identity")return t.length=i,t;let s=J7(n,e);return t.pipe(s),s}function J7(t,e){switch(t){case"deflate":return e("inflate body"),y0.createInflate();case"gzip":return e("gunzip body"),y0.createGunzip();case"br":return e("brotli decompress body"),y0.createBrotliDecompress();default:throw Si(415,'unsupported content encoding "'+t+'"',{encoding:t,type:"encoding.unsupported"})}}function z7(t,e){g0.isFinished(t)?e(null):(g0(t,e),t.resume())}});var ZO=h((zOe,XO)=>{"use strict";var Dp=Tr()("body-parser:json"),G7=jl(),{normalizeOptions:B7}=ja();XO.exports=Y7;var H7=/^[\x20\x09\x0a\x0d]*([^\x20\x09\x0a\x0d])/,V7="#",W7=/#+/g;function Y7(t){let e=B7(t,"application/json"),r=Q7(t),n={...e,isValidCharset:i=>i.slice(0,4)==="utf-"};return function(s,o,a){G7(s,o,a,r,Dp,n)}}function Q7(t){let e=t?.reviver;return t?.strict!==!1?function(i){if(i.length===0)return{};let s=Z7(i);if(s!=="{"&&s!=="[")throw Dp("strict violation"),X7(i,s);try{return Dp("parse json"),JSON.parse(i,e)}catch(o){throw b0(o,{message:o.message,stack:o.stack})}}:function(i){if(i.length===0)return{};try{return Dp("parse json"),JSON.parse(i,e)}catch(s){throw b0(s,{message:s.message,stack:s.stack})}}}function X7(t,e){let r=t.indexOf(e),n="";r!==-1&&(n=t.substring(0,r)+V7.repeat(t.length-r));try{throw JSON.parse(n),new SyntaxError("strict violation")}catch(i){return b0(i,{message:i.message.replace(W7,function(s){return t.substring(r,r+s.length)}),stack:i.stack})}}function Z7(t){let e=H7.exec(t);return e?e[1]:void 0}function b0(t,e){let r=Object.getOwnPropertyNames(t);for(let n=0;n<r.length;n++){let i=r[n];i!=="stack"&&i!=="message"&&delete t[i]}return t.stack=e.stack.replace(t.message,e.message),t.message=e.message,t}});var tC=h((GOe,eC)=>{"use strict";var eQ=Tr()("body-parser:raw"),tQ=jl(),{normalizeOptions:rQ,passthrough:nQ}=ja();eC.exports=iQ;function iQ(t){let r={...rQ(t,"application/octet-stream"),skipCharset:!0};return function(i,s,o){tQ(i,s,o,nQ,eQ,r)}}});var nC=h((BOe,rC)=>{"use strict";var sQ=Tr()("body-parser:text"),oQ=jl(),{normalizeOptions:aQ,passthrough:cQ}=ja();rC.exports=lQ;function lQ(t){let e=aQ(t,"text/plain");return function(n,i,s){oQ(n,i,s,cQ,sQ,e)}}});var uo=h((HOe,iC)=>{"use strict";iC.exports=TypeError});var oC=h((VOe,sC)=>{sC.exports=require("util").inspect});var Nl=h((WOe,TC)=>{var A0=typeof Map=="function"&&Map.prototype,v0=Object.getOwnPropertyDescriptor&&A0?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,Np=A0&&v0&&typeof v0.get=="function"?v0.get:null,aC=A0&&Map.prototype.forEach,R0=typeof Set=="function"&&Set.prototype,E0=Object.getOwnPropertyDescriptor&&R0?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,Lp=R0&&E0&&typeof E0.get=="function"?E0.get:null,cC=R0&&Set.prototype.forEach,uQ=typeof WeakMap=="function"&&WeakMap.prototype,Kl=uQ?WeakMap.prototype.has:null,dQ=typeof WeakSet=="function"&&WeakSet.prototype,Dl=dQ?WeakSet.prototype.has:null,pQ=typeof WeakRef=="function"&&WeakRef.prototype,lC=pQ?WeakRef.prototype.deref:null,fQ=Boolean.prototype.valueOf,mQ=Object.prototype.toString,hQ=Function.prototype.toString,yQ=String.prototype.match,O0=String.prototype.slice,os=String.prototype.replace,gQ=String.prototype.toUpperCase,uC=String.prototype.toLowerCase,vC=RegExp.prototype.test,dC=Array.prototype.concat,$n=Array.prototype.join,bQ=Array.prototype.slice,pC=Math.floor,w0=typeof BigInt=="function"?BigInt.prototype.valueOf:null,S0=Object.getOwnPropertySymbols,_0=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?Symbol.prototype.toString:null,Pa=typeof Symbol=="function"&&typeof Symbol.iterator=="object",Ml=typeof Symbol=="function"&&Symbol.toStringTag&&(typeof Symbol.toStringTag===Pa||!0)?Symbol.toStringTag:null,EC=Object.prototype.propertyIsEnumerable,fC=(typeof Reflect=="function"?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(t){return t.__proto__}:null);function mC(t,e){if(t===1/0||t===-1/0||t!==t||t&&t>-1e3&&t<1e3||vC.call(/e/,e))return e;var r=/[0-9](?=(?:[0-9]{3})+(?![0-9]))/g;if(typeof t=="number"){var n=t<0?-pC(-t):pC(t);if(n!==t){var i=String(n),s=O0.call(e,i.length+1);return os.call(i,r,"$&_")+"."+os.call(os.call(s,/([0-9]{3})/g,"$&_"),/_$/,"")}}return os.call(e,r,"$&_")}var I0=oC(),hC=I0.custom,yC=wC(hC)?hC:null,SC={__proto__:null,double:'"',single:"'"},vQ={__proto__:null,double:/(["\\])/g,single:/(['\\])/g};TC.exports=function t(e,r,n,i){var s=r||{};if(xi(s,"quoteStyle")&&!xi(SC,s.quoteStyle))throw new TypeError('option "quoteStyle" must be "single" or "double"');if(xi(s,"maxStringLength")&&(typeof s.maxStringLength=="number"?s.maxStringLength<0&&s.maxStringLength!==1/0:s.maxStringLength!==null))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=xi(s,"customInspect")?s.customInspect:!0;if(typeof o!="boolean"&&o!=="symbol")throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(xi(s,"indent")&&s.indent!==null&&s.indent!==" "&&!(parseInt(s.indent,10)===s.indent&&s.indent>0))throw new TypeError('option "indent" must be "\\t", an integer > 0, or `null`');if(xi(s,"numericSeparator")&&typeof s.numericSeparator!="boolean")throw new TypeError('option "numericSeparator", if provided, must be `true` or `false`');var a=s.numericSeparator;if(typeof e>"u")return"undefined";if(e===null)return"null";if(typeof e=="boolean")return e?"true":"false";if(typeof e=="string")return IC(e,s);if(typeof e=="number"){if(e===0)return 1/0/e>0?"0":"-0";var c=String(e);return a?mC(e,c):c}if(typeof e=="bigint"){var l=String(e)+"n";return a?mC(e,l):l}var u=typeof s.depth>"u"?5:s.depth;if(typeof n>"u"&&(n=0),n>=u&&u>0&&typeof e=="object")return T0(e)?"[Array]":"[Object]";var d=NQ(s,n);if(typeof i>"u")i=[];else if(_C(i,e)>=0)return"[Circular]";function p(T,K,P){if(K&&(i=bQ.call(i),i.push(K)),P){var C={depth:s.depth};return xi(s,"quoteStyle")&&(C.quoteStyle=s.quoteStyle),t(T,C,n+1,i)}return t(T,s,n+1,i)}if(typeof e=="function"&&!gC(e)){var f=AQ(e),m=Mp(e,p);return"[Function"+(f?": "+f:" (anonymous)")+"]"+(m.length>0?" { "+$n.call(m,", ")+" }":"")}if(wC(e)){var y=Pa?os.call(String(e),/^(Symbol\(.*\))_[^)]*$/,"$1"):_0.call(e);return typeof e=="object"&&!Pa?Pl(y):y}if(KQ(e)){for(var b="<"+uC.call(String(e.nodeName)),v=e.attributes||[],E=0;E<v.length;E++)b+=" "+v[E].name+"="+xC(EQ(v[E].value),"double",s);return b+=">",e.childNodes&&e.childNodes.length&&(b+="..."),b+="</"+uC.call(String(e.nodeName))+">",b}if(T0(e)){if(e.length===0)return"[]";var S=Mp(e,p);return d&&!MQ(S)?"["+k0(S,d)+"]":"[ "+$n.call(S,", ")+" ]"}if(xQ(e)){var k=Mp(e,p);return!("cause"in Error.prototype)&&"cause"in e&&!EC.call(e,"cause")?"{ ["+String(e)+"] "+$n.call(dC.call("[cause]: "+p(e.cause),k),", ")+" }":k.length===0?"["+String(e)+"]":"{ ["+String(e)+"] "+$n.call(k,", ")+" }"}if(typeof e=="object"&&o){if(yC&&typeof e[yC]=="function"&&I0)return I0(e,{depth:u-n});if(o!=="symbol"&&typeof e.inspect=="function")return e.inspect()}if(RQ(e)){var _=[];return aC&&aC.call(e,function(T,K){_.push(p(K,e,!0)+" => "+p(T,e))}),bC("Map",Np.call(e),_,d)}if(jQ(e)){var O=[];return cC&&cC.call(e,function(T){O.push(p(T,e))}),bC("Set",Lp.call(e),O,d)}if(OQ(e))return x0("WeakMap");if(PQ(e))return x0("WeakSet");if(CQ(e))return x0("WeakRef");if(_Q(e))return Pl(p(Number(e)));if(TQ(e))return Pl(p(w0.call(e)));if(IQ(e))return Pl(fQ.call(e));if(wQ(e))return Pl(p(String(e)));if(typeof window<"u"&&e===window)return"{ [object Window] }";if(typeof globalThis<"u"&&e===globalThis||typeof global<"u"&&e===global)return"{ [object globalThis] }";if(!SQ(e)&&!gC(e)){var N=Mp(e,p),ee=fC?fC(e)===Object.prototype:e instanceof Object||e.constructor===Object,q=e instanceof Object?"":"null prototype",U=!ee&&Ml&&Object(e)===e&&Ml in e?O0.call(as(e),8,-1):q?"Object":"",te=ee||typeof e.constructor!="function"?"":e.constructor.name?e.constructor.name+" ":"",Ge=te+(U||q?"["+$n.call(dC.call([],U||[],q||[]),": ")+"] ":"");return N.length===0?Ge+"{}":d?Ge+"{"+k0(N,d)+"}":Ge+"{ "+$n.call(N,", ")+" }"}return String(e)};function xC(t,e,r){var n=r.quoteStyle||e,i=SC[n];return i+t+i}function EQ(t){return os.call(String(t),/"/g,"&quot;")}function po(t){return!Ml||!(typeof t=="object"&&(Ml in t||typeof t[Ml]<"u"))}function T0(t){return as(t)==="[object Array]"&&po(t)}function SQ(t){return as(t)==="[object Date]"&&po(t)}function gC(t){return as(t)==="[object RegExp]"&&po(t)}function xQ(t){return as(t)==="[object Error]"&&po(t)}function wQ(t){return as(t)==="[object String]"&&po(t)}function _Q(t){return as(t)==="[object Number]"&&po(t)}function IQ(t){return as(t)==="[object Boolean]"&&po(t)}function wC(t){if(Pa)return t&&typeof t=="object"&&t instanceof Symbol;if(typeof t=="symbol")return!0;if(!t||typeof t!="object"||!_0)return!1;try{return _0.call(t),!0}catch{}return!1}function TQ(t){if(!t||typeof t!="object"||!w0)return!1;try{return w0.call(t),!0}catch{}return!1}var kQ=Object.prototype.hasOwnProperty||function(t){return t in this};function xi(t,e){return kQ.call(t,e)}function as(t){return mQ.call(t)}function AQ(t){if(t.name)return t.name;var e=yQ.call(hQ.call(t),/^function\s*([\w$]+)/);return e?e[1]:null}function _C(t,e){if(t.indexOf)return t.indexOf(e);for(var r=0,n=t.length;r<n;r++)if(t[r]===e)return r;return-1}function RQ(t){if(!Np||!t||typeof t!="object")return!1;try{Np.call(t);try{Lp.call(t)}catch{return!0}return t instanceof Map}catch{}return!1}function OQ(t){if(!Kl||!t||typeof t!="object")return!1;try{Kl.call(t,Kl);try{Dl.call(t,Dl)}catch{return!0}return t instanceof WeakMap}catch{}return!1}function CQ(t){if(!lC||!t||typeof t!="object")return!1;try{return lC.call(t),!0}catch{}return!1}function jQ(t){if(!Lp||!t||typeof t!="object")return!1;try{Lp.call(t);try{Np.call(t)}catch{return!0}return t instanceof Set}catch{}return!1}function PQ(t){if(!Dl||!t||typeof t!="object")return!1;try{Dl.call(t,Dl);try{Kl.call(t,Kl)}catch{return!0}return t instanceof WeakSet}catch{}return!1}function KQ(t){return!t||typeof t!="object"?!1:typeof HTMLElement<"u"&&t instanceof HTMLElement?!0:typeof t.nodeName=="string"&&typeof t.getAttribute=="function"}function IC(t,e){if(t.length>e.maxStringLength){var r=t.length-e.maxStringLength,n="... "+r+" more character"+(r>1?"s":"");return IC(O0.call(t,0,e.maxStringLength),e)+n}var i=vQ[e.quoteStyle||"single"];i.lastIndex=0;var s=os.call(os.call(t,i,"\\$1"),/[\x00-\x1f]/g,DQ);return xC(s,"single",e)}function DQ(t){var e=t.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[e];return r?"\\"+r:"\\x"+(e<16?"0":"")+gQ.call(e.toString(16))}function Pl(t){return"Object("+t+")"}function x0(t){return t+" { ? }"}function bC(t,e,r,n){var i=n?k0(r,n):$n.call(r,", ");return t+" ("+e+") {"+i+"}"}function MQ(t){for(var e=0;e<t.length;e++)if(_C(t[e],`
`)>=0)return!1;return!0}function NQ(t,e){var r;if(t.indent===" ")r=" ";else if(typeof t.indent=="number"&&t.indent>0)r=$n.call(Array(t.indent+1)," ");else return null;return{base:r,prev:$n.call(Array(e+1),r)}}function k0(t,e){if(t.length===0)return"";var r=`
`+e.prev+e.base;return r+$n.call(t,","+r)+`
`+e.prev}function Mp(t,e){var r=T0(t),n=[];if(r){n.length=t.length;for(var i=0;i<t.length;i++)n[i]=xi(t,i)?e(t[i],t):""}var s=typeof S0=="function"?S0(t):[],o;if(Pa){o={};for(var a=0;a<s.length;a++)o["$"+s[a]]=s[a]}for(var c in t)xi(t,c)&&(r&&String(Number(c))===c&&c<t.length||Pa&&o["$"+c]instanceof Symbol||(vC.call(/[^\w$]/,c)?n.push(e(c,t)+": "+e(t[c],t)):n.push(c+": "+e(t[c],t))));if(typeof S0=="function")for(var l=0;l<s.length;l++)EC.call(t,s[l])&&n.push("["+e(s[l])+"]: "+e(t[s[l]],t));return n}});var AC=h((YOe,kC)=>{"use strict";var LQ=Nl(),qQ=uo(),qp=function(t,e,r){for(var n=t,i;(i=n.next)!=null;n=i)if(i.key===e)return n.next=i.next,r||(i.next=t.next,t.next=i),i},FQ=function(t,e){if(t){var r=qp(t,e);return r&&r.value}},$Q=function(t,e,r){var n=qp(t,e);n?n.value=r:t.next={key:e,next:t.next,value:r}},UQ=function(t,e){return t?!!qp(t,e):!1},JQ=function(t,e){if(t)return qp(t,e,!0)};kC.exports=function(){var e,r={assert:function(n){if(!r.has(n))throw new qQ("Side channel does not contain "+LQ(n))},delete:function(n){var i=JQ(e,n);return i&&e&&!e.next&&(e=void 0),!!i},get:function(n){return FQ(e,n)},has:function(n){return UQ(e,n)},set:function(n,i){e||(e={next:void 0}),$Q(e,n,i)}};return r}});var C0=h((QOe,RC)=>{"use strict";RC.exports=Object});var CC=h((XOe,OC)=>{"use strict";OC.exports=Error});var PC=h((ZOe,jC)=>{"use strict";jC.exports=EvalError});var DC=h((eCe,KC)=>{"use strict";KC.exports=RangeError});var NC=h((tCe,MC)=>{"use strict";MC.exports=ReferenceError});var qC=h((rCe,LC)=>{"use strict";LC.exports=SyntaxError});var $C=h((nCe,FC)=>{"use strict";FC.exports=URIError});var JC=h((iCe,UC)=>{"use strict";UC.exports=Math.abs});var GC=h((sCe,zC)=>{"use strict";zC.exports=Math.floor});var HC=h((oCe,BC)=>{"use strict";BC.exports=Math.max});var WC=h((aCe,VC)=>{"use strict";VC.exports=Math.min});var QC=h((cCe,YC)=>{"use strict";YC.exports=Math.pow});var ZC=h((lCe,XC)=>{"use strict";XC.exports=Math.round});var tj=h((uCe,ej)=>{"use strict";ej.exports=Number.isNaN||function(e){return e!==e}});var nj=h((dCe,rj)=>{"use strict";var zQ=tj();rj.exports=function(e){return zQ(e)||e===0?e:e<0?-1:1}});var sj=h((pCe,ij)=>{"use strict";ij.exports=Object.getOwnPropertyDescriptor});var j0=h((fCe,oj)=>{"use strict";var Fp=sj();if(Fp)try{Fp([],"length")}catch{Fp=null}oj.exports=Fp});var P0=h((mCe,aj)=>{"use strict";var $p=Object.defineProperty||!1;if($p)try{$p({},"a",{value:1})}catch{$p=!1}aj.exports=$p});var lj=h((hCe,cj)=>{"use strict";cj.exports=function(){if(typeof Symbol!="function"||typeof Object.getOwnPropertySymbols!="function")return!1;if(typeof Symbol.iterator=="symbol")return!0;var e={},r=Symbol("test"),n=Object(r);if(typeof r=="string"||Object.prototype.toString.call(r)!=="[object Symbol]"||Object.prototype.toString.call(n)!=="[object Symbol]")return!1;var i=42;e[r]=i;for(var s in e)return!1;if(typeof Object.keys=="function"&&Object.keys(e).length!==0||typeof Object.getOwnPropertyNames=="function"&&Object.getOwnPropertyNames(e).length!==0)return!1;var o=Object.getOwnPropertySymbols(e);if(o.length!==1||o[0]!==r||!Object.prototype.propertyIsEnumerable.call(e,r))return!1;if(typeof Object.getOwnPropertyDescriptor=="function"){var a=Object.getOwnPropertyDescriptor(e,r);if(a.value!==i||a.enumerable!==!0)return!1}return!0}});var pj=h((yCe,dj)=>{"use strict";var uj=typeof Symbol<"u"&&Symbol,GQ=lj();dj.exports=function(){return typeof uj!="function"||typeof Symbol!="function"||typeof uj("foo")!="symbol"||typeof Symbol("bar")!="symbol"?!1:GQ()}});var K0=h((gCe,fj)=>{"use strict";fj.exports=typeof Reflect<"u"&&Reflect.getPrototypeOf||null});var D0=h((bCe,mj)=>{"use strict";var BQ=C0();mj.exports=BQ.getPrototypeOf||null});var gj=h((vCe,yj)=>{"use strict";var HQ="Function.prototype.bind called on incompatible ",VQ=Object.prototype.toString,WQ=Math.max,YQ="[object Function]",hj=function(e,r){for(var n=[],i=0;i<e.length;i+=1)n[i]=e[i];for(var s=0;s<r.length;s+=1)n[s+e.length]=r[s];return n},QQ=function(e,r){for(var n=[],i=r||0,s=0;i<e.length;i+=1,s+=1)n[s]=e[i];return n},XQ=function(t,e){for(var r="",n=0;n<t.length;n+=1)r+=t[n],n+1<t.length&&(r+=e);return r};yj.exports=function(e){var r=this;if(typeof r!="function"||VQ.apply(r)!==YQ)throw new TypeError(HQ+r);for(var n=QQ(arguments,1),i,s=function(){if(this instanceof i){var u=r.apply(this,hj(n,arguments));return Object(u)===u?u:this}return r.apply(e,hj(n,arguments))},o=WQ(0,r.length-n.length),a=[],c=0;c<o;c++)a[c]="$"+c;if(i=Function("binder","return function ("+XQ(a,",")+"){ return binder.apply(this,arguments); }")(s),r.prototype){var l=function(){};l.prototype=r.prototype,i.prototype=new l,l.prototype=null}return i}});var Ll=h((ECe,bj)=>{"use strict";var ZQ=gj();bj.exports=Function.prototype.bind||ZQ});var Up=h((SCe,vj)=>{"use strict";vj.exports=Function.prototype.call});var M0=h((xCe,Ej)=>{"use strict";Ej.exports=Function.prototype.apply});var xj=h((wCe,Sj)=>{"use strict";Sj.exports=typeof Reflect<"u"&&Reflect&&Reflect.apply});var _j=h((_Ce,wj)=>{"use strict";var eX=Ll(),tX=M0(),rX=Up(),nX=xj();wj.exports=nX||eX.call(rX,tX)});var N0=h((ICe,Ij)=>{"use strict";var iX=Ll(),sX=uo(),oX=Up(),aX=_j();Ij.exports=function(e){if(e.length<1||typeof e[0]!="function")throw new sX("a function is required");return aX(iX,oX,e)}});var Cj=h((TCe,Oj)=>{"use strict";var cX=N0(),Tj=j0(),Aj;try{Aj=[].__proto__===Array.prototype}catch(t){if(!t||typeof t!="object"||!("code"in t)||t.code!=="ERR_PROTO_ACCESS")throw t}var L0=!!Aj&&Tj&&Tj(Object.prototype,"__proto__"),Rj=Object,kj=Rj.getPrototypeOf;Oj.exports=L0&&typeof L0.get=="function"?cX([L0.get]):typeof kj=="function"?function(e){return kj(e==null?e:Rj(e))}:!1});var Mj=h((kCe,Dj)=>{"use strict";var jj=K0(),Pj=D0(),Kj=Cj();Dj.exports=jj?function(e){return jj(e)}:Pj?function(e){if(!e||typeof e!="object"&&typeof e!="function")throw new TypeError("getProto: not an object");return Pj(e)}:Kj?function(e){return Kj(e)}:null});var Lj=h((ACe,Nj)=>{"use strict";var lX=Function.prototype.call,uX=Object.prototype.hasOwnProperty,dX=Ll();Nj.exports=dX.call(lX,uX)});var Gp=h((RCe,zj)=>{"use strict";var ye,pX=C0(),fX=CC(),mX=PC(),hX=DC(),yX=NC(),Na=qC(),Ma=uo(),gX=$C(),bX=JC(),vX=GC(),EX=HC(),SX=WC(),xX=QC(),wX=ZC(),_X=nj(),Uj=Function,q0=function(t){try{return Uj('"use strict"; return ('+t+").constructor;")()}catch{}},ql=j0(),IX=P0(),F0=function(){throw new Ma},TX=ql?(function(){try{return arguments.callee,F0}catch{try{return ql(arguments,"callee").get}catch{return F0}}})():F0,Ka=pj()(),kt=Mj(),kX=D0(),AX=K0(),Jj=M0(),Fl=Up(),Da={},RX=typeof Uint8Array>"u"||!kt?ye:kt(Uint8Array),fo={__proto__:null,"%AggregateError%":typeof AggregateError>"u"?ye:AggregateError,"%Array%":Array,"%ArrayBuffer%":typeof ArrayBuffer>"u"?ye:ArrayBuffer,"%ArrayIteratorPrototype%":Ka&&kt?kt([][Symbol.iterator]()):ye,"%AsyncFromSyncIteratorPrototype%":ye,"%AsyncFunction%":Da,"%AsyncGenerator%":Da,"%AsyncGeneratorFunction%":Da,"%AsyncIteratorPrototype%":Da,"%Atomics%":typeof Atomics>"u"?ye:Atomics,"%BigInt%":typeof BigInt>"u"?ye:BigInt,"%BigInt64Array%":typeof BigInt64Array>"u"?ye:BigInt64Array,"%BigUint64Array%":typeof BigUint64Array>"u"?ye:BigUint64Array,"%Boolean%":Boolean,"%DataView%":typeof DataView>"u"?ye:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":fX,"%eval%":eval,"%EvalError%":mX,"%Float16Array%":typeof Float16Array>"u"?ye:Float16Array,"%Float32Array%":typeof Float32Array>"u"?ye:Float32Array,"%Float64Array%":typeof Float64Array>"u"?ye:Float64Array,"%FinalizationRegistry%":typeof FinalizationRegistry>"u"?ye:FinalizationRegistry,"%Function%":Uj,"%GeneratorFunction%":Da,"%Int8Array%":typeof Int8Array>"u"?ye:Int8Array,"%Int16Array%":typeof Int16Array>"u"?ye:Int16Array,"%Int32Array%":typeof Int32Array>"u"?ye:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Ka&&kt?kt(kt([][Symbol.iterator]())):ye,"%JSON%":typeof JSON=="object"?JSON:ye,"%Map%":typeof Map>"u"?ye:Map,"%MapIteratorPrototype%":typeof Map>"u"||!Ka||!kt?ye:kt(new Map()[Symbol.iterator]()),"%Math%":Math,"%Number%":Number,"%Object%":pX,"%Object.getOwnPropertyDescriptor%":ql,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":typeof Promise>"u"?ye:Promise,"%Proxy%":typeof Proxy>"u"?ye:Proxy,"%RangeError%":hX,"%ReferenceError%":yX,"%Reflect%":typeof Reflect>"u"?ye:Reflect,"%RegExp%":RegExp,"%Set%":typeof Set>"u"?ye:Set,"%SetIteratorPrototype%":typeof Set>"u"||!Ka||!kt?ye:kt(new Set()[Symbol.iterator]()),"%SharedArrayBuffer%":typeof SharedArrayBuffer>"u"?ye:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Ka&&kt?kt(""[Symbol.iterator]()):ye,"%Symbol%":Ka?Symbol:ye,"%SyntaxError%":Na,"%ThrowTypeError%":TX,"%TypedArray%":RX,"%TypeError%":Ma,"%Uint8Array%":typeof Uint8Array>"u"?ye:Uint8Array,"%Uint8ClampedArray%":typeof Uint8ClampedArray>"u"?ye:Uint8ClampedArray,"%Uint16Array%":typeof Uint16Array>"u"?ye:Uint16Array,"%Uint32Array%":typeof Uint32Array>"u"?ye:Uint32Array,"%URIError%":gX,"%WeakMap%":typeof WeakMap>"u"?ye:WeakMap,"%WeakRef%":typeof WeakRef>"u"?ye:WeakRef,"%WeakSet%":typeof WeakSet>"u"?ye:WeakSet,"%Function.prototype.call%":Fl,"%Function.prototype.apply%":Jj,"%Object.defineProperty%":IX,"%Object.getPrototypeOf%":kX,"%Math.abs%":bX,"%Math.floor%":vX,"%Math.max%":EX,"%Math.min%":SX,"%Math.pow%":xX,"%Math.round%":wX,"%Math.sign%":_X,"%Reflect.getPrototypeOf%":AX};if(kt)try{null.error}catch(t){qj=kt(kt(t)),fo["%Error.prototype%"]=qj}var qj,OX=function t(e){var r;if(e==="%AsyncFunction%")r=q0("async function () {}");else if(e==="%GeneratorFunction%")r=q0("function* () {}");else if(e==="%AsyncGeneratorFunction%")r=q0("async function* () {}");else if(e==="%AsyncGenerator%"){var n=t("%AsyncGeneratorFunction%");n&&(r=n.prototype)}else if(e==="%AsyncIteratorPrototype%"){var i=t("%AsyncGenerator%");i&&kt&&(r=kt(i.prototype))}return fo[e]=r,r},Fj={__proto__:null,"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},$l=Ll(),Jp=Lj(),CX=$l.call(Fl,Array.prototype.concat),jX=$l.call(Jj,Array.prototype.splice),$j=$l.call(Fl,String.prototype.replace),zp=$l.call(Fl,String.prototype.slice),PX=$l.call(Fl,RegExp.prototype.exec),KX=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,DX=/\\(\\)?/g,MX=function(e){var r=zp(e,0,1),n=zp(e,-1);if(r==="%"&&n!=="%")throw new Na("invalid intrinsic syntax, expected closing `%`");if(n==="%"&&r!=="%")throw new Na("invalid intrinsic syntax, expected opening `%`");var i=[];return $j(e,KX,function(s,o,a,c){i[i.length]=a?$j(c,DX,"$1"):o||s}),i},NX=function(e,r){var n=e,i;if(Jp(Fj,n)&&(i=Fj[n],n="%"+i[0]+"%"),Jp(fo,n)){var s=fo[n];if(s===Da&&(s=OX(n)),typeof s>"u"&&!r)throw new Ma("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:i,name:n,value:s}}throw new Na("intrinsic "+e+" does not exist!")};zj.exports=function(e,r){if(typeof e!="string"||e.length===0)throw new Ma("intrinsic name must be a non-empty string");if(arguments.length>1&&typeof r!="boolean")throw new Ma('"allowMissing" argument must be a boolean');if(PX(/^%?[^%]*%?$/,e)===null)throw new Na("`%` may not be present anywhere but at the beginning and end of the intrinsic name");var n=MX(e),i=n.length>0?n[0]:"",s=NX("%"+i+"%",r),o=s.name,a=s.value,c=!1,l=s.alias;l&&(i=l[0],jX(n,CX([0,1],l)));for(var u=1,d=!0;u<n.length;u+=1){var p=n[u],f=zp(p,0,1),m=zp(p,-1);if((f==='"'||f==="'"||f==="`"||m==='"'||m==="'"||m==="`")&&f!==m)throw new Na("property names with quotes must have matching quotes");if((p==="constructor"||!d)&&(c=!0),i+="."+p,o="%"+i+"%",Jp(fo,o))a=fo[o];else if(a!=null){if(!(p in a)){if(!r)throw new Ma("base intrinsic for "+e+" exists, but the property is not available.");return}if(ql&&u+1>=n.length){var y=ql(a,p);d=!!y,d&&"get"in y&&!("originalValue"in y.get)?a=y.get:a=a[p]}else d=Jp(a,p),a=a[p];d&&!c&&(fo[o]=a)}}return a}});var $0=h((OCe,Hj)=>{"use strict";var Gj=Gp(),Bj=N0(),LX=Bj([Gj("%String.prototype.indexOf%")]);Hj.exports=function(e,r){var n=Gj(e,!!r);return typeof n=="function"&&LX(e,".prototype.")>-1?Bj([n]):n}});var U0=h((CCe,Wj)=>{"use strict";var qX=Gp(),Ul=$0(),FX=Nl(),$X=uo(),Vj=qX("%Map%",!0),UX=Ul("Map.prototype.get",!0),JX=Ul("Map.prototype.set",!0),zX=Ul("Map.prototype.has",!0),GX=Ul("Map.prototype.delete",!0),BX=Ul("Map.prototype.size",!0);Wj.exports=!!Vj&&function(){var e,r={assert:function(n){if(!r.has(n))throw new $X("Side channel does not contain "+FX(n))},delete:function(n){if(e){var i=GX(e,n);return BX(e)===0&&(e=void 0),i}return!1},get:function(n){if(e)return UX(e,n)},has:function(n){return e?zX(e,n):!1},set:function(n,i){e||(e=new Vj),JX(e,n,i)}};return r}});var Qj=h((jCe,Yj)=>{"use strict";var HX=Gp(),Hp=$0(),VX=Nl(),Bp=U0(),WX=uo(),La=HX("%WeakMap%",!0),YX=Hp("WeakMap.prototype.get",!0),QX=Hp("WeakMap.prototype.set",!0),XX=Hp("WeakMap.prototype.has",!0),ZX=Hp("WeakMap.prototype.delete",!0);Yj.exports=La?function(){var e,r,n={assert:function(i){if(!n.has(i))throw new WX("Side channel does not contain "+VX(i))},delete:function(i){if(La&&i&&(typeof i=="object"||typeof i=="function")){if(e)return ZX(e,i)}else if(Bp&&r)return r.delete(i);return!1},get:function(i){return La&&i&&(typeof i=="object"||typeof i=="function")&&e?YX(e,i):r&&r.get(i)},has:function(i){return La&&i&&(typeof i=="object"||typeof i=="function")&&e?XX(e,i):!!r&&r.has(i)},set:function(i,s){La&&i&&(typeof i=="object"||typeof i=="function")?(e||(e=new La),QX(e,i,s)):Bp&&(r||(r=Bp()),r.set(i,s))}};return n}:Bp});var J0=h((PCe,Xj)=>{"use strict";var eZ=uo(),tZ=Nl(),rZ=AC(),nZ=U0(),iZ=Qj(),sZ=iZ||nZ||rZ;Xj.exports=function(){var e,r={assert:function(n){if(!r.has(n)){var i=n&&Object(n)===n?"the given object key":tZ(n);throw new eZ("Side channel does not contain "+i)}},delete:function(n){return!!e&&e.delete(n)},get:function(n){return e&&e.get(n)},has:function(n){return!!e&&e.has(n)},set:function(n,i){e||(e=sZ()),e.set(n,i)}};return r}});var Vp=h((KCe,Zj)=>{"use strict";var oZ=String.prototype.replace,aZ=/%20/g,z0={RFC1738:"RFC1738",RFC3986:"RFC3986"};Zj.exports={default:z0.RFC3986,formatters:{RFC1738:function(t){return oZ.call(t,aZ,"+")},RFC3986:function(t){return String(t)}},RFC1738:z0.RFC1738,RFC3986:z0.RFC3986}});var V0=h((DCe,rP)=>{"use strict";var cZ=Vp(),tP=J0(),eP=P0(),G0=Object.prototype.hasOwnProperty,cs=Array.isArray,Yp=tP(),mo=function(e,r){return Yp.set(e,r),e},ho=function(e){return Yp.has(e)},Jl=function(e){return Yp.get(e)},B0=function(e,r){Yp.set(e,r)},Un=(function(){for(var t=[],e=0;e<256;++e)t[t.length]="%"+((e<16?"0":"")+e.toString(16)).toUpperCase();return t})(),lZ=function(e){for(;e.length>1;){var r=e.pop(),n=r.obj[r.prop];if(cs(n)){for(var i=[],s=0;s<n.length;++s)typeof n[s]<"u"&&(i[i.length]=n[s]);r.obj[r.prop]=i}}},qa=function(e,r){for(var n=r&&r.plainObjects?{__proto__:null}:{},i=0;i<e.length;++i)typeof e[i]<"u"&&(n[i]=e[i]);return n},H0=function(e,r,n){r==="__proto__"&&eP?eP(e,r,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[r]=n},uZ=function t(e,r,n){if(!r)return e;if(typeof r!="object"&&typeof r!="function"){if(cs(e)){var i=e.length;if(n&&typeof n.arrayLimit=="number"&&i>=n.arrayLimit){if(n.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+n.arrayLimit+" element"+(n.arrayLimit===1?"":"s")+" allowed in an array.");return mo(qa(e.concat(r),n),i)}e[i]=r}else if(e&&typeof e=="object")if(ho(e)){var s=Jl(e)+1;e[s]=r,B0(e,s)}else{if(n&&n.strictMerge)return[e,r];(n&&(n.plainObjects||n.allowPrototypes)||!G0.call(Object.prototype,r))&&(e[r]=!0)}else return[e,r];return e}if(!e||typeof e!="object"){if(ho(r)){for(var o=Object.keys(r),a=n&&n.plainObjects?{__proto__:null,0:e}:{0:e},c=0;c<o.length;c++){var l=parseInt(o[c],10);a[l+1]=r[o[c]]}return mo(a,Jl(r)+1)}var u=[e].concat(r);if(n&&typeof n.arrayLimit=="number"&&u.length>n.arrayLimit){if(n.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+n.arrayLimit+" element"+(n.arrayLimit===1?"":"s")+" allowed in an array.");return mo(qa(u,n),u.length-1)}return u}var d=e;if(cs(e)&&!cs(r)&&(d=qa(e,n)),cs(e)&&cs(r)){if(r.forEach(function(p,f){if(G0.call(e,f)){var m=e[f];m&&typeof m=="object"&&p&&typeof p=="object"?e[f]=t(m,p,n):e[e.length]=p}else e[f]=p}),n&&typeof n.arrayLimit=="number"&&e.length>n.arrayLimit){if(n.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+n.arrayLimit+" element"+(n.arrayLimit===1?"":"s")+" allowed in an array.");return mo(qa(e,n),e.length-1)}return e}return Object.keys(r).reduce(function(p,f){var m=r[f];if(G0.call(p,f)?H0(p,f,t(p[f],m,n)):H0(p,f,m),ho(r)&&!ho(p)&&mo(p,Jl(r)),ho(p)){var y=parseInt(f,10);String(y)===f&&y>=0&&y>Jl(p)&&B0(p,y)}return p},d)},dZ=function(e,r){return Object.keys(r).reduce(function(n,i){return H0(n,i,r[i]),n},e)},pZ=function(t,e,r){var n=t.replace(/\+/g," ");if(r==="iso-8859-1")return n.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(n)}catch{return n}},Wp=1024,fZ=function(e,r,n,i,s){if(e.length===0)return e;var o=e;if(typeof e=="symbol"?o=Symbol.prototype.toString.call(e):typeof e!="string"&&(o=String(e)),n==="iso-8859-1")return escape(o).replace(/%u[0-9a-f]{4}/gi,function(m){return"%26%23"+parseInt(m.slice(2),16)+"%3B"});for(var a="",c=0;c<o.length;c+=Wp){var l=o.length>=Wp?o.slice(c,c+Wp):o;if(c+Wp<o.length){var u=l.charCodeAt(l.length-1);u>=55296&&u<=56319&&(l=l.slice(0,-1),c-=1)}for(var d=[],p=0;p<l.length;++p){var f=l.charCodeAt(p);if(f===45||f===46||f===95||f===126||f>=48&&f<=57||f>=65&&f<=90||f>=97&&f<=122||s===cZ.RFC1738&&(f===40||f===41)){d[d.length]=l.charAt(p);continue}if(f<128){d[d.length]=Un[f];continue}if(f<2048){d[d.length]=Un[192|f>>6]+Un[128|f&63];continue}if(f<55296||f>=57344){d[d.length]=Un[224|f>>12]+Un[128|f>>6&63]+Un[128|f&63];continue}p+=1,f=65536+((f&1023)<<10|l.charCodeAt(p)&1023),d[d.length]=Un[240|f>>18]+Un[128|f>>12&63]+Un[128|f>>6&63]+Un[128|f&63]}a+=d.join("")}return a},mZ=function(e){for(var r=[{obj:{o:e},prop:"o"}],n=tP(),i=0;i<r.length;++i)for(var s=r[i],o=s.obj[s.prop],a=Object.keys(o),c=0;c<a.length;++c){var l=a[c],u=o[l];typeof u=="object"&&u!==null&&!n.has(u)&&(r[r.length]={obj:o,prop:l},n.set(u,!0))}return lZ(r),e},hZ=function(e){return Object.prototype.toString.call(e)==="[object RegExp]"},yZ=function(e){return!e||typeof e!="object"?!1:!!(e.constructor&&typeof e.constructor.isBuffer=="function"&&e.constructor.isBuffer(e))},gZ=function(e,r,n,i,s){if(ho(e)){if(s)throw new RangeError("Array limit exceeded. Only "+n+" element"+(n===1?"":"s")+" allowed in an array.");for(var o=cs(r)?r:[r],a=Jl(e),c=0;c<o.length;++c)a+=1,e[a]=o[c];return B0(e,a),e}var l=[].concat(e,r);if(l.length>n){if(s)throw new RangeError("Array limit exceeded. Only "+n+" element"+(n===1?"":"s")+" allowed in an array.");return mo(qa(l,{plainObjects:i}),l.length-1)}return l},bZ=function(e,r){if(cs(e)){for(var n=[],i=0;i<e.length;i+=1)n[n.length]=r(e[i]);return n}return r(e)};rP.exports={arrayToObject:qa,assign:dZ,combine:gZ,compact:mZ,decode:pZ,encode:fZ,isBuffer:yZ,isOverflow:ho,isRegExp:hZ,markOverflow:mo,maybeMap:bZ,merge:uZ}});var cP=h((MCe,aP)=>{"use strict";var iP=J0(),Qp=V0(),zl=Vp(),vZ=Object.prototype.hasOwnProperty,sP={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,r){return e+"["+r+"]"},repeat:function(e){return e}},Jn=Array.isArray,EZ=Array.prototype.push,oP=function(t,e){EZ.apply(t,Jn(e)?e:[e])},SZ=Date.prototype.toISOString,nP=zl.default,mt={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,commaRoundTrip:!1,delimiter:"&",depth:1/0,encode:!0,encodeDotInKeys:!1,encoder:Qp.encode,encodeValuesOnly:!1,filter:void 0,format:nP,formatter:zl.formatters[nP],indices:!1,serializeDate:function(e){return SZ.call(e)},skipNulls:!1,strictNullHandling:!1},xZ=function(e){return typeof e=="string"||typeof e=="number"||typeof e=="boolean"||typeof e=="symbol"||typeof e=="bigint"},W0={},wZ=function t(e,r,n,i,s,o,a,c,l,u,d,p,f,m,y,b,v,E,S,k){var _=e;if(k>S)throw new RangeError("Input depth exceeded depth option of "+S);for(var O=E,N=0,ee=!1;(O=O.get(W0))!==void 0&&!ee;){var q=O.get(e);if(N+=1,typeof q<"u"){if(q===N)throw new RangeError("Cyclic object value");ee=!0}typeof O.get(W0)>"u"&&(N=0)}if(_=typeof u=="function"?u(r,_):_,_ instanceof Date?_=f(_):n==="comma"&&Jn(_)&&(_=Qp.maybeMap(_,function(ge){return ge instanceof Date?f(ge):ge})),_===null){if(o)return y(l&&!b?l(r,mt.encoder,v,"key",m):r);_=""}if(xZ(_)||Qp.isBuffer(_)){if(l){var U=b?r:l(r,mt.encoder,v,"key",m);return[y(U)+"="+y(l(_,mt.encoder,v,"value",m))]}return[y(r)+"="+y(String(_))]}var te=[];if(typeof _>"u")return te;var Ge;if(n==="comma"&&Jn(_))b&&l&&(_=Qp.maybeMap(_,function(ge){return ge==null?ge:l(ge)})),Ge=[{value:_.length>0?_.join(",")||null:void 0}];else if(Jn(u))Ge=u;else{var T=Object.keys(_);Ge=d?T.sort(d):T}var K=c?String(r).replace(/\./g,"%2E"):String(r),P=i&&Jn(_)&&_.length===1?K+"[]":K;if(s&&Jn(_)&&_.length===0&&Object.keys(_).length===0)return P+"[]";for(var C=0;C<Ge.length;++C){var j=Ge[C],Y=typeof j=="object"&&j&&typeof j.value<"u"?j.value:_[j];if(!(a&&Y===null)){var W=p&&c?String(j).replace(/\./g,"%2E"):String(j),G=Jn(_)?typeof n=="function"?n(P,W):P:P+(p?"."+W:"["+W+"]");E.set(e,N);var Ae=iP();Ae.set(W0,E),oP(te,t(Y,G,n,i,s,o,a,c,n==="comma"&&b&&Jn(_)?null:l,u,d,p,f,m,y,b,v,Ae,S,k+1))}}return te},_Z=function(e){if(!e)return mt;if(typeof e.allowEmptyArrays<"u"&&typeof e.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof e.encodeDotInKeys<"u"&&typeof e.encodeDotInKeys!="boolean")throw new TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(e.encoder!==null&&typeof e.encoder<"u"&&typeof e.encoder!="function")throw new TypeError("Encoder has to be a function.");var r=e.charset||mt.charset;if(typeof e.charset<"u"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var n=zl.default;if(typeof e.format<"u"){if(!vZ.call(zl.formatters,e.format))throw new TypeError("Unknown format option provided.");n=e.format}var i=zl.formatters[n],s=mt.filter;(typeof e.filter=="function"||Jn(e.filter))&&(s=e.filter);var o;if(e.arrayFormat in sP?o=e.arrayFormat:"indices"in e?o=e.indices?"indices":"repeat":o=mt.arrayFormat,"commaRoundTrip"in e&&typeof e.commaRoundTrip!="boolean")throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var a=typeof e.allowDots>"u"?e.encodeDotInKeys===!0?!0:mt.allowDots:!!e.allowDots;return{addQueryPrefix:typeof e.addQueryPrefix=="boolean"?e.addQueryPrefix:mt.addQueryPrefix,allowDots:a,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:mt.allowEmptyArrays,arrayFormat:o,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:mt.charsetSentinel,commaRoundTrip:!!e.commaRoundTrip,delimiter:typeof e.delimiter>"u"?mt.delimiter:e.delimiter,depth:typeof e.depth=="number"?e.depth:mt.depth,encode:typeof e.encode=="boolean"?e.encode:mt.encode,encodeDotInKeys:typeof e.encodeDotInKeys=="boolean"?e.encodeDotInKeys:mt.encodeDotInKeys,encoder:typeof e.encoder=="function"?e.encoder:mt.encoder,encodeValuesOnly:typeof e.encodeValuesOnly=="boolean"?e.encodeValuesOnly:mt.encodeValuesOnly,filter:s,format:n,formatter:i,serializeDate:typeof e.serializeDate=="function"?e.serializeDate:mt.serializeDate,skipNulls:typeof e.skipNulls=="boolean"?e.skipNulls:mt.skipNulls,sort:typeof e.sort=="function"?e.sort:null,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:mt.strictNullHandling}};aP.exports=function(t,e){var r=t,n=_Z(e),i,s;typeof n.filter=="function"?(s=n.filter,r=s("",r)):Jn(n.filter)&&(s=n.filter,i=s);var o=[];if(typeof r!="object"||r===null)return"";var a=sP[n.arrayFormat],c=a==="comma"&&n.commaRoundTrip;i||(i=Object.keys(r)),n.sort&&i.sort(n.sort);for(var l=iP(),u=0;u<i.length;++u){var d=i[u];if(!(typeof d>"u"||d===null)){var p=r[d];if(!(n.skipNulls&&p===null)){var f=n.encodeDotInKeys?String(d).replace(/\./g,"%2E"):String(d);oP(o,wZ(p,f,a,c,n.allowEmptyArrays,n.strictNullHandling,n.skipNulls,n.encodeDotInKeys,n.encode?n.encoder:null,n.filter,n.sort,n.allowDots,n.serializeDate,n.format,n.formatter,n.encodeValuesOnly,n.charset,l,n.depth,0))}}}var m=o.join(n.delimiter),y=n.addQueryPrefix===!0?"?":"";return n.charsetSentinel&&(n.charset==="iso-8859-1"?y+="utf8=%26%2310003%3B"+n.delimiter:y+="utf8=%E2%9C%93"+n.delimiter),m.length>0?y+m:""}});var dP=h((NCe,uP)=>{"use strict";var zn=V0(),Xp=Object.prototype.hasOwnProperty,Y0=Array.isArray,rt={allowDots:!1,allowEmptyArrays:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decodeDotInKeys:!1,decoder:zn.decode,delimiter:"&",depth:5,duplicates:"combine",ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictDepth:!1,strictMerge:!0,strictNullHandling:!1,throwOnLimitExceeded:!1},IZ=function(t){return t.replace(/&#(\d+);/g,function(e,r){return String.fromCharCode(parseInt(r,10))})},lP=function(t,e,r){if(t&&typeof t=="string"&&e.comma&&t.indexOf(",")>-1){if(e.throwOnLimitExceeded)for(var n=0,i=t.indexOf(",");i>-1;){if(n+=1,n>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(e.arrayLimit===1?"":"s")+" allowed in an array.");i=t.indexOf(",",i+1)}return t.split(",")}if(e.throwOnLimitExceeded&&r>=e.arrayLimit)throw new RangeError("Array limit exceeded. Only "+e.arrayLimit+" element"+(e.arrayLimit===1?"":"s")+" allowed in an array.");return t},TZ="utf8=%26%2310003%3B",kZ="utf8=%E2%9C%93",AZ=function(e,r){var n={__proto__:null},i=r.ignoreQueryPrefix?e.replace(/^\?/,""):e;i=i.replace(/%5B/gi,"[").replace(/%5D/gi,"]");var s=r.parameterLimit===1/0?void 0:r.parameterLimit,o=i.split(r.delimiter,r.throwOnLimitExceeded&&typeof s<"u"?s+1:s);if(r.throwOnLimitExceeded&&typeof s<"u"&&o.length>s)throw new RangeError("Parameter limit exceeded. Only "+s+" parameter"+(s===1?"":"s")+" allowed.");var a=-1,c,l=r.charset;if(r.charsetSentinel)for(c=0;c<o.length;++c)o[c].indexOf("utf8=")===0&&(o[c]===kZ?l="utf-8":o[c]===TZ&&(l="iso-8859-1"),a=c,c=o.length);for(c=0;c<o.length;++c)if(c!==a){var u=o[c],d=u.indexOf("]="),p=d===-1?u.indexOf("="):d+1,f,m;if(p===-1?(f=r.decoder(u,rt.decoder,l,"key"),m=r.strictNullHandling?null:""):(f=r.decoder(u.slice(0,p),rt.decoder,l,"key"),f!==null&&(m=zn.maybeMap(lP(u.slice(p+1),r,Y0(n[f])?n[f].length:0),function(b){return r.decoder(b,rt.decoder,l,"value")}))),m&&r.interpretNumericEntities&&l==="iso-8859-1"&&(m=IZ(String(m))),u.indexOf("[]=")>-1&&(m=Y0(m)?[m]:m),r.comma&&Y0(m)&&m.length>r.arrayLimit&&(m=zn.combine([],m,r.arrayLimit,r.plainObjects,r.throwOnLimitExceeded)),f!==null){var y=Xp.call(n,f);y&&(r.duplicates==="combine"||u.indexOf("[]=")>-1)?n[f]=zn.combine(n[f],m,r.arrayLimit,r.plainObjects,r.throwOnLimitExceeded):(!y||r.duplicates==="last")&&(n[f]=m)}}return n},RZ=function(t,e,r,n){var i=0;if(t.length>0&&t[t.length-1]==="[]"){var s=t.slice(0,-1).join("");i=Array.isArray(e)&&e[s]?e[s].length:0}for(var o=n?e:lP(e,r,i),a=t.length-1;a>=0;--a){var c,l=t[a];if(l==="[]"&&r.parseArrays)zn.isOverflow(o)?c=o:c=r.allowEmptyArrays&&(o===""||r.strictNullHandling&&o===null)?[]:zn.combine([],o,r.arrayLimit,r.plainObjects,r.throwOnLimitExceeded);else{c=r.plainObjects?{__proto__:null}:{};var u=l.charAt(0)==="["&&l.charAt(l.length-1)==="]"?l.slice(1,-1):l,d=r.decodeDotInKeys?u.replace(/%2E/g,"."):u,p=parseInt(d,10),f=!isNaN(p)&&l!==d&&String(p)===d&&p>=0&&r.parseArrays;if(!r.parseArrays&&d==="")c={0:o};else if(f&&p<r.arrayLimit)c=[],c[p]=o;else{if(f&&r.throwOnLimitExceeded)throw new RangeError("Array limit exceeded. Only "+r.arrayLimit+" element"+(r.arrayLimit===1?"":"s")+" allowed in an array.");f?(c[p]=o,zn.markOverflow(c,p)):d!=="__proto__"&&(c[d]=o)}}o=c}return o},OZ=function(e,r){var n=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e;if(r.depth<=0)return!r.plainObjects&&Xp.call(Object.prototype,n)&&!r.allowPrototypes?void 0:[n];var i=[],s=n.indexOf("["),o=s>=0?n.slice(0,s):n;if(o){if(!r.plainObjects&&Xp.call(Object.prototype,o)&&!r.allowPrototypes)return;i[i.length]=o}for(var a=n.length,c=s,l=0;c>=0&&l<r.depth;){for(var u=1,d=c+1,p=-1;d<a&&p<0;){var f=n.charCodeAt(d);f===91?u+=1:f===93&&(u-=1,u===0&&(p=d)),d+=1}if(p<0)return i[i.length]="["+n.slice(c)+"]",i;var m=n.slice(c,p+1),y=m.slice(1,-1);if(!r.plainObjects&&Xp.call(Object.prototype,y)&&!r.allowPrototypes)return;i[i.length]=m,l+=1,c=n.indexOf("[",p+1)}if(c>=0){if(r.strictDepth===!0)throw new RangeError("Input depth exceeded depth option of "+r.depth+" and strictDepth is true");i[i.length]="["+n.slice(c)+"]"}return i},CZ=function(e,r,n,i){if(e){var s=OZ(e,n);if(s)return RZ(s,r,n,i)}},jZ=function(e){if(!e)return rt;if(typeof e.allowEmptyArrays<"u"&&typeof e.allowEmptyArrays!="boolean")throw new TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof e.decodeDotInKeys<"u"&&typeof e.decodeDotInKeys!="boolean")throw new TypeError("`decodeDotInKeys` option can only be `true` or `false`, when provided");if(e.decoder!==null&&typeof e.decoder<"u"&&typeof e.decoder!="function")throw new TypeError("Decoder has to be a function.");if(typeof e.charset<"u"&&e.charset!=="utf-8"&&e.charset!=="iso-8859-1")throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");if(typeof e.throwOnLimitExceeded<"u"&&typeof e.throwOnLimitExceeded!="boolean")throw new TypeError("`throwOnLimitExceeded` option must be a boolean");var r=typeof e.charset>"u"?rt.charset:e.charset,n=typeof e.duplicates>"u"?rt.duplicates:e.duplicates;if(n!=="combine"&&n!=="first"&&n!=="last")throw new TypeError("The duplicates option must be either combine, first, or last");var i=typeof e.allowDots>"u"?e.decodeDotInKeys===!0?!0:rt.allowDots:!!e.allowDots;return{allowDots:i,allowEmptyArrays:typeof e.allowEmptyArrays=="boolean"?!!e.allowEmptyArrays:rt.allowEmptyArrays,allowPrototypes:typeof e.allowPrototypes=="boolean"?e.allowPrototypes:rt.allowPrototypes,allowSparse:typeof e.allowSparse=="boolean"?e.allowSparse:rt.allowSparse,arrayLimit:typeof e.arrayLimit=="number"?e.arrayLimit:rt.arrayLimit,charset:r,charsetSentinel:typeof e.charsetSentinel=="boolean"?e.charsetSentinel:rt.charsetSentinel,comma:typeof e.comma=="boolean"?e.comma:rt.comma,decodeDotInKeys:typeof e.decodeDotInKeys=="boolean"?e.decodeDotInKeys:rt.decodeDotInKeys,decoder:typeof e.decoder=="function"?e.decoder:rt.decoder,delimiter:typeof e.delimiter=="string"||zn.isRegExp(e.delimiter)?e.delimiter:rt.delimiter,depth:typeof e.depth=="number"||e.depth===!1?+e.depth:rt.depth,duplicates:n,ignoreQueryPrefix:e.ignoreQueryPrefix===!0,interpretNumericEntities:typeof e.interpretNumericEntities=="boolean"?e.interpretNumericEntities:rt.interpretNumericEntities,parameterLimit:typeof e.parameterLimit=="number"?e.parameterLimit:rt.parameterLimit,parseArrays:e.parseArrays!==!1,plainObjects:typeof e.plainObjects=="boolean"?e.plainObjects:rt.plainObjects,strictDepth:typeof e.strictDepth=="boolean"?!!e.strictDepth:rt.strictDepth,strictMerge:typeof e.strictMerge=="boolean"?!!e.strictMerge:rt.strictMerge,strictNullHandling:typeof e.strictNullHandling=="boolean"?e.strictNullHandling:rt.strictNullHandling,throwOnLimitExceeded:typeof e.throwOnLimitExceeded=="boolean"?e.throwOnLimitExceeded:!1}};uP.exports=function(t,e){var r=jZ(e);if(t===""||t===null||typeof t>"u")return r.plainObjects?{__proto__:null}:{};for(var n=typeof t=="string"?AZ(t,r):t,i=r.plainObjects?{__proto__:null}:{},s=Object.keys(n),o=0;o<s.length;++o){var a=s[o],c=CZ(a,n[a],r,typeof t=="string");i=zn.merge(i,c,r)}return r.allowSparse===!0?i:zn.compact(i)}});var Q0=h((LCe,pP)=>{"use strict";var PZ=cP(),KZ=dP(),DZ=Vp();pP.exports={formats:DZ,parse:KZ,stringify:PZ}});var hP=h((qCe,mP)=>{"use strict";var fP=Ta(),X0=Tr()("body-parser:urlencoded"),MZ=jl(),NZ=Q0(),{normalizeOptions:LZ}=ja();mP.exports=qZ;function qZ(t){let e=LZ(t,"application/x-www-form-urlencoded");if(e.defaultCharset!=="utf-8"&&e.defaultCharset!=="iso-8859-1")throw new TypeError("option defaultCharset must be either utf-8 or iso-8859-1");let r=FZ(t),n={...e,isValidCharset:i=>i==="utf-8"||i==="iso-8859-1"};return function(s,o,a){MZ(s,o,a,r,X0,n)}}function FZ(t){let e=!!t?.extended,r=t?.parameterLimit!==void 0?t?.parameterLimit:1e3,n=t?.charsetSentinel,i=t?.interpretNumericEntities,s=e?t?.depth!==void 0?t?.depth:32:0;if(isNaN(r)||r<1)throw new TypeError("option parameterLimit must be a positive number");if(isNaN(s)||s<0)throw new TypeError("option depth must be a zero or a positive number");return isFinite(r)&&(r=r|0),function(a,c){if(!a.length)return{};let l=$Z(a,r);if(l===void 0)throw X0("too many parameters"),fP(413,"too many parameters",{type:"parameters.too.many"});let u=e?Math.max(100,l):l;X0("parse "+(e?"extended ":"")+"urlencoding");try{return NZ.parse(a,{allowPrototypes:!0,arrayLimit:u,depth:s,charsetSentinel:n,interpretNumericEntities:i,charset:c,parameterLimit:r,strictDepth:!0})}catch(d){throw d instanceof RangeError?fP(400,"The input exceeded the depth",{type:"querystring.parse.rangeError"}):d}}}function $Z(t,e){let r=0,n=-1;do{if(r++,r>e)return;n=t.indexOf("&",n+1)}while(n!==-1);return r}});var gP=h((Fa,yP)=>{"use strict";Fa=yP.exports=UZ;Fa.json=ZO();Fa.raw=tC();Fa.text=nC();Fa.urlencoded=hP();function UZ(){throw new Error("The bodyParser() generic has been split into individual middleware to use instead.")}});var vP=h((FCe,bP)=>{"use strict";function JZ(t,e,r=!0){if(!t)throw new TypeError("The `destination` argument is required.");if(!e)throw new TypeError("The `source` argument is required.");for(let n of Object.getOwnPropertyNames(e)){if(!r&&Object.hasOwn(t,n))continue;let i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i)}return t}bP.exports=JZ});var Gl=h(($Ce,EP)=>{"use strict";EP.exports=HZ;var zZ=/(?:[^\x21\x23-\x3B\x3D\x3F-\x5F\x61-\x7A\x7C\x7E]|%(?:[^0-9A-Fa-f]|[0-9A-Fa-f][^0-9A-Fa-f]|$))+/g,GZ=/(^|[^\uD800-\uDBFF])[\uDC00-\uDFFF]|[\uD800-\uDBFF]([^\uDC00-\uDFFF]|$)/g,BZ="$1\uFFFD$2";function HZ(t){return String(t).replace(GZ,BZ).replace(zZ,encodeURI)}});var Bl=h((UCe,SP)=>{"use strict";var VZ=/["'&<>]/;SP.exports=WZ;function WZ(t){var e=""+t,r=VZ.exec(e);if(!r)return e;var n,i="",s=0,o=0;for(s=r.index;s<e.length;s++){switch(e.charCodeAt(s)){case 34:n="&quot;";break;case 38:n="&amp;";break;case 39:n="&#39;";break;case 60:n="&lt;";break;case 62:n="&gt;";break;default:continue}o!==s&&(i+=e.substring(o,s)),o=s+1,i+=n}return o!==s?i+e.substring(o,s):i}});var Hl=h((JCe,Z0)=>{"use strict";var wP=require("url"),xP=wP.parse,Zp=wP.Url;Z0.exports=_P;Z0.exports.original=YZ;function _P(t){var e=t.url;if(e!==void 0){var r=t._parsedUrl;return TP(e,r)?r:(r=IP(e),r._raw=e,t._parsedUrl=r)}}function YZ(t){var e=t.originalUrl;if(typeof e!="string")return _P(t);var r=t._parsedOriginalUrl;return TP(e,r)?r:(r=IP(e),r._raw=e,t._parsedOriginalUrl=r)}function IP(t){if(typeof t!="string"||t.charCodeAt(0)!==47)return xP(t);for(var e=t,r=null,n=null,i=1;i<t.length;i++)switch(t.charCodeAt(i)){case 63:n===null&&(e=t.substring(0,i),r=t.substring(i+1),n=t.substring(i));break;case 9:case 10:case 12:case 13:case 32:case 35:case 160:case 65279:return xP(t)}var s=Zp!==void 0?new Zp:{};return s.path=t,s.href=t,s.pathname=e,n!==null&&(s.query=r,s.search=n),s}function TP(t,e){return typeof e=="object"&&e!==null&&(Zp===void 0||e instanceof Zp)&&e._raw===t}});var OP=h((zCe,RP)=>{"use strict";var eE=Tr()("finalhandler"),QZ=Gl(),XZ=Bl(),kP=Cl(),ZZ=Hl(),AP=Al(),eee=kP.isFinished;function tee(t){var e=XZ(t).replaceAll(`
`,"<br>").replaceAll(" "," &nbsp;");return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Error</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}RP.exports=ree;function ree(t,e,r){var n=r||{},i=n.env||process.env.NODE_ENV||"development",s=n.onerror;return function(o){var a,c,l;if(!o&&e.headersSent){eE("cannot 404 after headers sent");return}if(o?(l=see(o),l===void 0?l=aee(e):a=nee(o),c=iee(o,l,i)):(l=404,c="Cannot "+t.method+" "+QZ(oee(t))),eE("default %s",l),o&&s&&setImmediate(s,o,t,e),e.headersSent){eE("cannot %d after headers sent",l),t.socket&&t.socket.destroy();return}cee(t,e,l,a,c)}}function nee(t){if(!(!t.headers||typeof t.headers!="object"))return{...t.headers}}function iee(t,e,r){var n;return r!=="production"&&(n=t.stack,!n&&typeof t.toString=="function"&&(n=t.toString())),n||AP.message[e]}function see(t){if(typeof t.status=="number"&&t.status>=400&&t.status<600)return t.status;if(typeof t.statusCode=="number"&&t.statusCode>=400&&t.statusCode<600)return t.statusCode}function oee(t){try{return ZZ.original(t).pathname}catch{return"resource"}}function aee(t){var e=t.statusCode;return(typeof e!="number"||e<400||e>599)&&(e=500),e}function cee(t,e,r,n,i){function s(){var o=tee(i);e.statusCode=r,t.httpVersionMajor<2&&(e.statusMessage=AP.message[r]),e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Range");for(let[a,c]of Object.entries(n??{}))e.setHeader(a,c);if(e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Content-Type","text/html; charset=utf-8"),e.setHeader("Content-Length",Buffer.byteLength(o,"utf8")),t.method==="HEAD"){e.end();return}e.end(o,"utf8")}if(eee(t)){s();return}t.unpipe(),kP(t,s),t.resume()}});var DP=h((GCe,KP)=>{"use strict";var ef=Tr()("express:view"),Vl=require("node:path"),lee=require("node:fs"),uee=Vl.dirname,PP=Vl.basename,dee=Vl.extname,CP=Vl.join,pee=Vl.resolve;KP.exports=tf;function tf(t,e){var r=e||{};if(this.defaultEngine=r.defaultEngine,this.ext=dee(t),this.name=t,this.root=r.root,!this.ext&&!this.defaultEngine)throw new Error("No default engine was specified and no extension was provided.");var n=t;if(this.ext||(this.ext=this.defaultEngine[0]!=="."?"."+this.defaultEngine:this.defaultEngine,n+=this.ext),!r.engines[this.ext]){var i=this.ext.slice(1);ef('require "%s"',i);var s=require(i).__express;if(typeof s!="function")throw new Error('Module "'+i+'" does not provide a view engine.');r.engines[this.ext]=s}this.engine=r.engines[this.ext],this.path=this.lookup(n)}tf.prototype.lookup=function(e){var r,n=[].concat(this.root);ef('lookup "%s"',e);for(var i=0;i<n.length&&!r;i++){var s=n[i],o=pee(s,e),a=uee(o),c=PP(o);r=this.resolve(a,c)}return r};tf.prototype.render=function(e,r){var n=!0;ef('render "%s"',this.path),this.engine(this.path,e,function(){if(!n)return r.apply(this,arguments);for(var s=new Array(arguments.length),o=this,a=0;a<arguments.length;a++)s[a]=arguments[a];return process.nextTick(function(){return r.apply(o,s)})}),n=!1};tf.prototype.resolve=function(e,r){var n=this.ext,i=CP(e,r),s=jP(i);if(s&&s.isFile()||(i=CP(e,PP(r,n),"index"+n),s=jP(i),s&&s.isFile()))return i};function jP(t){ef('stat "%s"',t);try{return lee.statSync(t)}catch{return}}});var rE=h(tE=>{"use strict";var MP=/; *([!#$%&'*+.^_`|~0-9A-Za-z-]+) *= *("(?:[\u000b\u0020\u0021\u0023-\u005b\u005d-\u007e\u0080-\u00ff]|\\[\u000b\u0020-\u00ff])*"|[!#$%&'*+.^_`|~0-9A-Za-z-]+) */g,fee=/^[\u000b\u0020-\u007e\u0080-\u00ff]+$/,NP=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,mee=/\\([\u000b\u0020-\u00ff])/g,hee=/([\\"])/g,LP=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/;tE.format=yee;tE.parse=gee;function yee(t){if(!t||typeof t!="object")throw new TypeError("argument obj is required");var e=t.parameters,r=t.type;if(!r||!LP.test(r))throw new TypeError("invalid type");var n=r;if(e&&typeof e=="object")for(var i,s=Object.keys(e).sort(),o=0;o<s.length;o++){if(i=s[o],!NP.test(i))throw new TypeError("invalid parameter name");n+="; "+i+"="+vee(e[i])}return n}function gee(t){if(!t)throw new TypeError("argument string is required");var e=typeof t=="object"?bee(t):t;if(typeof e!="string")throw new TypeError("argument string is required to be a string");var r=e.indexOf(";"),n=r!==-1?e.slice(0,r).trim():e.trim();if(!LP.test(n))throw new TypeError("invalid media type");var i=new Eee(n.toLowerCase());if(r!==-1){var s,o,a;for(MP.lastIndex=r;o=MP.exec(e);){if(o.index!==r)throw new TypeError("invalid parameter format");r+=o[0].length,s=o[1].toLowerCase(),a=o[2],a.charCodeAt(0)===34&&(a=a.slice(1,-1),a.indexOf("\\")!==-1&&(a=a.replace(mee,"$1"))),i.parameters[s]=a}if(r!==e.length)throw new TypeError("invalid parameter format")}return i}function bee(t){var e;if(typeof t.getHeader=="function"?e=t.getHeader("content-type"):typeof t.headers=="object"&&(e=t.headers&&t.headers["content-type"]),typeof e!="string")throw new TypeError("content-type header is missing from object");return e}function vee(t){var e=String(t);if(NP.test(e))return e;if(e.length>0&&!fee.test(e))throw new TypeError("invalid parameter value");return'"'+e.replace(hee,"\\$1")+'"'}function Eee(t){this.parameters=Object.create(null),this.type=t}});var nE=h((HCe,$P)=>{"use strict";$P.exports=wee;var See=require("crypto"),qP=require("fs").Stats,FP=Object.prototype.toString;function xee(t){if(t.length===0)return'"0-2jmj7l5rSw0yVb/vlWAYkK/YBwk"';var e=See.createHash("sha1").update(t,"utf8").digest("base64").substring(0,27),r=typeof t=="string"?Buffer.byteLength(t,"utf8"):t.length;return'"'+r.toString(16)+"-"+e+'"'}function wee(t,e){if(t==null)throw new TypeError("argument entity is required");var r=_ee(t),n=e&&typeof e.weak=="boolean"?e.weak:r;if(!r&&typeof t!="string"&&!Buffer.isBuffer(t))throw new TypeError("argument entity must be string, Buffer, or fs.Stats");var i=r?Iee(t):xee(t);return n?"W/"+i:i}function _ee(t){return typeof qP=="function"&&t instanceof qP?!0:t&&typeof t=="object"&&"ctime"in t&&FP.call(t.ctime)==="[object Date]"&&"mtime"in t&&FP.call(t.mtime)==="[object Date]"&&"ino"in t&&typeof t.ino=="number"&&"size"in t&&typeof t.size=="number"}function Iee(t){var e=t.mtime.getTime().toString(16),r=t.size.toString(16);return'"'+r+"-"+e+'"'}});var JP=h((VCe,UP)=>{"use strict";UP.exports=Tee;function Tee(t){if(!t)throw new TypeError("argument req is required");var e=Aee(t.headers["x-forwarded-for"]||""),r=kee(t),n=[r].concat(e);return n}function kee(t){return t.socket?t.socket.remoteAddress:t.connection.remoteAddress}function Aee(t){for(var e=t.length,r=[],n=t.length,i=t.length-1;i>=0;i--)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=i;break;default:n=i;break}return n!==e&&r.push(t.substring(n,e)),r}});var GP=h((zP,Wl)=>{(function(){var t,e,r,n,i,s,o,a,c;e={},a=this,typeof Wl<"u"&&Wl!==null&&Wl.exports?Wl.exports=e:a.ipaddr=e,o=function(l,u,d,p){var f,m;if(l.length!==u.length)throw new Error("ipaddr: cannot match CIDR for objects with different lengths");for(f=0;p>0;){if(m=d-p,m<0&&(m=0),l[f]>>m!==u[f]>>m)return!1;p-=d,f+=1}return!0},e.subnetMatch=function(l,u,d){var p,f,m,y,b;d==null&&(d="unicast");for(m in u)for(y=u[m],y[0]&&!(y[0]instanceof Array)&&(y=[y]),p=0,f=y.length;p<f;p++)if(b=y[p],l.kind()===b[0].kind()&&l.match.apply(l,b))return m;return d},e.IPv4=(function(){function l(u){var d,p,f;if(u.length!==4)throw new Error("ipaddr: ipv4 octet count should be 4");for(d=0,p=u.length;d<p;d++)if(f=u[d],!(0<=f&&f<=255))throw new Error("ipaddr: ipv4 octet should fit in 8 bits");this.octets=u}return l.prototype.kind=function(){return"ipv4"},l.prototype.toString=function(){return this.octets.join(".")},l.prototype.toNormalizedString=function(){return this.toString()},l.prototype.toByteArray=function(){return this.octets.slice(0)},l.prototype.match=function(u,d){var p;if(d===void 0&&(p=u,u=p[0],d=p[1]),u.kind()!=="ipv4")throw new Error("ipaddr: cannot match ipv4 address with non-ipv4 one");return o(this.octets,u.octets,8,d)},l.prototype.SpecialRanges={unspecified:[[new l([0,0,0,0]),8]],broadcast:[[new l([255,255,255,255]),32]],multicast:[[new l([224,0,0,0]),4]],linkLocal:[[new l([169,254,0,0]),16]],loopback:[[new l([127,0,0,0]),8]],carrierGradeNat:[[new l([100,64,0,0]),10]],private:[[new l([10,0,0,0]),8],[new l([172,16,0,0]),12],[new l([192,168,0,0]),16]],reserved:[[new l([192,0,0,0]),24],[new l([192,0,2,0]),24],[new l([192,88,99,0]),24],[new l([198,51,100,0]),24],[new l([203,0,113,0]),24],[new l([240,0,0,0]),4]]},l.prototype.range=function(){return e.subnetMatch(this,this.SpecialRanges)},l.prototype.toIPv4MappedAddress=function(){return e.IPv6.parse("::ffff:"+this.toString())},l.prototype.prefixLengthFromSubnetMask=function(){var u,d,p,f,m,y,b;for(b={0:8,128:7,192:6,224:5,240:4,248:3,252:2,254:1,255:0},u=0,m=!1,d=p=3;p>=0;d=p+=-1)if(f=this.octets[d],f in b){if(y=b[f],m&&y!==0)return null;y!==8&&(m=!0),u+=y}else return null;return 32-u},l})(),r="(0?\\d+|0x[a-f0-9]+)",n={fourOctet:new RegExp("^"+r+"\\."+r+"\\."+r+"\\."+r+"$","i"),longValue:new RegExp("^"+r+"$","i")},e.IPv4.parser=function(l){var u,d,p,f,m;if(d=function(y){return y[0]==="0"&&y[1]!=="x"?parseInt(y,8):parseInt(y)},u=l.match(n.fourOctet))return(function(){var y,b,v,E;for(v=u.slice(1,6),E=[],y=0,b=v.length;y<b;y++)p=v[y],E.push(d(p));return E})();if(u=l.match(n.longValue)){if(m=d(u[1]),m>4294967295||m<0)throw new Error("ipaddr: address outside defined range");return(function(){var y,b;for(b=[],f=y=0;y<=24;f=y+=8)b.push(m>>f&255);return b})().reverse()}else return null},e.IPv6=(function(){function l(u,d){var p,f,m,y,b,v;if(u.length===16)for(this.parts=[],p=f=0;f<=14;p=f+=2)this.parts.push(u[p]<<8|u[p+1]);else if(u.length===8)this.parts=u;else throw new Error("ipaddr: ipv6 part count should be 8 or 16");for(v=this.parts,m=0,y=v.length;m<y;m++)if(b=v[m],!(0<=b&&b<=65535))throw new Error("ipaddr: ipv6 part should fit in 16 bits");d&&(this.zoneId=d)}return l.prototype.kind=function(){return"ipv6"},l.prototype.toString=function(){return this.toNormalizedString().replace(/((^|:)(0(:|$))+)/,"::")},l.prototype.toRFC5952String=function(){var u,d,p,f,m;for(f=/((^|:)(0(:|$)){2,})/g,m=this.toNormalizedString(),u=0,d=-1;p=f.exec(m);)p[0].length>d&&(u=p.index,d=p[0].length);return d<0?m:m.substring(0,u)+"::"+m.substring(u+d)},l.prototype.toByteArray=function(){var u,d,p,f,m;for(u=[],m=this.parts,d=0,p=m.length;d<p;d++)f=m[d],u.push(f>>8),u.push(f&255);return u},l.prototype.toNormalizedString=function(){var u,d,p;return u=(function(){var f,m,y,b;for(y=this.parts,b=[],f=0,m=y.length;f<m;f++)d=y[f],b.push(d.toString(16));return b}).call(this).join(":"),p="",this.zoneId&&(p="%"+this.zoneId),u+p},l.prototype.toFixedLengthString=function(){var u,d,p;return u=(function(){var f,m,y,b;for(y=this.parts,b=[],f=0,m=y.length;f<m;f++)d=y[f],b.push(d.toString(16).padStart(4,"0"));return b}).call(this).join(":"),p="",this.zoneId&&(p="%"+this.zoneId),u+p},l.prototype.match=function(u,d){var p;if(d===void 0&&(p=u,u=p[0],d=p[1]),u.kind()!=="ipv6")throw new Error("ipaddr: cannot match ipv6 address with non-ipv6 one");return o(this.parts,u.parts,16,d)},l.prototype.SpecialRanges={unspecified:[new l([0,0,0,0,0,0,0,0]),128],linkLocal:[new l([65152,0,0,0,0,0,0,0]),10],multicast:[new l([65280,0,0,0,0,0,0,0]),8],loopback:[new l([0,0,0,0,0,0,0,1]),128],uniqueLocal:[new l([64512,0,0,0,0,0,0,0]),7],ipv4Mapped:[new l([0,0,0,0,0,65535,0,0]),96],rfc6145:[new l([0,0,0,0,65535,0,0,0]),96],rfc6052:[new l([100,65435,0,0,0,0,0,0]),96],"6to4":[new l([8194,0,0,0,0,0,0,0]),16],teredo:[new l([8193,0,0,0,0,0,0,0]),32],reserved:[[new l([8193,3512,0,0,0,0,0,0]),32]]},l.prototype.range=function(){return e.subnetMatch(this,this.SpecialRanges)},l.prototype.isIPv4MappedAddress=function(){return this.range()==="ipv4Mapped"},l.prototype.toIPv4Address=function(){var u,d,p;if(!this.isIPv4MappedAddress())throw new Error("ipaddr: trying to convert a generic ipv6 address to ipv4");return p=this.parts.slice(-2),u=p[0],d=p[1],new e.IPv4([u>>8,u&255,d>>8,d&255])},l.prototype.prefixLengthFromSubnetMask=function(){var u,d,p,f,m,y,b;for(b={0:16,32768:15,49152:14,57344:13,61440:12,63488:11,64512:10,65024:9,65280:8,65408:7,65472:6,65504:5,65520:4,65528:3,65532:2,65534:1,65535:0},u=0,m=!1,d=p=7;p>=0;d=p+=-1)if(f=this.parts[d],f in b){if(y=b[f],m&&y!==0)return null;y!==16&&(m=!0),u+=y}else return null;return 128-u},l})(),i="(?:[0-9a-f]+::?)+",c="%[0-9a-z]{1,}",s={zoneIndex:new RegExp(c,"i"),native:new RegExp("^(::)?("+i+")?([0-9a-f]+)?(::)?("+c+")?$","i"),transitional:new RegExp("^((?:"+i+")|(?:::)(?:"+i+")?)"+(r+"\\."+r+"\\."+r+"\\."+r)+("("+c+")?$"),"i")},t=function(l,u){var d,p,f,m,y,b;if(l.indexOf("::")!==l.lastIndexOf("::"))return null;for(b=(l.match(s.zoneIndex)||[])[0],b&&(b=b.substring(1),l=l.replace(/%.+$/,"")),d=0,p=-1;(p=l.indexOf(":",p+1))>=0;)d++;if(l.substr(0,2)==="::"&&d--,l.substr(-2,2)==="::"&&d--,d>u)return null;for(y=u-d,m=":";y--;)m+="0:";return l=l.replace("::",m),l[0]===":"&&(l=l.slice(1)),l[l.length-1]===":"&&(l=l.slice(0,-1)),u=(function(){var v,E,S,k;for(S=l.split(":"),k=[],v=0,E=S.length;v<E;v++)f=S[v],k.push(parseInt(f,16));return k})(),{parts:u,zoneId:b}},e.IPv6.parser=function(l){var u,d,p,f,m,y,b;if(s.native.test(l))return t(l,8);if((f=l.match(s.transitional))&&(b=f[6]||"",u=t(f[1].slice(0,-1)+b,6),u.parts)){for(y=[parseInt(f[2]),parseInt(f[3]),parseInt(f[4]),parseInt(f[5])],d=0,p=y.length;d<p;d++)if(m=y[d],!(0<=m&&m<=255))return null;return u.parts.push(y[0]<<8|y[1]),u.parts.push(y[2]<<8|y[3]),{parts:u.parts,zoneId:u.zoneId}}return null},e.IPv4.isIPv4=e.IPv6.isIPv6=function(l){return this.parser(l)!==null},e.IPv4.isValid=function(l){var u;try{return new this(this.parser(l)),!0}catch(d){return u=d,!1}},e.IPv4.isValidFourPartDecimal=function(l){return!!(e.IPv4.isValid(l)&&l.match(/^(0|[1-9]\d*)(\.(0|[1-9]\d*)){3}$/))},e.IPv6.isValid=function(l){var u,d;if(typeof l=="string"&&l.indexOf(":")===-1)return!1;try{return u=this.parser(l),new this(u.parts,u.zoneId),!0}catch(p){return d=p,!1}},e.IPv4.parse=function(l){var u;if(u=this.parser(l),u===null)throw new Error("ipaddr: string is not formatted like ip address");return new this(u)},e.IPv6.parse=function(l){var u;if(u=this.parser(l),u.parts===null)throw new Error("ipaddr: string is not formatted like ip address");return new this(u.parts,u.zoneId)},e.IPv4.parseCIDR=function(l){var u,d,p;if((d=l.match(/^(.+)\/(\d+)$/))&&(u=parseInt(d[2]),u>=0&&u<=32))return p=[this.parse(d[1]),u],Object.defineProperty(p,"toString",{value:function(){return this.join("/")}}),p;throw new Error("ipaddr: string is not formatted like an IPv4 CIDR range")},e.IPv4.subnetMaskFromPrefixLength=function(l){var u,d,p;if(l=parseInt(l),l<0||l>32)throw new Error("ipaddr: invalid IPv4 prefix length");for(p=[0,0,0,0],d=0,u=Math.floor(l/8);d<u;)p[d]=255,d++;return u<4&&(p[u]=Math.pow(2,l%8)-1<<8-l%8),new this(p)},e.IPv4.broadcastAddressFromCIDR=function(l){var u,d,p,f,m,y;try{for(u=this.parseCIDR(l),f=u[0].toByteArray(),y=this.subnetMaskFromPrefixLength(u[1]).toByteArray(),m=[],p=0;p<4;)m.push(parseInt(f[p],10)|parseInt(y[p],10)^255),p++;return new this(m)}catch(b){throw d=b,new Error("ipaddr: the address does not have IPv4 CIDR format")}},e.IPv4.networkAddressFromCIDR=function(l){var u,d,p,f,m,y;try{for(u=this.parseCIDR(l),f=u[0].toByteArray(),y=this.subnetMaskFromPrefixLength(u[1]).toByteArray(),m=[],p=0;p<4;)m.push(parseInt(f[p],10)&parseInt(y[p],10)),p++;return new this(m)}catch(b){throw d=b,new Error("ipaddr: the address does not have IPv4 CIDR format")}},e.IPv6.parseCIDR=function(l){var u,d,p;if((d=l.match(/^(.+)\/(\d+)$/))&&(u=parseInt(d[2]),u>=0&&u<=128))return p=[this.parse(d[1]),u],Object.defineProperty(p,"toString",{value:function(){return this.join("/")}}),p;throw new Error("ipaddr: string is not formatted like an IPv6 CIDR range")},e.isValid=function(l){return e.IPv6.isValid(l)||e.IPv4.isValid(l)},e.parse=function(l){if(e.IPv6.isValid(l))return e.IPv6.parse(l);if(e.IPv4.isValid(l))return e.IPv4.parse(l);throw new Error("ipaddr: the address has neither IPv6 nor IPv4 format")},e.parseCIDR=function(l){var u;try{return e.IPv6.parseCIDR(l)}catch(d){u=d;try{return e.IPv4.parseCIDR(l)}catch(p){throw u=p,new Error("ipaddr: the address has neither IPv6 nor IPv4 CIDR format")}}},e.fromByteArray=function(l){var u;if(u=l.length,u===4)return new e.IPv4(l);if(u===16)return new e.IPv6(l);throw new Error("ipaddr: the binary input is neither an IPv6 nor IPv4 address")},e.process=function(l){var u;return u=this.parse(l),u.kind()==="ipv6"&&u.isIPv4MappedAddress()?u.toIPv4Address():u}}).call(zP)});var iE=h((WCe,sf)=>{"use strict";sf.exports=Dee;sf.exports.all=VP;sf.exports.compile=WP;var Ree=JP(),HP=GP(),Oee=/^[0-9]+$/,rf=HP.isValid,nf=HP.parse,BP={linklocal:["169.254.0.0/16","fe80::/10"],loopback:["127.0.0.1/8","::1/128"],uniquelocal:["10.0.0.0/8","172.16.0.0/12","192.168.0.0/16","fc00::/7"]};function VP(t,e){var r=Ree(t);if(!e)return r;typeof e!="function"&&(e=WP(e));for(var n=0;n<r.length-1;n++)e(r[n],n)||(r.length=n+1);return r}function WP(t){if(!t)throw new TypeError("argument is required");var e;if(typeof t=="string")e=[t];else if(Array.isArray(t))e=t.slice();else throw new TypeError("unsupported trust argument");for(var r=0;r<e.length;r++)t=e[r],Object.prototype.hasOwnProperty.call(BP,t)&&(t=BP[t],e.splice.apply(e,[r,1].concat(t)),r+=t.length-1);return jee(Cee(e))}function Cee(t){for(var e=new Array(t.length),r=0;r<t.length;r++)e[r]=Pee(t[r]);return e}function jee(t){var e=t.length;return e===0?Mee:e===1?Lee(t[0]):Nee(t)}function Pee(t){var e=t.lastIndexOf("/"),r=e!==-1?t.substring(0,e):t;if(!rf(r))throw new TypeError("invalid IP address: "+r);var n=nf(r);e===-1&&n.kind()==="ipv6"&&n.isIPv4MappedAddress()&&(n=n.toIPv4Address());var i=n.kind()==="ipv6"?128:32,s=e!==-1?t.substring(e+1,t.length):null;if(s===null?s=i:Oee.test(s)?s=parseInt(s,10):n.kind()==="ipv4"&&rf(s)?s=Kee(s):s=null,s<=0||s>i)throw new TypeError("invalid range on address: "+t);return[n,s]}function Kee(t){var e=nf(t),r=e.kind();return r==="ipv4"?e.prefixLengthFromSubnetMask():null}function Dee(t,e){if(!t)throw new TypeError("req argument is required");if(!e)throw new TypeError("trust argument is required");var r=VP(t,e),n=r[r.length-1];return n}function Mee(){return!1}function Nee(t){return function(r){if(!rf(r))return!1;for(var n=nf(r),i,s=n.kind(),o=0;o<t.length;o++){var a=t[o],c=a[0],l=c.kind(),u=a[1],d=n;if(s!==l){if(l==="ipv4"&&!n.isIPv4MappedAddress())continue;i||(i=l==="ipv4"?n.toIPv4Address():n.toIPv4MappedAddress()),d=i}if(d.match(c,u))return!0}return!1}}function Lee(t){var e=t[0],r=e.kind(),n=r==="ipv4",i=t[1];return function(o){if(!rf(o))return!1;var a=nf(o),c=a.kind();if(c!==r){if(n&&!a.isIPv4MappedAddress())return!1;a=n?a.toIPv4Address():a.toIPv4MappedAddress()}return a.match(e,i)}}});var ls=h(kr=>{"use strict";var{METHODS:qee}=require("node:http"),YP=rE(),Fee=nE(),$ee=Oa(),Uee=iE(),Jee=Q0(),zee=require("node:querystring"),{Buffer:QP}=require("node:buffer");kr.methods=qee.map(t=>t.toLowerCase());kr.etag=XP({weak:!1});kr.wetag=XP({weak:!0});kr.normalizeType=function(t){return~t.indexOf("/")?Gee(t):{value:$ee.lookup(t)||"application/octet-stream",params:{}}};kr.normalizeTypes=function(t){return t.map(kr.normalizeType)};function Gee(t){for(var e=t.length,r=t.indexOf(";"),n=r===-1?e:r,i={value:t.slice(0,n).trim(),quality:1,params:{}};n<e;){var s=t.indexOf("=",n);if(s===-1)break;var r=t.indexOf(";",n),o=r===-1?e:r;if(s>o){n=t.lastIndexOf(";",s-1)+1;continue}var a=t.slice(n,s).trim(),c=t.slice(s+1,o).trim();a==="q"?i.quality=parseFloat(c):i.params[a]=c,n=o+1}return i}kr.compileETag=function(t){var e;if(typeof t=="function")return t;switch(t){case!0:case"weak":e=kr.wetag;break;case!1:break;case"strong":e=kr.etag;break;default:throw new TypeError("unknown value for etag function: "+t)}return e};kr.compileQueryParser=function(e){var r;if(typeof e=="function")return e;switch(e){case!0:case"simple":r=zee.parse;break;case!1:break;case"extended":r=Bee;break;default:throw new TypeError("unknown value for query parser function: "+e)}return r};kr.compileTrust=function(t){return typeof t=="function"?t:t===!0?function(){return!0}:typeof t=="number"?function(e,r){return r<t}:(typeof t=="string"&&(t=t.split(",").map(function(e){return e.trim()})),Uee.compile(t||[]))};kr.setCharset=function(e,r){if(!e||!r)return e;var n=YP.parse(e);return n.parameters.charset=r,YP.format(n)};function XP(t){return function(r,n){var i=QP.isBuffer(r)?r:QP.from(r,n);return Fee(i,t)}}function Bee(t){return Jee.parse(t,{allowPrototypes:!0})}});var tK=h((QCe,eK)=>{eK.exports=ZP;function ZP(t,e){if(t&&e)return ZP(t)(e);if(typeof t!="function")throw new TypeError("need wrapper function");return Object.keys(t).forEach(function(n){r[n]=t[n]}),r;function r(){for(var n=new Array(arguments.length),i=0;i<n.length;i++)n[i]=arguments[i];var s=t.apply(this,n),o=n[n.length-1];return typeof s=="function"&&s!==o&&Object.keys(o).forEach(function(a){s[a]=o[a]}),s}}});var iK=h((XCe,sE)=>{var rK=tK();sE.exports=rK(of);sE.exports.strict=rK(nK);of.proto=of(function(){Object.defineProperty(Function.prototype,"once",{value:function(){return of(this)},configurable:!0}),Object.defineProperty(Function.prototype,"onceStrict",{value:function(){return nK(this)},configurable:!0})});function of(t){var e=function(){return e.called?e.value:(e.called=!0,e.value=t.apply(this,arguments))};return e.called=!1,e}function nK(t){var e=function(){if(e.called)throw new Error(e.onceError);return e.called=!0,e.value=t.apply(this,arguments)},r=t.name||"Function wrapped with `once`";return e.onceError=r+" shouldn't be called more than once",e.called=!1,e}});var aE=h((ZCe,oE)=>{oE.exports=sK;oE.exports.default=sK;function sK(t){return!!t&&(typeof t=="object"||typeof t=="function")&&typeof t.then=="function"}});var dK=h(En=>{"use strict";Object.defineProperty(En,"__esModule",{value:!0});En.PathError=En.TokenData=void 0;En.parse=dE;En.compile=Yee;En.match=Xee;En.pathToRegexp=lK;En.stringify=ete;var lE="/",uE=t=>t,Hee=/^[$_\p{ID_Start}]$/u,aK=/^[$\u200c\u200d\p{ID_Continue}]$/u,Vee=/^[$_\p{ID_Start}][$\u200c\u200d\p{ID_Continue}]*$/u;function Wee(t){return t.replace(/[{}()\[\]+?!:*\\]/g,"\\$&")}function wi(t){return t.replace(/[.+*?^${}()[\]|/\\]/g,"\\$&")}var af=class{constructor(e,r){this.tokens=e,this.originalPath=r}};En.TokenData=af;var Gn=class extends TypeError{constructor(e,r){let n=e;r&&(n+=`: ${r}`),n+="; visit https://git.new/pathToRegexpError for info",super(n),this.originalPath=r}};En.PathError=Gn;function dE(t,e={}){let{encodePath:r=uE}=e,n=[...t],i=0;function s(o){let a=[],c="";function l(){c&&(a.push({type:"text",value:r(c)}),c="")}for(;i<n.length;){let u=n[i++];if(u===o)return l(),a;if(u==="\\"){if(i===n.length)throw new Gn(`Unexpected end after \\ at index ${i}`,t);c+=n[i++];continue}if(u===":"||u==="*"){let d=u===":"?"param":"wildcard",p="";if(Hee.test(n[i]))do p+=n[i++];while(aK.test(n[i]));else if(n[i]==='"'){let f=i;for(;i<n.length;){if(n[++i]==='"'){i++,f=0;break}n[i]==="\\"&&i++,p+=n[i]}if(f)throw new Gn(`Unterminated quote at index ${f}`,t)}if(!p)throw new Gn(`Missing parameter name at index ${i}`,t);l(),a.push({type:d,name:p});continue}if(u==="{"){l(),a.push({type:"group",tokens:s("}")});continue}if(u==="}"||u==="("||u===")"||u==="["||u==="]"||u==="+"||u==="?"||u==="!")throw new Gn(`Unexpected ${u} at index ${i-1}`,t);c+=u}if(o)throw new Gn(`Unexpected end at index ${i}, expected ${o}`,t);return l(),a}return new af(s(""),t)}function Yee(t,e={}){let{encode:r=encodeURIComponent,delimiter:n=lE}=e,i=typeof t=="object"?t:dE(t,e),s=cK(i.tokens,n,r);return function(a={}){let c=[],l=s(a,c);if(c.length)throw new TypeError(`Missing parameters: ${c.join(", ")}`);return l}}function cK(t,e,r){let n=t.map(i=>Qee(i,e,r));return(i,s)=>{let o="";for(let a of n)o+=a(i,s);return o}}function Qee(t,e,r){if(t.type==="text")return()=>t.value;if(t.type==="group"){let i=cK(t.tokens,e,r);return(s,o)=>{let a=o.length,c=i(s,o);return o.length===a?c:(o.length=a,"")}}let n=r||uE;return t.type==="wildcard"&&r!==!1?(i,s)=>{let o=i[t.name];if(o==null)return s.push(t.name),"";if(!Array.isArray(o)||o.length===0)throw new TypeError(`Expected "${t.name}" to be a non-empty array`);let a="";for(let c=0;c<o.length;c++){if(typeof o[c]!="string")throw new TypeError(`Expected "${t.name}/${c}" to be a string`);c>0&&(a+=e),a+=n(o[c])}return a}:(i,s)=>{let o=i[t.name];if(o==null)return s.push(t.name),"";if(typeof o!="string")throw new TypeError(`Expected "${t.name}" to be a string`);return n(o)}}function Xee(t,e={}){let{decode:r=decodeURIComponent,delimiter:n=lE}=e,{regexp:i,keys:s}=lK(t,e),o=s.map(a=>r===!1?uE:a.type==="param"?r:c=>c.split(n).map(r));return function(c){let l=i.exec(c);if(!l)return!1;let u=l[0],d=Object.create(null);for(let p=1;p<l.length;p++){if(l[p]===void 0)continue;let f=s[p-1],m=o[p-1];d[f.name]=m(l[p])}return{path:u,params:d}}}function lK(t,e={}){let{delimiter:r=lE,end:n=!0,sensitive:i=!1,trailing:s=!0}=e,o=[],a="",c=0;function l(d){if(Array.isArray(d)){for(let f of d)l(f);return}let p=typeof d=="object"?d:dE(d,e);cE(p.tokens,0,[],f=>{if(c>=256)throw new Gn("Too many path combinations",p.originalPath);c>0&&(a+="|"),a+=Zee(f,r,o,p.originalPath),c++})}l(t);let u=`^(?:${a})`;return s&&(u+="(?:"+wi(r)+"$)?"),u+=n?"$":"(?="+wi(r)+"|$)",{regexp:new RegExp(u,i?"":"i"),keys:o}}function cE(t,e,r,n){for(;e<t.length;){let i=t[e++];if(i.type==="group"){let s=r.length;cE(i.tokens,0,r,o=>cE(t,e,o,n)),r.length=s;continue}r.push(i)}n(r)}function Zee(t,e,r,n){let i="",s="",o="",a=0,c=0,l=0;function u(p,f){for(;p<t.length;){let m=t[p++];if(m.type===f)return!0;if(m.type==="text"&&m.value.includes(e))break}return!1}function d(p){let f="";for(;p<t.length;){let m=t[p++];if(m.type!=="text")break;f+=m.value}return f}for(;l<t.length;){let p=t[l++];if(p.type==="text"){i+=wi(p.value),s+=p.value,a===2&&(o+=p.value),p.value.includes(e)&&(c=0);continue}if(p.type==="param"||p.type==="wildcard"){if(a&&!s)throw new Gn(`Missing text before "${p.name}" ${p.type}`,n);p.type==="param"?(i+=c&2?`(${us(e,s)}+)`:u(l,"wildcard")?`(${us(e,d(l))}+)`:c&1?`(${us(e,s)}+|${wi(s)})`:`(${us(e,"")}+)`,c|=a=1):(i+=c&2?`(${us(s,"")}+)`:o?`(${us(o,"")}+|${us(e,"")}+)`:"([^]+)",o="",c|=a=2),r.push(p),s="";continue}throw new TypeError(`Unknown token type: ${p.type}`)}return i}function us(t,e){return e.length>t.length?us(e,t):(t===e&&(e=""),e.length>1?`(?:(?!${wi(t)}|${wi(e)})[^])`:t.length>1?`(?:(?!${wi(t)})[^${wi(e)}])`:`[^${wi(t+e)}]`)}function uK(t,e){let r="";for(;e<t.length;){let n=t[e++];if(n.type==="text"){r+=Wee(n.value);continue}if(n.type==="group"){r+="{"+uK(n.tokens,0)+"}";continue}if(n.type==="param"){r+=":"+oK(n.name,t[e]);continue}if(n.type==="wildcard"){r+="*"+oK(n.name,t[e]);continue}throw new TypeError(`Unknown token type: ${n.type}`)}return r}function ete(t){return uK(t.tokens,0)}function oK(t,e){return!Vee.test(t)||e?.type==="text"&&aK.test(e.value[0])?JSON.stringify(t):t}});var pE=h((tje,yK)=>{"use strict";var fK=aE(),tte=dK(),rte=Tr()("router:layer"),mK=kl()("router"),nte=/\/+$/,ite=/\((?:\?<(.*?)>)?(?!\?)/g;yK.exports=$a;function $a(t,e,r){if(!(this instanceof $a))return new $a(t,e,r);rte("new %o",t);let n=e||{};this.handle=r,this.keys=[],this.name=r.name||"<anonymous>",this.params=void 0,this.path=void 0,this.slash=t==="/"&&n.end===!1;function i(s){if(s instanceof RegExp){let o=[],a=0,c;for(;c=ite.exec(s.source);)o.push({name:c[1]||a++,offset:c.index});return function(u){let d=s.exec(u);if(!d)return!1;let p={};for(let f=1;f<d.length;f++){let y=o[f-1].name,b=pK(d[f]);b!==void 0&&(p[y]=b)}return{params:p,path:d[0]}}}return tte.match(n.strict?s:hK(s),{sensitive:n.sensitive,end:n.end,trailing:!n.strict,decode:pK})}this.matchers=Array.isArray(t)?t.map(i):[i(t)]}$a.prototype.handleError=function(e,r,n,i){let s=this.handle;if(s.length!==4)return i(e);try{let o=s(e,r,n,i);fK(o)&&(o instanceof Promise||mK("handlers that are Promise-like are deprecated, use a native Promise instead"),o.then(null,function(a){i(a||new Error("Rejected promise"))}))}catch(o){i(o)}};$a.prototype.handleRequest=function(e,r,n){let i=this.handle;if(i.length>3)return n();try{let s=i(e,r,n);fK(s)&&(s instanceof Promise||mK("handlers that are Promise-like are deprecated, use a native Promise instead"),s.then(null,function(o){n(o||new Error("Rejected promise"))}))}catch(s){n(s)}};$a.prototype.match=function(e){let r;if(e!=null){if(this.slash)return this.params={},this.path="",!0;let n=0;for(;!r&&n<this.matchers.length;)r=this.matchers[n](e),n++}return r?(this.params=r.params,this.path=r.path,this.keys=Object.keys(r.params),!0):(this.params=void 0,this.path=void 0,!1)};function pK(t){if(typeof t!="string"||t.length===0)return t;try{return decodeURIComponent(t)}catch(e){throw e instanceof URIError&&(e.message="Failed to decode param '"+t+"'",e.status=400),e}}function hK(t){return t instanceof RegExp||t==="/"?t:Array.isArray(t)?t.map(function(e){return hK(e)}):String(t).replace(nte,"")}});var xK=h((rje,SK)=>{"use strict";var gK=Tr()("router:route"),bK=pE(),{METHODS:ste}=require("node:http"),vK=Array.prototype.slice,EK=Array.prototype.flat,ote=ste.map(t=>t.toLowerCase());SK.exports=Ua;function Ua(t){gK("new %o",t),this.path=t,this.stack=[],this.methods=Object.create(null)}Ua.prototype._handlesMethod=function(e){if(this.methods._all)return!0;let r=typeof e=="string"?e.toLowerCase():e;return r==="head"&&!this.methods.head&&(r="get"),!!this.methods[r]};Ua.prototype._methods=function(){let e=Object.keys(this.methods);this.methods.get&&!this.methods.head&&e.push("head");for(let r=0;r<e.length;r++)e[r]=e[r].toUpperCase();return e};Ua.prototype.dispatch=function(e,r,n){let i=0,s=this.stack,o=0;if(s.length===0)return n();let a=typeof e.method=="string"?e.method.toLowerCase():e.method;a==="head"&&!this.methods.head&&(a="get"),e.route=this,c();function c(l){if(l&&l==="route")return n();if(l&&l==="router"||i>=s.length)return n(l);if(++o>100)return setImmediate(c,l);let u,d;for(;d!==!0&&i<s.length;)u=s[i++],d=!u.method||u.method===a;if(d!==!0)return n(l);l?u.handleError(l,e,r,c):u.handleRequest(e,r,c),o=0}};Ua.prototype.all=function(e){let r=EK.call(vK.call(arguments),1/0);if(r.length===0)throw new TypeError("argument handler is required");for(let n=0;n<r.length;n++){let i=r[n];if(typeof i!="function")throw new TypeError("argument handler must be a function");let s=bK("/",{},i);s.method=void 0,this.methods._all=!0,this.stack.push(s)}return this};ote.forEach(function(t){Ua.prototype[t]=function(e){let r=EK.call(vK.call(arguments),1/0);if(r.length===0)throw new TypeError("argument handler is required");for(let n=0;n<r.length;n++){let i=r[n];if(typeof i!="function")throw new TypeError("argument handler must be a function");gK("%s %s",t,this.path);let s=bK("/",{},i);s.method=t,this.methods[t]=!0,this.stack.push(s)}return this}})});var mE=h((nje,fE)=>{"use strict";var ate=aE(),wK=pE(),{METHODS:cte}=require("node:http"),lte=Hl(),_K=xK(),cf=Tr()("router"),ute=kl()("router"),IK=Array.prototype.slice,dte=Array.prototype.flat,pte=cte.map(t=>t.toLowerCase());fE.exports=_i;fE.exports.Route=_K;function _i(t){if(!(this instanceof _i))return new _i(t);let e=t||{};function r(n,i,s){r.handle(n,i,s)}return Object.setPrototypeOf(r,this),r.caseSensitive=e.caseSensitive,r.mergeParams=e.mergeParams,r.params={},r.strict=e.strict,r.stack=[],r}_i.prototype=function(){};_i.prototype.param=function(e,r){if(!e)throw new TypeError("argument name is required");if(typeof e!="string")throw new TypeError("argument name must be a string");if(!r)throw new TypeError("argument fn is required");if(typeof r!="function")throw new TypeError("argument fn must be a function");let n=this.params[e];return n||(n=this.params[e]=[]),n.push(r),this};_i.prototype.handle=function(e,r,n){if(!n)throw new TypeError("argument callback is required");cf("dispatching %s %s",e.method,e.url);let i=0,s,o=hte(e.url)||"",a="",c=this,l=!1,u=0,d={},p=this.stack,f=e.params,m=e.baseUrl||"",y=vte(n,e,"baseUrl","next","params");e.next=b,e.method==="OPTIONS"&&(s=[],y=xte(y,fte(r,s))),e.baseUrl=m,e.originalUrl=e.originalUrl||e.url,b();function b(E){let S=E==="route"?null:E;if(l&&(e.url=e.url.slice(1),l=!1),a.length!==0&&(e.baseUrl=m,e.url=o+a+e.url.slice(o.length),a=""),S==="router"){setImmediate(y,null);return}if(i>=p.length){setImmediate(y,S);return}if(++u>100)return setImmediate(b,E);let k=mte(e);if(k==null)return y(S);let _,O,N;for(;O!==!0&&i<p.length;){if(_=p[i++],O=yte(_,k),N=_.route,typeof O!="boolean"&&(S=S||O),O!==!0||!N)continue;if(S){O=!1;continue}let q=e.method,U=N._handlesMethod(q);!U&&q==="OPTIONS"&&s&&s.push.apply(s,N._methods()),!U&&q!=="HEAD"&&(O=!1)}if(O!==!0)return y(S);N&&(e.route=N),e.params=c.mergeParams?gte(_.params,f):_.params;let ee=_.path;bte(c.params,_,d,e,r,function(q){q?b(S||q):N?_.handleRequest(e,r,b):v(_,S,ee,k),u=0})}function v(E,S,k,_){if(k.length!==0){if(k!==_.substring(0,k.length)){b(S);return}let O=_[k.length];if(O&&O!=="/"){b(S);return}cf("trim prefix (%s) from url %s",k,e.url),a=k,e.url=o+e.url.slice(o.length+a.length),!o&&e.url[0]!=="/"&&(e.url="/"+e.url,l=!0),e.baseUrl=m+(a[a.length-1]==="/"?a.substring(0,a.length-1):a)}cf("%s %s : %s",E.name,k,e.originalUrl),S?E.handleError(S,e,r,b):E.handleRequest(e,r,b)}};_i.prototype.use=function(e){let r=0,n="/";if(typeof e!="function"){let s=e;for(;Array.isArray(s)&&s.length!==0;)s=s[0];typeof s!="function"&&(r=1,n=e)}let i=dte.call(IK.call(arguments,r),1/0);if(i.length===0)throw new TypeError("argument handler is required");for(let s=0;s<i.length;s++){let o=i[s];if(typeof o!="function")throw new TypeError("argument handler must be a function");cf("use %o %s",n,o.name||"<anonymous>");let a=new wK(n,{sensitive:this.caseSensitive,strict:!1,end:!1},o);a.route=void 0,this.stack.push(a)}return this};_i.prototype.route=function(e){let r=new _K(e),n=new wK(e,{sensitive:this.caseSensitive,strict:this.strict,end:!0},i);function i(s,o,a){r.dispatch(s,o,a)}return n.route=r,this.stack.push(n),r};pte.concat("all").forEach(function(t){_i.prototype[t]=function(e){let r=this.route(e);return r[t].apply(r,IK.call(arguments,1)),this}});function fte(t,e){return function(n,i){if(i||e.length===0)return n(i);Ste(t,e,n)}}function mte(t){try{return lte(t).pathname}catch{return}}function hte(t){if(typeof t!="string"||t.length===0||t[0]==="/")return;let e=t.indexOf("?"),r=e!==-1?e:t.length,n=t.substring(0,r).indexOf("://");return n!==-1?t.substring(0,t.indexOf("/",3+n)):void 0}function yte(t,e){try{return t.match(e)}catch(r){return r}}function gte(t,e){if(typeof e!="object"||!e)return t;let r=Object.assign({},e);if(!(0 in t)||!(0 in e))return Object.assign(r,t);let n=0,i=0;for(;n in t;)n++;for(;i in e;)i++;for(n--;n>=0;n--)t[n+i]=t[n],n<i&&delete t[n];return Object.assign(r,t)}function bte(t,e,r,n,i,s){let o=e.keys;if(!o||o.length===0)return s();let a=0,c=0,l,u,d,p;function f(y){if(y)return s(y);if(a>=o.length)return s();if(c=0,l=o[a++],u=n.params[l],d=t[l],p=r[l],u===void 0||!d)return f();if(p&&(p.match===u||p.error&&p.error!=="route"))return n.params[l]=p.value,f(p.error);r[l]=p={error:null,match:u,value:u},m()}function m(y){let b=d[c++];if(p.value=n.params[l],y){p.error=y,f(y);return}if(!b)return f();try{let v=b(n,i,m,u,l);ate(v)&&(v instanceof Promise||ute("parameters that are Promise-like are deprecated, use a native Promise instead"),v.then(null,function(E){m(E||new Error("Rejected promise"))}))}catch(v){m(v)}}f()}function vte(t,e){let r=new Array(arguments.length-2),n=new Array(arguments.length-2);for(let i=0;i<r.length;i++)r[i]=arguments[i+2],n[i]=e[r[i]];return function(){for(let i=0;i<r.length;i++)e[r[i]]=n[i];return t.apply(this,arguments)}}function Ete(t,e){let r=Object.create(null);for(let i=0;i<e.length;i++)r[e[i]]=!0;let n=Object.keys(r).sort().join(", ");t.setHeader("Allow",n),t.setHeader("Content-Length",Buffer.byteLength(n)),t.setHeader("Content-Type","text/plain"),t.setHeader("X-Content-Type-Options","nosniff"),t.end(n)}function Ste(t,e,r){try{Ete(t,e)}catch(n){r(n)}}function xte(t,e){return function(){let n=new Array(arguments.length+1);n[0]=t;for(let i=0,s=arguments.length;i<s;i++)n[i+1]=arguments[i];e.apply(this,n)}}});var AK=h((TK,kK)=>{"use strict";var wte=OP(),gE=Tr()("express:application"),_te=DP(),Ite=require("node:http"),hE=ls().methods,Tte=ls().compileETag,kte=ls().compileQueryParser,Ate=ls().compileTrust,Rte=require("node:path").resolve,Ote=iK(),Cte=mE(),lf=Array.prototype.slice,jte=Array.prototype.flat,Dt=TK=kK.exports={},yE="@@symbol:trust_proxy_default";Dt.init=function(){var e=null;this.cache=Object.create(null),this.engines=Object.create(null),this.settings=Object.create(null),this.defaultConfiguration(),Object.defineProperty(this,"router",{configurable:!0,enumerable:!0,get:function(){return e===null&&(e=new Cte({caseSensitive:this.enabled("case sensitive routing"),strict:this.enabled("strict routing")})),e}})};Dt.defaultConfiguration=function(){var e=process.env.NODE_ENV||"development";this.enable("x-powered-by"),this.set("etag","weak"),this.set("env",e),this.set("query parser","simple"),this.set("subdomain offset",2),this.set("trust proxy",!1),Object.defineProperty(this.settings,yE,{configurable:!0,value:!0}),gE("booting in %s mode",e),this.on("mount",function(n){this.settings[yE]===!0&&typeof n.settings["trust proxy fn"]=="function"&&(delete this.settings["trust proxy"],delete this.settings["trust proxy fn"]),Object.setPrototypeOf(this.request,n.request),Object.setPrototypeOf(this.response,n.response),Object.setPrototypeOf(this.engines,n.engines),Object.setPrototypeOf(this.settings,n.settings)}),this.locals=Object.create(null),this.mountpath="/",this.locals.settings=this.settings,this.set("view",_te),this.set("views",Rte("views")),this.set("jsonp callback name","callback"),e==="production"&&this.enable("view cache")};Dt.handle=function(e,r,n){var i=n||wte(e,r,{env:this.get("env"),onerror:Pte.bind(this)});this.enabled("x-powered-by")&&r.setHeader("X-Powered-By","Express"),e.res=r,r.req=e,Object.setPrototypeOf(e,this.request),Object.setPrototypeOf(r,this.response),r.locals||(r.locals=Object.create(null)),this.router.handle(e,r,i)};Dt.use=function(e){var r=0,n="/";if(typeof e!="function"){for(var i=e;Array.isArray(i)&&i.length!==0;)i=i[0];typeof i!="function"&&(r=1,n=e)}var s=jte.call(lf.call(arguments,r),1/0);if(s.length===0)throw new TypeError("app.use() requires a middleware function");var o=this.router;return s.forEach(function(a){if(!a||!a.handle||!a.set)return o.use(n,a);gE(".use app under %s",n),a.mountpath=n,a.parent=this,o.use(n,function(l,u,d){var p=l.app;a.handle(l,u,function(f){Object.setPrototypeOf(l,p.request),Object.setPrototypeOf(u,p.response),d(f)})}),a.emit("mount",this)},this),this};Dt.route=function(e){return this.router.route(e)};Dt.engine=function(e,r){if(typeof r!="function")throw new Error("callback function required");var n=e[0]!=="."?"."+e:e;return this.engines[n]=r,this};Dt.param=function(e,r){if(Array.isArray(e)){for(var n=0;n<e.length;n++)this.param(e[n],r);return this}return this.router.param(e,r),this};Dt.set=function(e,r){if(arguments.length===1)return this.settings[e];switch(gE('set "%s" to %o',e,r),this.settings[e]=r,e){case"etag":this.set("etag fn",Tte(r));break;case"query parser":this.set("query parser fn",kte(r));break;case"trust proxy":this.set("trust proxy fn",Ate(r)),Object.defineProperty(this.settings,yE,{configurable:!0,value:!1});break}return this};Dt.path=function(){return this.parent?this.parent.path()+this.mountpath:""};Dt.enabled=function(e){return!!this.set(e)};Dt.disabled=function(e){return!this.set(e)};Dt.enable=function(e){return this.set(e,!0)};Dt.disable=function(e){return this.set(e,!1)};hE.forEach(function(t){Dt[t]=function(e){if(t==="get"&&arguments.length===1)return this.set(e);var r=this.route(e);return r[t].apply(r,lf.call(arguments,1)),this}});Dt.all=function(e){for(var r=this.route(e),n=lf.call(arguments,1),i=0;i<hE.length;i++)r[hE[i]].apply(r,n);return this};Dt.render=function(e,r,n){var i=this.cache,s=n,o=this.engines,a=r,c;typeof r=="function"&&(s=r,a={});var l={...this.locals,...a._locals,...a};if(l.cache==null&&(l.cache=this.enabled("view cache")),l.cache&&(c=i[e]),!c){var u=this.get("view");if(c=new u(e,{defaultEngine:this.get("view engine"),root:this.get("views"),engines:o}),!c.path){var d=Array.isArray(c.root)&&c.root.length>1?'directories "'+c.root.slice(0,-1).join('", "')+'" or "'+c.root[c.root.length-1]+'"':'directory "'+c.root+'"',p=new Error('Failed to lookup view "'+e+'" in views '+d);return p.view=c,s(p)}l.cache&&(i[e]=c)}Kte(c,l,s)};Dt.listen=function(){var e=Ite.createServer(this),r=lf.call(arguments);if(typeof r[r.length-1]=="function"){var n=r[r.length-1]=Ote(r[r.length-1]);e.once("error",n)}return e.listen.apply(e,r)};function Pte(t){this.get("env")!=="test"&&console.error(t.stack||t.toString())}function Kte(t,e,r){try{t.render(e,r)}catch(n){r(n)}}});var df=h(uf=>{"use strict";Object.defineProperty(uf,"__esModule",{value:!0});uf.format=Lte;uf.parse=qte;var Dte=/^[\u0009\u0020-\u007e\u0080-\u00ff]*$/,OK=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,Mte=/[\\"]/g,Nte=/^[!#$%&'*+.^_`|~0-9A-Za-z-]+\/[!#$%&'*+.^_`|~0-9A-Za-z-]+$/,CK=(()=>{let t=function(){};return t.prototype=Object.create(null),t})();function Lte(t){let{type:e,parameters:r}=t;if(!e||!Nte.test(e))throw new TypeError(`Invalid type: ${e}`);let n=e;if(r)for(let i of Object.keys(r)){if(!OK.test(i))throw new TypeError(`Invalid parameter name: ${i}`);n+=`; ${i}=${zte(r[i])}`}return n}function qte(t,e){let r=e?.comma===!0?Ute:65536,n=t.length,i=vE(t,e?.start??0,n),s=i;i=bE(t,i,n,r);let o=EE(t,s,i),a=t.slice(s,o).toLowerCase();return e?.parameters===!1?{type:a,index:i,parameters:new CK}:Jte(t,a,i,n,r)}var jK=32,PK=9,KK=59,Fte=61,RK=34,$te=92,Ute=44;function Jte(t,e,r,n,i){let s=new CK;e:for(;r<n&&t.charCodeAt(r)!==i;){r=vE(t,r+1,n);let o=r;for(;r<n;){let a=t.charCodeAt(r);if(a===i)break e;if(a===KK)continue e;if(a===Fte){let c=EE(t,o,r),l=t.slice(o,c).toLowerCase();if(r=vE(t,r+1,n),r<n&&t.charCodeAt(r)===RK){r++;let d="";for(;r<n;){let p=t.charCodeAt(r++);if(p===RK){r=bE(t,r,n,i),s[l]===void 0&&(s[l]=d);break}if(p===$te&&r<n){d+=t[r++];continue}d+=String.fromCharCode(p)}continue e}let u=r;if(r=bE(t,r,n,i),s[l]===void 0){let d=EE(t,u,r);s[l]=t.slice(u,d)}continue e}r++}}return{type:e,index:r,parameters:s}}function bE(t,e,r,n){for(;e<r;){let i=t.charCodeAt(e);if(i===KK||i===n)break;e++}return e}function vE(t,e,r){for(;e<r;){let n=t.charCodeAt(e);if(n!==jK&&n!==PK)break;e++}return e}function EE(t,e,r){for(;r>e;){let n=t.charCodeAt(r-1);if(n!==jK&&n!==PK)break;r--}return r}function zte(t){if(OK.test(t))return t;if(Dte.test(t))return`"${t.replace(Mte,"\\$&")}"`;throw new TypeError(`Invalid parameter value: ${t}`)}});var Yl=h((sje,DK)=>{"use strict";var Gte=df();DK.exports=Bte;function Bte(t){for(var e=[],r=0;r<t.length;){var n=Hte(t,r),i=Gte.parse(t,{comma:!0,start:n});i.type=t.slice(n,n+i.type.length),e.push(i),r=i.index+1}return e}function Hte(t,e){for(var r=e;t.charCodeAt(r)===32||t.charCodeAt(r)===9;)r++;return r}});var qK=h((oje,SE)=>{"use strict";var Vte=Yl();SE.exports=LK;SE.exports.preferredCharsets=LK;function Wte(t){for(var e=Vte(t),r=0,n=0;r<e.length;r++){var i=Yte(e[r],r);i&&(e[n++]=i)}return e.length=n,e}function Yte(t,e){return t.type?{charset:t.type,q:t.parameters.q?parseFloat(t.parameters.q):1,i:e}:null}function Qte(t,e,r){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=Xte(t,e[i],r);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function Xte(t,e,r){var n=0;if(e.charset.toLowerCase()===t.toLowerCase())n|=1;else if(e.charset!=="*")return null;return{i:r,o:e.i,q:e.q,s:n}}function LK(t,e){var r=Wte(t===void 0?"*":t||"");if(!e)return r.filter(NK).sort(MK).map(Zte);var n=e.map(function(s,o){return Qte(s,r,o)});return n.filter(NK).sort(MK).map(function(s){return e[n.indexOf(s)]})}function MK(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function Zte(t){return t.charset}function NK(t){return t.q>0}});var JK=h((aje,xE)=>{"use strict";var ere=Yl();xE.exports=UK;xE.exports.preferredEncodings=UK;function tre(t){for(var e=ere(t),r=!1,n=1,i=0,s=0;i<e.length;i++){var o=rre(e[i],i);o&&(e[s++]=o,r=r||$K("identity",o),n=Math.min(n,o.q||1))}return r||(e[s++]={encoding:"identity",q:n,i}),e.length=s,e}function rre(t,e){return t.type?{encoding:t.type,q:t.parameters.q?parseFloat(t.parameters.q):1,i:e}:null}function nre(t,e,r){for(var n={encoding:t,o:-1,q:0,s:0},i=0;i<e.length;i++){var s=$K(t,e[i],r);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function $K(t,e,r){var n=0;if(e.encoding.toLowerCase()===t.toLowerCase())n|=1;else if(e.encoding!=="*")return null;return{encoding:t,i:r,o:e.i,q:e.q,s:n}}function UK(t,e,r){var n=tre(t||""),i=r?function(a,c){if(a.q!==c.q)return c.q-a.q;var l=r.indexOf(a.encoding),u=r.indexOf(c.encoding);return l===-1&&u===-1?c.s-a.s||a.o-c.o||a.i-c.i:l!==-1&&u!==-1?l-u:l===-1?1:-1}:ire;if(!e)return n.filter(FK).sort(i).map(sre);var s=e.map(function(a,c){return nre(a,n,c)});return s.filter(FK).sort(i).map(function(a){return e[s.indexOf(a)]})}function ire(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i}function sre(t){return t.encoding}function FK(t){return t.q>0}});var VK=h((cje,wE)=>{"use strict";var ore=df(),are=Yl();wE.exports=HK;wE.exports.preferredLanguages=HK;function cre(t){for(var e=are(t),r=0,n=0;r<e.length;r++){var i=BK(e[r],r);i&&(e[n++]=i)}return e.length=n,e}function BK(t,e){if(!t.type)return null;var r=t.type.indexOf("-"),n=r===-1?t.type:t.type.slice(0,r),i=r===-1?void 0:t.type.slice(r+1);return{prefix:n,suffix:i,q:t.parameters.q?parseFloat(t.parameters.q):1,i:e,full:t.type}}function lre(t,e,r){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=ure(t,e[i],r);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function ure(t,e,r){var n=BK(ore.parse(t),0);if(!n)return null;var i=0;if(e.full.toLowerCase()===n.full.toLowerCase())i|=4;else if(e.prefix.toLowerCase()===n.full.toLowerCase())i|=2;else if(e.full.toLowerCase()===n.prefix.toLowerCase())i|=1;else if(e.full!=="*")return null;return{i:r,o:e.i,q:e.q,s:i}}function HK(t,e){var r=cre(t===void 0?"*":t||"");if(!e)return r.filter(GK).sort(zK).map(dre);var n=e.map(function(s,o){return lre(s,r,o)});return n.filter(GK).sort(zK).map(function(s){return e[n.indexOf(s)]})}function zK(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function dre(t){return t.full}function GK(t){return t.q>0}});var ZK=h((lje,_E)=>{"use strict";var pre=df(),fre=Yl();_E.exports=XK;_E.exports.preferredMediaTypes=XK;function mre(t){for(var e=fre(t),r=0,n=0;r<e.length;r++){var i=QK(e[r],r);i&&(e[n++]=i)}return e.length=n,e}function QK(t,e){var r=t.type.indexOf("/");if(r===-1)return null;var n=t.parameters.q?parseFloat(t.parameters.q):1;return delete t.parameters.q,{type:t.type.slice(0,r),subtype:t.type.slice(r+1),params:t.parameters,q:n,i:e}}function hre(t,e,r){for(var n={o:-1,q:0,s:0},i=0;i<e.length;i++){var s=yre(t,e[i],r);s&&(n.s-s.s||n.q-s.q||n.o-s.o)<0&&(n=s)}return n}function yre(t,e,r){var n=QK(pre.parse(t),0),i=0;if(!n)return null;if(e.type.toLowerCase()==n.type.toLowerCase())i|=4;else if(e.type!="*")return null;if(e.subtype.toLowerCase()==n.subtype.toLowerCase())i|=2;else if(e.subtype!="*")return null;var s=Object.keys(e.params);if(s.length>0)if(s.every(function(o){return e.params[o]=="*"||(e.params[o]||"").toLowerCase()==(n.params[o]||"").toLowerCase()}))i|=1;else return null;return{i:r,o:e.i,q:e.q,s:i}}function XK(t,e){var r=mre(t===void 0?"*/*":t||"");if(!e)return r.filter(YK).sort(WK).map(gre);var n=e.map(function(s,o){return hre(s,r,o)});return n.filter(YK).sort(WK).map(function(s){return e[n.indexOf(s)]})}function WK(t,e){return e.q-t.q||e.s-t.s||t.o-e.o||t.i-e.i||0}function gre(t){return t.type+"/"+t.subtype}function YK(t){return t.q>0}});var eD=h((uje,IE)=>{"use strict";var bre=qK(),vre=JK(),Ere=VK(),Sre=ZK();IE.exports=Ke;IE.exports.Negotiator=Ke;function Ke(t){if(!(this instanceof Ke))return new Ke(t);this.request=t}Ke.prototype.charset=function(e){var r=this.charsets(e);return r&&r[0]};Ke.prototype.charsets=function(e){return bre(this.request.headers["accept-charset"],e)};Ke.prototype.encoding=function(e,r){var n=this.encodings(e,r);return n&&n[0]};Ke.prototype.encodings=function(e,r){var n=r||{};return vre(this.request.headers["accept-encoding"],e,n.preferred)};Ke.prototype.language=function(e){var r=this.languages(e);return r&&r[0]};Ke.prototype.languages=function(e){return Ere(this.request.headers["accept-language"],e)};Ke.prototype.mediaType=function(e){var r=this.mediaTypes(e);return r&&r[0]};Ke.prototype.mediaTypes=function(e){return Sre(this.request.headers.accept,e)};Ke.prototype.preferredCharset=Ke.prototype.charset;Ke.prototype.preferredCharsets=Ke.prototype.charsets;Ke.prototype.preferredEncoding=Ke.prototype.encoding;Ke.prototype.preferredEncodings=Ke.prototype.encodings;Ke.prototype.preferredLanguage=Ke.prototype.language;Ke.prototype.preferredLanguages=Ke.prototype.languages;Ke.prototype.preferredMediaType=Ke.prototype.mediaType;Ke.prototype.preferredMediaTypes=Ke.prototype.mediaTypes});var rD=h((dje,tD)=>{"use strict";var xre=eD(),wre=Oa();tD.exports=Ar;function Ar(t){if(!(this instanceof Ar))return new Ar(t);this.headers=t.headers,this.negotiator=new xre(t)}Ar.prototype.type=Ar.prototype.types=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r<e.length;r++)e[r]=arguments[r]}if(!e||e.length===0)return this.negotiator.mediaTypes();if(!this.headers.accept)return e[0];var n=e.map(_re),i=this.negotiator.mediaTypes(n.filter(Ire)),s=i[0];return s?e[n.indexOf(s)]:!1};Ar.prototype.encoding=Ar.prototype.encodings=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r<e.length;r++)e[r]=arguments[r]}return!e||e.length===0?this.negotiator.encodings():this.negotiator.encodings(e)[0]||!1};Ar.prototype.charset=Ar.prototype.charsets=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r<e.length;r++)e[r]=arguments[r]}return!e||e.length===0?this.negotiator.charsets():this.negotiator.charsets(e)[0]||!1};Ar.prototype.lang=Ar.prototype.langs=Ar.prototype.language=Ar.prototype.languages=function(t){var e=t;if(e&&!Array.isArray(e)){e=new Array(arguments.length);for(var r=0;r<e.length;r++)e[r]=arguments[r]}return!e||e.length===0?this.negotiator.languages():this.negotiator.languages(e)[0]||!1};function _re(t){return t.indexOf("/")===-1?wre.lookup(t):t}function Ire(t){return typeof t=="string"}});var TE=h((pje,iD)=>{"use strict";var Tre=/(?:^|,)\s*?no-cache\s*?(?:,|$)/;iD.exports=kre;function kre(t,e){var r=t["if-modified-since"],n=t["if-none-match"];if(!r&&!n)return!1;var i=t["cache-control"];if(i&&Tre.test(i))return!1;if(n){if(n==="*")return!0;var s=e.etag;if(!s)return!1;for(var o=Are(n),a=0;a<o.length;a++){var c=o[a];if(c===s||c==="W/"+s||"W/"+c===s)return!0}return!1}if(r){var l=e["last-modified"],u=!l||!(nD(l)<=nD(r));if(u)return!1}return!0}function nD(t){var e=t&&Date.parse(t);return typeof e=="number"?e:NaN}function Are(t){for(var e=0,r=[],n=0,i=0,s=t.length;i<s;i++)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:r.push(t.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return r.push(t.substring(n,e)),r}});var kE=h((fje,oD)=>{"use strict";oD.exports=Rre;function Rre(t,e,r){if(typeof e!="string")throw new TypeError("argument str must be a string");var n=e.indexOf("=");if(n===-1)return-2;var i=e.slice(n+1).split(","),s=[];s.type=e.slice(0,n);for(var o=0;o<i.length;o++){var a=i[o].indexOf("-");if(a===-1)return-2;var c=i[o].slice(0,a).trim(),l=i[o].slice(a+1).trim(),u=sD(c),d=sD(l);if(c.length===0?(u=t-d,d=t-1):l.length===0&&(d=t-1),d>t-1&&(d=t-1),isNaN(u)||isNaN(d))return-2;u>d||u<0||s.push({start:u,end:d})}return s.length<1?-1:r&&r.combine?Ore(s):s}function sD(t){return/^\d+$/.test(t)?Number(t):NaN}function Ore(t){for(var e=t.map(Cre).sort(Kre),r=0,n=1;n<e.length;n++){var i=e[n],s=e[r];i.start>s.end+1?e[++r]=i:i.end>s.end&&(s.end=i.end,s.index=Math.min(s.index,i.index))}e.length=r+1;var o=e.sort(Pre).map(jre);return o.type=t.type,o}function Cre(t,e){return{start:t.start,end:t.end,index:e}}function jre(t){return{start:t.start,end:t.end}}function Pre(t,e){return t.index-e.index}function Kre(t,e){return t.start-e.start}});var uD=h((mje,lD)=>{"use strict";var pf=rD(),Dre=require("node:net").isIP,Mre=Pp(),Nre=require("node:http"),Lre=TE(),qre=kE(),aD=Hl(),cD=iE(),lt=Object.create(Nre.IncomingMessage.prototype);lD.exports=lt;lt.get=lt.header=function(e){if(!e)throw new TypeError("name argument is required to req.get");if(typeof e!="string")throw new TypeError("name must be a string to req.get");var r=e.toLowerCase();switch(r){case"referer":case"referrer":return this.headers.referrer||this.headers.referer;default:return this.headers[r]}};lt.accepts=function(){var t=pf(this);return t.types.apply(t,arguments)};lt.acceptsEncodings=function(){var t=pf(this);return t.encodings.apply(t,arguments)};lt.acceptsCharsets=function(){var t=pf(this);return t.charsets.apply(t,arguments)};lt.acceptsLanguages=function(...t){return pf(this).languages(...t)};lt.range=function(e,r){var n=this.get("Range");if(n)return qre(e,n,r)};Wr(lt,"query",function(){var e=this.app.get("query parser fn");if(!e)return Object.create(null);var r=aD(this).query;return e(r)});lt.is=function(e){var r=e;if(!Array.isArray(e)){r=new Array(arguments.length);for(var n=0;n<r.length;n++)r[n]=arguments[n]}return Mre(this,r)};Wr(lt,"protocol",function(){var e=this.socket.encrypted?"https":"http",r=this.app.get("trust proxy fn");if(!r(this.socket.remoteAddress,0))return e;var n=this.get("X-Forwarded-Proto")||e,i=n.indexOf(",");return i!==-1?n.substring(0,i).trim():n.trim()});Wr(lt,"secure",function(){return this.protocol==="https"});Wr(lt,"ip",function(){var e=this.app.get("trust proxy fn");return cD(this,e)});Wr(lt,"ips",function(){var e=this.app.get("trust proxy fn"),r=cD.all(this,e);return r.reverse().pop(),r});Wr(lt,"subdomains",function(){var e=this.hostname;if(!e)return[];var r=this.app.get("subdomain offset"),n=Dre(e)?[e]:e.split(".").reverse();return n.slice(r)});Wr(lt,"path",function(){return aD(this).pathname});Wr(lt,"host",function(){var e=this.app.get("trust proxy fn"),r=this.get("X-Forwarded-Host");return!r||!e(this.socket.remoteAddress,0)?r=this.get("Host"):r.indexOf(",")!==-1&&(r=r.substring(0,r.indexOf(",")).trimRight()),r||void 0});Wr(lt,"hostname",function(){var e=this.host;if(e){var r=e[0]==="["?e.indexOf("]")+1:0,n=e.indexOf(":",r);return n!==-1?e.substring(0,n):e}});Wr(lt,"fresh",function(){var t=this.method,e=this.res,r=e.statusCode;return t!=="GET"&&t!=="HEAD"?!1:r>=200&&r<300||r===304?Lre(this.headers,{etag:e.get("ETag"),"last-modified":e.get("Last-Modified")}):!1});Wr(lt,"stale",function(){return!this.fresh});Wr(lt,"xhr",function(){var e=this.get("X-Requested-With")||"";return e.toLowerCase()==="xmlhttprequest"});function Wr(t,e,r){Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:r})}});var gD=h((hje,AE)=>{"use strict";AE.exports=Vre;AE.exports.parse=Xre;var Fre=new TextDecoder("utf-8"),$re=/[\x00-\x20"'()*,/:;<=>?@[\\\]{}\x7f]/g,mD=/[^\x20-\x7e\xa0-\xff]/g,Ure=/\\([\u0000-\u007f])/g,Jre=/([\\"])/g,dD=/;[\x09\x20]*([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*=[\x09\x20]*("(?:[\x20!\x23-\x5b\x5d-\x7e\x80-\xff]|\\[\x20-\x7e])*"|[!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*/g,zre=/^[\x20-\x7e\x80-\xff]+$/,Gre=/^[!#$%&'*+.0-9A-Z^_`a-z|~-]+$/,Bre=/^([A-Za-z0-9!#$%&+\-^_`{}~]+)'(?:[A-Za-z]{2,3}(?:-[A-Za-z]{3}){0,3}|[A-Za-z]{4,8}|)'((?:%[0-9A-Fa-f]{2}|[A-Za-z0-9!#$&+.^_`|~-])+)$/,Hre=/^([!#$%&'*+.0-9A-Z^_`a-z|~-]+)[\x09\x20]*(?:$|;)/;function Vre(t,e){var r=e||{},n=r.type||"attachment",i=Wre(t,r.fallback);return Yre(new yD(n,i))}function Wre(t,e){if(t!==void 0){var r={};if(typeof t!="string")throw new TypeError("filename must be a string");if(e===void 0&&(e=!0),typeof e!="string"&&typeof e!="boolean")throw new TypeError("fallback must be a string or boolean");if(typeof e=="string"&&mD.test(e))throw new TypeError("fallback must be ISO-8859-1 string");var n=pD(t),i=zre.test(n),s=typeof e!="string"?e&&hD(n):pD(e),o=typeof s=="string"&&s!==n;return(o||!i||rne(n))&&(r["filename*"]=n),(i||o)&&(r.filename=o?s:n),r}}function Yre(t){var e=t.parameters,r=t.type;if(!r||typeof r!="string"||!Gre.test(r))throw new TypeError("invalid type");var n=String(r).toLowerCase();if(e&&typeof e=="object")for(var i,s=Object.keys(e).sort(),o=0;o<s.length;o++){i=s[o];var a=i.slice(-1)==="*"?tne(e[i]):ene(e[i]);n+="; "+i+"="+a}return n}function Qre(t){let e=Bre.exec(t);if(!e)throw new TypeError("invalid extended field value");let r=e[1].toLowerCase(),n=e[2];switch(r){case"iso-8859-1":{let i=fD(n);return hD(i)}case"utf-8":case"utf8":try{return decodeURIComponent(n)}catch{let i=fD(n),s=new Uint8Array(i.length);for(let o=0;o<i.length;o++)s[o]=i.charCodeAt(o);return Fre.decode(s)}}throw new TypeError("unsupported charset in extended field")}function hD(t){return String(t).replace(mD,"?")}function Xre(t){if(!t||typeof t!="string")throw new TypeError("argument string is required");var e=Hre.exec(t);if(!e)throw new TypeError("invalid type format");var r=e[0].length,n=e[1].toLowerCase(),i,s=[],o={},a;for(r=dD.lastIndex=e[0].slice(-1)===";"?r-1:r;e=dD.exec(t);){if(e.index!==r)throw new TypeError("invalid parameter format");if(r+=e[0].length,i=e[1].toLowerCase(),a=e[2],s.indexOf(i)!==-1)throw new TypeError("invalid duplicate parameter");if(s.push(i),i.indexOf("*")+1===i.length){i=i.slice(0,-1),a=Qre(a),o[i]=a;continue}typeof o[i]!="string"&&(a[0]==='"'&&(a=a.slice(1,-1).replace(Ure,"$1")),o[i]=a)}if(r!==-1&&r!==t.length)throw new TypeError("invalid parameter format");return new yD(n,o)}function Zre(t){return"%"+String(t).charCodeAt(0).toString(16).toUpperCase()}function ene(t){var e=String(t);return'"'+e.replace(Jre,"\\$1")+'"'}function tne(t){var e=String(t),r=encodeURIComponent(e).replace($re,Zre);return"UTF-8''"+r}function yD(t,e){this.type=t,this.parameters=e}function pD(t){let e=t.replaceAll("\\","/"),r=e.length;for(;r>0&&e[r-1]==="/";)r--;if(r===0)return"";let n=r-1;for(;n>=0&&e[n]!=="/";)n--;return e.slice(n+1,r)}function ff(t){let e=t.charCodeAt(0);return e>=48&&e<=57||e>=65&&e<=70||e>=97&&e<=102}function rne(t){let e=t.length-3,r=-1;for(;(r=t.indexOf("%",r+1))!==-1&&r<=e;)if(ff(t[r+1])&&ff(t[r+2]))return!0;return!1}function fD(t){let e=t.indexOf("%");if(e===-1)return t;let r=t.slice(0,e);for(let n=e;n<t.length;n++)t[n]==="%"&&n+2<t.length&&ff(t[n+1])&&ff(t[n+2])?(r+=String.fromCharCode(Number.parseInt(t[n+1]+t[n+2],16)),n+=2):r+=t[n];return r}});var vD=h(mf=>{var bD=require("crypto");mf.sign=function(t,e){if(typeof t!="string")throw new TypeError("Cookie value must be provided as a string.");if(e==null)throw new TypeError("Secret key must be provided.");return t+"."+bD.createHmac("sha256",e).update(t).digest("base64").replace(/\=+$/,"")};mf.unsign=function(t,e){if(typeof t!="string")throw new TypeError("Signed cookie string must be provided.");if(e==null)throw new TypeError("Secret key must be provided.");var r=t.slice(0,t.lastIndexOf(".")),n=mf.sign(r,e),i=Buffer.from(n),s=Buffer.from(t);return i.length===s.length&&bD.timingSafeEqual(i,s)?r:!1}});var xD=h(RE=>{"use strict";RE.parse=lne;RE.serialize=une;var nne=Object.prototype.toString,ine=Object.prototype.hasOwnProperty,sne=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,one=/^("?)[\u0021\u0023-\u002B\u002D-\u003A\u003C-\u005B\u005D-\u007E]*\1$/,ane=/^([.]?[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)([.][a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?)*$/i,cne=/^[\u0020-\u003A\u003D-\u007E]*$/;function lne(t,e){if(typeof t!="string")throw new TypeError("argument str must be a string");var r={},n=t.length;if(n<2)return r;var i=e&&e.decode||dne,s=0,o=0,a=0;do{if(o=t.indexOf("=",s),o===-1)break;if(a=t.indexOf(";",s),a===-1)a=n;else if(o>a){s=t.lastIndexOf(";",o-1)+1;continue}var c=ED(t,s,o),l=SD(t,o,c),u=t.slice(c,l);if(!ine.call(r,u)){var d=ED(t,o+1,a),p=SD(t,a,d);t.charCodeAt(d)===34&&t.charCodeAt(p-1)===34&&(d++,p--);var f=t.slice(d,p);r[u]=fne(f,i)}s=a+1}while(s<n);return r}function ED(t,e,r){do{var n=t.charCodeAt(e);if(n!==32&&n!==9)return e}while(++e<r);return r}function SD(t,e,r){for(;e>r;){var n=t.charCodeAt(--e);if(n!==32&&n!==9)return e+1}return r}function une(t,e,r){var n=r&&r.encode||encodeURIComponent;if(typeof n!="function")throw new TypeError("option encode is invalid");if(!sne.test(t))throw new TypeError("argument name is invalid");var i=n(e);if(!one.test(i))throw new TypeError("argument val is invalid");var s=t+"="+i;if(!r)return s;if(r.maxAge!=null){var o=Math.floor(r.maxAge);if(!isFinite(o))throw new TypeError("option maxAge is invalid");s+="; Max-Age="+o}if(r.domain){if(!ane.test(r.domain))throw new TypeError("option domain is invalid");s+="; Domain="+r.domain}if(r.path){if(!cne.test(r.path))throw new TypeError("option path is invalid");s+="; Path="+r.path}if(r.expires){var a=r.expires;if(!pne(a)||isNaN(a.valueOf()))throw new TypeError("option expires is invalid");s+="; Expires="+a.toUTCString()}if(r.httpOnly&&(s+="; HttpOnly"),r.secure&&(s+="; Secure"),r.partitioned&&(s+="; Partitioned"),r.priority){var c=typeof r.priority=="string"?r.priority.toLowerCase():r.priority;switch(c){case"low":s+="; Priority=Low";break;case"medium":s+="; Priority=Medium";break;case"high":s+="; Priority=High";break;default:throw new TypeError("option priority is invalid")}}if(r.sameSite){var l=typeof r.sameSite=="string"?r.sameSite.toLowerCase():r.sameSite;switch(l){case!0:s+="; SameSite=Strict";break;case"lax":s+="; SameSite=Lax";break;case"strict":s+="; SameSite=Strict";break;case"none":s+="; SameSite=None";break;default:throw new TypeError("option sameSite is invalid")}}return s}function dne(t){return t.indexOf("%")!==-1?decodeURIComponent(t):t}function pne(t){return nne.call(t)==="[object Date]"}function fne(t,e){try{return e(t)}catch{return t}}});var jE=h((bje,PD)=>{"use strict";var OE=Ta(),Mt=Tr()("send"),mne=Gl(),TD=Bl(),hne=nE(),yne=TE(),yf=require("fs"),gne=Oa(),bne=pv(),vne=Cl(),Ene=kE(),Ql=require("path"),Sne=Al(),kD=require("stream"),xne=require("util"),AD=Ql.extname,RD=Ql.join,CE=Ql.normalize,OD=Ql.resolve,hf=Ql.sep,wne=/^ *bytes=/,_ne=3600*24*365*1e3,wD=/(?:^|[\\/])\.\.(?:[\\/]|$)/;PD.exports=Ine;function Ine(t,e,r){return new ut(t,e,r)}function ut(t,e,r){kD.call(this);var n=r||{};if(this.options=n,this.path=e,this.req=t,this._acceptRanges=n.acceptRanges!==void 0?!!n.acceptRanges:!0,this._cacheControl=n.cacheControl!==void 0?!!n.cacheControl:!0,this._etag=n.etag!==void 0?!!n.etag:!0,this._dotfiles=n.dotfiles!==void 0?n.dotfiles:"ignore",this._dotfiles!=="ignore"&&this._dotfiles!=="allow"&&this._dotfiles!=="deny")throw new TypeError('dotfiles option must be "allow", "deny", or "ignore"');this._extensions=n.extensions!==void 0?ID(n.extensions,"extensions option"):[],this._immutable=n.immutable!==void 0?!!n.immutable:!1,this._index=n.index!==void 0?ID(n.index,"index option"):["index.html"],this._lastModified=n.lastModified!==void 0?!!n.lastModified:!0,this._maxage=n.maxAge||n.maxage,this._maxage=typeof this._maxage=="string"?bne(this._maxage):Number(this._maxage),this._maxage=isNaN(this._maxage)?0:Math.min(Math.max(0,this._maxage),_ne),this._root=n.root?OD(n.root):null}xne.inherits(ut,kD);ut.prototype.error=function(e,r){if(jD(this,"error"))return this.emit("error",Rne(e,r));var n=this.res,i=Sne.message[e]||String(e),s=CD("Error",TD(i));Tne(n),r&&r.headers&&jne(n,r.headers),n.statusCode=e,n.setHeader("Content-Type","text/html; charset=UTF-8"),n.setHeader("Content-Length",Buffer.byteLength(s)),n.setHeader("Content-Security-Policy","default-src 'none'"),n.setHeader("X-Content-Type-Options","nosniff"),n.end(s)};ut.prototype.hasTrailingSlash=function(){return this.path[this.path.length-1]==="/"};ut.prototype.isConditionalGET=function(){return this.req.headers["if-match"]||this.req.headers["if-unmodified-since"]||this.req.headers["if-none-match"]||this.req.headers["if-modified-since"]};ut.prototype.isPreconditionFailure=function(){var e=this.req,r=this.res,n=e.headers["if-match"];if(n){var i=r.getHeader("ETag");return!i||n!=="*"&&Cne(n).every(function(a){return a!==i&&a!=="W/"+i&&"W/"+a!==i})}var s=gf(e.headers["if-unmodified-since"]);if(!isNaN(s)){var o=gf(r.getHeader("Last-Modified"));return isNaN(o)||o>s}return!1};ut.prototype.removeContentHeaderFields=function(){var e=this.res;e.removeHeader("Content-Encoding"),e.removeHeader("Content-Language"),e.removeHeader("Content-Length"),e.removeHeader("Content-Range"),e.removeHeader("Content-Type")};ut.prototype.notModified=function(){var e=this.res;Mt("not modified"),this.removeContentHeaderFields(),e.statusCode=304,e.end()};ut.prototype.headersAlreadySent=function(){var e=new Error("Can't set headers after they are sent.");Mt("headers already sent"),this.error(500,e)};ut.prototype.isCachable=function(){var e=this.res.statusCode;return e>=200&&e<300||e===304};ut.prototype.onStatError=function(e){switch(e.code){case"ENAMETOOLONG":case"ENOENT":case"ENOTDIR":this.error(404,e);break;default:this.error(500,e);break}};ut.prototype.isFresh=function(){return yne(this.req.headers,{etag:this.res.getHeader("ETag"),"last-modified":this.res.getHeader("Last-Modified")})};ut.prototype.isRangeFresh=function(){var e=this.req.headers["if-range"];if(!e)return!0;if(e.indexOf('"')!==-1){var r=this.res.getHeader("ETag");return!!(r&&e.indexOf(r)!==-1)}var n=this.res.getHeader("Last-Modified");return gf(n)<=gf(e)};ut.prototype.redirect=function(e){var r=this.res;if(jD(this,"directory")){this.emit("directory",r,e);return}if(this.hasTrailingSlash()){this.error(403);return}var n=mne(kne(this.path+"/")),i=CD("Redirecting","Redirecting to "+TD(n));r.statusCode=301,r.setHeader("Content-Type","text/html; charset=UTF-8"),r.setHeader("Content-Length",Buffer.byteLength(i)),r.setHeader("Content-Security-Policy","default-src 'none'"),r.setHeader("X-Content-Type-Options","nosniff"),r.setHeader("Location",n),r.end(i)};ut.prototype.pipe=function(e){var r=this._root;this.res=e;var n=One(this.path);if(n===-1)return this.error(400),e;if(~n.indexOf("\0"))return this.error(400),e;var i;if(r!==null){if(n&&(n=CE("."+hf+n)),wD.test(n))return Mt('malicious path "%s"',n),this.error(403),e;i=n.split(hf),n=CE(RD(r,n))}else{if(wD.test(n))return Mt('malicious path "%s"',n),this.error(403),e;i=CE(n).split(hf),n=OD(n)}if(Ane(i))switch(Mt('%s dotfile "%s"',this._dotfiles,n),this._dotfiles){case"allow":break;case"deny":return this.error(403),e;default:return this.error(404),e}return this._index.length&&this.hasTrailingSlash()?(this.sendIndex(n),e):(this.sendFile(n),e)};ut.prototype.send=function(e,r){var n=r.size,i=this.options,s={},o=this.res,a=this.req,c=a.headers.range,l=i.start||0;if(o.headersSent){this.headersAlreadySent();return}if(Mt('pipe "%s"',e),this.setHeader(e,r),this.type(e),this.isConditionalGET()){if(this.isPreconditionFailure()){this.error(412);return}if(this.isCachable()&&this.isFresh()){this.notModified();return}}if(n=Math.max(0,n-l),i.end!==void 0){var u=i.end-l+1;n>u&&(n=u)}if(this._acceptRanges&&wne.test(c)){if(c=Ene(n,c,{combine:!0}),this.isRangeFresh()||(Mt("range stale"),c=-2),c===-1)return Mt("range unsatisfiable"),o.setHeader("Content-Range",_D("bytes",n)),this.error(416,{headers:{"Content-Range":o.getHeader("Content-Range")}});c!==-2&&c.length===1&&(Mt("range %j",c),o.statusCode=206,o.setHeader("Content-Range",_D("bytes",n,c[0])),l+=c[0].start,n=c[0].end-c[0].start+1)}for(var d in i)s[d]=i[d];if(s.start=l,s.end=Math.max(l,l+n-1),o.setHeader("Content-Length",n),a.method==="HEAD"){o.end();return}this.stream(e,s)};ut.prototype.sendFile=function(e){var r=0,n=this;Mt('stat "%s"',e),yf.stat(e,function(o,a){var c=e[e.length-1]===hf;if(o&&o.code==="ENOENT"&&!AD(e)&&!c)return i(o);if(o)return n.onStatError(o);if(a.isDirectory())return n.redirect(e);if(c)return n.error(404);n.emit("file",e,a),n.send(e,a)});function i(s){if(n._extensions.length<=r)return s?n.onStatError(s):n.error(404);var o=e+"."+n._extensions[r++];Mt('stat "%s"',o),yf.stat(o,function(a,c){if(a)return i(a);if(c.isDirectory())return i();n.emit("file",o,c),n.send(o,c)})}};ut.prototype.sendIndex=function(e){var r=-1,n=this;function i(s){if(++r>=n._index.length)return s?n.onStatError(s):n.error(404);var o=RD(e,n._index[r]);Mt('stat "%s"',o),yf.stat(o,function(a,c){if(a)return i(a);if(c.isDirectory())return i();n.emit("file",o,c),n.send(o,c)})}i()};ut.prototype.stream=function(e,r){var n=this,i=this.res,s=yf.createReadStream(e,r);this.emit("stream",s),s.pipe(i);function o(){s.destroy()}vne(i,o),s.on("error",function(c){o(),n.onStatError(c)}),s.on("end",function(){n.emit("end")})};ut.prototype.type=function(e){var r=this.res;if(!r.getHeader("Content-Type")){var n=AD(e),i=gne.contentType(n)||"application/octet-stream";Mt("content-type %s",i),r.setHeader("Content-Type",i)}};ut.prototype.setHeader=function(e,r){var n=this.res;if(this.emit("headers",n,e,r),this._acceptRanges&&!n.getHeader("Accept-Ranges")&&(Mt("accept ranges"),n.setHeader("Accept-Ranges","bytes")),this._cacheControl&&!n.getHeader("Cache-Control")){var i="public, max-age="+Math.floor(this._maxage/1e3);this._immutable&&(i+=", immutable"),Mt("cache-control %s",i),n.setHeader("Cache-Control",i)}if(this._lastModified&&!n.getHeader("Last-Modified")){var s=r.mtime.toUTCString();Mt("modified %s",s),n.setHeader("Last-Modified",s)}if(this._etag&&!n.getHeader("ETag")){var o=hne(r);Mt("etag %s",o),n.setHeader("ETag",o)}};function Tne(t){for(let e of t.getHeaderNames())t.removeHeader(e)}function kne(t){for(var e=0;e<t.length&&t[e]==="/";e++);return e>1?"/"+t.substr(e):t}function Ane(t){for(var e=0;e<t.length;e++){var r=t[e];if(r.length>1&&r[0]===".")return!0}return!1}function _D(t,e,r){return t+" "+(r?r.start+"-"+r.end:"*")+"/"+e}function CD(t,e){return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>`+t+`</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}function Rne(t,e){return e?e instanceof Error?OE(t,e,{expose:!1}):OE(t,e):OE(t)}function One(t){try{return decodeURIComponent(t)}catch{return-1}}function jD(t,e){var r=typeof t.listenerCount!="function"?t.listeners(e).length:t.listenerCount(e);return r>0}function ID(t,e){for(var r=[].concat(t||[]),n=0;n<r.length;n++)if(typeof r[n]!="string")throw new TypeError(e+" must be array of strings or false");return r}function gf(t){var e=t&&Date.parse(t);return typeof e=="number"?e:NaN}function Cne(t){for(var e=0,r=[],n=0,i=0,s=t.length;i<s;i++)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:n!==e&&r.push(t.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return n!==e&&r.push(t.substring(n,e)),r}function jne(t,e){for(var r=Object.keys(e),n=0;n<r.length;n++){var i=r[n];t.setHeader(i,e[i])}}});var MD=h((vje,PE)=>{"use strict";PE.exports=Kne;PE.exports.append=DD;var Pne=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/;function DD(t,e){if(typeof t!="string")throw new TypeError("header argument is required");if(!e)throw new TypeError("field argument is required");for(var r=Array.isArray(e)?e:KD(String(e)),n=0;n<r.length;n++)if(!Pne.test(r[n]))throw new TypeError("field argument contains an invalid header name");if(t==="*")return t;var i=t,s=KD(t.toLowerCase());if(r.indexOf("*")!==-1||s.indexOf("*")!==-1)return"*";for(var o=0;o<r.length;o++){var a=r[o].toLowerCase();s.indexOf(a)===-1&&(s.push(a),i=i?i+", "+r[o]:r[o])}return i}function KD(t){for(var e=0,r=[],n=0,i=0,s=t.length;i<s;i++)switch(t.charCodeAt(i)){case 32:n===e&&(n=e=i+1);break;case 44:r.push(t.substring(n,e)),n=e=i+1;break;default:e=i+1;break}return r.push(t.substring(n,e)),r}function Kne(t,e){if(!t||!t.getHeader||!t.setHeader)throw new TypeError("res argument is required");var r=t.getHeader("Vary")||"",n=Array.isArray(r)?r.join(", "):String(r);(r=DD(n,e))&&t.setHeader("Vary",r)}});var UD=h((Eje,$D)=>{"use strict";var ND=gD(),Dne=Ta(),KE=kl()("express"),Mne=Gl(),Nne=Bl(),Lne=require("node:http"),qne=Cl(),LD=Oa(),qD=require("node:path"),Fne=require("node:path").isAbsolute,DE=Al(),$ne=vD().sign,Une=ls().normalizeType,Jne=ls().normalizeTypes,zne=ls().setCharset,Gne=xD(),Bne=jE(),Hne=qD.extname,Vne=qD.resolve,Wne=MD(),{Buffer:bf}=require("node:buffer"),nt=Object.create(Lne.ServerResponse.prototype);$D.exports=nt;nt.status=function(e){if(!Number.isInteger(e))throw new TypeError(`Invalid status code: ${JSON.stringify(e)}. Status code must be an integer.`);if(e<100||e>999)throw new RangeError(`Invalid status code: ${JSON.stringify(e)}. Status code must be greater than 99 and less than 1000.`);return this.statusCode=e,this};nt.links=function(t){var e=this.get("Link")||"";return e&&(e+=", "),this.set("Link",e+Object.keys(t).map(function(r){return Array.isArray(t[r])?t[r].map(function(n){return`<${n}>; rel="${r}"`}).join(", "):`<${t[r]}>; rel="${r}"`}).join(", "))};nt.send=function(e){var r=e,n,i=this.req,s,o=this.app;switch(typeof r){case"string":this.get("Content-Type")||this.type("html");break;case"boolean":case"number":case"object":if(r===null)r="";else if(ArrayBuffer.isView(r))this.get("Content-Type")||this.type("bin");else return this.json(r);break}typeof r=="string"&&(n="utf8",s=this.get("Content-Type"),typeof s=="string"&&this.set("Content-Type",zne(s,"utf-8")));var a=o.get("etag fn"),c=!this.get("ETag")&&typeof a=="function",l;r!==void 0&&(bf.isBuffer(r)?l=r.length:!c&&r.length<1e3?l=bf.byteLength(r,n):(r=bf.from(r,n),n=void 0,l=r.length),this.set("Content-Length",l));var u;return c&&l!==void 0&&(u=a(r,n))&&this.set("ETag",u),i.fresh&&this.status(304),(this.statusCode===204||this.statusCode===304)&&(this.removeHeader("Content-Type"),this.removeHeader("Content-Length"),this.removeHeader("Transfer-Encoding"),r=""),this.statusCode===205&&(this.set("Content-Length","0"),this.removeHeader("Transfer-Encoding"),r=""),i.method==="HEAD"?this.end():this.end(r,n),this};nt.json=function(e){var r=this.app,n=r.get("json escape"),i=r.get("json replacer"),s=r.get("json spaces"),o=FD(e,i,s,n);return this.get("Content-Type")||this.set("Content-Type","application/json"),this.send(o)};nt.jsonp=function(e){var r=this.app,n=r.get("json escape"),i=r.get("json replacer"),s=r.get("json spaces"),o=FD(e,i,s,n),a=this.req.query[r.get("jsonp callback name")];return this.get("Content-Type")||(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","application/json")),Array.isArray(a)&&(a=a[0]),typeof a=="string"&&a.length!==0&&(this.set("X-Content-Type-Options","nosniff"),this.set("Content-Type","text/javascript"),a=a.replace(/[^\[\]\w$.]/g,""),o===void 0?o="":typeof o=="string"&&(o=o.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")),o="/**/ typeof "+a+" === 'function' && "+a+"("+o+");"),this.send(o)};nt.sendStatus=function(e){var r=DE.message[e]||String(e);return this.status(e),this.type("txt"),this.send(r)};nt.sendFile=function(e,r,n){var i=n,s=this.req,o=this,a=s.next,c=r||{};if(!e)throw new TypeError("path argument is required to res.sendFile");if(typeof e!="string")throw new TypeError("path must be a string to res.sendFile");if(typeof r=="function"&&(i=r,c={}),!c.root&&!Fne(e))throw new TypeError("path must be absolute or specify root to res.sendFile");var l=encodeURI(e);c.etag=this.app.enabled("etag");var u=Bne(s,l,c);Yne(o,u,c,function(d){if(i)return i(d);if(d&&d.code==="EISDIR")return a();d&&d.code!=="ECONNABORTED"&&d.syscall!=="write"&&a(d)})};nt.download=function(e,r,n,i){var s=i,o=r,a=n||null;typeof r=="function"?(s=r,o=null,a=null):typeof n=="function"&&(s=n,a=null),typeof r=="object"&&(typeof n=="function"||n===void 0)&&(o=null,a=r);var c={"Content-Disposition":ND(o||e)};if(a&&a.headers)for(var l=Object.keys(a.headers),u=0;u<l.length;u++){var d=l[u];d.toLowerCase()!=="content-disposition"&&(c[d]=a.headers[d])}a=Object.create(a),a.headers=c;var p=a.root?e:Vne(e);return this.sendFile(p,a,s)};nt.contentType=nt.type=function(e){var r=e.indexOf("/")===-1?LD.contentType(e)||"application/octet-stream":e;return this.set("Content-Type",r)};nt.format=function(t){var e=this.req,r=e.next,n=Object.keys(t).filter(function(s){return s!=="default"}),i=n.length>0?e.accepts(n):!1;return this.vary("Accept"),i?(this.set("Content-Type",Une(i).value),t[i](e,this,r)):t.default?t.default(e,this,r):r(Dne(406,{types:Jne(n).map(function(s){return s.value})})),this};nt.attachment=function(e){return e&&this.type(Hne(e)),this.set("Content-Disposition",ND(e)),this};nt.append=function(e,r){var n=this.get(e),i=r;return n&&(i=Array.isArray(n)?n.concat(r):Array.isArray(r)?[n].concat(r):[n,r]),this.set(e,i)};nt.set=nt.header=function(e,r){if(arguments.length===2){var n=Array.isArray(r)?r.map(String):String(r);if(e.toLowerCase()==="content-type"){if(Array.isArray(n))throw new TypeError("Content-Type cannot be set to an Array");n=LD.contentType(n)}this.setHeader(e,n)}else for(var i in e)this.set(i,e[i]);return this};nt.get=function(t){return this.getHeader(t)};nt.clearCookie=function(e,r){let n={path:"/",...r,expires:new Date(1)};return delete n.maxAge,this.cookie(e,"",n)};nt.cookie=function(t,e,r){var n={...r},i=this.req.secret,s=n.signed;if(s&&!i)throw new Error('cookieParser("secret") required for signed cookies');var o=typeof e=="object"?"j:"+JSON.stringify(e):String(e);if(s&&(o="s:"+$ne(o,i)),n.maxAge!=null){var a=n.maxAge-0;isNaN(a)||(n.expires=new Date(Date.now()+a),n.maxAge=Math.floor(a/1e3))}return n.path==null&&(n.path="/"),this.append("Set-Cookie",Gne.serialize(t,String(o),n)),this};nt.location=function(e){return this.set("Location",Mne(e))};nt.redirect=function(e){var r=e,n,i=302;arguments.length===2&&(i=arguments[0],r=arguments[1]),r||KE("Provide a url argument"),typeof r!="string"&&KE("Url must be a string"),typeof i!="number"&&KE("Status must be a number"),r=this.location(r).get("Location"),this.format({text:function(){n=DE.message[i]+". Redirecting to "+r},html:function(){var s=Nne(r);n="<p>"+DE.message[i]+". Redirecting to "+s+"</p>"},default:function(){n=""}}),this.status(i),this.set("Content-Length",bf.byteLength(n)),this.req.method==="HEAD"?this.end():this.end(n)};nt.vary=function(t){return Wne(this,t),this};nt.render=function(e,r,n){var i=this.req.app,s=n,o=r||{},a=this.req,c=this;typeof r=="function"&&(s=r,o={}),o._locals=c.locals,s=s||function(l,u){if(l)return a.next(l);c.send(u)},i.render(e,o,s)};function Yne(t,e,r,n){var i=!1,s;function o(){if(!i){i=!0;var f=new Error("Request aborted");f.code="ECONNABORTED",n(f)}}function a(){if(!i){i=!0;var f=new Error("EISDIR, read");f.code="EISDIR",n(f)}}function c(f){i||(i=!0,n(f))}function l(){i||(i=!0,n())}function u(){s=!1}function d(f){if(f&&f.code==="ECONNRESET")return o();if(f)return c(f);i||setImmediate(function(){if(s!==!1&&!i){o();return}i||(i=!0,n())})}function p(){s=!0}e.on("directory",a),e.on("end",l),e.on("error",c),e.on("file",u),e.on("stream",p),qne(t,d),r.headers&&e.on("headers",function(m){for(var y=r.headers,b=Object.keys(y),v=0;v<b.length;v++){var E=b[v];m.setHeader(E,y[E])}}),e.pipe(t)}function FD(t,e,r,n){var i=e||r?JSON.stringify(t,e,r):JSON.stringify(t);return n&&typeof i=="string"&&(i=i.replace(/[<>&]/g,function(s){switch(s.charCodeAt(0)){case 60:return"\\u003c";case 62:return"\\u003e";case 38:return"\\u0026";default:return s}})),i}});var zD=h((Sje,JD)=>{"use strict";var Qne=Gl(),Xne=Bl(),ME=Hl(),Zne=require("path").resolve,eie=jE(),tie=require("url");JD.exports=rie;function rie(t,e){if(!t)throw new TypeError("root path required");if(typeof t!="string")throw new TypeError("root path must be a string");var r=Object.create(e||null),n=r.fallthrough!==!1,i=r.redirect!==!1,s=r.setHeaders;if(s&&typeof s!="function")throw new TypeError("option setHeaders must be function");r.maxage=r.maxage||r.maxAge||0,r.root=Zne(t);var o=i?oie():sie();return function(c,l,u){if(c.method!=="GET"&&c.method!=="HEAD"){if(n)return u();l.statusCode=405,l.setHeader("Allow","GET, HEAD"),l.setHeader("Content-Length","0"),l.end();return}var d=!n,p=ME.original(c),f=ME(c).pathname;f==="/"&&p.pathname.substr(-1)!=="/"&&(f="");var m=eie(c,f,r);m.on("directory",o),s&&m.on("headers",s),n&&m.on("file",function(){d=!0}),m.on("error",function(b){if(d||!(b.statusCode<500)){u(b);return}u()}),m.pipe(l)}}function nie(t){for(var e=0;e<t.length&&t.charCodeAt(e)===47;e++);return e>1?"/"+t.substr(e):t}function iie(t,e){return`<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>`+t+`</title>
</head>
<body>
<pre>`+e+`</pre>
</body>
</html>
`}function sie(){return function(){this.error(404)}}function oie(){return function(e){if(this.hasTrailingSlash()){this.error(404);return}var r=ME.original(this.req);r.path=null,r.pathname=nie(r.pathname+"/");var n=Qne(tie.format(r)),i=iie("Redirecting","Redirecting to "+Xne(n));e.statusCode=301,e.setHeader("Content-Type","text/html; charset=UTF-8"),e.setHeader("Content-Length",Buffer.byteLength(i)),e.setHeader("Content-Security-Policy","default-src 'none'"),e.setHeader("X-Content-Type-Options","nosniff"),e.setHeader("Location",n),e.end(i)}}});var QD=h((Yr,YD)=>{"use strict";var vf=gP(),aie=require("node:events").EventEmitter,GD=vP(),BD=AK(),HD=mE(),VD=uD(),WD=UD();Yr=YD.exports=cie;function cie(){var t=function(e,r,n){t.handle(e,r,n)};return GD(t,aie.prototype,!1),GD(t,BD,!1),t.request=Object.create(VD,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.response=Object.create(WD,{app:{configurable:!0,enumerable:!0,writable:!0,value:t}}),t.init(),t}Yr.application=BD;Yr.request=VD;Yr.response=WD;Yr.Route=HD.Route;Yr.Router=HD;Yr.json=vf.json;Yr.raw=vf.raw;Yr.static=zD();Yr.text=vf.text;Yr.urlencoded=vf.urlencoded});var Ef=h((xje,XD)=>{"use strict";XD.exports=QD()});var NE,ZD,eM=R(()=>{"use strict";NE=["search","context","summarize","import","export"],ZD=["workflow","search_params","examples","all"]});function uie(t){return(lie??process.stderr.write.bind(process.stderr))(t)}function Ja(t){uie(t)}var lie,LE=R(()=>{"use strict";lie=null});function pie(t){return t.replace(/^\uFEFF/,"")}function yo(t){return JSON.parse(pie(t))}function rM(t){return yo((0,Re.readFileSync)(t,"utf-8"))}function fie(t){(0,Re.existsSync)(t)||(0,Re.mkdirSync)(t,{recursive:!0})}function za(t,e){let r=t;try{if((0,Re.lstatSync)(t).isSymbolicLink())try{r=(0,Re.realpathSync)(t)}catch(l){let u=l instanceof Error?l:new Error(String(l));Ja(`claude-mem: realpathSync failed for ${t}, resolving symlink manually: ${u.message}
`);let d=(0,Re.readlinkSync)(t);r=(0,Bn.resolve)((0,Bn.dirname)(t),d)}}catch(l){let u=l.code;if(u!=="ENOENT"&&u!=="ENOTDIR")throw l}fie((0,Bn.dirname)(r));let n=(0,Bn.dirname)(r),i=(0,Bn.basename)(r),s=(0,Bn.join)(n,`.${i}.${process.pid}.${(0,tM.randomBytes)(6).toString("hex")}.tmp`),o=Buffer.from(JSON.stringify(e,null,2)+`
`,"utf-8"),a;try{a=(0,Re.statSync)(r).mode&511}catch{}let c;try{c=a!==void 0?(0,Re.openSync)(s,"w",a):(0,Re.openSync)(s,"w");let l=0;for(;l<o.length;){let u=(0,Re.writeSync)(c,o,l,o.length-l);if(u===0)throw new Error(`writeSync stalled at ${l}/${o.length} bytes`);l+=u}if((0,Re.fsyncSync)(c),(0,Re.closeSync)(c),c=void 0,(0,Re.renameSync)(s,r),!die){let u;try{u=(0,Re.openSync)(n,"r"),(0,Re.fsyncSync)(u)}catch(d){let p=d instanceof Error?d:new Error(String(d));Ja(`claude-mem: directory fsync failed for ${n}: ${p.message}
`)}finally{if(u!==void 0)try{(0,Re.closeSync)(u)}catch{}}}}catch(l){if(c!==void 0)try{(0,Re.closeSync)(c)}catch{}try{(0,Re.unlinkSync)(s)}catch{}throw l}}var Re,tM,Bn,die,Xl=R(()=>{"use strict";Re=require("fs"),tM=require("crypto"),Bn=require("path");LE();die=process.platform==="win32"});function Sf(t,e=process.platform,r=(0,nM.homedir)()){return typeof t!="string"||t.length===0?t:t==="~"?r:t.startsWith("~/")||e==="win32"&&t.startsWith("~\\")?(0,iM.join)(r,t.slice(2)):t}var nM,iM,qE=R(()=>{"use strict";nM=require("os"),iM=require("path")});function mie(){return typeof __CM_DIRNAME__<"u"?__CM_DIRNAME__:(0,Ne.dirname)((0,sM.fileURLToPath)(Sie.url))}function yie(){if(process.env.CLAUDE_MEM_DATA_DIR)return Sf(process.env.CLAUDE_MEM_DATA_DIR);let t=(0,Ne.join)((0,FE.homedir)(),".claude-mem"),e=(0,Ne.join)(t,"settings.json");try{if((0,Zl.existsSync)(e)){let r=yo((0,Zl.readFileSync)(e,"utf-8")),n=r.env??r;if(n.CLAUDE_MEM_DATA_DIR)return Sf(n.CLAUDE_MEM_DATA_DIR)}}catch{}return t}function go(){return(0,Ne.join)(hie,"..")}var Ne,FE,Zl,sM,Sie,hie,At,gie,bie,Cje,vie,$E,oM,jje,Eie,Pje,Le,Hn=R(()=>{"use strict";Ne=require("path"),FE=require("os"),Zl=require("fs"),sM=require("url");Xl();qE();qE();Sie={};hie=mie();At=yie(),gie=(0,Ne.join)((0,FE.homedir)(),".claude"),bie=process.env.CLAUDE_CONFIG_DIR||gie,Cje=(0,Ne.join)(bie,"plugins","marketplaces","thedotmack"),vie=(0,Ne.join)(At,"logs"),$E=(0,Ne.join)(At,"settings.json"),oM="claude-mem.db",jje=(0,Ne.join)(At,oM),Eie=(0,Ne.join)(At,"observer-sessions"),Pje=(0,Ne.basename)(Eie);Le={dataDir:()=>At,workerPid:()=>(0,Ne.join)(At,"worker.pid"),serverPid:()=>(0,Ne.join)(At,".server-beta.pid"),serverPort:()=>(0,Ne.join)(At,".server-beta.port"),serverRuntime:()=>(0,Ne.join)(At,".server-beta.runtime.json"),settings:()=>(0,Ne.join)(At,"settings.json"),database:()=>(0,Ne.join)(At,oM),chroma:()=>(0,Ne.join)(At,"chroma"),combinedCerts:()=>(0,Ne.join)(At,"combined_certs.pem"),transcriptsConfig:()=>(0,Ne.join)(At,"transcript-watch.json"),transcriptsState:()=>(0,Ne.join)(At,"transcript-watch-state.json"),corpora:()=>(0,Ne.join)(At,"corpora"),supervisorRegistry:()=>(0,Ne.join)(At,"supervisor.json"),envFile:()=>(0,Ne.join)(At,".env"),logsDir:()=>vie}});var Ii,aM,JE,UE,zE,x,fe=R(()=>{"use strict";Ii=require("fs"),aM=require("path");Hn();LE();Xl();JE=(s=>(s[s.DEBUG=0]="DEBUG",s[s.INFO=1]="INFO",s[s.WARN=2]="WARN",s[s.ERROR=3]="ERROR",s[s.SILENT=4]="SILENT",s))(JE||{}),UE=null,zE=class{level=null;useColor;logFilePath=null;logFileInitialized=!1;constructor(){this.useColor=process.stdout.isTTY??!1}ensureLogFileInitialized(){if(!this.logFileInitialized){this.logFileInitialized=!0;try{let e=Le.logsDir();(0,Ii.existsSync)(e)||(0,Ii.mkdirSync)(e,{recursive:!0});let r=new Date().toISOString().split("T")[0];this.logFilePath=(0,aM.join)(e,`claude-mem-${r}.log`)}catch(e){console.error("[LOGGER] Failed to initialize log file:",e instanceof Error?e.message:String(e)),this.logFilePath=null}}}getLevel(){if(this.level===null)try{let e=Le.settings();if((0,Ii.existsSync)(e)){let r=(0,Ii.readFileSync)(e,"utf-8"),i=(yo(r).CLAUDE_MEM_LOG_LEVEL||"INFO").toUpperCase();this.level=JE[i]??1}else this.level=1}catch(e){console.error("[LOGGER] Failed to load log level from settings:",e instanceof Error?e.message:String(e)),this.level=1}return this.level}formatData(e){if(e==null)return"";if(typeof e=="string")return e;if(typeof e=="number"||typeof e=="boolean")return e.toString();if(typeof e=="object"){if(e instanceof Error)return this.getLevel()===0?`${e.message}
${e.stack}`:e.message;if(Array.isArray(e))return`[${e.length} items]`;let r=Object.keys(e);return r.length===0?"{}":r.length<=3?JSON.stringify(e):`{${r.length} keys: ${r.slice(0,3).join(", ")}...}`}return String(e)}formatTool(e,r){if(!r)return e;let n=r;if(typeof r=="string")try{n=JSON.parse(r)}catch{n=r}if(e==="Bash"&&n.command)return`${e}(${n.command})`;if(n.file_path)return`${e}(${n.file_path})`;if(n.notebook_path)return`${e}(${n.notebook_path})`;if(e==="Glob"&&n.pattern)return`${e}(${n.pattern})`;if(e==="Grep"&&n.pattern)return`${e}(${n.pattern})`;if(n.url)return`${e}(${n.url})`;if(n.query)return`${e}(${n.query})`;if(e==="Task"){if(n.subagent_type)return`${e}(${n.subagent_type})`;if(n.description)return`${e}(${n.description})`}return e==="Skill"&&n.skill?`${e}(${n.skill})`:e==="LSP"&&n.operation?`${e}(${n.operation})`:e}formatTimestamp(e){let r=e.getFullYear(),n=String(e.getMonth()+1).padStart(2,"0"),i=String(e.getDate()).padStart(2,"0"),s=String(e.getHours()).padStart(2,"0"),o=String(e.getMinutes()).padStart(2,"0"),a=String(e.getSeconds()).padStart(2,"0"),c=String(e.getMilliseconds()).padStart(3,"0");return`${r}-${n}-${i} ${s}:${o}:${a}.${c}`}log(e,r,n,i,s){if(e<this.getLevel())return;this.ensureLogFileInitialized();let o=this.formatTimestamp(new Date),a=JE[e].padEnd(5),c=r.padEnd(6),l="";i?.correlationId?l=`[${i.correlationId}] `:i?.sessionId&&(l=`[session-${i.sessionId}] `);let u="";if(s!=null)if(s instanceof Error)u=this.getLevel()===0?`
${s.message}
${s.stack}`:` ${s.message}`;else if(this.getLevel()===0&&typeof s=="object")try{u=`
`+JSON.stringify(s,null,2)}catch{u=" "+this.formatData(s)}else u=" "+this.formatData(s);let d="";if(i){let{sessionId:f,memorySessionId:m,correlationId:y,...b}=i;Object.keys(b).length>0&&(d=` {${Object.entries(b).map(([E,S])=>`${E}=${S}`).join(", ")}}`)}let p=`[${o}] [${a}] [${c}] ${l}${n}${d}${u}`;if(this.logFilePath)try{(0,Ii.appendFileSync)(this.logFilePath,p+`
`,"utf8")}catch(f){let m=f instanceof Error?f:new Error(String(f));Ja(`[LOGGER] Failed to write to log file: ${m.message}
${m.stack??""}
`)}else Ja(p+`
`)}debug(e,r,n,i){this.log(0,e,r,n,i)}info(e,r,n,i){this.log(1,e,r,n,i)}warn(e,r,n,i){this.log(2,e,r,n,i)}setErrorSink(e){UE=e}error(e,r,n,i){this.log(3,e,r,n,i),this.routeErrorToSink(r,n,i)}routeErrorToSink(e,r,n){try{if(!UE||!(n instanceof Error))return;UE(n)}catch{}}dataIn(e,r,n,i){this.info(e,`\u2192 ${r}`,n,i)}dataOut(e,r,n,i){this.info(e,`\u2190 ${r}`,n,i)}success(e,r,n,i){this.info(e,`\u2713 ${r}`,n,i)}failure(e,r,n,i){this.error(e,`\u2717 ${r}`,n,i)}},x=new zE});function xf(t){return/^Bearer\s+(.+)$/i.exec(t.trim())?.[1]?.trim()||null}function wf(t){let e=t.ip||t.socket.remoteAddress||"";return e==="127.0.0.1"||e==="::1"||e==="::ffff:127.0.0.1"||e==="localhost"}function cM(t){let e=xie(t.header("host")??"");return e==="127.0.0.1"||e==="localhost"||e==="::1"}function xie(t){let e=t.trim().toLowerCase();if(e.startsWith("[")){let n=e.indexOf("]");return n===-1?e:e.slice(1,n)}let r=e.lastIndexOf(":");return r>-1&&/^\d+$/.test(e.slice(r+1))?e.slice(0,r):e}function _f(t){return!!(t.header("forwarded")||t.header("x-forwarded-for")||t.header("x-forwarded-host")||t.header("x-real-ip"))}var GE=R(()=>{"use strict"});function pM(){let t=[];t.push(BE.default.json({limit:"5mb"})),t.push((n,i,s)=>{let a=[".html",".js",".css",".svg",".png",".jpg",".jpeg",".webp",".woff",".woff2",".ttf",".eot"].some(f=>n.path.endsWith(f)),c=n.path==="/api/logs";if(n.path.startsWith("/health")||n.path==="/"||a||c)return s();let l=Date.now(),u=`${n.method}-${Date.now()}`,d=Oie(n.method,n.path,n.body);x.debug("HTTP",`\u2192 ${n.method} ${n.path}`,{requestId:u},d);let p=i.send.bind(i);i.send=function(f){let m=Date.now()-l;return x.debug("HTTP",`\u2190 ${i.statusCode} ${n.path}`,{requestId:u,duration:`${m}ms`}),p(f)},s()});let e=go(),r=dM.default.join(e,"plugin","ui");return t.push(BE.default.static(r)),t}function fM(){return(t,e,r)=>{let n=t.headers.origin;if(n){if(!n.startsWith("http://localhost:")&&!n.startsWith("http://127.0.0.1:")){e.status(403).json({error:"Forbidden",message:"CORS not allowed"});return}e.setHeader("Access-Control-Allow-Origin",n),e.setHeader("Vary","Origin")}if(t.method==="OPTIONS"){e.setHeader("Access-Control-Allow-Methods","GET,HEAD,POST,PUT,PATCH,DELETE"),e.setHeader("Access-Control-Allow-Headers","Content-Type,Authorization,X-Requested-With"),e.status(204).end();return}r()}}function If(t,e,r){let n=t.ip||t.connection.remoteAddress||"";if(!(n==="127.0.0.1"||n==="::1"||n==="::ffff:127.0.0.1"||n==="localhost")){x.warn("SECURITY","Admin endpoint access denied - not localhost",{endpoint:t.path,clientIp:n,method:t.method}),e.status(403).json({error:"Forbidden",message:"Admin endpoints are only accessible from localhost"});return}r()}function Iie(t,e){let r=(0,Ga.createHash)("sha256").update(t,"utf8").digest(),n=(0,Ga.createHash)("sha256").update(e,"utf8").digest();if(r.length!==n.length)return!1;try{return(0,Ga.timingSafeEqual)(r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));return x.warn("SECURITY","timing-safe secret comparison failed",{},s),!1}}function Tie(t){return _ie.has(t.method.toUpperCase())?wie.has(t.path)?!t.expectedToken||!t.presentedToken?{allow:!1,status:401,reason:"token"}:Iie(t.presentedToken,t.expectedToken)?{allow:!0}:{allow:!1,status:401,reason:"token"}:{allow:!1,status:404,reason:"path"}:{allow:!1,status:403,reason:"method"}}function Aie(t){let e=Date.now(),r=bo.get(t.clientIp);if(r&&e-r.windowStart>uM&&(r.count=0,r.windowStart=e),!r){if(bo.size>=lM){let n=null,i=1/0;for(let[s,o]of bo)e-o.windowStart>uM?bo.delete(s):o.windowStart<i&&(i=o.windowStart,n=s);n!==null&&bo.size>=lM&&bo.delete(n)}r={count:0,windowStart:e},bo.set(t.clientIp,r)}r.count+=1,r.count<=kie?x.warn("SECURITY","Remote request denied",t):x.debug("SECURITY","Remote request denied",t)}function Rie(t){let e=t.query?.token;if(Array.isArray(e)||typeof e!="string")return null;let r=e.trim();return r.length>0?r:null}function mM(t){return(e,r,n)=>{if(wf(e)&&!_f(e)){n();return}let i=e.ip||e.socket.remoteAddress||"",s=xf(e.header("authorization")??"")||e.header("x-api-key")?.trim()||Rie(e)||null,o=Tie({method:e.method,path:e.path,presentedToken:s,expectedToken:t.getToken()});if(!o.allow){Aie({path:e.path,method:e.method,clientIp:i,reason:o.reason}),o.status===404?r.status(404).json({error:"Not found"}):o.status===403?r.status(403).json({error:"Forbidden",message:"Observation TV remote access is read-only"}):r.status(401).json({error:"Unauthorized",message:"Missing or invalid Observation TV token"});return}r.setHeader("Cache-Control","no-store"),n()}}function Oie(t,e,r){if(!r||Object.keys(r).length===0||e.includes("/init"))return"";if(e.includes("/observations")){let n=r.tool_name||"?",i=r.tool_input;return`tool=${x.formatTool(n,i)}`}return e.includes("/summarize")?"requesting summary":""}var BE,dM,Ga,wie,_ie,kie,lM,uM,bo,hM=R(()=>{"use strict";BE=tt(Ef(),1),dM=tt(require("path"),1),Ga=require("crypto");Hn();GE();fe();wie=new Set(["/tv","/tv.html","/stream","/api/observations"]),_ie=new Set(["GET","HEAD"]);kie=10,lM=512,uM=6e4,bo=new Map});function yM(t,e,r,n){let i={error:t,message:e};return r&&(i.code=r),n&&(i.details=n),i}function bM(t,e){e.status(404).json(yM("NotFound",`Cannot ${t.method} ${t.path}`))}var Ba,gM,vM=R(()=>{"use strict";fe();Ba=class extends Error{constructor(r,n=500,i,s){super(r);this.statusCode=n;this.code=i;this.details=s;this.name="AppError"}statusCode;code;details};gM=(t,e,r,n)=>{let i=t instanceof Ba?t.statusCode:500;x.error("HTTP",`Error handling ${e.method} ${e.path}`,{statusCode:i,error:t.message,code:t instanceof Ba?t.code:void 0},t);let s=yM(t.name||"Error",t.message,t instanceof Ba?t.code:void 0,t instanceof Ba?t.details:void 0);r.status(i).json(s)}});var Cie,jie,Qje,EM=R(()=>{"use strict";Cie=new Set([".cmd",".bat"]),jie=new Set([".exe",".com"]),Qje=new Set([...jie,...Cie])});function Ha(t=process.env){let e={};for(let[r,n]of Object.entries(t))if(n!==void 0){if(Kie.has(r)){e[r]=n;continue}VE.has(r)||HE.some(i=>r.startsWith(i))||(e[r]=n)}return e}var HE,VE,Pie,Kie,eu=R(()=>{"use strict";HE=["CLAUDECODE_","CLAUDE_CODE_"],VE=new Set(["CLAUDECODE","CLAUDE_CODE_SESSION","CLAUDE_CODE_ENTRYPOINT","MCP_SESSION_ID"]),Pie=new Set(["HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","npm_config_proxy","npm_config_https_proxy","npm_config_noproxy"]),Kie=new Set(["CLAUDE_CODE_OAUTH_TOKEN","CLAUDE_CODE_GIT_BASH_PATH","CLAUDE_CODE_USE_BEDROCK","CLAUDE_CODE_USE_VERTEX","CLAUDE_CODE_USE_FOUNDRY","CLAUDE_CODE_SKIP_BEDROCK_AUTH","CLAUDE_CODE_SKIP_VERTEX_AUTH","CLAUDE_CODE_SKIP_FOUNDRY_AUTH","ANTHROPIC_BEDROCK_BASE_URL","AWS_REGION","AWS_PROFILE","AWS_ACCESS_KEY_ID","AWS_SECRET_ACCESS_KEY","AWS_SESSION_TOKEN","ANTHROPIC_VERTEX_PROJECT_ID","CLOUD_ML_REGION","GOOGLE_APPLICATION_CREDENTIALS",...Pie])});function Mie(t){WE+=1;let e=(0,YE.spawnSync)("powershell.exe",["-NoProfile","-NonInteractive","-Command",`(Get-CimInstance Win32_Process -Filter "ProcessId=${t}").CreationDate.ToString('yyyyMMddHHmmss.ffffff')`],{encoding:"utf-8",timeout:5e3,windowsHide:!0,env:{...Ha(process.env),LC_ALL:"C",LANG:"C"}});if(e.status===0){let r=e.stdout.trim();return r.length>0?r:null}return null}function Nie(t,e=!1){if(!e){let n=SM.get(t);if(n&&Date.now()-n.capturedAtMs<Die)return n.token}let r=null;try{r=Mie(t)}catch(n){x.debug("SYSTEM","captureProcessStartToken: powershell CIM lookup failed",{pid:t,error:n instanceof Error?n.message:String(n)}),r=null}return SM.set(t,{token:r,capturedAtMs:Date.now()}),r}function wM(t,e){if(!Number.isInteger(t)||t<=0)return null;if(process.platform==="linux"){WE+=1;try{let r=(0,xM.readFileSync)(`/proc/${t}/stat`,"utf-8"),n=r.lastIndexOf(") ");if(n<0)return null;let s=r.slice(n+2).split(" ")[19];return s&&/^\d+$/.test(s)?s:null}catch(r){return x.debug("SYSTEM","captureProcessStartToken: /proc read failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}if(process.platform==="win32")return Nie(t,e);WE+=1;try{let r=(0,YE.spawnSync)("ps",["-p",String(t),"-o","lstart="],{encoding:"utf-8",timeout:2e3,env:{...Ha(process.env),LC_ALL:"C",LANG:"C"}});if(r.status!==0)return null;let n=r.stdout.trim();return n.length>0?n:null}catch(r){return x.debug("SYSTEM","captureProcessStartToken: ps exec failed",{pid:t,error:r instanceof Error?r.message:String(r)}),null}}function Ti(t){return wM(t,!1)}function ki(t,e){if(e===null)return!0;let r=wM(t,!0);return r===null?!0:r===e}var YE,xM,Die,SM,WE,QE=R(()=>{"use strict";YE=require("child_process"),xM=require("fs");fe();eu();Die=5e3,SM=new Map,WE=0});async function Vn(t,e={}){let r=e.signalMode==="immediate",n=e.expectedStartToken!==void 0?e.expectedStartToken:Ti(t),i=()=>ki(t,n);if(!i()){x.warn("PROCESS","Skipping tree-kill: root PID was reused since it was captured",{pid:t});return}if(x.debug("PROCESS",`Killing process tree rooted at PID ${t}`,{immediate:r}),process.platform==="win32"){try{await XE("taskkill",["/PID",String(t),"/T","/F"],{timeout:5e3,windowsHide:!0})}catch(s){let o=s.code,a=String(s.stderr??""),c=s instanceof Error?s.message:String(s);if(o===Lie||qie.test(`${a} ${c}`)){x.debug("PROCESS","taskkill reported the process was already gone",{pid:t});return}throw new Tf(t,`taskkill failed for PID ${t} (exit ${String(o)}): ${a.trim()||c}`,{cause:s})}return}try{let s=r?"SIGKILL":"SIGTERM",o=await kf(t);for(let l of o){if(!ki(l.pid,l.startToken)){x.debug("PROCESS",`Skipping ${s}: descendant PID was reused since enumeration`,{pid:l.pid,rootPid:t});continue}try{process.kill(l.pid,s)}catch{}}if(i())try{process.kill(t,s)}catch(l){let u=l instanceof Error?l:new Error(String(l)),d=u.code;d!=="ESRCH"&&x.debug("PROCESS",`Failed to ${s} PID ${t}`,{code:d},u)}else x.warn("PROCESS","Skipping root signal: PID was reused during descendant enumeration",{pid:t,signal:s});r||await new Promise(l=>setTimeout(l,500));let a=i()?await kf(t):[],c=new Map;for(let l of o)c.set(l.pid,l.startToken);for(let l of a)c.set(l.pid,l.startToken);for(let[l,u]of c){if(!ki(l,u)){x.debug("PROCESS","Skipping SIGKILL: descendant PID was reused since the scan",{pid:l,rootPid:t});continue}try{process.kill(l,"SIGKILL")}catch{}}if(!r&&i())try{process.kill(t,"SIGKILL")}catch{}}catch(s){throw new Tf(t,`tree-kill failed for PID ${t}: ${s instanceof Error?s.message:String(s)}`,{cause:s})}}async function Fie(){return process.platform==="win32"?Jie():process.platform==="linux"?$ie():Uie()}function $ie(){let t=[],e;try{e=(0,Af.readdirSync)("/proc")}catch(r){return x.warn("PROCESS","Cannot read /proc \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),t}for(let r of e){if(!/^\d+$/.test(r))continue;let n;try{n=(0,Af.readFileSync)(`/proc/${r}/stat`,"utf-8")}catch{continue}let i=n.lastIndexOf(") ");if(i<0)continue;let s=n.slice(i+2).split(" "),o=Number.parseInt(s[1]??"",10),a=s[19];Number.isFinite(o)&&t.push({pid:Number.parseInt(r,10),ppid:o,startToken:a&&/^\d+$/.test(a)?a:null})}return t}async function Uie(){let t;try{t=(await XE("ps",["-eo","pid=,ppid=,lstart="],{timeout:1e4,maxBuffer:33554432,env:{...process.env,LC_ALL:"C",LANG:"C"}})).stdout}catch(r){return x.warn("PROCESS","Cannot enumerate the process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(`
`)){let n=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);if(!n)continue;let i=n[3].trim();e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),startToken:i.length>0?i:null})}return e}async function Jie(){let t;try{t=(await XE("powershell.exe",["-NoProfile","-NonInteractive","-Command","Get-CimInstance Win32_Process | Select-Object ProcessId,ParentProcessId,@{Name='StartToken';Expression={$_.CreationDate.ToString('yyyyMMddHHmmss.ffffff')}} | ConvertTo-Csv -NoTypeInformation"],{timeout:3e4,windowsHide:!0,maxBuffer:33554432})).stdout}catch(r){return x.warn("PROCESS","Cannot enumerate the Windows process table \u2014 tree-kill degrades to a single-PID kill",{error:r instanceof Error?r.message:String(r)}),[]}let e=[];for(let r of t.split(/\r?\n/).slice(1)){let n=r.match(/^"(\d+)","(\d+)","(.*)"$/);if(!n)continue;let i=n[3].trim();e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),startToken:i.length>0?i:null})}return e}async function kf(t){let e=await Fie(),r=new Map;for(let o of e){let a=r.get(o.ppid);a?a.push(o):r.set(o.ppid,[o])}let n=new Set([t]),i=[],s=o=>{for(let a of r.get(o)??[])n.has(a.pid)||(n.add(a.pid),s(a.pid),i.push({pid:a.pid,startToken:a.startToken}))};return s(t),i}var _M,Af,IM,XE,Lie,qie,Tf,tu=R(()=>{"use strict";_M=require("child_process"),Af=require("fs"),IM=require("util");fe();QE();XE=(0,IM.promisify)(_M.execFile),Lie=128,qie=/not found|no running instance|no tasks/i,Tf=class extends Error{pid;constructor(e,r,n){super(r,n),this.name="ProcessTreeKillError",this.pid=e}}});function Rt(t){if(!Number.isInteger(t)||t<0||t===0)return!1;try{return process.kill(t,0),!0}catch(e){if(e instanceof Error){let r=e.code;return r==="EPERM"?!0:(x.debug("SYSTEM","PID check failed",{pid:t,code:r}),!1)}return x.warn("SYSTEM","PID check threw non-Error",{pid:t,error:String(e)}),!1}}async function Rf(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(t.every(n=>!Rt(n.pid)))return;await new Promise(n=>setTimeout(n,100))}}function ds(t){if(!t||!Rt(t.pid))return!1;if(!t.startToken)return!0;let e=Ti(t.pid);if(e===null)return!0;let r=e===t.startToken;return r||x.debug("SYSTEM","verifyPidFileOwnership: start-token mismatch (PID reused)",{pid:t.pid,stored:t.startToken,current:e}),r}function Of(){return ZE||(ZE=new rS),ZE}function eS(){let t=Hie.shift();t&&t.notify()}var Ai,tS,zie,Gie,Bie,rS,ZE,fPe,Hie,vo=R(()=>{"use strict";EM();Ai=require("fs"),tS=tt(require("path"),1);fe();eu();Hn();QE();tu();zie=5e3,Gie=1e3,Bie=Le.supervisorRegistry();rS=class{registryPath;entries=new Map;runtimeProcesses=new Map;initialized=!1;constructor(e=Bie){this.registryPath=e}initialize(){if(this.initialized)return;if(this.initialized=!0,(0,Ai.mkdirSync)(tS.default.dirname(this.registryPath),{recursive:!0}),!(0,Ai.existsSync)(this.registryPath)){this.persist();return}try{let n=JSON.parse((0,Ai.readFileSync)(this.registryPath,"utf-8")).processes??{};for(let[i,s]of Object.entries(n))this.entries.set(i,s)}catch(r){r instanceof Error?x.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath},r):x.warn("SYSTEM","Failed to parse supervisor registry, rebuilding",{path:this.registryPath,error:String(r)}),this.entries.clear()}let e=this.pruneDeadEntries();e>0&&x.info("SYSTEM","Removed dead processes from supervisor registry",{removed:e}),this.persist()}register(e,r,n){this.initialize(),this.entries.set(e,r),n&&this.runtimeProcesses.set(e,n),this.persist()}unregister(e){this.initialize();let r=this.entries.get(e);this.entries.delete(e),this.runtimeProcesses.delete(e),this.persist(),r?.type==="sdk"&&eS()}clear(){this.entries.clear(),this.runtimeProcesses.clear(),this.persist()}getAll(){return this.initialize(),Array.from(this.entries.entries()).map(([e,r])=>({id:e,...r})).sort((e,r)=>{let n=Date.parse(e.startedAt),i=Date.parse(r.startedAt);return(Number.isNaN(n)?0:n)-(Number.isNaN(i)?0:i)})}getBySession(e){let r=String(e);return this.getAll().filter(n=>n.sessionId!==void 0&&String(n.sessionId)===r)}getRuntimeProcess(e){return this.runtimeProcesses.get(e)}pruneDeadEntries(){this.initialize();let e=0,r=0;for(let[n,i]of this.entries)Rt(i.pid)||(this.entries.delete(n),this.runtimeProcesses.delete(n),e+=1,i.type==="sdk"&&(r+=1));e>0&&this.persist();for(let n=0;n<r;n+=1)eS();return e}async reapSession(e){this.initialize();let r=this.getBySession(e);if(r.length===0)return 0;let n=typeof e=="number"?e:Number(e)||void 0;x.info("SYSTEM",`Reaping ${r.length} process(es) for session ${e}`,{sessionId:n,pids:r.map(a=>a.pid)});let i=r.filter(a=>Rt(a.pid)),s=new Map(i.map(a=>[a.pid,Ti(a.pid)]));for(let a of i)try{process.platform==="win32"?await Vn(a.pid,{expectedStartToken:s.get(a.pid)??null}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGTERM"):process.kill(a.pid,"SIGTERM")}catch(c){c instanceof Error?c.code!=="ESRCH"&&x.debug("SYSTEM",`Failed to SIGTERM session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},c):x.warn("SYSTEM",`Failed to SIGTERM session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(c)})}await Rf(i,zie);let o=i.filter(a=>Rt(a.pid));for(let a of o){x.warn("SYSTEM",`Session process PID ${a.pid} did not exit after SIGTERM, sending SIGKILL`,{pid:a.pid,pgid:a.pgid,sessionId:n});let c=s.get(a.pid)??null;if(!ki(a.pid,c)){x.warn("SYSTEM","Skipping SIGKILL: session process PID was reused during the grace window",{pid:a.pid,sessionId:n});continue}try{process.platform==="win32"?await Vn(a.pid,{expectedStartToken:c}):typeof a.pgid=="number"?process.kill(-a.pgid,"SIGKILL"):process.kill(a.pid,"SIGKILL")}catch(l){l instanceof Error?l.code!=="ESRCH"&&x.debug("SYSTEM",`Failed to SIGKILL session process PID ${a.pid}`,{pid:a.pid,pgid:a.pgid},l):x.warn("SYSTEM",`Failed to SIGKILL session process PID ${a.pid} (non-Error)`,{pid:a.pid,pgid:a.pgid,error:String(l)})}}if(o.length>0){let a=Date.now()+Gie;for(;Date.now()<a&&o.filter(l=>Rt(l.pid)).length!==0;)await new Promise(l=>setTimeout(l,100))}for(let a of r)this.entries.delete(a.id),this.runtimeProcesses.delete(a.id);this.persist();for(let a of r)a.type==="sdk"&&eS();return x.info("SYSTEM",`Reaped ${r.length} process(es) for session ${e}`,{sessionId:n,reaped:r.length}),r.length}persist(){let e={processes:Object.fromEntries(this.entries.entries())};(0,Ai.mkdirSync)(tS.default.dirname(this.registryPath),{recursive:!0}),(0,Ai.writeFileSync)(this.registryPath,JSON.stringify(e,null,2))}},ZE=null;fPe=180*1e3,Hie=[]});async function kM(t){let e=t.currentPid??process.pid,r=t.pidFilePath??Vie,n=t.registry.getAll(),i=[...n].filter(c=>c.pid!==e).sort((c,l)=>Date.parse(l.startedAt)-Date.parse(c.startedAt)),s=new Map,o=new Map;for(let c of i){if(!Rt(c.pid)){t.registry.unregister(c.id);continue}o.set(c.id,Ti(c.pid)),s.set(c.id,await kf(c.pid));try{await TM(c,"SIGTERM")}catch(l){l instanceof Error?x.debug("SYSTEM","Failed to send SIGTERM to child process",{pid:c.pid,pgid:c.pgid,type:c.type},l):x.warn("SYSTEM","Failed to send SIGTERM to child process (non-Error)",{pid:c.pid,pgid:c.pgid,type:c.type,error:String(l)})}}await Rf(i,5e3);let a=i.filter(c=>Rt(c.pid)||(s.get(c.id)??[]).some(l=>Rt(l.pid)));for(let c of a){let l=ki(c.pid,o.get(c.id)??null);l||x.warn("SYSTEM","Skipping tree-kill: root PID was reused during the grace window",{pid:c.pid,type:c.type});try{l&&await TM(c,"SIGKILL")}catch(u){u instanceof Error?x.debug("SYSTEM","Failed to force kill child process",{pid:c.pid,pgid:c.pgid,type:c.type},u):x.warn("SYSTEM","Failed to force kill child process (non-Error)",{pid:c.pid,pgid:c.pgid,type:c.type,error:String(u)})}finally{Yie(s.get(c.id)??[],c.pid)}}await Rf(a,1e3);for(let c of i)t.registry.unregister(c.id);for(let c of n.filter(l=>l.pid===e))t.registry.unregister(c.id);Wie(r,e),t.registry.pruneDeadEntries()}function Wie(t,e,r=!1){if(!(0,Va.existsSync)(t))return;let n=null;try{let o=JSON.parse((0,Va.readFileSync)(t,"utf-8"));n=typeof o.pid=="number"?o.pid:null}catch(o){x.debug("SYSTEM","PID file unreadable \u2014 leaving it (cannot prove ownership)",{pidFilePath:t,error:o instanceof Error?o.message:String(o)});return}let i=e!==null&&n===e,s=n===null||!Rt(n);if(!i&&!(r&&s)){x.debug("SYSTEM","PID file not owned by this process \u2014 leaving it for its owner (restart successor?)",{pidFilePath:t,recordedPid:n,currentPid:e});return}try{(0,Va.rmSync)(t,{force:!0})}catch(o){o instanceof Error?x.debug("SYSTEM","Failed to remove PID file",{pidFilePath:t},o):x.warn("SYSTEM","Failed to remove PID file (non-Error)",{pidFilePath:t,error:String(o)})}}function Yie(t,e){for(let{pid:r,startToken:n}of t)if(!(r===e||!Rt(r))){if(!ki(r,n)){x.debug("SYSTEM","Skipping reap: PID was recycled during the grace window",{pid:r,rootPid:e});continue}try{process.kill(r,"SIGKILL"),x.debug("SYSTEM","Reaped orphaned descendant during shutdown cascade",{pid:r,rootPid:e})}catch(i){let s=i instanceof Error?i.code:void 0;s!=="ESRCH"&&x.warn("SYSTEM","Failed to reap orphaned descendant during shutdown cascade",{pid:r,rootPid:e,errno:s})}}}async function TM(t,e){let{pid:r,pgid:n}=t;if(process.platform!=="win32"){if(typeof n=="number")try{process.kill(-n,e);return}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}if(e==="SIGKILL"){await Vn(r,{signalMode:"immediate"});return}try{process.kill(r,e)}catch(i){if((i instanceof Error?i.code:void 0)!=="ESRCH")throw i}return}await Vn(r)}var Va,Vie,AM=R(()=>{"use strict";Va=require("fs");fe();vo();Hn();tu();Vie=Le.workerPid()});function Qie(){let e=Of().pruneDeadEntries();e>0&&x.info("SYSTEM",`Health check: pruned ${e} dead process(es) from registry`)}function OM(){Wa===null&&(Wa=setInterval(Qie,RM),Wa.unref(),x.debug("SYSTEM","Health checker started",{intervalMs:RM}))}function CM(){Wa!==null&&(clearInterval(Wa),Wa=null,x.debug("SYSTEM","Health checker stopped"))}var RM,Wa,jM=R(()=>{"use strict";fe();vo();RM=3e4,Wa=null});function ese(t){let e=[];for(let r of t.split(`
`)){let n=r.trim().match(/^(\d+)\s+(\d+)\s+(.*)$/);n&&e.push({pid:Number.parseInt(n[1],10),ppid:Number.parseInt(n[2],10),command:n[3].trim()})}return e}async function tse(){let t=await Xie("ps",["-eo","pid=,ppid=,command="],{timeout:1e4,maxBuffer:33554432});return ese(t.stdout)}function rse(t,e){let r=t.filter(o=>Zie.test(o.command)&&o.pid!==e.selfPid),n=new Set(r.map(o=>o.pid)),i=r.filter(o=>!n.has(o.ppid)),s=i.filter(o=>o.ppid===e.selfPid?!1:o.ppid===1?!0:!e.isAlive(o.ppid));return{matched:r,roots:i,orphans:s}}async function DM(t={}){let e=t.platform??process.platform,r={matched:0,trees:0,orphans:0,killed:0,failed:0,unregistered:0,skipped:null};if(e==="win32")return r.skipped="windows",r;let n=t.readTable??tse,i=t.isAlive??Rt,s=t.killTree??(f=>Vn(f,{signalMode:"graceful"})),o=t.selfPid??process.pid,a;try{a=await n()}catch(f){return x.warn("PROCESS","Orphaned chroma-mcp sweep skipped: cannot read the process table",{error:f instanceof Error?f.message:String(f)}),r.skipped="unreadable",r}let{matched:c,roots:l,orphans:u}=rse(a,{isAlive:i,selfPid:o});if(r.matched=c.length,r.trees=l.length,r.orphans=u.length,u.length===0)return x.debug("PROCESS","No orphaned chroma-mcp trees found",{matched:r.matched,trees:r.trees}),r;x.warn("PROCESS","Reaping orphaned chroma-mcp trees left by dead workers",{orphans:u.length,roots:u.map(f=>f.pid)});let d=new Set,p=8;for(let f=0;f<u.length;f+=p){let m=u.slice(f,f+p);(await Promise.allSettled(m.map(b=>s(b.pid)))).forEach((b,v)=>{let E=m[v];b.status==="fulfilled"?(r.killed+=1,d.add(E.pid)):(r.failed+=1,x.warn("PROCESS","Failed to reap an orphaned chroma-mcp tree",{pid:E.pid,ppid:E.ppid,error:b.reason instanceof Error?b.reason.message:String(b.reason)}))})}if(t.registry)for(let f of t.registry.getAll())f.type==="chroma"&&d.has(f.pid)&&(t.registry.unregister(f.id),r.unregistered+=1);return x.info("PROCESS","Orphaned chroma-mcp sweep finished",{orphans:r.orphans,killed:r.killed,failed:r.failed,unregistered:r.unregistered}),r}var PM,KM,Xie,Zie,MM=R(()=>{"use strict";PM=require("child_process"),KM=require("util");fe();tu();vo();Xie=(0,KM.promisify)(PM.execFile),Zie=/(?:^|\/)(?:uvx|uv|python[\d.]*)(?:\s|$).*chroma-mcp/});function NM(){return ise}function sse(t={}){let e=t.pidFilePath??nse;if(!(0,Eo.existsSync)(e))return"missing";let r=null;try{r=JSON.parse((0,Eo.readFileSync)(e,"utf-8"))}catch(i){return i instanceof Error?x.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e},i):x.warn("SYSTEM","Failed to parse worker PID file, removing it",{path:e,error:String(i)}),(0,Eo.rmSync)(e,{force:!0}),"invalid"}return ds(r)&&r?((t.logAlive??!0)&&x.info("SYSTEM","Worker already running (PID alive)",{existingPid:r.pid,existingPort:r.port,startedAt:r.startedAt}),"alive"):(x.info("SYSTEM","Removing stale PID file (worker process is dead or PID has been reused)",{pid:r?.pid,port:r?.port,startedAt:r?.startedAt}),(0,Eo.rmSync)(e,{force:!0}),"stale")}var Eo,nse,nS,ise,LM=R(()=>{"use strict";Eo=require("fs");fe();vo();AM();jM();MM();Hn();nse=Le.workerPid(),nS=class{registry;started=!1;stopPromise=null;signalHandlersRegistered=!1;shutdownInitiated=!1;shutdownHandler=null;constructor(e){this.registry=e}async start(){if(this.started)return;if(this.registry.initialize(),sse({logAlive:!1})==="alive")throw new Error("Worker already running");this.started=!0,DM({registry:this.registry}).catch(r=>{x.warn("PROCESS","Orphaned chroma-mcp sweep failed",{error:r instanceof Error?r.message:String(r)})}),OM()}configureSignalHandlers(e){if(this.shutdownHandler=e,this.signalHandlersRegistered)return;this.signalHandlersRegistered=!0;let r=async n=>{if(this.shutdownInitiated){x.warn("SYSTEM",`Received ${n} but shutdown already in progress`);return}this.shutdownInitiated=!0,x.info("SYSTEM",`Received ${n}, shutting down...`);try{this.shutdownHandler?await this.shutdownHandler():await this.stop()}catch(i){i instanceof Error?x.error("SYSTEM","Error during shutdown",{},i):x.error("SYSTEM","Error during shutdown (non-Error)",{error:String(i)});try{await this.stop()}catch(s){s instanceof Error?x.debug("SYSTEM","Supervisor shutdown fallback failed",{},s):x.debug("SYSTEM","Supervisor shutdown fallback failed",{error:String(s)})}}process.exit(0)};process.on("SIGTERM",()=>{r("SIGTERM")}),process.on("SIGINT",()=>{r("SIGINT")}),process.platform!=="win32"&&(process.argv.includes("--daemon")?process.on("SIGHUP",()=>{x.debug("SYSTEM","Ignoring SIGHUP in daemon mode")}):process.on("SIGHUP",()=>{r("SIGHUP")}))}async stop(){if(this.stopPromise){await this.stopPromise;return}CM(),this.stopPromise=kM({registry:this.registry,currentPid:process.pid}).finally(()=>{this.started=!1,this.stopPromise=null}),await this.stopPromise}assertCanSpawn(e){if(this.stopPromise!==null)throw new Error(`Supervisor is shutting down, refusing to spawn ${e}`)}registerProcess(e,r,n){this.registry.register(e,r,n)}unregisterProcess(e){this.registry.unregister(e)}getRegistry(){return this.registry}},ise=new nS(Of())});function iS(t,e,r){t.on("finish",async()=>{try{await r()}finally{process.exit(0)}}),t.json(e)}var qM=R(()=>{"use strict"});function sS(t,e=Date.now){return Math.max(0,Math.floor((e()-t)/1e3))}var FM=R(()=>{"use strict"});function oS(){let t=Array.from(ose.values()).map(e=>({...e})).sort((e,r)=>e.dependency.localeCompare(r.dependency));return{degraded:t.length>0,statuses:t}}var ose,$M=R(()=>{"use strict";ose=new Map});function ase(t,e){return e.status!=="rejected"?!1:!t||t.status!=="rejected"?!0:t.resetsAt!==e.resetsAt}var aS,UM,NPe,JM=R(()=>{"use strict";aS=class{entries=new Map;set(e){if(!e||typeof e!="object")return!1;let r=e.rateLimitType??"default",n=this.entries.get(r);return this.entries.set(r,{...e,observedAt:Date.now()}),ase(n,e)}get(e){return e?this.entries.get(e):this.entries.get("default")}getMostRecentByWindow(){return{five_hour:this.entries.get("five_hour"),seven_day:this.entries.get("seven_day"),seven_day_opus:this.entries.get("seven_day_opus"),seven_day_sonnet:this.entries.get("seven_day_sonnet"),overage:this.entries.get("overage")}}get size(){return this.entries.size}},UM=new aS;NPe=900*1e3});function use(t){t.setHeader("X-Content-Type-Options","nosniff"),t.setHeader("X-Frame-Options","DENY"),t.setHeader("X-DNS-Prefetch-Control","off"),t.setHeader("Referrer-Policy","no-referrer"),t.setHeader("Cross-Origin-Opener-Policy","same-origin"),t.setHeader("Cross-Origin-Resource-Policy","same-origin"),t.setHeader("Origin-Agent-Cluster","?1"),t.removeHeader("X-Powered-By")}var BM,HM,lS,ru,VM,cse,cS,zM,lse,GM,Cf,WM=R(()=>{"use strict";BM=tt(Ef(),1),HM=tt(require("http"),1),lS=tt(require("fs"),1),ru=tt(require("path"),1);eM();fe();hM();vM();LM();vo();eu();qM();FM();$M();JM();VM=ru.default.resolve(__CM_DIRNAME__,"../skills/mem-search"),cse=ru.default.join(VM,"operations"),cS=ru.default.join(VM,"SKILL.md"),zM=(()=>{try{let t=lS.readFileSync(cS,"utf-8");return x.info("SYSTEM","Cached SKILL.md at boot",{path:cS,bytes:Buffer.byteLength(t,"utf-8")}),t}catch(t){return x.debug("SYSTEM","SKILL.md not present at boot, /api/instructions will 404 for topic queries",{path:cS,message:t instanceof Error?t.message:String(t)}),null}})(),lse=(()=>{let t=new Map;for(let e of NE){let r=ru.default.join(cse,`${e}.md`);try{t.set(e,lS.readFileSync(r,"utf-8"))}catch(n){x.debug("SYSTEM","Operation instruction file not present at boot",{path:r,message:n instanceof Error?n.message:String(n)})}}return t.size>0&&x.info("SYSTEM","Cached operation instruction files at boot",{count:t.size,operations:Array.from(t.keys())}),t})(),GM="13.24.21";Cf=class{app;server=null;options;startTime=Date.now();constructor(e){this.options=e,this.app=(0,BM.default)(),this.app.disable("x-powered-by"),this.setupRemoteReadOnlyGuard(),this.setupSecurityHeaders(),this.setupCors(),this.setupPreBodyParserRoutes(),this.setupMiddleware(),this.setupCoreRoutes()}getHttpServer(){return this.server}async listen(e,r){return new Promise((n,i)=>{let s=HM.default.createServer(this.app),o=c=>{s.off("listening",a),i(c)},a=()=>{s.off("error",o),this.server=s,x.info("SYSTEM","HTTP server started",{host:r,port:e,pid:process.pid}),n()};s.once("error",o),s.once("listening",a),s.listen(e,r)})}async close(){this.server&&(this.server.closeAllConnections(),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),await new Promise((e,r)=>{this.server.close(n=>n?r(n):e())}),process.platform==="win32"&&await new Promise(e=>setTimeout(e,500)),this.server=null,x.info("SYSTEM","HTTP server closed"))}registerRoutes(e){e.setupRoutes(this.app)}finalizeRoutes(){this.app.use(bM),this.app.use(gM)}setupMiddleware(){pM().forEach(r=>this.app.use(r))}setupRemoteReadOnlyGuard(){this.options.remoteReadOnly&&this.app.use(mM(this.options.remoteReadOnly))}setupSecurityHeaders(){this.options.securityHeaders&&this.app.use((e,r,n)=>{use(r),n()})}setupCors(){this.app.use(fM())}setupPreBodyParserRoutes(){this.options.preBodyParserRoutes?.forEach(e=>e.setupRoutes(this.app))}setupCoreRoutes(){this.app.get("/api/health",async(e,r)=>{let n=this.options.getQueueHealth?await this.options.getQueueHealth():null,i=n?.engine==="bullmq"&&n.redis.status==="error",s=this.options.getDependencyHealth?this.options.getDependencyHealth():oS();r.status(i?503:200).json({status:i?"degraded":"ok",...this.options.runtime?{runtime:this.options.runtime}:{},version:GM,workerPath:this.options.workerPath,uptime:sS(this.startTime),managed:process.env.CLAUDE_MEM_MANAGED==="true",hasIpc:typeof process.send=="function",platform:process.platform,pid:process.pid,initialized:this.options.getInitializationComplete(),mcpReady:this.options.getMcpReady(),ai:this.options.getAiStatus(),dependencies:s,rateLimits:UM.getMostRecentByWindow(),...n?{queue:n}:{}})}),this.app.get("/api/readiness",(e,r)=>{this.options.getInitializationComplete()?r.status(200).json({status:"ready",mcpReady:this.options.getMcpReady()}):r.status(503).json({status:"initializing",message:"Worker is still initializing, please retry"})}),this.app.get("/api/version",(e,r)=>{r.status(200).json({version:GM})}),this.app.get("/api/instructions",(e,r)=>{let n=e.query.topic||"all",i=e.query.operation;if(n&&!ZD.includes(n))return r.status(400).json({error:"Invalid topic"});if(i&&!NE.includes(i))return r.status(400).json({error:"Invalid operation"});if(i){let o=lse.get(i);return o===void 0?(x.debug("HTTP","Instruction file not cached at boot",{operation:i}),r.status(404).json({error:"Instruction not found"})):r.json({content:[{type:"text",text:o}]})}if(zM===null)return x.debug("HTTP","SKILL.md not cached at boot",{topic:n}),r.status(404).json({error:"Instruction not found"});let s=this.extractInstructionSection(zM,n);r.json({content:[{type:"text",text:s}]})}),this.app.post("/api/admin/restart",If,async(e,r)=>{process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(r.json({status:"restarting"}),x.info("SYSTEM","Sending restart request to wrapper"),process.send({type:"restart"})):iS(r,{status:"restarting"},()=>this.options.onRestart())}),this.app.post("/api/admin/shutdown",If,async(e,r)=>{let n=e.query.reason==="restart"?"restart":"stop";process.platform==="win32"&&process.env.CLAUDE_MEM_MANAGED==="true"&&process.send?(r.json({status:"shutting_down"}),x.info("SYSTEM","Sending shutdown request to wrapper"),process.send({type:"shutdown",reason:n})):iS(r,{status:"shutting_down"},()=>this.options.onShutdown(n))}),this.app.get("/api/admin/doctor",If,(e,r)=>{let o=NM().getRegistry().getAll().map(f=>({id:f.id,pid:f.pid,type:f.type,status:Rt(f.pid)?"alive":"dead",startedAt:f.startedAt})),a=o.filter(f=>f.status==="dead").map(f=>f.pid),c=!Object.keys(process.env).some(f=>VE.has(f)||HE.some(m=>f.startsWith(m))),l=sS(this.startTime),u=Math.floor(l/3600),d=Math.floor(l%3600/60),p=u>0?`${u}h ${d}m`:`${d}m`;r.json({supervisor:{running:!0,pid:process.pid,uptime:p},processes:o,health:{deadProcessPids:a,envClean:c,dependencies:this.options.getDependencyHealth?this.options.getDependencyHealth():oS()}})})}extractInstructionSection(e,r){let n={workflow:this.extractBetween(e,"## The Workflow","## Search Parameters"),search_params:this.extractBetween(e,"## Search Parameters","## Examples"),examples:this.extractBetween(e,"## Examples","## Why This Workflow"),all:e};return n[r]||n.all}extractBetween(e,r,n){let i=e.indexOf(r),s=e.indexOf(n);return i===-1?e:s===-1?e.substring(i):e.substring(i,s).trim()}}});var Rr,dse,pse,uS,YM=R(()=>{"use strict";Rr=require("zod"),dse=Rr.z.enum(["hook","worker","provider","server","api"]),pse=Rr.z.object({id:Rr.z.string().min(1),projectId:Rr.z.string().min(1),serverSessionId:Rr.z.string().min(1).nullable().default(null),sourceType:dse,eventType:Rr.z.string().min(1),platformSource:Rr.z.string().min(1).nullable().default(null),payload:Rr.z.unknown().default({}),contentSessionId:Rr.z.string().min(1).nullable().default(null),memorySessionId:Rr.z.string().min(1).nullable().default(null),occurredAtEpoch:Rr.z.number().int().nonnegative(),createdAtEpoch:Rr.z.number().int().nonnegative()}),uS=pse.omit({id:!0,createdAtEpoch:!0}).partial({serverSessionId:!0,platformSource:!0,payload:!0,contentSessionId:!0,memorySessionId:!0})});function Ze(){return(0,jf.randomUUID)()}function ht(t){return t&&typeof t=="object"&&!Array.isArray(t)?t:{}}function QM(t){return Array.isArray(t)?t:[]}function De(t){return typeof t=="number"?t:new Date(t).getTime()}function Qr(t){return t==null?null:t instanceof Date?t:new Date(t)}async function se(t,e,r=[]){return(await t.query(e,r)).rows[0]??null}async function Sn(t,e,r){if(!await se(t,"SELECT id FROM projects WHERE id = $1 AND team_id = $2",[e,r]))throw new Error("project_id must belong to team_id")}async function Ri(t,e,r,n){if(!await se(t,"SELECT id FROM server_sessions WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,r,n]))throw new Error("server_session_id must belong to project_id and team_id")}function nu(t){return JSON.stringify(dS(t))}function xn(t){return(0,jf.createHash)("sha256").update(nu(t)).digest("hex")}function dS(t){if(Array.isArray(t))return t.map(dS);if(t&&typeof t=="object"){let e=t;return Object.keys(e).sort().reduce((r,n)=>(r[n]=dS(e[n]),r),{})}return t}var jf,wn=R(()=>{"use strict";jf=require("crypto")});function fse(t){return t.trim().toLowerCase().replace(/\s+/g,"-")}function ps(t){if(!t)return Ya;let e=fse(t);return e?e==="transcript"||e.includes("codex")?"codex":e.includes("cursor")?"cursor":e.includes("claude")?"claude":e:Ya}function cr(t){return typeof t!="string"?null:ps(t)}var Ya,So=R(()=>{"use strict";Ya="claude"});function XM(t){let e=cr(t.platformSource),r=e?[e]:[];return t.sourceEventId?`agent_event:v1:${xn([t.teamId,t.projectId,t.sourceAdapter,...r,t.sourceEventId])}`:`agent_event:v1:${xn([t.teamId,t.projectId,t.sourceAdapter,...r,t.contentSessionId??t.serverSessionId??null,t.eventType,new Date(t.occurredAt).toISOString(),nu(t.payload??{})])}`}function pS(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,sourceAdapter:t.source_adapter,sourceEventId:t.source_event_id,idempotencyKey:t.idempotency_key,eventType:t.event_type,platformSource:t.platform_source,payload:t.payload,metadata:ht(t.metadata),occurredAtEpoch:De(t.occurred_at),receivedAtEpoch:De(t.received_at),createdAtEpoch:De(t.created_at)}}var Xr,Qa=R(()=>{"use strict";wn();So();Xr=class{constructor(e){this.client=e}client;async create(e){await Sn(this.client,e.projectId,e.teamId),e.serverSessionId&&await Ri(this.client,e.serverSessionId,e.projectId,e.teamId);let r=XM(e),n=cr(e.platformSource),i=await se(this.client,`
INSERT INTO agent_events (
id, project_id, team_id, server_session_id, source_adapter,
source_event_id, idempotency_key, event_type, platform_source, payload, metadata, occurred_at
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10::jsonb, $11::jsonb, $12)
ON CONFLICT (idempotency_key) DO UPDATE SET
metadata = agent_events.metadata || excluded.metadata,
platform_source = COALESCE(excluded.platform_source, agent_events.platform_source)
RETURNING *
`,[e.id??Ze(),e.projectId,e.teamId,e.serverSessionId??null,e.sourceAdapter,e.sourceEventId??null,r,e.eventType,n,JSON.stringify(e.payload??{}),JSON.stringify(e.metadata??{}),new Date(e.occurredAt)]);return pS(i)}async getByIdForScope(e){let r=await se(this.client,"SELECT * FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return r?pS(r):null}async listByProject(e){return(await this.client.query(`
SELECT * FROM agent_events
WHERE project_id = $1
AND team_id = $2
AND ($3::text IS NULL OR server_session_id = $3)
ORDER BY occurred_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.serverSessionId??null,e.limit??100])).rows.map(pS)}}});function eN(t){return`observation_generation_job:v1:${xn([t.teamId,t.projectId,t.sourceType,t.sourceId,t.jobType])}`}function mse(t){return t.sourceType==="agent_event"?{agentEventId:t.agentEventId??t.sourceId,serverSessionId:t.serverSessionId??null}:t.sourceType==="session_summary"?{agentEventId:null,serverSessionId:t.serverSessionId??t.sourceId}:{agentEventId:null,serverSessionId:t.serverSessionId??null}}function gse(t,e){if(hse.has(t.status))throw new Error(`cannot transition observation generation job from terminal status ${t.status}`);if(!yse[t.status].includes(e))throw new Error(`illegal observation generation job transition from ${t.status} to ${e}`);if(e==="processing"&&t.attempts>=t.maxAttempts)throw new Error("cannot process observation generation job after max_attempts is reached");if(e==="queued"&&t.attempts>=t.maxAttempts)throw new Error("cannot retry observation generation job after max_attempts is reached")}function iu(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,agentEventId:t.agent_event_id,sourceType:t.source_type,sourceId:t.source_id,serverSessionId:t.server_session_id,jobType:t.job_type,status:t.status,idempotencyKey:t.idempotency_key,bullmqJobId:t.bullmq_job_id,attempts:t.attempts,maxAttempts:t.max_attempts,nextAttemptAtEpoch:Qr(t.next_attempt_at)?.getTime()??null,lockedAtEpoch:Qr(t.locked_at)?.getTime()??null,lockedBy:t.locked_by,completedAtEpoch:Qr(t.completed_at)?.getTime()??null,failedAtEpoch:Qr(t.failed_at)?.getTime()??null,cancelledAtEpoch:Qr(t.cancelled_at)?.getTime()??null,lastError:t.last_error==null?null:ht(t.last_error),payload:ht(t.payload),createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}function ZM(t){return{id:t.id,generationJobId:t.generation_job_id,eventType:t.event_type,statusAfter:t.status_after,attempt:t.attempt,details:ht(t.details),createdAtEpoch:De(t.created_at)}}var dt,Wt,hse,yse,fs=R(()=>{"use strict";wn();dt=class{constructor(e){this.client=e}client;async create(e){await this.validateSource(e);let r=mse(e),n=eN(e),i=await se(this.client,`
INSERT INTO observation_generation_jobs (
id, project_id, team_id, agent_event_id, source_type, source_id,
server_session_id, job_type, status, idempotency_key, bullmq_job_id,
max_attempts, payload
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13::jsonb)
ON CONFLICT (idempotency_key) DO UPDATE SET
-- The conflicting INSERT carries a freshly generated job id in both $1
-- and payload.generation_job_id. ON CONFLICT keeps the existing row, so
-- $1 is discarded -- but the merge below would otherwise let the new
-- payload overwrite generation_job_id with that discarded id, leaving
-- the row pointing at a job that never existed. The worker resolves the
-- job via payload.generation_job_id, so such a row can never be locked
-- and is silently dropped. Re-pin the pointer to the surviving row.
payload = observation_generation_jobs.payload
|| excluded.payload
|| jsonb_build_object('generation_job_id', observation_generation_jobs.id),
updated_at = now()
RETURNING *
`,[e.id??Ze(),e.projectId,e.teamId,r.agentEventId,e.sourceType,e.sourceId,r.serverSessionId,e.jobType,e.status??"queued",n,e.bullmqJobId??null,e.maxAttempts??3,JSON.stringify(e.payload??{})]);return iu(i)}async getByIdForScope(e){let r=await se(this.client,"SELECT * FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return r?iu(r):null}async transitionStatus(e){let r=await se(this.client,`
UPDATE observation_generation_jobs
SET
status = $2,
attempts = CASE WHEN $2 = 'processing' THEN attempts + 1 ELSE attempts END,
locked_at = CASE WHEN $2 = 'processing' THEN now() ELSE NULL END,
locked_by = CASE WHEN $2 = 'processing' THEN $3 ELSE NULL END,
next_attempt_at = CASE WHEN $2 = 'queued' THEN $4::timestamptz ELSE NULL::timestamptz END,
completed_at = CASE WHEN $2 = 'completed' THEN now() ELSE NULL END,
failed_at = CASE WHEN $2 = 'failed' THEN now() ELSE NULL END,
cancelled_at = CASE WHEN $2 = 'cancelled' THEN now() ELSE NULL END,
last_error = $5::jsonb,
updated_at = now()
WHERE id = $1
AND project_id = $6
AND team_id = $7
AND (
(status = 'queued' AND $2 IN ('processing', 'failed', 'cancelled'))
OR
(status = 'processing' AND $2 IN ('queued', 'completed', 'failed', 'cancelled'))
)
AND ($2 <> 'processing' OR attempts < max_attempts)
AND ($2 <> 'queued' OR attempts < max_attempts)
RETURNING *
`,[e.id,e.status,e.lockedBy??null,e.nextAttemptAt??null,e.lastError==null?null:JSON.stringify(e.lastError),e.projectId,e.teamId]);if(r)return iu(r);let n=await se(this.client,"SELECT * FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);if(!n)return null;throw gse(iu(n),e.status),new Error("observation generation job status transition was not applied")}async listByStatusForScope(e){return(await this.client.query(`
SELECT * FROM observation_generation_jobs
WHERE status = $1 AND project_id = $2 AND team_id = $3
ORDER BY created_at ASC
LIMIT $4
`,[e.status,e.projectId,e.teamId,e.limit??100])).rows.map(iu)}async validateSource(e){if(await Sn(this.client,e.projectId,e.teamId),e.sourceType==="agent_event"){let n=e.agentEventId??e.sourceId,i=await se(this.client,"SELECT id, server_session_id FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[n,e.projectId,e.teamId]);if(!i||e.sourceId!==n)throw new Error("agent_event source_id must belong to project_id and team_id");if(e.serverSessionId&&(await Ri(this.client,e.serverSessionId,e.projectId,e.teamId),i.server_session_id&&i.server_session_id!==e.serverSessionId))throw new Error("server_session_id must match the agent_event server_session_id");return}if(e.sourceType==="session_summary"){let n=e.serverSessionId??e.sourceId;if(await Ri(this.client,n,e.projectId,e.teamId),e.sourceId!==n)throw new Error("session_summary source_id must equal server_session_id");return}if(!await se(this.client,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.sourceId,e.projectId,e.teamId]))throw new Error("observation_reindex source_id must belong to project_id and team_id");e.serverSessionId&&await Ri(this.client,e.serverSessionId,e.projectId,e.teamId)}},Wt=class{constructor(e){this.client=e}client;async append(e){let r=await se(this.client,`
INSERT INTO observation_generation_job_events (
id, generation_job_id, event_type, status_after, attempt, details
)
SELECT $1, jobs.id, $4, $5, $6, $7::jsonb
FROM observation_generation_jobs jobs
WHERE jobs.id = $2
AND jobs.project_id = $3
AND jobs.team_id = $8
RETURNING observation_generation_job_events.*
`,[e.id??Ze(),e.generationJobId,e.projectId,e.eventType,e.statusAfter,e.attempt??0,JSON.stringify(e.details??{}),e.teamId]);if(!r)throw new Error("generation_job_id must belong to project_id and team_id");return ZM(r)}async listByJobForScope(e){return(await this.client.query(`
SELECT events.*
FROM observation_generation_job_events events
INNER JOIN observation_generation_jobs jobs ON jobs.id = events.generation_job_id
WHERE events.generation_job_id = $1 AND jobs.project_id = $2 AND jobs.team_id = $3
ORDER BY events.created_at ASC
`,[e.generationJobId,e.projectId,e.teamId])).rows.map(ZM)}};hse=new Set(["completed","failed","cancelled"]),yse={queued:["processing","failed","cancelled"],processing:["queued","completed","failed","cancelled"],completed:[],failed:[],cancelled:[]}});var rN={};io(rN,{PostgresAuthRepository:()=>Nt});function tN(t){return{id:t.id,keyHash:t.key_hash,teamId:t.team_id,projectId:t.project_id,actorId:t.actor_id,scopes:QM(t.scopes),revokedAtEpoch:Qr(t.revoked_at)?.getTime()??null,expiresAtEpoch:Qr(t.expires_at)?.getTime()??null,createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}function bse(t){return{id:t.id,teamId:t.team_id,projectId:t.project_id,actorId:t.actor_id,apiKeyId:t.api_key_id,action:t.action,resourceType:t.resource_type,resourceId:t.resource_id,details:ht(t.details),createdAtEpoch:De(t.created_at)}}var Nt,Oi=R(()=>{"use strict";wn();Nt=class{constructor(e){this.client=e}client;async createApiKey(e){e.projectId&&e.teamId&&await Sn(this.client,e.projectId,e.teamId);let r=e.id??Ze(),n=await se(this.client,`
INSERT INTO api_keys (id, key_hash, team_id, project_id, actor_id, scopes, expires_at)
VALUES ($1, $2, $3, $4, $5, $6::jsonb, $7)
RETURNING *
`,[r,e.keyHash,e.teamId??null,e.projectId??null,e.actorId,JSON.stringify(e.scopes??[]),e.expiresAt??null]);return tN(n)}async createAuditLog(e){e.projectId&&e.teamId&&await Sn(this.client,e.projectId,e.teamId);let r=e.id??Ze(),n=await se(this.client,`
INSERT INTO audit_log (
id, team_id, project_id, actor_id, api_key_id, action,
resource_type, resource_id, details
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9::jsonb)
RETURNING *
`,[r,e.teamId??null,e.projectId??null,e.actorId??null,e.apiKeyId??null,e.action,e.resourceType,e.resourceId??null,JSON.stringify(e.details??{})]);return bse(n)}async getApiKeyByHash(e){let r=await se(this.client,"SELECT * FROM api_keys WHERE key_hash = $1",[e]);return r?tN(r):null}}});function fS(t){return`generation:v1:${t.generationJobId}:${t.parsedObservationIndex}:${xn([nu(t.content.trim())])}`}async function vse(t,e,r,n){if(!await se(t,"SELECT id FROM observation_generation_jobs WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,r,n]))throw new Error("generation_job_id must belong to project_id and team_id")}async function Ese(t,e){if(e.sourceType==="manual")throw new Error("manual observation sources cannot be linked to a generation_job_id");let r=await se(t,`
SELECT id, source_type, source_id, agent_event_id
FROM observation_generation_jobs
WHERE id = $1 AND project_id = $2 AND team_id = $3
`,[e.generationJobId,e.projectId,e.teamId]);if(!r)throw new Error("generation_job_id must belong to project_id and team_id");if(r.source_type!==e.sourceType||r.source_id!==e.sourceId)throw new Error("generation_job_id source model must match observation source");if(e.sourceType==="agent_event"&&r.agent_event_id!==e.agentEventId)throw new Error("generation_job_id agent_event_id must match observation source")}async function Sse(t,e,r,n){if(!await se(t,"SELECT id FROM agent_events WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,r,n]))throw new Error("agent_event_id must belong to project_id and team_id")}async function xse(t,e,r,n){if(!await se(t,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e,r,n]))throw new Error("observation_reindex source_id must belong to project_id and team_id")}function Pf(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,kind:t.kind,content:t.content,generationKey:t.generation_key,metadata:ht(t.metadata),embedding:t.embedding,createdByJobId:t.created_by_job_id,createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}function nN(t){return{id:t.id,observationId:t.observation_id,agentEventId:t.agent_event_id,generationJobId:t.generation_job_id,sourceType:t.source_type,sourceId:t.source_id,metadata:ht(t.metadata),createdAtEpoch:De(t.created_at)}}var Zr,xo,su=R(()=>{"use strict";wn();So();Zr=class{constructor(e){this.client=e}client;async create(e){await Sn(this.client,e.projectId,e.teamId),e.serverSessionId&&await Ri(this.client,e.serverSessionId,e.projectId,e.teamId),e.createdByJobId&&await vse(this.client,e.createdByJobId,e.projectId,e.teamId);let r=await se(this.client,`
INSERT INTO observations (
id, project_id, team_id, server_session_id, kind, content,
generation_key, metadata, embedding, created_by_job_id
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8::jsonb, $9::jsonb, $10)
ON CONFLICT (team_id, project_id, generation_key) WHERE generation_key IS NOT NULL DO UPDATE SET
updated_at = observations.updated_at
RETURNING *
`,[e.id??Ze(),e.projectId,e.teamId,e.serverSessionId??null,e.kind??"observation",e.content,e.generationKey??null,JSON.stringify(e.metadata??{}),e.embedding==null?null:JSON.stringify(e.embedding),e.createdByJobId??null]);return Pf(r)}async getByIdForScope(e){let r=await se(this.client,"SELECT * FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return r?Pf(r):null}async listByProject(e){return(await this.client.query(`
SELECT * FROM observations
WHERE project_id = $1
AND team_id = $2
AND ($3::text IS NULL OR server_session_id = $3)
ORDER BY created_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.serverSessionId??null,e.limit??100])).rows.map(Pf)}async search(e){let r=cr(e.platformSource);return(await this.client.query(`
SELECT observations.* FROM observations
LEFT JOIN server_sessions
ON server_sessions.id = observations.server_session_id
AND server_sessions.project_id = observations.project_id
AND server_sessions.team_id = observations.team_id
WHERE observations.project_id = $1
AND observations.team_id = $2
AND observations.content_search @@ websearch_to_tsquery('english', $3)
AND (
$5::text IS NULL
OR server_sessions.platform_source = $5
OR (
observations.server_session_id IS NULL
AND EXISTS (
SELECT 1
FROM observation_sources
INNER JOIN agent_events
ON agent_events.id = observation_sources.agent_event_id
AND agent_events.project_id = observations.project_id
AND agent_events.team_id = observations.team_id
WHERE observation_sources.observation_id = observations.id
AND observation_sources.source_type = 'agent_event'
AND agent_events.platform_source = $5
)
)
)
ORDER BY ts_rank(observations.content_search, websearch_to_tsquery('english', $3)) DESC, observations.updated_at DESC
LIMIT $4
`,[e.projectId,e.teamId,e.query,e.limit??20,r])).rows.map(Pf)}},xo=class{constructor(e){this.client=e}client;async addSource(e){if(!await se(this.client,"SELECT id FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.observationId,e.projectId,e.teamId]))throw new Error("observation_id does not exist");let n=e.sourceType==="agent_event"?e.agentEventId??e.sourceId:null;if(e.sourceType==="agent_event"){if(n!==e.sourceId)throw new Error("agent_event source_id must equal agent_event_id");await Sse(this.client,e.sourceId,e.projectId,e.teamId)}else e.sourceType==="session_summary"&&!e.generationJobId?await Ri(this.client,e.sourceId,e.projectId,e.teamId):e.sourceType==="observation_reindex"&&!e.generationJobId&&await xse(this.client,e.sourceId,e.projectId,e.teamId);e.generationJobId&&await Ese(this.client,{generationJobId:e.generationJobId,projectId:e.projectId,teamId:e.teamId,sourceType:e.sourceType,sourceId:e.sourceId,agentEventId:n});let i=await se(this.client,`
INSERT INTO observation_sources (
id, observation_id, agent_event_id, generation_job_id,
source_type, source_id, metadata
)
VALUES ($1, $2, $3, $4, $5, $6, $7::jsonb)
ON CONFLICT (observation_id, source_type, source_id) DO UPDATE SET
metadata = observation_sources.metadata || excluded.metadata
RETURNING *
`,[e.id??Ze(),e.observationId,n,e.generationJobId??null,e.sourceType,e.sourceId,JSON.stringify(e.metadata??{})]);return nN(i)}async listByObservationForScope(e){return(await this.client.query(`
SELECT observation_sources.*
FROM observation_sources
INNER JOIN observations
ON observations.id = observation_sources.observation_id
WHERE observation_sources.observation_id = $1
AND observations.project_id = $2
AND observations.team_id = $3
ORDER BY observation_sources.created_at ASC
`,[e.observationId,e.projectId,e.teamId])).rows.map(nN)}}});function iN(t){return{id:t.id,teamId:t.team_id,name:t.name,metadata:ht(t.metadata),createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}var _n,Xa=R(()=>{"use strict";wn();_n=class{constructor(e){this.client=e}client;async create(e){let r=e.id??Ze(),n=await se(this.client,`
INSERT INTO projects (id, team_id, name, metadata)
VALUES ($1, $2, $3, $4::jsonb)
RETURNING *
`,[r,e.teamId,e.name,JSON.stringify(e.metadata??{})]);return iN(n)}async getByIdForTeam(e,r){let n=await se(this.client,"SELECT * FROM projects WHERE id = $1 AND team_id = $2",[e,r]);return n?iN(n):null}}});function wo(t,e={}){return async(r,n,i)=>{try{await wse(t,e,r,n,i)}catch(s){let o=s instanceof Error?s:new Error(String(s));x.warn("HTTP","postgres auth middleware failed",{path:r.path},o),i(s)}}}async function wse(t,e,r,n,i){let s=e.authMode??process.env.CLAUDE_MEM_AUTH_MODE??"api-key",o=r.header("authorization")??"",a=r.header("x-api-key")?.trim()??"",c=xf(o)||a||null,l=e.allowLocalDevBypass??process.env.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="1";if(!c&&s==="local-dev"&&l&&wf(r)&&cM(r)&&!_f(r)){let p={userId:null,organizationId:null,teamId:e.localDevTeamId??null,projectId:null,scopes:["local-dev"],apiKeyId:null,mode:"local-dev"};r.authContext=p,i();return}if(!c){n.status(401).json({error:"Unauthorized",message:"Missing API key (Authorization: Bearer <key> or X-Api-Key: <key>)"});return}let u=await _se(t,c,e.requiredScopes??[]);if(!u){n.status(403).json({error:"Forbidden",message:"Invalid API key or insufficient scope"});return}let d={userId:null,organizationId:null,teamId:u.teamId,projectId:u.projectId,scopes:u.scopes,apiKeyId:u.apiKeyId,mode:"api-key"};r.authContext=d,i()}async function _se(t,e,r){let n=(0,sN.createHash)("sha256").update(e).digest("hex"),s=(await t.query(`
SELECT id, team_id, project_id, scopes, revoked_at, expires_at
FROM api_keys
WHERE key_hash = $1
`,[n])).rows[0];if(!s||s.revoked_at||s.expires_at&&s.expires_at.getTime()<=Date.now())return null;let o=Ise(s.scopes);return Tse(o,r)?{apiKeyId:s.id,teamId:s.team_id,projectId:s.project_id,scopes:o}:null}function Ise(t){return Array.isArray(t)?t.filter(e=>typeof e=="string"):[]}function Tse(t,e){return e.length===0||t.includes("*")?!0:e.every(r=>t.includes(r))}var sN,Kf=R(()=>{"use strict";sN=require("crypto");GE();fe()});var hS=h(oN=>{"use strict";oN.parse=function(t,e){return new mS(t,e).parse()};var mS=class t{constructor(e,r){this.source=e,this.transform=r||kse,this.position=0,this.entries=[],this.recorded=[],this.dimension=0}isEof(){return this.position>=this.source.length}nextCharacter(){var e=this.source[this.position++];return e==="\\"?{value:this.source[this.position++],escaped:!0}:{value:e,escaped:!1}}record(e){this.recorded.push(e)}newEntry(e){var r;(this.recorded.length>0||e)&&(r=this.recorded.join(""),r==="NULL"&&!e&&(r=null),r!==null&&(r=this.transform(r)),this.entries.push(r),this.recorded=[])}consumeDimensions(){if(this.source[0]==="[")for(;!this.isEof();){var e=this.nextCharacter();if(e.value==="=")break}}parse(e){var r,n,i;for(this.consumeDimensions();!this.isEof();)if(r=this.nextCharacter(),r.value==="{"&&!i)this.dimension++,this.dimension>1&&(n=new t(this.source.substr(this.position-1),this.transform),this.entries.push(n.parse(!0)),this.position+=n.position-2);else if(r.value==="}"&&!i){if(this.dimension--,!this.dimension&&(this.newEntry(),e))return this.entries}else r.value==='"'&&!r.escaped?(i&&this.newEntry(!0),i=!i):r.value===","&&!i?this.newEntry():this.record(r.value);if(this.dimension!==0)throw new Error("array dimension not balanced");return this.entries}};function kse(t){return t}});var yS=h((bKe,aN)=>{var Ase=hS();aN.exports={create:function(t,e){return{parse:function(){return Ase.parse(t,e)}}}}});var uN=h((vKe,lN)=>{"use strict";var Rse=/(\d{1,})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})(\.\d{1,})?.*?( BC)?$/,Ose=/^(\d{1,})-(\d{2})-(\d{2})( BC)?$/,Cse=/([Z+-])(\d{2})?:?(\d{2})?:?(\d{2})?/,jse=/^-?infinity$/;lN.exports=function(e){if(jse.test(e))return Number(e.replace("i","I"));var r=Rse.exec(e);if(!r)return Pse(e)||null;var n=!!r[8],i=parseInt(r[1],10);n&&(i=cN(i));var s=parseInt(r[2],10)-1,o=r[3],a=parseInt(r[4],10),c=parseInt(r[5],10),l=parseInt(r[6],10),u=r[7];u=u?1e3*parseFloat(u):0;var d,p=Kse(e);return p!=null?(d=new Date(Date.UTC(i,s,o,a,c,l,u)),gS(i)&&d.setUTCFullYear(i),p!==0&&d.setTime(d.getTime()-p)):(d=new Date(i,s,o,a,c,l,u),gS(i)&&d.setFullYear(i)),d};function Pse(t){var e=Ose.exec(t);if(e){var r=parseInt(e[1],10),n=!!e[4];n&&(r=cN(r));var i=parseInt(e[2],10)-1,s=e[3],o=new Date(r,i,s);return gS(r)&&o.setFullYear(r),o}}function Kse(t){if(t.endsWith("+00"))return 0;var e=Cse.exec(t.split(" ")[1]);if(e){var r=e[1];if(r==="Z")return 0;var n=r==="-"?-1:1,i=parseInt(e[2],10)*3600+parseInt(e[3]||0,10)*60+parseInt(e[4]||0,10);return i*n*1e3}}function cN(t){return-(t-1)}function gS(t){return t>=0&&t<100}});var pN=h((EKe,dN)=>{dN.exports=Mse;var Dse=Object.prototype.hasOwnProperty;function Mse(t){for(var e=1;e<arguments.length;e++){var r=arguments[e];for(var n in r)Dse.call(r,n)&&(t[n]=r[n])}return t}});var hN=h((SKe,mN)=>{"use strict";var Nse=pN();mN.exports=Za;function Za(t){if(!(this instanceof Za))return new Za(t);Nse(this,Wse(t))}var Lse=["seconds","minutes","hours","days","months","years"];Za.prototype.toPostgres=function(){var t=Lse.filter(this.hasOwnProperty,this);return this.milliseconds&&t.indexOf("seconds")<0&&t.push("seconds"),t.length===0?"0":t.map(function(e){var r=this[e]||0;return e==="seconds"&&this.milliseconds&&(r=(r+this.milliseconds/1e3).toFixed(6).replace(/\.?0+$/,"")),r+" "+e},this).join(" ")};var qse={years:"Y",months:"M",days:"D",hours:"H",minutes:"M",seconds:"S"},Fse=["years","months","days"],$se=["hours","minutes","seconds"];Za.prototype.toISOString=Za.prototype.toISO=function(){var t=Fse.map(r,this).join(""),e=$se.map(r,this).join("");return"P"+t+"T"+e;function r(n){var i=this[n]||0;return n==="seconds"&&this.milliseconds&&(i=(i+this.milliseconds/1e3).toFixed(6).replace(/0+$/,"")),i+qse[n]}};var bS="([+-]?\\d+)",Use=bS+"\\s+years?",Jse=bS+"\\s+mons?",zse=bS+"\\s+days?",Gse="([+-])?([\\d]*):(\\d\\d):(\\d\\d)\\.?(\\d{1,6})?",Bse=new RegExp([Use,Jse,zse,Gse].map(function(t){return"("+t+")?"}).join("\\s*")),fN={years:2,months:4,days:6,hours:9,minutes:10,seconds:11,milliseconds:12},Hse=["hours","minutes","seconds","milliseconds"];function Vse(t){var e=t+"000000".slice(t.length);return parseInt(e,10)/1e3}function Wse(t){if(!t)return{};var e=Bse.exec(t),r=e[8]==="-";return Object.keys(fN).reduce(function(n,i){var s=fN[i],o=e[s];return!o||(o=i==="milliseconds"?Vse(o):parseInt(o,10),!o)||(r&&~Hse.indexOf(i)&&(o*=-1),n[i]=o),n},{})}});var bN=h((xKe,gN)=>{"use strict";var yN=Buffer.from||Buffer;gN.exports=function(e){if(/^\\x/.test(e))return yN(e.substr(2),"hex");for(var r="",n=0;n<e.length;)if(e[n]!=="\\")r+=e[n],++n;else if(/[0-7]{3}/.test(e.substr(n+1,3)))r+=String.fromCharCode(parseInt(e.substr(n+1,3),8)),n+=4;else{for(var i=1;n+i<e.length&&e[n+i]==="\\";)i++;for(var s=0;s<Math.floor(i/2);++s)r+="\\";n+=Math.floor(i/2)*2}return yN(r,"binary")}});var IN=h((wKe,_N)=>{var ou=hS(),au=yS(),Df=uN(),EN=hN(),SN=bN();function Mf(t){return function(r){return r===null?r:t(r)}}function xN(t){return t===null?t:t==="TRUE"||t==="t"||t==="true"||t==="y"||t==="yes"||t==="on"||t==="1"}function Yse(t){return t?ou.parse(t,xN):null}function Qse(t){return parseInt(t,10)}function vS(t){return t?ou.parse(t,Mf(Qse)):null}function Xse(t){return t?ou.parse(t,Mf(function(e){return wN(e).trim()})):null}var Zse=function(t){if(!t)return null;var e=au.create(t,function(r){return r!==null&&(r=wS(r)),r});return e.parse()},ES=function(t){if(!t)return null;var e=au.create(t,function(r){return r!==null&&(r=parseFloat(r)),r});return e.parse()},en=function(t){if(!t)return null;var e=au.create(t);return e.parse()},SS=function(t){if(!t)return null;var e=au.create(t,function(r){return r!==null&&(r=Df(r)),r});return e.parse()},eoe=function(t){if(!t)return null;var e=au.create(t,function(r){return r!==null&&(r=EN(r)),r});return e.parse()},toe=function(t){return t?ou.parse(t,Mf(SN)):null},xS=function(t){return parseInt(t,10)},wN=function(t){var e=String(t);return/^\d+$/.test(e)?e:t},vN=function(t){return t?ou.parse(t,Mf(JSON.parse)):null},wS=function(t){return t[0]!=="("?null:(t=t.substring(1,t.length-1).split(","),{x:parseFloat(t[0]),y:parseFloat(t[1])})},roe=function(t){if(t[0]!=="<"&&t[1]!=="(")return null;for(var e="(",r="",n=!1,i=2;i<t.length-1;i++){if(n||(e+=t[i]),t[i]===")"){n=!0;continue}else if(!n)continue;t[i]!==","&&(r+=t[i])}var s=wS(e);return s.radius=parseFloat(r),s},noe=function(t){t(20,wN),t(21,xS),t(23,xS),t(26,xS),t(700,parseFloat),t(701,parseFloat),t(16,xN),t(1082,Df),t(1114,Df),t(1184,Df),t(600,wS),t(651,en),t(718,roe),t(1e3,Yse),t(1001,toe),t(1005,vS),t(1007,vS),t(1028,vS),t(1016,Xse),t(1017,Zse),t(1021,ES),t(1022,ES),t(1231,ES),t(1014,en),t(1015,en),t(1008,en),t(1009,en),t(1040,en),t(1041,en),t(1115,SS),t(1182,SS),t(1185,SS),t(1186,EN),t(1187,eoe),t(17,SN),t(114,JSON.parse.bind(JSON)),t(3802,JSON.parse.bind(JSON)),t(199,vN),t(3807,vN),t(3907,en),t(2951,en),t(791,en),t(1183,en),t(1270,en)};_N.exports={init:noe}});var kN=h((_Ke,TN)=>{"use strict";var br=1e6;function ioe(t){var e=t.readInt32BE(0),r=t.readUInt32BE(4),n="";e<0&&(e=~e+(r===0),r=~r+1>>>0,n="-");var i="",s,o,a,c,l,u;{if(s=e%br,e=e/br>>>0,o=4294967296*s+r,r=o/br>>>0,a=""+(o-br*r),r===0&&e===0)return n+a+i;for(c="",l=6-a.length,u=0;u<l;u++)c+="0";i=c+a+i}{if(s=e%br,e=e/br>>>0,o=4294967296*s+r,r=o/br>>>0,a=""+(o-br*r),r===0&&e===0)return n+a+i;for(c="",l=6-a.length,u=0;u<l;u++)c+="0";i=c+a+i}{if(s=e%br,e=e/br>>>0,o=4294967296*s+r,r=o/br>>>0,a=""+(o-br*r),r===0&&e===0)return n+a+i;for(c="",l=6-a.length,u=0;u<l;u++)c+="0";i=c+a+i}return s=e%br,o=4294967296*s+r,a=""+o%br,n+a+i}TN.exports=ioe});var jN=h((IKe,CN)=>{var soe=kN(),it=function(t,e,r,n,i){r=r||0,n=n||!1,i=i||function(f,m,y){return f*Math.pow(2,y)+m};var s=r>>3,o=function(f){return n?~f&255:f},a=255,c=8-r%8;e<c&&(a=255<<8-e&255,c=e),r&&(a=a>>r%8);var l=0;r%8+e>=8&&(l=i(0,o(t[s])&a,c));for(var u=e+r>>3,d=s+1;d<u;d++)l=i(l,o(t[d]),8);var p=(e+r)%8;return p>0&&(l=i(l,o(t[u])>>8-p,p)),l},ON=function(t,e,r){var n=Math.pow(2,r-1)-1,i=it(t,1),s=it(t,r,1);if(s===0)return 0;var o=1,a=function(l,u,d){l===0&&(l=1);for(var p=1;p<=d;p++)o/=2,(u&1<<d-p)>0&&(l+=o);return l},c=it(t,e,r+1,!1,a);return s==Math.pow(2,r+1)-1?c===0?i===0?1/0:-1/0:NaN:(i===0?1:-1)*Math.pow(2,s-n)*c},ooe=function(t){return it(t,1)==1?-1*(it(t,15,1,!0)+1):it(t,15,1)},AN=function(t){return it(t,1)==1?-1*(it(t,31,1,!0)+1):it(t,31,1)},aoe=function(t){return ON(t,23,8)},coe=function(t){return ON(t,52,11)},loe=function(t){var e=it(t,16,32);if(e==49152)return NaN;for(var r=Math.pow(1e4,it(t,16,16)),n=0,i=[],s=it(t,16),o=0;o<s;o++)n+=it(t,16,64+16*o)*r,r/=1e4;var a=Math.pow(10,it(t,16,48));return(e===0?1:-1)*Math.round(n*a)/a},RN=function(t,e){var r=it(e,1),n=it(e,63,1),i=new Date((r===0?1:-1)*n/1e3+9466848e5);return t||i.setTime(i.getTime()+i.getTimezoneOffset()*6e4),i.usec=n%1e3,i.getMicroSeconds=function(){return this.usec},i.setMicroSeconds=function(s){this.usec=s},i.getUTCMicroSeconds=function(){return this.usec},i},cu=function(t){for(var e=it(t,32),r=it(t,32,32),n=it(t,32,64),i=96,s=[],o=0;o<e;o++)s[o]=it(t,32,i),i+=32,i+=32;var a=function(l){var u=it(t,32,i);if(i+=32,u==4294967295)return null;var d;if(l==23||l==20)return d=it(t,u*8,i),i+=u*8,d;if(l==25)return d=t.toString(this.encoding,i>>3,(i+=u<<3)>>3),d;console.log("ERROR: ElementType not implemented: "+l)},c=function(l,u){var d=[],p;if(l.length>1){var f=l.shift();for(p=0;p<f;p++)d[p]=c(l,u);l.unshift(f)}else for(p=0;p<l[0];p++)d[p]=a(u);return d};return c(s,n)},uoe=function(t){return t.toString("utf8")},doe=function(t){return t===null?null:it(t,8)>0},poe=function(t){t(20,soe),t(21,ooe),t(23,AN),t(26,AN),t(1700,loe),t(700,aoe),t(701,coe),t(16,doe),t(1114,RN.bind(null,!1)),t(1184,RN.bind(null,!0)),t(1e3,cu),t(1007,cu),t(1016,cu),t(1008,cu),t(1009,cu),t(25,uoe)};CN.exports={init:poe}});var KN=h((TKe,PN)=>{PN.exports={BOOL:16,BYTEA:17,CHAR:18,INT8:20,INT2:21,INT4:23,REGPROC:24,TEXT:25,OID:26,TID:27,XID:28,CID:29,JSON:114,XML:142,PG_NODE_TREE:194,SMGR:210,PATH:602,POLYGON:604,CIDR:650,FLOAT4:700,FLOAT8:701,ABSTIME:702,RELTIME:703,TINTERVAL:704,CIRCLE:718,MACADDR8:774,MONEY:790,MACADDR:829,INET:869,ACLITEM:1033,BPCHAR:1042,VARCHAR:1043,DATE:1082,TIME:1083,TIMESTAMP:1114,TIMESTAMPTZ:1184,INTERVAL:1186,TIMETZ:1266,BIT:1560,VARBIT:1562,NUMERIC:1700,REFCURSOR:1790,REGPROCEDURE:2202,REGOPER:2203,REGOPERATOR:2204,REGCLASS:2205,REGTYPE:2206,UUID:2950,TXID_SNAPSHOT:2970,PG_LSN:3220,PG_NDISTINCT:3361,PG_DEPENDENCIES:3402,TSVECTOR:3614,TSQUERY:3615,GTSVECTOR:3642,REGCONFIG:3734,REGDICTIONARY:3769,JSONB:3802,REGNAMESPACE:4089,REGROLE:4096}});var du=h(uu=>{var foe=IN(),moe=jN(),hoe=yS(),yoe=KN();uu.getTypeParser=goe;uu.setTypeParser=boe;uu.arrayParser=hoe;uu.builtins=yoe;var lu={text:{},binary:{}};function DN(t){return String(t)}function goe(t,e){return e=e||"text",lu[e]&&lu[e][t]||DN}function boe(t,e,r){typeof e=="function"&&(r=e,e="text"),lu[e][t]=r}foe.init(function(t,e){lu.text[t]=e});moe.init(function(t,e){lu.binary[t]=e})});var pu=h((AKe,_S)=>{"use strict";var MN;try{MN=process.platform==="win32"?process.env.USERNAME:process.env.USER}catch{}_S.exports={host:"localhost",user:MN,database:void 0,password:null,connectionString:void 0,port:5432,rows:0,binary:!1,max:10,idleTimeoutMillis:3e4,client_encoding:"",ssl:!1,sslnegotiation:void 0,application_name:void 0,fallback_application_name:void 0,options:void 0,parseInputDatesAsUTC:!1,statement_timeout:!1,lock_timeout:!1,idle_in_transaction_session_timeout:!1,query_timeout:!1,connect_timeout:0,keepalives:1,keepalives_idle:0};var ec=du(),voe=ec.getTypeParser(20,"text"),Eoe=ec.getTypeParser(1016,"text");_S.exports.__defineSetter__("parseInt8",function(t){ec.setTypeParser(20,"text",t?ec.getTypeParser(23,"text"):voe),ec.setTypeParser(1016,"text",t?ec.getTypeParser(1007,"text"):Eoe)})});var _o=h((RKe,LN)=>{"use strict";var Soe=pu(),{isDate:xoe}=require("util/types");function woe(t){return'"'+t.replace(/\\/g,"\\\\").replace(/"/g,'\\"')+'"'}function NN(t){let e="{";for(let r=0;r<t.length;r++){r>0&&(e+=",");let n=t[r];n==null?e+="NULL":Array.isArray(n)?e+=NN(n):ArrayBuffer.isView(n)?(n instanceof Buffer||(n=Buffer.from(n.buffer,n.byteOffset,n.byteLength)),e+="\\\\x"+n.toString("hex")):e+=woe(Nf(n))}return e+="}",e}var Nf=function(t,e){return t==null?null:typeof t=="object"?t instanceof Buffer?t:ArrayBuffer.isView(t)?Buffer.from(t.buffer,t.byteOffset,t.byteLength):xoe(t)?Soe.parseInputDatesAsUTC?Toe(t):Ioe(t):Array.isArray(t)?NN(t):_oe(t,e):t.toString()};function _oe(t,e){if(t&&typeof t.toPostgres=="function"){if(e=e||[],e.indexOf(t)!==-1)throw new Error('circular reference detected while preparing "'+t+'" for query');return e.push(t),Nf(t.toPostgres(Nf),e)}return JSON.stringify(t)}function Ioe(t){let e=-t.getTimezoneOffset(),r=t.getFullYear(),n=r<1;n&&(r=Math.abs(r)+1);let i=String(r).padStart(4,"0")+"-"+String(t.getMonth()+1).padStart(2,"0")+"-"+String(t.getDate()).padStart(2,"0")+"T"+String(t.getHours()).padStart(2,"0")+":"+String(t.getMinutes()).padStart(2,"0")+":"+String(t.getSeconds()).padStart(2,"0")+"."+String(t.getMilliseconds()).padStart(3,"0");return e<0?(i+="-",e*=-1):i+="+",i+=String(Math.floor(e/60)).padStart(2,"0")+":"+String(e%60).padStart(2,"0"),n&&(i+=" BC"),i}function Toe(t){let e=t.getUTCFullYear(),r=e<1;r&&(e=Math.abs(e)+1);let n=String(e).padStart(4,"0")+"-"+String(t.getUTCMonth()+1).padStart(2,"0")+"-"+String(t.getUTCDate()).padStart(2,"0")+"T"+String(t.getUTCHours()).padStart(2,"0")+":"+String(t.getUTCMinutes()).padStart(2,"0")+":"+String(t.getUTCSeconds()).padStart(2,"0")+"."+String(t.getUTCMilliseconds()).padStart(3,"0");return n+="+00:00",r&&(n+=" BC"),n}function koe(t,e,r){return t=typeof t=="string"?{text:t}:t,e&&(typeof e=="function"?t.callback=e:t.values=e),r&&(t.callback=r),t}var Aoe=function(t){return'"'+t.replace(/"/g,'""')+'"'},Roe=function(t){let e=!1,r="'";if(t==null||typeof t!="string")return"''";for(let n=0;n<t.length;n++){let i=t[n];i==="'"?r+=i+i:i==="\\"?(r+=i+i,e=!0):r+=i}return r+="'",e===!0&&(r=" E"+r),r};LN.exports={prepareValue:function(e){return Nf(e)},normalizeQueryConfig:koe,escapeIdentifier:Aoe,escapeLiteral:Roe}});var kS=h((OKe,$N)=>{var qN=require("crypto");$N.exports={postgresMd5PasswordHash:Coe,randomBytes:Ooe,deriveKey:Doe,sha256:joe,hashByName:Poe,hmacSha256:Koe,md5:IS};var FN=qN.webcrypto||globalThis.crypto,Io=FN.subtle,TS=new TextEncoder;function Ooe(t){return FN.getRandomValues(Buffer.alloc(t))}async function IS(t){try{return qN.createHash("md5").update(t,"utf-8").digest("hex")}catch{let r=typeof t=="string"?TS.encode(t):t,n=await Io.digest("MD5",r);return Array.from(new Uint8Array(n)).map(i=>i.toString(16).padStart(2,"0")).join("")}}async function Coe(t,e,r){let n=await IS(e+t);return"md5"+await IS(Buffer.concat([Buffer.from(n),r]))}async function joe(t){return await Io.digest("SHA-256",t)}async function Poe(t,e){return await Io.digest(t,e)}async function Koe(t,e){let r=await Io.importKey("raw",t,{name:"HMAC",hash:"SHA-256"},!1,["sign"]);return await Io.sign("HMAC",r,TS.encode(e))}async function Doe(t,e,r){let n=await Io.importKey("raw",TS.encode(t),"PBKDF2",!1,["deriveBits"]),i={name:"PBKDF2",hash:"SHA-256",salt:e,iterations:r};return await Io.deriveBits(i,n,256,["deriveBits"])}});var zN=h((CKe,JN)=>{function To(t,e){return new Error("SASL channel binding: "+t+" when parsing public certificate "+e.toString("base64"))}function AS(t,e){let r=t[e++];if(r<128)return{length:r,index:e};let n=r&127;if(n>4)throw To("bad length",t);r=0;for(let i=0;i<n;i++)r=r<<8|t[e++];return{length:r,index:e}}function UN(t,e){if(t[e++]!==6)throw To("non-OID data",t);let{length:r,index:n}=AS(t,e);e=n;let i=e+r,s=t[e++],o=(s/40>>0)+"."+s%40;for(;e<i;){let a=0;for(;e<i;){let c=t[e++];if(a=a<<7|c&127,c<128)break}o+="."+a}return{oid:o,index:e}}function fu(t,e){if(t[e++]!==48)throw To("non-sequence data",t);return AS(t,e)}function Moe(t,e){e===void 0&&(e=0),e=fu(t,e).index;let{length:r,index:n}=fu(t,e);e=n+r,e=fu(t,e).index;let{oid:i,index:s}=UN(t,e);switch(i){case"1.2.840.113549.1.1.4":return"MD5";case"1.2.840.113549.1.1.5":return"SHA-1";case"1.2.840.113549.1.1.11":return"SHA-256";case"1.2.840.113549.1.1.12":return"SHA-384";case"1.2.840.113549.1.1.13":return"SHA-512";case"1.2.840.113549.1.1.14":return"SHA-224";case"1.2.840.113549.1.1.15":return"SHA512-224";case"1.2.840.113549.1.1.16":return"SHA512-256";case"1.2.840.10045.4.1":return"SHA-1";case"1.2.840.10045.4.3.1":return"SHA-224";case"1.2.840.10045.4.3.2":return"SHA-256";case"1.2.840.10045.4.3.3":return"SHA-384";case"1.2.840.10045.4.3.4":return"SHA-512";case"1.2.840.113549.1.1.10":{if(e=s,e=fu(t,e).index,t[e++]!==160)throw To("non-tag data",t);e=AS(t,e).index,e=fu(t,e).index;let{oid:o}=UN(t,e);switch(o){case"1.2.840.113549.2.5":return"MD5";case"1.3.14.3.2.26":return"SHA-1";case"2.16.840.1.101.3.4.2.1":return"SHA-256";case"2.16.840.1.101.3.4.2.2":return"SHA-384";case"2.16.840.1.101.3.4.2.3":return"SHA-512"}throw To("unknown hash OID "+o,t)}case"1.3.101.110":case"1.3.101.112":return"SHA-512";case"1.3.101.111":case"1.3.101.113":throw To("Ed448 certificate channel binding is not currently supported by Postgres")}throw To("unknown OID "+i,t)}JN.exports={signatureAlgorithmHashFromCertificate:Moe}});var VN=h((jKe,HN)=>{"use strict";var ms=kS(),{signatureAlgorithmHashFromCertificate:Noe}=zN();function Loe(t){let e=/[\u00A0\u1680\u2000-\u200B\u202F\u205F\u3000]/g,r=/[\u00AD\u034F\u1806\u180B\u180C\u180D\u200C\u200D\u2060\uFE00-\uFE0F\uFEFF]/g;return t.replace(e," ").replace(r,"").normalize("NFKC")}var RS=1e5;function qoe(t,e,r=RS){let n=["SCRAM-SHA-256"];e&&n.unshift("SCRAM-SHA-256-PLUS");let i=n.find(a=>t.includes(a));if(!i)throw new Error("SASL: Only mechanism(s) "+n.join(" and ")+" are supported");if(i==="SCRAM-SHA-256-PLUS"&&typeof e.getPeerCertificate!="function")throw new Error("SASL: Mechanism SCRAM-SHA-256-PLUS requires a certificate");let s=ms.randomBytes(18).toString("base64");return{mechanism:i,clientNonce:s,response:(i==="SCRAM-SHA-256-PLUS"?"p=tls-server-end-point":e?"y":"n")+",,n=*,r="+s,message:"SASLInitialResponse",scramMaxIterations:r}}async function Foe(t,e,r,n){if(t.message!=="SASLInitialResponse")throw new Error("SASL: Last message was not SASLInitialResponse");if(typeof e!="string")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a string");if(e==="")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: client password must be a non-empty string");if(typeof r!="string")throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: serverData must be a string");let i=Joe(r);if(i.nonce.startsWith(t.clientNonce)){if(i.nonce.length===t.clientNonce.length)throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce is too short")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: server nonce does not start with client nonce");let s=typeof t.scramMaxIterations=="number"?t.scramMaxIterations:RS;if(s!==0&&i.iteration>s)throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration count "+i.iteration+" exceeds scramMaxIterations of "+s);let o="n=*,r="+t.clientNonce,a="r="+i.nonce+",s="+i.salt+",i="+i.iteration,c=n?"eSws":"biws";if(t.mechanism==="SCRAM-SHA-256-PLUS"){let S=n.getPeerCertificate().raw,k=Noe(S);(k==="MD5"||k==="SHA-1")&&(k="SHA-256");let _=await ms.hashByName(k,S);c=Buffer.concat([Buffer.from("p=tls-server-end-point,,"),Buffer.from(_)]).toString("base64")}let l="c="+c+",r="+i.nonce,u=o+","+a+","+l,d=Buffer.from(i.salt,"base64"),p=await ms.deriveKey(Loe(e),d,i.iteration),f=await ms.hmacSha256(p,"Client Key"),m=await ms.sha256(f),y=await ms.hmacSha256(m,u),b=Goe(Buffer.from(f),Buffer.from(y)).toString("base64"),v=await ms.hmacSha256(p,"Server Key"),E=await ms.hmacSha256(v,u);t.message="SASLResponse",t.serverSignature=Buffer.from(E).toString("base64"),t.response=l+",p="+b}function $oe(t,e){if(t.message!=="SASLResponse")throw new Error("SASL: Last message was not SASLResponse");if(typeof e!="string")throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: serverData must be a string");let{serverSignature:r}=zoe(e);if(r!==t.serverSignature)throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature does not match")}function Uoe(t){if(typeof t!="string")throw new TypeError("SASL: text must be a string");return t.split("").map((e,r)=>t.charCodeAt(r)).every(e=>e>=33&&e<=43||e>=45&&e<=126)}function GN(t){return/^(?:[a-zA-Z0-9+/]{4})*(?:[a-zA-Z0-9+/]{2}==|[a-zA-Z0-9+/]{3}=)?$/.test(t)}function BN(t){if(typeof t!="string")throw new TypeError("SASL: attribute pairs text must be a string");return new Map(t.split(",").map(e=>{if(!/^.=/.test(e))throw new Error("SASL: Invalid attribute pair entry");let r=e[0],n=e.substring(2);return[r,n]}))}function Joe(t){let e=BN(t),r=e.get("r");if(r){if(!Uoe(r))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce must only contain printable characters")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: nonce missing");let n=e.get("s");if(n){if(!GN(n))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt must be base64")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: salt missing");let i=e.get("i");if(i){if(!/^[1-9][0-9]*$/.test(i))throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: invalid iteration count")}else throw new Error("SASL: SCRAM-SERVER-FIRST-MESSAGE: iteration missing");let s=parseInt(i,10);return{nonce:r,salt:n,iteration:s}}function zoe(t){let e=BN(t),r=e.get("e"),n=e.get("v");if(r)throw new Error(`SASL: SCRAM-SERVER-FINAL-MESSAGE: server returned error: "${r}"`);if(n){if(!GN(n))throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature must be base64")}else throw new Error("SASL: SCRAM-SERVER-FINAL-MESSAGE: server signature is missing");return{serverSignature:n}}function Goe(t,e){if(!Buffer.isBuffer(t))throw new TypeError("first argument must be a Buffer");if(!Buffer.isBuffer(e))throw new TypeError("second argument must be a Buffer");if(t.length!==e.length)throw new Error("Buffer lengths must match");if(t.length===0)throw new Error("Buffers cannot be empty");return Buffer.from(t.map((r,n)=>t[n]^e[n]))}HN.exports={startSession:qoe,continueSession:Foe,finalizeSession:$oe,DEFAULT_MAX_SCRAM_ITERATIONS:RS}});var qf=h((PKe,WN)=>{"use strict";var Boe=du();function Lf(t){this._types=t||Boe,this.text={},this.binary={}}Lf.prototype.getOverrides=function(t){switch(t){case"text":return this.text;case"binary":return this.binary;default:return{}}};Lf.prototype.setTypeParser=function(t,e,r){typeof e=="function"&&(r=e,e="text"),this.getOverrides(e)[t]=r};Lf.prototype.getTypeParser=function(t,e){return e=e||"text",this.getOverrides(e)[t]||this._types.getTypeParser(t,e)};WN.exports=Lf});var XN=h((KKe,QN)=>{"use strict";function tc(t,e={}){if(t.charAt(0)==="/"){let c=t.split(" ");return{host:c[0],database:c[1]}}let r=Object.create(null),n,i=!1;/ |%[^a-f0-9]|%[a-f0-9][^a-f0-9]/i.test(t)&&(t=encodeURI(t).replace(/%25(\d\d)/g,"%$1"));try{try{n=new URL(t,"postgres://base")}catch{n=new URL(t.replace("@/","@___DUMMY___/"),"postgres://base"),i=!0}}catch(c){throw c.input&&(c.input="*****REDACTED*****"),c}for(let c of n.searchParams.entries())r[c[0]]=c[1];if(r.user=r.user||decodeURIComponent(n.username),r.password=r.password||decodeURIComponent(n.password),n.protocol=="socket:")return r.host=decodeURI(n.pathname),r.database=n.searchParams.get("db"),r.client_encoding=n.searchParams.get("encoding"),r;let s=i?"":n.hostname;r.host?s&&/^%2f/i.test(s)&&(n.pathname=s+n.pathname):r.host=decodeURIComponent(s),r.port||(r.port=n.port);let o=n.pathname.slice(1)||null;r.database=o?decodeURI(o):null,(r.ssl==="true"||r.ssl==="1")&&(r.ssl=!0),r.ssl==="0"&&(r.ssl=!1),(r.sslcert||r.sslkey||r.sslrootcert||r.sslmode)&&(r.ssl={}),r.sslnegotiation==="direct"&&r.ssl===void 0&&(r.ssl=!0);let a=r.sslcert||r.sslkey||r.sslrootcert?require("fs"):null;if(r.sslcert&&(r.ssl.cert=a.readFileSync(r.sslcert).toString()),r.sslkey&&(r.ssl.key=a.readFileSync(r.sslkey).toString()),r.sslrootcert&&(r.ssl.ca=a.readFileSync(r.sslrootcert).toString()),e.useLibpqCompat&&r.uselibpqcompat)throw new Error("Both useLibpqCompat and uselibpqcompat are set. Please use only one of them.");if(r.uselibpqcompat==="true"||e.useLibpqCompat)switch(r.sslmode){case"disable":{r.ssl=!1;break}case"prefer":{r.ssl.rejectUnauthorized=!1;break}case"require":{r.sslrootcert?r.ssl.checkServerIdentity=function(){}:r.ssl.rejectUnauthorized=!1;break}case"verify-ca":{if(!r.ssl.ca)throw new Error("SECURITY WARNING: Using sslmode=verify-ca requires specifying a CA with sslrootcert. If a public CA is used, verify-ca allows connections to a server that somebody else may have registered with the CA, making you vulnerable to Man-in-the-Middle attacks. Either specify a custom CA certificate with sslrootcert parameter or use sslmode=verify-full for proper security.");r.ssl.checkServerIdentity=function(){};break}case"verify-full":break}else switch(r.sslmode){case"disable":{r.ssl=!1;break}case"prefer":case"require":case"verify-ca":case"verify-full":{r.sslmode!=="verify-full"&&OS(r.sslmode);break}case"no-verify":{r.ssl.rejectUnauthorized=!1;break}}return r}function Hoe(t){return Object.entries(t).reduce((r,[n,i])=>(i!=null&&(r[n]=i),r),Object.create(null))}function YN(t){return Object.entries(t).reduce((r,[n,i])=>{if(n==="ssl"){let s=i;typeof s=="boolean"&&(r[n]=s),typeof s=="object"&&(r[n]=Hoe(s))}else if(i!=null)if(n==="port"){if(i!==""){let s=parseInt(i,10);if(isNaN(s))throw new Error(`Invalid ${n}: ${i}`);r[n]=s}}else r[n]=i;return r},Object.create(null))}function Voe(t){return YN(tc(t))}function OS(t){!OS.warned&&typeof process<"u"&&process.emitWarning&&(OS.warned=!0,process.emitWarning(`SECURITY WARNING: The SSL modes 'prefer', 'require', and 'verify-ca' are treated as aliases for 'verify-full'.
In the next major version (pg-connection-string v3.0.0 and pg v9.0.0), these modes will adopt standard libpq semantics, which have weaker security guarantees.
To prepare for this change:
- If you want the current behavior, explicitly use 'sslmode=verify-full'
- If you want libpq compatibility now, use 'uselibpqcompat=true&sslmode=${t}'
See https://www.postgresql.org/docs/current/libpq-ssl.html for libpq SSL mode definitions.`))}QN.exports=tc;tc.parse=tc;tc.toClientConfig=YN;tc.parseIntoClientConfig=Voe});var jS=h((DKe,tL)=>{"use strict";var Woe=require("dns"),eL=pu(),ZN=XN().parse,Yt=function(t,e,r){return e[t]?e[t]:(r===void 0?r=process.env["PG"+t.toUpperCase()]:r===!1||(r=process.env[r]),r||eL[t])},Yoe=function(){switch(process.env.PGSSLMODE){case"disable":return!1;case"prefer":case"require":case"verify-ca":case"verify-full":return!0;case"no-verify":return{rejectUnauthorized:!1}}return eL.ssl},rc=function(t){return"'"+(""+t).replace(/\\/g,"\\\\").replace(/'/g,"\\'")+"'"},Or=function(t,e,r){let n=e[r];n!=null&&t.push(r+"="+rc(n))},CS=class{constructor(e){if(e=typeof e=="string"?ZN(e):e||{},e.connectionString&&(e=Object.assign({},e,ZN(e.connectionString))),this.user=Yt("user",e),this.database=Yt("database",e),this.database===void 0&&(this.database=this.user),this.port=parseInt(Yt("port",e),10),this.host=Yt("host",e),Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:Yt("password",e)}),this.binary=Yt("binary",e),this.options=Yt("options",e),this.ssl=typeof e.ssl>"u"?Yoe():e.ssl,typeof this.ssl=="string"&&this.ssl==="true"&&(this.ssl=!0),this.ssl==="no-verify"&&(this.ssl={rejectUnauthorized:!1}),this.ssl&&this.ssl.key&&Object.defineProperty(this.ssl,"key",{enumerable:!1}),this.sslnegotiation=Yt("sslnegotiation",e,"PGSSLNEGOTIATION"),this.sslnegotiation!==void 0&&this.sslnegotiation!=="postgres"&&this.sslnegotiation!=="direct")throw new Error(`Invalid sslnegotiation value: "${this.sslnegotiation}". Valid values are "postgres" and "direct".`);if(this.sslnegotiation==="direct"&&!this.ssl)throw new Error("sslnegotiation=direct requires SSL to be enabled");this.client_encoding=Yt("client_encoding",e),this.replication=Yt("replication",e),this.isDomainSocket=!(this.host||"").indexOf("/"),this.application_name=Yt("application_name",e,"PGAPPNAME"),this.fallback_application_name=Yt("fallback_application_name",e,!1),this.statement_timeout=Yt("statement_timeout",e,!1),this.lock_timeout=Yt("lock_timeout",e,!1),this.idle_in_transaction_session_timeout=Yt("idle_in_transaction_session_timeout",e,!1),this.query_timeout=Yt("query_timeout",e,!1),e.connectionTimeoutMillis===void 0?this.connect_timeout=process.env.PGCONNECT_TIMEOUT||0:this.connect_timeout=Math.floor(e.connectionTimeoutMillis/1e3),e.keepAlive===!1?this.keepalives=0:e.keepAlive===!0&&(this.keepalives=1),typeof e.keepAliveInitialDelayMillis=="number"&&(this.keepalives_idle=Math.floor(e.keepAliveInitialDelayMillis/1e3))}getLibpqConnectionString(e){let r=[];Or(r,this,"user"),Or(r,this,"password"),Or(r,this,"port"),Or(r,this,"application_name"),Or(r,this,"fallback_application_name"),Or(r,this,"connect_timeout"),Or(r,this,"options");let n=typeof this.ssl=="object"?this.ssl:this.ssl?{sslmode:this.ssl}:{};if(Or(r,n,"sslmode"),Or(r,n,"sslca"),Or(r,n,"sslkey"),Or(r,n,"sslcert"),Or(r,n,"sslrootcert"),Or(r,this,"sslnegotiation"),this.database&&r.push("dbname="+rc(this.database)),this.replication&&r.push("replication="+rc(this.replication)),this.host&&r.push("host="+rc(this.host)),this.isDomainSocket)return e(null,r.join(" "));this.client_encoding&&r.push("client_encoding="+rc(this.client_encoding)),Woe.lookup(this.host,function(i,s){return i?e(i,null):(r.push("hostaddr="+rc(s)),e(null,r.join(" ")))})}};tL.exports=CS});var KS=h((MKe,nL)=>{"use strict";var Qoe=du(),rL=/^([A-Za-z]+)(?: (\d+))?(?: (\d+))?/,PS=class{constructor(e,r){this.command=null,this.rowCount=null,this.oid=null,this.rows=[],this.fields=[],this._parsers=void 0,this._types=r,this.RowCtor=null,this.rowAsArray=e==="array",this.rowAsArray&&(this.parseRow=this._parseRowAsArray),this._prebuiltEmptyResultObject=null}addCommandComplete(e){let r;e.text?r=rL.exec(e.text):r=rL.exec(e.command),r&&(this.command=r[1],r[3]?(this.oid=parseInt(r[2],10),this.rowCount=parseInt(r[3],10)):r[2]&&(this.rowCount=parseInt(r[2],10)))}_parseRowAsArray(e){let r=new Array(e.length);for(let n=0,i=e.length;n<i;n++){let s=e[n];s!==null?r[n]=this._parsers[n](s):r[n]=null}return r}parseRow(e){let r={...this._prebuiltEmptyResultObject};for(let n=0,i=e.length;n<i;n++){let s=e[n],o=this.fields[n].name;if(s!==null){let a=this.fields[n].format==="binary"?Buffer.from(s):s;r[o]=this._parsers[n](a)}else r[o]=null}return r}addRow(e){this.rows.push(e)}addFields(e){this.fields=e,this.fields.length&&(this._parsers=new Array(e.length));let r=Object.create(null);for(let n=0;n<e.length;n++){let i=e[n];r[i.name]=null,this._types?this._parsers[n]=this._types.getTypeParser(i.dataTypeID,i.format||"text"):this._parsers[n]=Qoe.getTypeParser(i.dataTypeID,i.format||"text")}this._prebuiltEmptyResultObject={...r}}};nL.exports=PS});var aL=h((NKe,oL)=>{"use strict";var{EventEmitter:Xoe}=require("events"),iL=KS(),sL=_o(),DS=class extends Xoe{constructor(e,r,n){super(),e=sL.normalizeQueryConfig(e,r,n),this.text=e.text,this.values=e.values,this.rows=e.rows,this.types=e.types,this.name=e.name,this.queryMode=e.queryMode,this.binary=e.binary,this.portal=e.portal||"",this.callback=e.callback,this._rowMode=e.rowMode,process.domain&&e.callback&&(this.callback=process.domain.bind(e.callback)),this._result=new iL(this._rowMode,this.types),this._results=this._result,this._canceledDueToError=!1}requiresPreparation(){return this.queryMode==="extended"||this.name||this.rows?!0:!this.text||!this.values?!1:this.values.length>0}_checkForMultirow(){this._result.command&&(Array.isArray(this._results)||(this._results=[this._result]),this._result=new iL(this._rowMode,this._result._types),this._results.push(this._result))}handleRowDescription(e){this._checkForMultirow(),this._result.addFields(e.fields),this._accumulateRows=this.callback||!this.listeners("row").length}handleDataRow(e){let r;if(!this._canceledDueToError){try{r=this._result.parseRow(e.fields)}catch(n){this._canceledDueToError=n;return}this.emit("row",r,this._result),this._accumulateRows&&this._result.addRow(r)}}handleCommandComplete(e,r){this._checkForMultirow(),this._result.addCommandComplete(e),this.rows&&r.sync()}handleEmptyQuery(e){this.rows&&e.sync()}handleError(e,r){if(this._canceledDueToError&&(e=this._canceledDueToError,this._canceledDueToError=!1),this.callback)return this.callback(e);this.emit("error",e)}handleReadyForQuery(e){if(this._canceledDueToError)return this.handleError(this._canceledDueToError,e);if(this.callback)try{this.callback(null,this._results)}catch(r){process.nextTick(()=>{throw r})}this.emit("end",this._results)}submit(e){if(typeof this.text!="string"&&typeof this.name!="string")return new Error("A query must have either text or a name. Supplying neither is unsupported.");let r=e.parsedStatements[this.name]||e.submittedNamedStatements[this.name];if(this.text&&r&&this.text!==r)return new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);if(this.values&&!Array.isArray(this.values))return new Error("Query values must be an array");if(this.requiresPreparation()){e.stream.cork&&e.stream.cork();try{this.prepare(e)}finally{e.stream.uncork&&e.stream.uncork()}}else e.query(this.text);return null}hasBeenParsed(e){return this.name&&(e.parsedStatements[this.name]||e.submittedNamedStatements[this.name])}handlePortalSuspended(e){this._getRows(e,this.rows)}_getRows(e,r){e.execute({portal:this.portal,rows:r}),r?e.flush():e.sync()}prepare(e){this.hasBeenParsed(e)||(e.parse({text:this.text,name:this.name,types:this.types}),this.name&&(e.submittedNamedStatements[this.name]=this.text));try{e.bind({portal:this.portal,statement:this.name,values:this.values,binary:this.binary,valueMapper:sL.prepareValue})}catch(r){e.close({type:"S",name:this.name}),e.sync(),this.handleError(r,e);return}e.describe({type:"P",name:this.portal||""}),this._getRows(e,this.rows)}handleCopyInResponse(e){e.sendCopyFail("No source stream defined")}handleCopyData(e,r){}};oL.exports=DS});var YS=h(X=>{"use strict";Object.defineProperty(X,"__esModule",{value:!0});X.NoticeMessage=X.DataRowMessage=X.CommandCompleteMessage=X.ReadyForQueryMessage=X.NotificationResponseMessage=X.BackendKeyDataMessage=X.AuthenticationMD5Password=X.ParameterStatusMessage=X.ParameterDescriptionMessage=X.RowDescriptionMessage=X.Field=X.CopyResponse=X.CopyDataMessage=X.DatabaseError=X.copyDone=X.emptyQuery=X.replicationStart=X.portalSuspended=X.noData=X.closeComplete=X.bindComplete=X.parseComplete=void 0;X.parseComplete={name:"parseComplete",length:5};X.bindComplete={name:"bindComplete",length:5};X.closeComplete={name:"closeComplete",length:5};X.noData={name:"noData",length:5};X.portalSuspended={name:"portalSuspended",length:5};X.replicationStart={name:"replicationStart",length:4};X.emptyQuery={name:"emptyQuery",length:4};X.copyDone={name:"copyDone",length:4};var MS=class extends Error{constructor(e,r,n){super(e),this.length=r,this.name=n}};X.DatabaseError=MS;var NS=class{constructor(e,r){this.length=e,this.chunk=r,this.name="copyData"}};X.CopyDataMessage=NS;var LS=class{constructor(e,r,n,i){this.length=e,this.name=r,this.binary=n,this.columnTypes=new Array(i)}};X.CopyResponse=LS;var qS=class{constructor(e,r,n,i,s,o,a){this.name=e,this.tableID=r,this.columnID=n,this.dataTypeID=i,this.dataTypeSize=s,this.dataTypeModifier=o,this.format=a}};X.Field=qS;var FS=class{constructor(e,r){this.length=e,this.fieldCount=r,this.name="rowDescription",this.fields=new Array(this.fieldCount)}};X.RowDescriptionMessage=FS;var $S=class{constructor(e,r){this.length=e,this.parameterCount=r,this.name="parameterDescription",this.dataTypeIDs=new Array(this.parameterCount)}};X.ParameterDescriptionMessage=$S;var US=class{constructor(e,r,n){this.length=e,this.parameterName=r,this.parameterValue=n,this.name="parameterStatus"}};X.ParameterStatusMessage=US;var JS=class{constructor(e,r){this.length=e,this.salt=r,this.name="authenticationMD5Password"}};X.AuthenticationMD5Password=JS;var zS=class{constructor(e,r,n){this.length=e,this.processID=r,this.secretKey=n,this.name="backendKeyData"}};X.BackendKeyDataMessage=zS;var GS=class{constructor(e,r,n,i){this.length=e,this.processId=r,this.channel=n,this.payload=i,this.name="notification"}};X.NotificationResponseMessage=GS;var BS=class{constructor(e,r){this.length=e,this.status=r,this.name="readyForQuery"}};X.ReadyForQueryMessage=BS;var HS=class{constructor(e,r){this.length=e,this.text=r,this.name="commandComplete"}};X.CommandCompleteMessage=HS;var VS=class{constructor(e,r){this.length=e,this.fields=r,this.name="dataRow",this.fieldCount=r.length}};X.DataRowMessage=VS;var WS=class{constructor(e,r){this.length=e,this.message=r,this.name="notice"}};X.NoticeMessage=WS});var cL=h(Ff=>{"use strict";Object.defineProperty(Ff,"__esModule",{value:!0});Ff.Writer=void 0;var QS=class{constructor(e=256){this.size=e,this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(e)}ensure(e){if(this.buffer.length-this.offset<e){let n=this.buffer,i=n.length+(n.length>>1)+e;this.buffer=Buffer.allocUnsafe(i),n.copy(this.buffer)}}addInt32(e){return this.ensure(4),this.buffer[this.offset++]=e>>>24&255,this.buffer[this.offset++]=e>>>16&255,this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addInt16(e){return this.ensure(2),this.buffer[this.offset++]=e>>>8&255,this.buffer[this.offset++]=e>>>0&255,this}addCString(e){if(!e)this.ensure(1);else{let r=Buffer.byteLength(e);this.ensure(r+1),this.buffer.write(e,this.offset,"utf-8"),this.offset+=r}return this.buffer[this.offset++]=0,this}addString(e=""){let r=Buffer.byteLength(e);return this.ensure(r),this.buffer.write(e,this.offset),this.offset+=r,this}addInt32PrefixedString(e){let r=Buffer.byteLength(e);this.ensure(4+r);let n=this.buffer,i=this.offset;return n[i++]=r>>>24&255,n[i++]=r>>>16&255,n[i++]=r>>>8&255,n[i++]=r>>>0&255,n.write(e,i,"utf-8"),this.offset=i+r,this}add(e){return this.ensure(e.length),e.copy(this.buffer,this.offset),this.offset+=e.length,this}join(e){if(e){this.buffer[this.headerPosition]=e;let r=this.offset-(this.headerPosition+1);this.buffer.writeInt32BE(r,this.headerPosition+1)}return this.buffer.slice(e?0:5,this.offset)}flush(e){let r=this.join(e);return this.offset=5,this.headerPosition=0,this.buffer=Buffer.allocUnsafe(this.size),r}clear(){this.offset=5,this.headerPosition=0}};Ff.Writer=QS});var uL=h(Uf=>{"use strict";Object.defineProperty(Uf,"__esModule",{value:!0});Uf.serialize=void 0;var XS=cL(),Be=new XS.Writer,Zoe=t=>{Be.addInt16(3).addInt16(0);for(let n of Object.keys(t))Be.addCString(n).addCString(t[n]);Be.addCString("client_encoding").addCString("UTF8");let e=Be.addCString("").flush(),r=e.length+4;return new XS.Writer().addInt32(r).add(e).flush()},eae=()=>{let t=Buffer.allocUnsafe(8);return t.writeInt32BE(8,0),t.writeInt32BE(80877103,4),t},tae=t=>Be.addCString(t).flush(112),rae=function(t,e){return Be.addCString(t).addInt32PrefixedString(e),Be.flush(112)},nae=function(t){return Be.addString(t).flush(112)},iae=t=>Be.addCString(t).flush(81),lL=[],sae=t=>{let e=t.name||"";e.length>63&&(console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",e,e.length),console.error("This can cause conflicts and silent errors executing queries"));let r=t.types||lL,n=r.length,i=Be.addCString(e).addCString(t.text).addInt16(n);for(let s=0;s<n;s++)i.addInt32(r[s]);return Be.flush(80)},nc=new XS.Writer,oae=function(t,e){for(let r=0;r<t.length;r++){let n=e?e(t[r],r):t[r];n==null?(Be.addInt16(0),nc.addInt32(-1)):n instanceof Buffer?(Be.addInt16(1),nc.addInt32(n.length),nc.add(n)):(Be.addInt16(0),nc.addInt32PrefixedString(n))}},aae=(t={})=>{let e=t.portal||"",r=t.statement||"",n=t.binary||!1,i=t.values||lL,s=i.length;Be.addCString(e).addCString(r),Be.addInt16(s);try{oae(i,t.valueMapper)}catch(o){throw Be.clear(),nc.clear(),o}return Be.addInt16(s),Be.add(nc.flush()),Be.addInt16(1),Be.addInt16(n?1:0),Be.flush(66)},cae=Buffer.from([69,0,0,0,9,0,0,0,0,0]),lae=t=>{if(!t||!t.portal&&!t.rows)return cae;let e=t.portal||"",r=t.rows||0,n=Buffer.byteLength(e),i=4+n+1+4,s=Buffer.allocUnsafe(1+i);return s[0]=69,s.writeInt32BE(i,1),s.write(e,5,"utf-8"),s[n+5]=0,s.writeUInt32BE(r,s.length-4),s},uae=(t,e)=>{let r=Buffer.allocUnsafe(16);return r.writeInt32BE(16,0),r.writeInt16BE(1234,4),r.writeInt16BE(5678,6),r.writeInt32BE(t,8),r.writeInt32BE(e,12),r},ZS=(t,e)=>{let n=4+Buffer.byteLength(e)+1,i=Buffer.allocUnsafe(1+n);return i[0]=t,i.writeInt32BE(n,1),i.write(e,5,"utf-8"),i[n]=0,i},dae=Be.addCString("P").flush(68),pae=Be.addCString("S").flush(68),fae=t=>t.name?ZS(68,`${t.type}${t.name||""}`):t.type==="P"?dae:pae,mae=t=>{let e=`${t.type}${t.name||""}`;return ZS(67,e)},hae=t=>Be.add(t).flush(100),yae=t=>ZS(102,t),$f=t=>Buffer.from([t,0,0,0,4]),gae=$f(72),bae=$f(83),vae=$f(88),Eae=$f(99),Sae={startup:Zoe,password:tae,requestSsl:eae,sendSASLInitialResponseMessage:rae,sendSCRAMClientFinalMessage:nae,query:iae,parse:sae,bind:aae,execute:lae,describe:fae,close:mae,flush:()=>gae,sync:()=>bae,end:()=>vae,copyData:hae,copyDone:()=>Eae,copyFail:yae,cancel:uae};Uf.serialize=Sae});var dL=h(Jf=>{"use strict";Object.defineProperty(Jf,"__esModule",{value:!0});Jf.BufferReader=void 0;var ex=class{constructor(e=0){this.offset=e,this.buffer=Buffer.allocUnsafe(0),this.encoding="utf-8"}setBuffer(e,r){this.offset=e,this.buffer=r}int16(){let e=this.buffer.readInt16BE(this.offset);return this.offset+=2,e}byte(){let e=this.buffer[this.offset];return this.offset++,e}int32(){let e=this.buffer.readInt32BE(this.offset);return this.offset+=4,e}uint32(){let e=this.buffer.readUInt32BE(this.offset);return this.offset+=4,e}string(e){let r=this.buffer.toString(this.encoding,this.offset,this.offset+e);return this.offset+=e,r}cstring(){let e=this.offset,r=e;for(;this.buffer[r++];);return this.offset=r,this.buffer.toString(this.encoding,e,r-1)}bytes(e){let r=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,r}};Jf.BufferReader=ex});var hL=h(zf=>{"use strict";Object.defineProperty(zf,"__esModule",{value:!0});zf.Parser=void 0;var st=YS(),xae=dL(),rx=1,wae=4,pL=rx+wae,Cr=-1,tx=Buffer.allocUnsafe(0),nx=class{constructor(e){if(this.buffer=tx,this.bufferLength=0,this.bufferOffset=0,this.reader=new xae.BufferReader,e?.mode==="binary")throw new Error("Binary mode not supported yet");this.mode=e?.mode||"text"}parse(e,r){this.mergeBuffer(e);let n=this.bufferOffset+this.bufferLength,i=this.bufferOffset;for(;i+pL<=n;){let s=this.buffer[i],o=this.buffer.readUInt32BE(i+rx),a=rx+o;if(a+i<=n){let c=this.handlePacket(i+pL,s,o,this.buffer);r(c),i+=a}else break}i===n?(this.buffer=tx,this.bufferLength=0,this.bufferOffset=0):(this.bufferLength=n-i,this.bufferOffset=i)}mergeBuffer(e){if(this.bufferLength>0){let r=this.bufferLength+e.byteLength;if(r+this.bufferOffset>this.buffer.byteLength){let i;if(r<=this.buffer.byteLength&&this.bufferOffset>=this.bufferLength)i=this.buffer;else{let s=this.buffer.byteLength*2;for(;r>=s;)s*=2;i=Buffer.allocUnsafe(s)}this.buffer.copy(i,0,this.bufferOffset,this.bufferOffset+this.bufferLength),this.buffer=i,this.bufferOffset=0}e.copy(this.buffer,this.bufferOffset+this.bufferLength),this.bufferLength=r}else this.buffer=e,this.bufferOffset=0,this.bufferLength=e.byteLength}handlePacket(e,r,n,i){let{reader:s}=this;s.setBuffer(e,i);let o;switch(r){case 50:o=st.bindComplete;break;case 49:o=st.parseComplete;break;case 51:o=st.closeComplete;break;case 110:o=st.noData;break;case 115:o=st.portalSuspended;break;case 99:o=st.copyDone;break;case 87:o=st.replicationStart;break;case 73:o=st.emptyQuery;break;case 68:o=Pae(s);break;case 67:o=Iae(s);break;case 90:o=_ae(s);break;case 65:o=Rae(s);break;case 82:o=Mae(s,n);break;case 83:o=Kae(s);break;case 75:o=Dae(s);break;case 69:o=fL(s,"error");break;case 78:o=fL(s,"notice");break;case 84:o=Oae(s);break;case 116:o=jae(s);break;case 71:o=kae(s);break;case 72:o=Aae(s);break;case 100:o=Tae(s,n);break;default:return new st.DatabaseError("received invalid response: "+r.toString(16),n,"error")}return s.setBuffer(0,tx),o.length=n,o}};zf.Parser=nx;var _ae=t=>{let e=t.string(1);return new st.ReadyForQueryMessage(Cr,e)},Iae=t=>{let e=t.cstring();return new st.CommandCompleteMessage(Cr,e)},Tae=(t,e)=>{let r=t.bytes(e-4);return new st.CopyDataMessage(Cr,r)},kae=t=>mL(t,"copyInResponse"),Aae=t=>mL(t,"copyOutResponse"),mL=(t,e)=>{let r=t.byte()!==0,n=t.int16(),i=new st.CopyResponse(Cr,e,r,n);for(let s=0;s<n;s++)i.columnTypes[s]=t.int16();return i},Rae=t=>{let e=t.int32(),r=t.cstring(),n=t.cstring();return new st.NotificationResponseMessage(Cr,e,r,n)},Oae=t=>{let e=t.int16(),r=new st.RowDescriptionMessage(Cr,e);for(let n=0;n<e;n++)r.fields[n]=Cae(t);return r},Cae=t=>{let e=t.cstring(),r=t.uint32(),n=t.int16(),i=t.uint32(),s=t.int16(),o=t.int32(),a=t.int16()===0?"text":"binary";return new st.Field(e,r,n,i,s,o,a)},jae=t=>{let e=t.int16(),r=new st.ParameterDescriptionMessage(Cr,e);for(let n=0;n<e;n++)r.dataTypeIDs[n]=t.uint32();return r},Pae=t=>{let e=t.int16(),r=new Array(e);for(let n=0;n<e;n++){let i=t.int32();r[n]=i===-1?null:t.string(i)}return new st.DataRowMessage(Cr,r)},Kae=t=>{let e=t.cstring(),r=t.cstring();return new st.ParameterStatusMessage(Cr,e,r)},Dae=t=>{let e=t.int32(),r=t.int32();return new st.BackendKeyDataMessage(Cr,e,r)},Mae=(t,e)=>{let r=t.int32(),n={name:"authenticationOk",length:e};switch(r){case 0:break;case 3:n.length===8&&(n.name="authenticationCleartextPassword");break;case 5:if(n.length===12){n.name="authenticationMD5Password";let i=t.bytes(4);return new st.AuthenticationMD5Password(Cr,i)}break;case 10:{n.name="authenticationSASL",n.mechanisms=[];let i;do i=t.cstring(),i&&n.mechanisms.push(i);while(i)}break;case 11:n.name="authenticationSASLContinue",n.data=t.string(e-8);break;case 12:n.name="authenticationSASLFinal",n.data=t.string(e-8);break;default:throw new Error("Unknown authenticationOk message type "+r)}return n},fL=(t,e)=>{let r={},n=t.string(1);for(;n!=="\0";)r[n]=t.cstring(),n=t.string(1);let i=r.M,s=e==="notice"?new st.NoticeMessage(Cr,i):new st.DatabaseError(i,Cr,e);return s.severity=r.S,s.code=r.C,s.detail=r.D,s.hint=r.H,s.position=r.P,s.internalPosition=r.p,s.internalQuery=r.q,s.where=r.W,s.schema=r.s,s.table=r.t,s.column=r.c,s.dataType=r.d,s.constraint=r.n,s.file=r.F,s.line=r.L,s.routine=r.R,s}});var ix=h(ko=>{"use strict";Object.defineProperty(ko,"__esModule",{value:!0});ko.DatabaseError=ko.serialize=void 0;ko.parse=Fae;var Nae=YS();Object.defineProperty(ko,"DatabaseError",{enumerable:!0,get:function(){return Nae.DatabaseError}});var Lae=uL();Object.defineProperty(ko,"serialize",{enumerable:!0,get:function(){return Lae.serialize}});var qae=hL();function Fae(t,e){let r=new qae.Parser;return t.on("data",n=>r.parse(n,e)),new Promise(n=>t.on("end",()=>n()))}});var yL=h(sx=>{"use strict";Object.defineProperty(sx,"__esModule",{value:!0});sx.default={}});var bL=h((GKe,gL)=>{var{getStream:$ae,getSecureStream:Uae}=Bae();gL.exports={getStream:$ae,getSecureStream:Uae};function Jae(){function t(r){let n=require("net");return new n.Socket}function e(r){return require("tls").connect(r)}return{getStream:t,getSecureStream:e}}function zae(){function t(r){let{CloudflareSocket:n}=yL();return new n(r)}function e(r){return r.socket.startTls(r),r.socket}return{getStream:t,getSecureStream:e}}function Gae(){if(typeof navigator=="object"&&navigator!==null&&typeof navigator.userAgent=="string")return navigator.userAgent==="Cloudflare-Workers";if(typeof Response=="function"){let t=new Response(null,{cf:{thing:!0}});if(typeof t.cf=="object"&&t.cf!==null&&t.cf.thing)return!0}return!1}function Bae(){return Gae()?zae():Jae()}});var ax=h((BKe,EL)=>{"use strict";var Hae=require("events").EventEmitter,{parse:Vae,serialize:Ot}=ix(),vL=bL(),{getStream:Wae}=vL,Yae=Ot.flush(),Qae=Ot.sync(),Xae=Ot.end(),ox=class extends Hae{constructor(e){super(),e=e||{},this.stream=e.stream||Wae(e.ssl),typeof this.stream=="function"&&(this.stream=this.stream(e)),this._keepAlive=e.keepAlive,this._keepAliveInitialDelayMillis=e.keepAliveInitialDelayMillis,this.parsedStatements={},this.submittedNamedStatements={},this.ssl=e.ssl||!1,this.sslNegotiation=e.sslNegotiation||"postgres",this._ending=!1,this._emitMessage=!1;let r=this;this.on("newListener",function(n){n==="message"&&(r._emitMessage=!0)})}connect(e,r){let n=this;this._connecting=!0,this.stream.setNoDelay(!0),this.stream.connect(e,r),this.stream.once("connect",function(){n._keepAlive&&n.stream.setKeepAlive(!0,n._keepAliveInitialDelayMillis),n.emit("connect")});let i=function(s){n._ending&&(s.code==="ECONNRESET"||s.code==="EPIPE")||n.emit("error",s)};if(this.stream.on("error",i),this.stream.on("close",function(){n.emit("end")}),!this.ssl)return this.attachListeners(this.stream);if(this.sslNegotiation==="direct")return this.stream.once("connect",function(){n.upgradeToSSL(r,i)});this.stream.once("data",function(s){switch(s.toString("utf8")){case"S":break;case"N":return n.stream.end(),n.emit("error",new Error("The server does not support SSL connections"));default:return n.stream.end(),n.emit("error",new Error("There was an error establishing an SSL connection"))}n.upgradeToSSL(r,i)})}upgradeToSSL(e,r){let n=this,i={socket:n.stream};n.ssl!==!0&&(Object.assign(i,n.ssl),"key"in n.ssl&&(i.key=n.ssl.key)),n.sslNegotiation==="direct"&&(i.ALPNProtocols=["postgresql"]);let s=require("net");s.isIP&&s.isIP(e)===0&&(i.servername=e);try{n.stream=vL.getSecureStream(i)}catch(o){return n.emit("error",o)}n.attachListeners(n.stream),n.stream.on("error",r),n.emit("sslconnect")}attachListeners(e){Vae(e,r=>{let n=r.name==="error"?"errorMessage":r.name;this._emitMessage&&this.emit("message",r),this.emit(n,r)})}requestSsl(){this.stream.write(Ot.requestSsl())}startup(e){this.stream.write(Ot.startup(e))}cancel(e,r){this._send(Ot.cancel(e,r))}password(e){this._send(Ot.password(e))}sendSASLInitialResponseMessage(e,r){this._send(Ot.sendSASLInitialResponseMessage(e,r))}sendSCRAMClientFinalMessage(e){this._send(Ot.sendSCRAMClientFinalMessage(e))}_send(e){return this.stream.writable?this.stream.write(e):!1}query(e){this._send(Ot.query(e))}parse(e){this._send(Ot.parse(e))}bind(e){this._send(Ot.bind(e))}execute(e){this._send(Ot.execute(e))}flush(){this.stream.writable&&this.stream.write(Yae)}sync(){this._ending=!0,this._send(Qae)}ref(){this.stream.ref()}unref(){this.stream.unref()}end(){if(this._ending=!0,!this._connecting||!this.stream.writable){this.stream.end();return}return this.stream.write(Xae,()=>{this.stream.end()})}close(e){this._send(Ot.close(e))}describe(e){this._send(Ot.describe(e))}sendCopyFromChunk(e){this._send(Ot.copyData(e))}endCopyFrom(){this._send(Ot.copyDone())}sendCopyFail(e){this._send(Ot.copyFail(e))}};EL.exports=ox});var _L=h((HKe,wL)=>{"use strict";var{Transform:Zae}=require("stream"),{StringDecoder:ece}=require("string_decoder"),hs=Symbol("last"),Gf=Symbol("decoder");function tce(t,e,r){let n;if(this.overflow){if(n=this[Gf].write(t).split(this.matcher),n.length===1)return r();n.shift(),this.overflow=!1}else this[hs]+=this[Gf].write(t),n=this[hs].split(this.matcher);this[hs]=n.pop();for(let i=0;i<n.length;i++)try{xL(this,this.mapper(n[i]))}catch(s){return r(s)}if(this.overflow=this[hs].length>this.maxLength,this.overflow&&!this.skipOverflow){r(new Error("maximum buffer reached"));return}r()}function rce(t){if(this[hs]+=this[Gf].end(),this[hs])try{xL(this,this.mapper(this[hs]))}catch(e){return t(e)}t()}function xL(t,e){e!==void 0&&t.push(e)}function SL(t){return t}function nce(t,e,r){switch(t=t||/\r?\n/,e=e||SL,r=r||{},arguments.length){case 1:typeof t=="function"?(e=t,t=/\r?\n/):typeof t=="object"&&!(t instanceof RegExp)&&!t[Symbol.split]&&(r=t,t=/\r?\n/);break;case 2:typeof t=="function"?(r=e,e=t,t=/\r?\n/):typeof e=="object"&&(r=e,e=SL)}r=Object.assign({},r),r.autoDestroy=!0,r.transform=tce,r.flush=rce,r.readableObjectMode=!0;let n=new Zae(r);return n[hs]="",n[Gf]=new ece("utf8"),n.matcher=t,n.mapper=e,n.maxLength=r.maxLength,n.skipOverflow=r.skipOverflow||!1,n.overflow=!1,n._destroy=function(i,s){this._writableState.errorEmitted=!1,s(i)},n}wL.exports=nce});var kL=h((VKe,Ci)=>{"use strict";var IL=require("path"),ice=require("stream").Stream,sce=_L(),TL=require("util"),oce=5432,Bf=process.platform==="win32",mu=process.stderr,ace=56,cce=7,lce=61440,uce=32768;function dce(t){return(t&lce)==uce}var ic=["host","port","database","user","password"],cx=ic.length,pce=ic[cx-1];function lx(){var t=mu instanceof ice&&mu.writable===!0;if(t){var e=Array.prototype.slice.call(arguments).concat(`
`);mu.write(TL.format.apply(TL,e))}}Object.defineProperty(Ci.exports,"isWin",{get:function(){return Bf},set:function(t){Bf=t}});Ci.exports.warnTo=function(t){var e=mu;return mu=t,e};Ci.exports.getFileName=function(t){var e=t||process.env,r=e.PGPASSFILE||(Bf?IL.join(e.APPDATA||"./","postgresql","pgpass.conf"):IL.join(e.HOME||"./",".pgpass"));return r};Ci.exports.usePgPass=function(t,e){return Object.prototype.hasOwnProperty.call(process.env,"PGPASSWORD")?!1:Bf?!0:(e=e||"<unkn>",dce(t.mode)?t.mode&(ace|cce)?(lx('WARNING: password file "%s" has group or world access; permissions should be u=rw (0600) or less',e),!1):!0:(lx('WARNING: password file "%s" is not a plain file',e),!1))};var fce=Ci.exports.match=function(t,e){return ic.slice(0,-1).reduce(function(r,n,i){return i==1&&Number(t[n]||oce)===Number(e[n])?r&&!0:r&&(e[n]==="*"||e[n]===t[n])},!0)};Ci.exports.getPassword=function(t,e,r){var n,i=e.pipe(sce());function s(c){var l=mce(c);l&&hce(l)&&fce(t,l)&&(n=l[pce],i.end())}var o=function(){e.destroy(),r(n)},a=function(c){e.destroy(),lx("WARNING: error on reading file: %s",c),r(void 0)};e.on("error",a),i.on("data",s).on("end",o).on("error",a)};var mce=Ci.exports.parseLine=function(t){if(t.length<11||t.match(/^\s+#/))return null;for(var e="",r="",n=0,i=0,s=0,o={},a=!1,c=function(u,d,p){var f=t.substring(d,p);Object.hasOwnProperty.call(process.env,"PGPASS_NO_DEESCAPE")||(f=f.replace(/\\([:\\])/g,"$1")),o[ic[u]]=f},l=0;l<t.length-1;l+=1){if(e=t.charAt(l+1),r=t.charAt(l),a=n==cx-1,a){c(n,i);break}l>=0&&e==":"&&r!=="\\"&&(c(n,i,l+1),i=l+2,n+=1)}return o=Object.keys(o).length===cx?o:null,o},hce=Ci.exports.isValidEntry=function(t){for(var e={0:function(o){return o.length>0},1:function(o){return o==="*"?!0:(o=Number(o),isFinite(o)&&o>0&&o<9007199254740992&&Math.floor(o)===o)},2:function(o){return o.length>0},3:function(o){return o.length>0},4:function(o){return o.length>0}},r=0;r<ic.length;r+=1){var n=e[r],i=t[ic[r]]||"",s=n(i);if(!s)return!1}return!0}});var RL=h((YKe,ux)=>{"use strict";var WKe=require("path"),AL=require("fs"),Hf=kL();ux.exports=function(t,e){var r=Hf.getFileName();AL.stat(r,function(n,i){if(n||!Hf.usePgPass(i,r))return e(void 0);var s=AL.createReadStream(r);Hf.getPassword(t,s,e)})};ux.exports.warnTo=Hf.warnTo});var KL=h((QKe,PL)=>{var yce=require("events").EventEmitter,OL=_o(),hu=require("util"),Vf=VN(),gce=qf(),bce=jS(),jL=aL(),vce=pu(),Ece=ax(),Sce=kS(),CL=hu.deprecate(()=>{},"Client.activeQuery is deprecated and will be removed in pg@9.0"),xce=hu.deprecate(()=>{},"Client.queryQueue is deprecated and will be removed in pg@9.0."),wce=hu.deprecate(()=>{},"pgpass support is deprecated and will be removed in pg@9.0. You can provide an async function as the password property to the Client/Pool constructor that returns a password instead. Within this function you can call the pgpass module in your own code."),_ce=hu.deprecate(()=>{},"Passing a custom Promise implementation to the Client/Pool constructor is deprecated and will be removed in pg@9.0."),Ice=hu.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead.");function Tce(t,e){if(typeof t=="number")return Number.isFinite(t)?t:e;if(typeof t=="string"&&t.trim()!==""){let r=Number(t);return Number.isFinite(r)?r:e}return e}var Wf=class extends yce{constructor(e){super(),this.connectionParameters=new bce(e),this.user=this.connectionParameters.user,this.database=this.connectionParameters.database,this.port=this.connectionParameters.port,this.host=this.connectionParameters.host,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:this.connectionParameters.password}),this.replication=this.connectionParameters.replication;let r=e||{};r.Promise&&_ce(),this._Promise=r.Promise||global.Promise,this._types=new gce(r.types),this._ending=!1,this._ended=!1,this._connecting=!1,this._connected=!1,this._connectionError=!1,this._queryable=!0,this._activeQuery=null,this._txStatus=null,this.enableChannelBinding=!!r.enableChannelBinding,this.scramMaxIterations=Tce(r.scramMaxIterations,Vf.DEFAULT_MAX_SCRAM_ITERATIONS),this.connection=r.connection||new Ece({stream:r.stream,ssl:this.connectionParameters.ssl,sslNegotiation:this.connectionParameters.sslnegotiation,keepAlive:r.keepAlive||!1,keepAliveInitialDelayMillis:r.keepAliveInitialDelayMillis||0,encoding:this.connectionParameters.client_encoding||"utf8"}),this._queryQueue=[],this._sentQueryQueue=[],this.pipeline=!!r.pipeline,this.binary=r.binary||vce.binary,this.processID=null,this.secretKey=null,this.ssl=this.connectionParameters.ssl||!1,this.sslNegotiation=this.connectionParameters.sslnegotiation||"postgres",this.ssl&&this.ssl.key&&Object.defineProperty(this.ssl,"key",{enumerable:!1}),this._connectionTimeoutMillis=r.connectionTimeoutMillis||0}get activeQuery(){return CL(),this._activeQuery}set activeQuery(e){CL(),this._activeQuery=e}_getActiveQuery(){return this._activeQuery}_errorAllQueries(e){let r=i=>{process.nextTick(()=>{i.handleError(e,this.connection)})},n=this._getActiveQuery();n&&(r(n),this._activeQuery=null),this._sentQueryQueue.forEach(r),this._sentQueryQueue.length=0,this._queryQueue.forEach(r),this._queryQueue.length=0}_connect(e){let r=this,n=this.connection;if(this._connectionCallback=e,this._connecting||this._connected){let i=new Error("Client has already been connected. You cannot reuse a client.");process.nextTick(()=>{e(i)});return}this._connecting=!0,this._connectionTimeoutMillis>0&&(this.connectionTimeoutHandle=setTimeout(()=>{n._ending=!0,n.stream.destroy(new Error("timeout expired"))},this._connectionTimeoutMillis),this.connectionTimeoutHandle.unref&&this.connectionTimeoutHandle.unref()),this.host&&this.host.indexOf("/")===0?n.connect(this.host+"/.s.PGSQL."+this.port):n.connect(this.port,this.host),n.on("connect",function(){r.ssl?r.sslNegotiation!=="direct"&&n.requestSsl():n.startup(r.getStartupConf())}),n.on("sslconnect",function(){n.startup(r.getStartupConf())}),this._attachListeners(n),n.once("end",()=>{let i=this._ending?new Error("Connection terminated"):new Error("Connection terminated unexpectedly");clearTimeout(this.connectionTimeoutHandle),this._errorAllQueries(i),this._ended=!0,this._ending||(this._connecting&&!this._connectionError?this._connectionCallback?this._connectionCallback(i):this._handleErrorEvent(i):this._connectionError||this._handleErrorEvent(i)),process.nextTick(()=>{this.emit("end")})})}connect(e){if(e){this._connect(e);return}return new this._Promise((r,n)=>{this._connect(i=>{i?n(i):r(this)})})}_attachListeners(e){e.on("authenticationCleartextPassword",this._handleAuthCleartextPassword.bind(this)),e.on("authenticationMD5Password",this._handleAuthMD5Password.bind(this)),e.on("authenticationSASL",this._handleAuthSASL.bind(this)),e.on("authenticationSASLContinue",this._handleAuthSASLContinue.bind(this)),e.on("authenticationSASLFinal",this._handleAuthSASLFinal.bind(this)),e.on("backendKeyData",this._handleBackendKeyData.bind(this)),e.on("error",this._handleErrorEvent.bind(this)),e.on("errorMessage",this._handleErrorMessage.bind(this)),e.on("readyForQuery",this._handleReadyForQuery.bind(this)),e.on("notice",this._handleNotice.bind(this)),e.on("rowDescription",this._handleRowDescription.bind(this)),e.on("dataRow",this._handleDataRow.bind(this)),e.on("portalSuspended",this._handlePortalSuspended.bind(this)),e.on("emptyQuery",this._handleEmptyQuery.bind(this)),e.on("commandComplete",this._handleCommandComplete.bind(this)),e.on("parseComplete",this._handleParseComplete.bind(this)),e.on("copyInResponse",this._handleCopyInResponse.bind(this)),e.on("copyData",this._handleCopyData.bind(this)),e.on("notification",this._handleNotification.bind(this))}_getPassword(e){let r=this.connection;if(typeof this.password=="function")this._Promise.resolve().then(()=>this.password(this.connectionParameters)).then(n=>{if(n!==void 0){if(typeof n!="string"){r.emit("error",new TypeError("Password must be a string"));return}this.connectionParameters.password=this.password=n}else this.connectionParameters.password=this.password=null;e()}).catch(n=>{r.emit("error",n)});else if(this.password!==null)e();else try{RL()(this.connectionParameters,i=>{i!==void 0&&(wce(),this.connectionParameters.password=this.password=i),e()})}catch(n){this.emit("error",n)}}_handleAuthCleartextPassword(e){this._getPassword(()=>{this.connection.password(this.password)})}_handleAuthMD5Password(e){this._getPassword(async()=>{try{let r=await Sce.postgresMd5PasswordHash(this.user,this.password,e.salt);this.connection.password(r)}catch(r){this.emit("error",r)}})}_handleAuthSASL(e){this._getPassword(()=>{try{this.saslSession=Vf.startSession(e.mechanisms,this.enableChannelBinding&&this.connection.stream,this.scramMaxIterations),this.connection.sendSASLInitialResponseMessage(this.saslSession.mechanism,this.saslSession.response)}catch(r){this.connection.emit("error",r)}})}async _handleAuthSASLContinue(e){try{await Vf.continueSession(this.saslSession,this.password,e.data,this.enableChannelBinding&&this.connection.stream),this.connection.sendSCRAMClientFinalMessage(this.saslSession.response)}catch(r){this.connection.emit("error",r)}}_handleAuthSASLFinal(e){try{Vf.finalizeSession(this.saslSession,e.data),this.saslSession=null}catch(r){this.connection.emit("error",r)}}_handleBackendKeyData(e){this.processID=e.processID,this.secretKey=e.secretKey}_handleReadyForQuery(e){this._connecting&&(this._connecting=!1,this._connected=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback&&(this._connectionCallback(null,this),this._connectionCallback=null),this.emit("connect"));let r=this._getActiveQuery();this._activeQuery=null,this._txStatus=e?.status??null,this.readyForQuery=!0,r&&r.handleReadyForQuery(this.connection),this._pulseQueryQueue()}_handleErrorWhileConnecting(e){if(!this._connectionError){if(this._connectionError=!0,clearTimeout(this.connectionTimeoutHandle),this._connectionCallback)return this._connectionCallback(e);this.emit("error",e)}}_handleErrorEvent(e){if(this._connecting)return this._handleErrorWhileConnecting(e);this._queryable=!1,this._errorAllQueries(e),this.emit("error",e)}_handleErrorMessage(e){if(this._connecting)return this._handleErrorWhileConnecting(e);let r=this._getActiveQuery();if(!r){this._handleErrorEvent(e);return}this._activeQuery=null,r.name&&delete this.connection.submittedNamedStatements[r.name],r.handleError(e,this.connection)}_handleRowDescription(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected rowDescription message from backend.");this._handleErrorEvent(n);return}r.handleRowDescription(e)}_handleDataRow(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected dataRow message from backend.");this._handleErrorEvent(n);return}r.handleDataRow(e)}_handlePortalSuspended(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected portalSuspended message from backend.");this._handleErrorEvent(n);return}r.handlePortalSuspended(this.connection)}_handleEmptyQuery(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected emptyQuery message from backend.");this._handleErrorEvent(n);return}r.handleEmptyQuery(this.connection)}_handleCommandComplete(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected commandComplete message from backend.");this._handleErrorEvent(n);return}r.handleCommandComplete(e,this.connection)}_handleParseComplete(){let e=this._getActiveQuery();if(e==null){let r=new Error("Received unexpected parseComplete message from backend.");this._handleErrorEvent(r);return}e.name&&(this.connection.parsedStatements[e.name]=e.text,delete this.connection.submittedNamedStatements[e.name])}_handleCopyInResponse(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected copyInResponse message from backend.");this._handleErrorEvent(n);return}r.handleCopyInResponse(this.connection)}_handleCopyData(e){let r=this._getActiveQuery();if(r==null){let n=new Error("Received unexpected copyData message from backend.");this._handleErrorEvent(n);return}r.handleCopyData(e,this.connection)}_handleNotification(e){this.emit("notification",e)}_handleNotice(e){this.emit("notice",e)}getStartupConf(){let e=this.connectionParameters,r={user:e.user,database:e.database},n=e.application_name||e.fallback_application_name;return n&&(r.application_name=n),e.replication&&(r.replication=""+e.replication),e.statement_timeout&&(r.statement_timeout=String(parseInt(e.statement_timeout,10))),e.lock_timeout&&(r.lock_timeout=String(parseInt(e.lock_timeout,10))),e.idle_in_transaction_session_timeout&&(r.idle_in_transaction_session_timeout=String(parseInt(e.idle_in_transaction_session_timeout,10))),e.options&&(r.options=e.options),r}cancel(e,r){if(e.activeQuery===r){let n=this.connection;this.host&&this.host.indexOf("/")===0?n.connect(this.host+"/.s.PGSQL."+this.port):n.connect(this.port,this.host),n.on("connect",function(){n.cancel(e.processID,e.secretKey)})}else e._queryQueue.indexOf(r)!==-1?e._queryQueue.splice(e._queryQueue.indexOf(r),1):e._sentQueryQueue.indexOf(r)!==-1&&(r.callback=()=>{})}setTypeParser(e,r,n){return this._types.setTypeParser(e,r,n)}getTypeParser(e,r){return this._types.getTypeParser(e,r)}escapeIdentifier(e){return OL.escapeIdentifier(e)}escapeLiteral(e){return OL.escapeLiteral(e)}_pulseQueryQueue(){if(this.pipeline){this._pulsePipelinedQueryQueue();return}if(this.readyForQuery===!0){this._activeQuery=this._queryQueue.shift();let e=this._getActiveQuery();if(e){this.readyForQuery=!1,this.hasExecuted=!0;let r=e.submit(this.connection);r&&process.nextTick(()=>{e.handleError(r,this.connection),this.readyForQuery=!0,this._pulseQueryQueue()})}else this.hasExecuted&&(this._activeQuery=null,this.emit("drain"))}}_pulsePipelinedQueryQueue(){if(!(!this._connected||!this._queryable)){for(;this._queryQueue.length>0;){let e=this._queryQueue.shift();this.hasExecuted=!0;let r=e.submit(this.connection);if(r){process.nextTick(()=>{e.handleError(r,this.connection)});continue}this._sentQueryQueue.push(e)}this.readyForQuery&&!this._activeQuery&&this._sentQueryQueue.length>0&&(this._activeQuery=this._sentQueryQueue.shift(),this.readyForQuery=!1),!this._activeQuery&&this._sentQueryQueue.length===0&&this._queryQueue.length===0&&this.hasExecuted&&this.emit("drain")}}query(e,r,n){let i,s;if(e==null)throw new TypeError("Client was passed a null or undefined query");if(typeof e.submit=="function")s=i=e,i.callback||(typeof r=="function"?i.callback=r:n&&(i.callback=n));else if(i=new jL(e,r,n),!i.callback)s=new this._Promise((a,c)=>{i.callback=(l,u)=>l?c(l):a(u)}).catch(a=>{throw Error.captureStackTrace(a),a});else if(typeof i.callback!="function")throw new TypeError("callback is not a function");let o=e.query_timeout||this.connectionParameters.query_timeout;if(o){let a=i.callback||(()=>{}),c=setTimeout(()=>{let l=new Error("Query read timeout");process.nextTick(()=>{i.handleError(l,this.connection)}),a(l),i.callback=()=>{};let u=this._queryQueue.indexOf(i);if(u>-1)this._queryQueue.splice(u,1);else if(this.pipeline){this.connection.stream.destroy();return}this._pulseQueryQueue()},o);i.callback=(l,u)=>{clearTimeout(c),a(l,u)}}return this.binary&&!i.binary&&(i.binary=!0),i._result&&!i._result._types&&(i._result._types=this._types),this._queryable?this._ending?(process.nextTick(()=>{i.handleError(new Error("Client was closed and is not queryable"),this.connection)}),s):(this._queryQueue.length>0&&!this.pipeline&&Ice(),this._queryQueue.push(i),this._pulseQueryQueue(),s):(process.nextTick(()=>{i.handleError(new Error("Client has encountered a connection error and is not queryable"),this.connection)}),s)}ref(){this.connection.ref()}unref(){this.connection.unref()}getTransactionStatus(){return this._txStatus}end(e){if(this._ending=!0,!this.connection._connecting||this._ended)if(e){e();return}else return this._Promise.resolve();if(this._queryable?this.pipeline&&(this._getActiveQuery()||this._sentQueryQueue.length>0||this._queryQueue.length>0)?this.once("drain",()=>this.connection.end()):this._getActiveQuery()?this.connection.stream.destroy():this.connection.end():this.connection.stream.destroy(),e)this.connection.once("end",e);else return new this._Promise(r=>{this.connection.once("end",r)})}get queryQueue(){return xce(),this._queryQueue}};Wf.Query=jL;PL.exports=Wf});var NL=h((XKe,ML)=>{"use strict";var kce=require("events").EventEmitter,dx=function(){},DL=(t,e)=>{let r=t.findIndex(e);return r===-1?void 0:t.splice(r,1)[0]},px=class{constructor(e,r,n){this.client=e,this.idleListener=r,this.timeoutId=n}},sc=class{constructor(e){this.callback=e}};function Ace(){throw new Error("Release called on client which has already been released to the pool.")}function Yf(t,e){if(e)return{callback:e,result:void 0};let r,n,i=function(o,a){o?r(o):n(a)},s=new t(function(o,a){n=o,r=a}).catch(o=>{throw Error.captureStackTrace(o),o});return{callback:i,result:s}}function Rce(t,e){return function r(n){n.client=e,e.removeListener("error",r),e.on("error",()=>{t.log("additional client error after disconnection due to error",n)}),t._remove(e),t.emit("error",n,e)}}var fx=class extends kce{constructor(e,r){super(),this.options=Object.assign({},e),e!=null&&"password"in e&&Object.defineProperty(this.options,"password",{configurable:!0,enumerable:!1,writable:!0,value:e.password}),e!=null&&e.ssl&&e.ssl.key&&Object.defineProperty(this.options.ssl,"key",{enumerable:!1}),this.options.max=this.options.max||this.options.poolSize||10,this.options.min=this.options.min||0,this.options.maxUses=this.options.maxUses||1/0,this.options.allowExitOnIdle=this.options.allowExitOnIdle||!1,this.options.maxLifetimeSeconds=this.options.maxLifetimeSeconds||0,this.log=this.options.log||function(){},this.Client=this.options.Client||r||mx().Client,this.Promise=this.options.Promise||global.Promise,typeof this.options.idleTimeoutMillis>"u"&&(this.options.idleTimeoutMillis=1e4),this._clients=[],this._idle=[],this._expired=new WeakSet,this._pendingQueue=[],this._endCallback=void 0,this.ending=!1,this.ended=!1}_promiseTry(e){let r=this.Promise;return typeof r.try=="function"?r.try(e):new r(n=>n(e()))}_isFull(){return this._clients.length>=this.options.max}_isAboveMin(){return this._clients.length>this.options.min}_pulseQueue(){if(this.log("pulse queue"),this.ended){this.log("pulse queue ended");return}if(this.ending){this.log("pulse queue on ending"),this._idle.length&&this._idle.slice().map(r=>{this._remove(r.client)}),this._clients.length||(this.ended=!0,this._endCallback());return}if(!this._pendingQueue.length){this.log("no queued requests");return}if(!this._idle.length&&this._isFull())return;let e=this._pendingQueue.shift();if(this._idle.length){let r=this._idle.pop();clearTimeout(r.timeoutId);let n=r.client;n.ref&&n.ref();let i=r.idleListener;return this._acquireClient(n,e,i,!1)}if(!this._isFull())return this.newClient(e);throw new Error("unexpected condition")}_remove(e,r){let n=DL(this._idle,s=>s.client===e);n!==void 0&&clearTimeout(n.timeoutId),this._clients=this._clients.filter(s=>s!==e);let i=this;e.end(()=>{i.emit("remove",e),typeof r=="function"&&r()})}connect(e){if(this.ending){let i=new Error("Cannot use a pool after calling end on the pool");return e?e(i):this.Promise.reject(i)}let r=Yf(this.Promise,e),n=r.result;if(this._isFull()||this._idle.length){if(this._idle.length&&process.nextTick(()=>this._pulseQueue()),!this.options.connectionTimeoutMillis)return this._pendingQueue.push(new sc(r.callback)),n;let i=(a,c,l)=>{clearTimeout(o),r.callback(a,c,l)},s=new sc(i),o=setTimeout(()=>{DL(this._pendingQueue,a=>a.callback===i),s.timedOut=!0,r.callback(new Error("timeout exceeded when trying to connect"))},this.options.connectionTimeoutMillis);return o.unref&&o.unref(),this._pendingQueue.push(s),n}return this.newClient(new sc(r.callback)),n}newClient(e){let r=new this.Client(this.options);this._clients.push(r);let n=Rce(this,r);this.log("checking client timeout");let i,s=!1;this.options.connectionTimeoutMillis&&(i=setTimeout(()=>{r.connection?(this.log("ending client due to timeout"),s=!0,r.connection.stream.destroy()):r.isConnected()||(this.log("ending client due to timeout"),s=!0,r.end())},this.options.connectionTimeoutMillis)),this.log("connecting new client"),r.connect(o=>{if(i&&clearTimeout(i),r.on("error",n),o)this.log("client failed to connect",o),this._clients=this._clients.filter(a=>a!==r),s&&(o=new Error("Connection terminated due to connection timeout",{cause:o})),this._pulseQueue(),e.timedOut||e.callback(o,void 0,dx);else{if(this.log("new client connected"),this.options.onConnect){this._promiseTry(()=>this.options.onConnect(r)).then(()=>{this._afterConnect(r,e,n)},a=>{this._clients=this._clients.filter(c=>c!==r),r.end(()=>{this._pulseQueue(),e.timedOut||e.callback(a,void 0,dx)})});return}return this._afterConnect(r,e,n)}})}_afterConnect(e,r,n){if(this.options.maxLifetimeSeconds!==0){let i=setTimeout(()=>{this.log("ending client due to expired lifetime"),this._expired.add(e),this._idle.findIndex(o=>o.client===e)!==-1&&this._acquireClient(e,new sc((o,a,c)=>c()),n,!1)},this.options.maxLifetimeSeconds*1e3);i.unref(),e.once("end",()=>clearTimeout(i))}return this._acquireClient(e,r,n,!0)}_acquireClient(e,r,n,i){i&&this.emit("connect",e),this.emit("acquire",e),e.release=this._releaseOnce(e,n),e.removeListener("error",n),r.timedOut?i&&this.options.verify?this.options.verify(e,e.release):e.release():i&&this.options.verify?this.options.verify(e,s=>{if(s)return e.release(s),r.callback(s,void 0,dx);r.callback(void 0,e,e.release)}):r.callback(void 0,e,e.release)}_releaseOnce(e,r){let n=!1;return i=>{n&&Ace(),n=!0,this._release(e,r,i)}}_release(e,r,n){if(e.on("error",r),e._poolUseCount=(e._poolUseCount||0)+1,this.emit("release",n,e),n||this.ending||!e._queryable||e._ending||e._poolUseCount>=this.options.maxUses)return e._poolUseCount>=this.options.maxUses&&this.log("remove expended client"),this._remove(e,this._pulseQueue.bind(this));if(this._expired.has(e))return this.log("remove expired client"),this._expired.delete(e),this._remove(e,this._pulseQueue.bind(this));let s;this.options.idleTimeoutMillis&&this._isAboveMin()&&(s=setTimeout(()=>{this._isAboveMin()&&(this.log("remove idle client"),this._remove(e,this._pulseQueue.bind(this)))},this.options.idleTimeoutMillis),this.options.allowExitOnIdle&&s.unref()),this.options.allowExitOnIdle&&e.unref(),this._idle.push(new px(e,r,s)),this._pulseQueue()}query(e,r,n){if(typeof e=="function"){let s=Yf(this.Promise,e);return setImmediate(function(){return s.callback(new Error("Passing a function as the first parameter to pool.query is not supported"))}),s.result}typeof r=="function"&&(n=r,r=void 0);let i=Yf(this.Promise,n);return n=i.callback,this.connect((s,o)=>{if(s)return n(s);let a=!1,c=l=>{a||(a=!0,o.release(l),n(l))};o.once("error",c),this.log("dispatching query");try{o.query(e,r,(l,u)=>{if(this.log("query dispatched"),o.removeListener("error",c),!a)return a=!0,o.release(l),l?n(l):n(void 0,u)})}catch(l){return o.release(l),n(l)}}),i.result}end(e){if(this.log("ending"),this.ending){let n=new Error("Called end on pool more than once");return e?e(n):this.Promise.reject(n)}this.ending=!0;let r=Yf(this.Promise,e);return this._endCallback=r.callback,this._pulseQueue(),r.result}get waitingCount(){return this._pendingQueue.length}get idleCount(){return this._idle.length}get expiredCount(){return this._clients.reduce((e,r)=>e+(this._expired.has(r)?1:0),0)}get totalCount(){return this._clients.length}};ML.exports=fx});var FL=h((ZKe,qL)=>{"use strict";var LL=require("events").EventEmitter,Oce=require("util"),hx=_o(),oc=qL.exports=function(t,e,r){LL.call(this),t=hx.normalizeQueryConfig(t,e,r),this.text=t.text,this.values=t.values,this.name=t.name,this.queryMode=t.queryMode,this.callback=t.callback,this.state="new",this._arrayMode=t.rowMode==="array",this._emitRowEvents=!1,this.on("newListener",function(n){n==="row"&&(this._emitRowEvents=!0)}.bind(this))};Oce.inherits(oc,LL);var Cce={sqlState:"code",statementPosition:"position",messagePrimary:"message",context:"where",schemaName:"schema",tableName:"table",columnName:"column",dataTypeName:"dataType",constraintName:"constraint",sourceFile:"file",sourceLine:"line",sourceFunction:"routine"};oc.prototype.handleError=function(t){let e=this.native&&this.native.pq.resultErrorFields();if(e)for(let r in e){let n=Cce[r]||r;t[n]=e[r]}this.callback?this.callback(t):this.emit("error",t),this.state="error"};oc.prototype.then=function(t,e){return this._getPromise().then(t,e)};oc.prototype.catch=function(t){return this._getPromise().catch(t)};oc.prototype._getPromise=function(){return this._promise?this._promise:(this._promise=new Promise(function(t,e){this._once("end",t),this._once("error",e)}.bind(this)),this._promise)};oc.prototype.submit=function(t){this.state="running";let e=this;this.native=t.native,t.native.arrayMode=this._arrayMode;let r=function(n,i,s){if(t.native.arrayMode=!1,setImmediate(function(){e.emit("_done")}),n)return e.handleError(n);e._emitRowEvents&&(s.length>1?i.forEach((o,a)=>{o.forEach(c=>{e.emit("row",c,s[a])})}):i.forEach(function(o){e.emit("row",o,s)})),e.state="end",e.emit("end",s),e.callback&&e.callback(null,s)};if(process.domain&&(r=process.domain.bind(r)),this.name){this.name.length>63&&(console.error("Warning! Postgres only supports 63 characters for query names."),console.error("You supplied %s (%s)",this.name,this.name.length),console.error("This can cause conflicts and silent errors executing queries"));let n=(this.values||[]).map(hx.prepareValue);if(t.namedQueries[this.name]){if(this.text&&t.namedQueries[this.name]!==this.text){let i=new Error(`Prepared statements must be unique - '${this.name}' was used for a different statement`);return r(i)}return t.native.execute(this.name,n,r)}return t.native.prepare(this.name,this.text,n.length,function(i){return i?r(i):(t.namedQueries[e.name]=e.text,e.native.execute(e.name,n,r))})}else if(this.values){if(!Array.isArray(this.values)){let i=new Error("Query values must be an array");return r(i)}let n=this.values.map(hx.prepareValue);t.native.query(this.text,n,r)}else this.queryMode==="extended"?t.native.query(this.text,[],r):t.native.query(this.text,r)}});var GL=h((eDe,zL)=>{var jce=require("util"),$L;try{$L=require("pg-native")}catch(t){throw t}var Pce=qf(),UL=require("events").EventEmitter,Kce=require("util"),Dce=jS(),JL=FL(),Mce=jce.deprecate(()=>{},"Calling client.query() when the client is already executing a query is deprecated and will be removed in pg@9.0. Use async/await or an external async flow control mechanism instead."),Lt=zL.exports=function(t){UL.call(this),t=t||{},this._Promise=t.Promise||global.Promise,this._types=new Pce(t.types),this.native=new $L({types:this._types}),this._queryQueue=[],this._ending=!1,this._connecting=!1,this._connected=!1,this._queryable=!0,this.pipeline=!!t.pipeline,this._pipelineInFlight=!1;let e=this.connectionParameters=new Dce(t);t.nativeConnectionString&&(e.nativeConnectionString=t.nativeConnectionString),this.user=e.user,Object.defineProperty(this,"password",{configurable:!0,enumerable:!1,writable:!0,value:e.password}),this.database=e.database,this.host=e.host,this.port=e.port,this.namedQueries={}};Lt.Query=JL;Kce.inherits(Lt,UL);Lt.prototype._errorAllQueries=function(t){let e=r=>{process.nextTick(()=>{r.native=this.native,r.handleError(t)})};this._hasActiveQuery()&&(e(this._activeQuery),this._activeQuery=null),this._queryQueue.forEach(e),this._queryQueue.length=0};Lt.prototype._connect=function(t){let e=this;if(this._connecting){process.nextTick(()=>t(new Error("Client has already been connected. You cannot reuse a client.")));return}this._connecting=!0,this.connectionParameters.getLibpqConnectionString(function(r,n){if(e.connectionParameters.nativeConnectionString&&(n=e.connectionParameters.nativeConnectionString),r)return t(r);e.native.connect(n,function(i){if(i)return e.native.end(),t(i);e._connected=!0,e.native.on("error",function(s){e._queryable=!1,e._errorAllQueries(s),e.emit("error",s)}),e.native.on("notification",function(s){e.emit("notification",{channel:s.relname,payload:s.extra})}),e.emit("connect"),e._pulseQueryQueue(!0),t(null,this)})})};Lt.prototype.connect=function(t){if(t){this._connect(t);return}return new this._Promise((e,r)=>{this._connect(n=>{n?r(n):e(this)})})};Lt.prototype.query=function(t,e,r){let n,i,s,o,a;if(t==null)throw new TypeError("Client was passed a null or undefined query");if(typeof t.submit=="function")s=t.query_timeout||this.connectionParameters.query_timeout,i=n=t,typeof e=="function"&&(t.callback=e);else if(s=t.query_timeout||this.connectionParameters.query_timeout,n=new JL(t,e,r),!n.callback){let c,l;i=new this._Promise((u,d)=>{c=u,l=d}).catch(u=>{throw Error.captureStackTrace(u),u}),n.callback=(u,d)=>u?l(u):c(d)}return s&&(a=n.callback||(()=>{}),o=setTimeout(()=>{let c=new Error("Query read timeout");process.nextTick(()=>{n.handleError(c,this.connection)}),a(c),n.callback=()=>{};let l=this._queryQueue.indexOf(n);l>-1&&this._queryQueue.splice(l,1),this._pulseQueryQueue()},s),n.callback=(c,l)=>{clearTimeout(o),a(c,l)}),this._queryable?this._ending?(n.native=this.native,process.nextTick(()=>{n.handleError(new Error("Client was closed and is not queryable"))}),i):(this._queryQueue.length>0&&!this.pipeline&&Mce(),this._queryQueue.push(n),this._pulseQueryQueue(),i):(n.native=this.native,process.nextTick(()=>{n.handleError(new Error("Client has encountered a connection error and is not queryable"))}),i)};Lt.prototype.end=function(t){let e=this;this._ending=!0,this._connecting&&!this._connected&&this.once("connect",()=>{this.end(()=>{})});let r;t||(r=new this._Promise(function(i,s){t=o=>o?s(o):i()}));let n=function(){e.native.end(function(){e._connected=!1,e._errorAllQueries(new Error("Connection terminated")),process.nextTick(()=>{e.emit("end"),t&&t()})})};return this.pipeline&&(this._pipelineInFlight||this._queryQueue.length>0)?this.once("drain",n):n(),r};Lt.prototype._hasActiveQuery=function(){return this._activeQuery&&this._activeQuery.state!=="error"&&this._activeQuery.state!=="end"};Lt.prototype._pulseQueryQueue=function(t){if(!this._connected)return;if(this.pipeline&&!t)return this._pulsePipelinedQueryQueue();if(this._hasActiveQuery())return;let e=this._queryQueue.shift();if(!e){t||this.emit("drain");return}this._activeQuery=e,e.submit(this);let r=this;e.once("_done",function(){r._pulseQueryQueue()})};Lt.prototype._pulsePipelinedQueryQueue=function(){if(!this._connected||this._pipelineInFlight)return;if(this._queryQueue.length===0){this.hasExecuted&&this.emit("drain");return}this._pipelineInFlight=!0;let t=this,e=[],r=[],n=_o();for(;this._queryQueue.length>0;){let i=this._queryQueue.shift();this.hasExecuted=!0,r.push(i);let s=i.values?i.values.map(n.prepareValue):null,o={text:i.text,name:i.name};s&&(o.values=s),i.name&&this.namedQueries[i.name]&&(o._alreadyPrepared=!0),e.push(o)}this.native.pipeline(e,function(i,s){if(t._pipelineInFlight=!1,i){for(let o=0;o<r.length;o++){let a=r[o];a.native=t.native,a.handleError(i)}t._pulsePipelinedQueryQueue();return}for(let o=0;o<r.length;o++){let a=r[o],c=s[o];a.native=t.native,c.err?a.handleError(c.err):(a.name&&(t.namedQueries[a.name]=a.text),a.state="end",a.emit("end",c.result),a.callback&&a.callback(null,c.result)),setImmediate(function(){a.emit("_done")})}t._pulsePipelinedQueryQueue()})};Lt.prototype.cancel=function(t){this._activeQuery===t?this.native.cancel(function(){}):this._queryQueue.indexOf(t)!==-1&&this._queryQueue.splice(this._queryQueue.indexOf(t),1)};Lt.prototype.ref=function(){};Lt.prototype.unref=function(){};Lt.prototype.setTypeParser=function(t,e,r){return this._types.setTypeParser(t,e,r)};Lt.prototype.getTypeParser=function(t,e){return this._types.getTypeParser(t,e)};Lt.prototype.isConnected=function(){return this._connected};Lt.prototype.getTransactionStatus=function(){return this.native.getTransactionStatus()}});var yx=h((tDe,BL)=>{"use strict";BL.exports=GL()});var mx=h((nDe,Qf)=>{"use strict";var Nce=KL(),Lce=pu(),qce=ax(),Fce=KS(),$ce=_o(),Uce=NL(),Jce=qf(),{DatabaseError:zce}=ix(),{escapeIdentifier:Gce,escapeLiteral:Bce}=_o(),Hce=t=>class extends Uce{constructor(r){super(r,t)}},HL=function(t){this.defaults=Lce,this.Client=t,this.Query=this.Client.Query,this.Pool=Hce(this.Client),this._pools=[],this.Connection=qce,this.types=du(),this.DatabaseError=zce,this.TypeOverrides=Jce,this.escapeIdentifier=Gce,this.escapeLiteral=Bce,this.Result=Fce,this.utils=$ce},VL=Nce,WL=!1;try{WL=!!process.env.NODE_PG_FORCE_NATIVE}catch{}WL&&(VL=yx());Qf.exports=new HL(VL);Object.defineProperty(Qf.exports,"native",{configurable:!0,enumerable:!1,get(){let t=null;try{t=new HL(yx())}catch(e){if(e.code!=="MODULE_NOT_FOUND")throw e}return Object.defineProperty(Qf.exports,"native",{value:t}),t}})});var jr,iDe,sDe,oDe,aDe,cDe,lDe,uDe,dDe,pDe,fDe,mDe,YL,QL=R(()=>{jr=tt(mx(),1),iDe=jr.default.Client,sDe=jr.default.Pool,oDe=jr.default.Connection,aDe=jr.default.types,cDe=jr.default.Query,lDe=jr.default.DatabaseError,uDe=jr.default.escapeIdentifier,dDe=jr.default.escapeLiteral,pDe=jr.default.Result,fDe=jr.default.TypeOverrides,mDe=jr.default.defaults,YL=jr.default});function XL(t=process.env){return t.CLAUDE_MEM_SERVER_DATABASE_URL||null}function yu(t={}){let e=t.env??process.env,r=XL(e);if(!r){if(t.requireDatabaseUrl)throw new Error("Postgres requires CLAUDE_MEM_SERVER_DATABASE_URL");return null}return{connectionString:r,max:Xf(e.CLAUDE_MEM_POSTGRES_POOL_MAX,Vce),idleTimeoutMillis:Xf(e.CLAUDE_MEM_POSTGRES_IDLE_TIMEOUT_MS,Wce),connectionTimeoutMillis:Xf(e.CLAUDE_MEM_POSTGRES_CONNECTION_TIMEOUT_MS,Yce),statementTimeoutMillis:Xf(e.CLAUDE_MEM_POSTGRES_STATEMENT_TIMEOUT_MS,Qce),ssl:Xce(r,e)}}function Xf(t,e){if(!t)return e;let r=Number.parseInt(t,10);return Number.isFinite(r)&&r>0?r:e}function Xce(t,e){if(e.CLAUDE_MEM_POSTGRES_SSL==="disable"||e.PGSSLMODE==="disable")return!1;if(e.CLAUDE_MEM_POSTGRES_SSL==="require"||e.PGSSLMODE==="require")return{rejectUnauthorized:!1};try{if(new URL(t).searchParams.get("sslmode")==="require")return{rejectUnauthorized:!1}}catch(r){let n=r instanceof Error?r:new Error(String(r));return x.warn("DB","Failed to parse Postgres connection string for sslmode, defaulting SSL off",{},n),!1}return!1}var Vce,Wce,Yce,Qce,Zf=R(()=>{"use strict";fe();Vce=10,Wce=3e4,Yce=5e3,Qce=3e4});function em(t){return new Zce({connectionString:t.connectionString,max:t.max,idleTimeoutMillis:t.idleTimeoutMillis,connectionTimeoutMillis:t.connectionTimeoutMillis,statement_timeout:t.statementTimeoutMillis,ssl:t.ssl})}function gx(t={}){if(ac)return ac;let e=yu({requireDatabaseUrl:t.requireDatabaseUrl??!0});if(!e)throw new Error("Postgres requires CLAUDE_MEM_SERVER_DATABASE_URL");return ac=em(e),ac}async function In(t,e){let r=await t.connect();try{await r.query("BEGIN");let n=await e(r);return await r.query("COMMIT"),n}catch(n){let i=n instanceof Error?n:new Error(String(n));throw x.warn("DB","Postgres transaction rolled back",{},i),await r.query("ROLLBACK"),n}finally{r.release()}}async function ele(t){t===ac&&(ac=null),await t.end()}var Zce,ac,Ao=R(()=>{"use strict";QL();Zf();fe();({Pool:Zce}=YL),ac=null});var cc,bx=R(()=>{"use strict";Ao();cc=class{constructor(e){this.pool=e}pool;async deleteObservation(e){return((await this.pool.query("DELETE FROM observations WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId])).rowCount??0)>0}async purgeProjectMemory(e){let{projectId:r,teamId:n}=e;return In(this.pool,async i=>{let s=async u=>(await i.query(`DELETE FROM ${u} WHERE project_id = $1 AND team_id = $2`,[r,n])).rowCount??0,o=await s("observations"),a=await s("observation_generation_jobs"),c=await s("agent_events"),l=await s("server_sessions");return{observations:o,agentEvents:c,sessions:l,jobs:a}})}}});function eq(){return(t,e,r)=>{let n=t.header(tle),i=n&&ile(n)?n:(0,ZL.randomUUID)();t.requestId=i,e.setHeader("X-Request-Id",i),r()}}function ile(t){return typeof t!="string"||t.length===0||t.length>rle?!1:nle.test(t)}var ZL,tle,rle,nle,tq=R(()=>{"use strict";ZL=require("crypto"),tle="x-request-id",rle=64,nle=/^[A-Za-z0-9][A-Za-z0-9\-_]{0,63}$/});var rq,nq=R(()=>{rq="x-hono-already-sent"});var iq,sq=R(()=>{iq=t=>((...e)=>{if(typeof e[0]=="function"){let[r,n]=e;return async function(s,o){let a=await r(s),c=await t(s,a,n);if(c)return c;await o()}}else{let[r,n,i]=e;return(async()=>{let s=await t(r,n,i);if(!s)throw new Error("Failed to upgrade WebSocket");return s})()}})});async function Rle(t){return Promise.race([t,Promise.resolve().then(()=>Promise.resolve(void 0))])}function Sq(t,e,r){let n=a=>{t.cancel(a).catch(()=>{})};return e.on("close",n),e.on("error",n),(r??t.read()).then(o,i),t.closed.finally(()=>{e.off("close",n),e.off("error",n)});function i(a){a&&e.destroy(a)}function s(){t.read().then(o,i)}function o({done:a,value:c}){try{if(a)e.end();else if(!e.write(c))e.once("drain",s);else return t.read().then(o,i)}catch(l){i(l)}}}function pq(t,e){if(t.locked)throw new TypeError("ReadableStream is locked.");return e.destroyed?void 0:Sq(t.getReader(),e)}var Tn,Ex,Wn,sle,ole,tm,oq,aq,kx,mq,Ax,hq,ale,cle,lle,ule,dle,ple,uc,yq,fle,mle,vx,Sx,gq,Rx,cq,nm,lq,hle,bs,ji,dc,vu,bq,vq,gu,xx,wx,gs,rm,Ki,uq,bu,im,Eu,yle,gle,ble,vle,Ele,Sle,xle,Ox,wle,dq,_le,Qn,Ile,ys,_x,lc,Pi,sm,Yn,Tle,kle,Ale,Ix,om,fq,Ole,Cle,xq,jle,Ple,Kle,wq,am,Tx,_q,Iq,Dle,Cx,Mle,Nle,Lle,qle,Fle,RDe,Tq=R(()=>{nq();Tn=require("node:http2"),Ex=require("node:stream");sq();Wn=class extends Error{constructor(t,e){super(t,e),this.name="RequestError"}},sle=new Set(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","server","user-agent"]),ole=/^[!#$%&'*+\-.^_`|~\dA-Za-z]+$/,tm=t=>t===9||t===10||t===13||t===32,oq=t=>{if(!tm(t.charCodeAt(0))&&!tm(t.charCodeAt(t.length-1)))return t;let e=0,r=t.length;for(;e<r&&tm(t.charCodeAt(e));)e++;for(;r>e&&tm(t.charCodeAt(r-1));)r--;return t.slice(e,r)},aq=/[\0\r\n]/,kx=globalThis.Headers,mq=(t,e=kx)=>{let r=new e;for(let n=0;n<t.length;n+=2){let i=t[n];i.startsWith(":")||r.append(i,t[n+1])}return r},Ax=class{#e;#t;#n;#i;constructor(t){this.#e=t,t instanceof Tn.Http2ServerRequest&&(this.#t=t.rawHeaders.slice())}get#s(){return this.#t??=this.#e.rawHeaders.slice()}get#r(){return this.#n||(this.#n=mq(this.#s),this.#t=void 0),this.#n}#o(t){if(typeof t=="string"){if(!ole.test(t))throw new TypeError(`Invalid header name: ${t}`);return t.toLowerCase()}}#a(t){let e=this.#e instanceof Tn.Http2ServerRequest?void 0:this.#e.headers;if(!e||sle.has(t)||t==="set-cookie"||t==="__proto__")return;if(!Object.hasOwn(e,t))return null;let r=e[t];if(typeof r=="string"){let n=oq(r);return aq.test(n)?void 0:n}}#c(t,e){let r=e==="cookie"?"; ":", ",n=null;for(let i=0;i<t.length;i+=2){let s=t[i];if(s.length===e.length&&s.toLowerCase()===e){let o=oq(t[i+1]);if(aq.test(o)){this.#i=!0;return}n=n===null?o:n+r+o}}return n}append(t,e){this.#r.append(t,e)}delete(t){this.#r.delete(t)}get(t){let e=this.#o(t);if(e&&!this.#n&&!this.#i){let r=this.#a(e);if(r!==void 0)return r;let n=this.#c(this.#s,e);if(n!==void 0)return n}return this.#r.get(t)}has(t){let e=this.#o(t);if(e&&!this.#n&&!this.#i){let r=this.#a(e);if(r!==void 0)return r!==null;let n=this.#c(this.#s,e);if(n!==void 0)return n!==null}return this.#r.has(t)}set(t,e){this.#r.set(t,e)}getSetCookie(){return this.#r.getSetCookie()}keys(){return this.#r.keys()}values(){return this.#r.values()}entries(){return this.#r.entries()}forEach(t,e){this.#r.forEach((r,n)=>{t.call(e,r,n,this)})}[Symbol.iterator](){return this.entries()}};Object.defineProperty(Ax.prototype,Symbol.for("nodejs.util.inspect.custom"),{value:function(t,e,r){return`Headers (lightweight) ${r(Object.fromEntries(this),{...e,depth:t==null?null:t-1})}`}});Object.setPrototypeOf(Ax.prototype,kx.prototype);hq=t=>globalThis.Headers===kx?new Ax(t):mq(t.rawHeaders,globalThis.Headers),ale=/^\/[!#$&-;=?-\[\]_a-z~]*$/,cle=/\/\.\.?(?:[/?#]|$)/,lle=/^[a-z0-9._-]+(?::(?:[1-5]\d{3,4}|[6-9]\d{3}))?$/,ule=(t,e,r)=>{let n=`${t}://${e}${r}`;if(lle.test(e)){if(r.length===0)return n+"/";if(r.charCodeAt(0)!==47)throw new Wn("Invalid URL");return!ale.test(r)||cle.test(r)?new URL(n).href:n}else{let i=new URL(n);if(i.hostname.length!==e.length&&i.hostname!==(e.includes(":")?e.replace(/:\d+$/,""):e).toLowerCase())throw new Wn("Invalid host header");return i.href}},dle=t=>t instanceof Wn?t:new Wn(t.message,{cause:t}),ple=global.Request,uc=class extends ple{constructor(t,e){if(typeof t=="object"&&bs in t){let r=e!==void 0&&"body"in e&&e.body!=null;if(t[Ki]&&!r)throw new TypeError("Cannot construct a Request with a Request object that has already been used.");t=t[bs]()}typeof e?.body?.getReader<"u"&&(e.duplex??="half"),super(t,e)}},yq=Symbol("wrapBodyStream"),fle=new Set(["latin1","binary","hex","base64","base64url"]),mle=t=>t===null||fle.has(t),vx=Symbol("bodyBufferedBeforeDisconnect"),Sx=Symbol("bodyBufferedLengthBeforeDisconnect"),gq=(t,e)=>Buffer.isBuffer(t)?t:Buffer.from(t,e??"utf8"),Rx=t=>!(t instanceof Tn.Http2ServerRequest)&&!!t.complete&&!!t.readableAborted&&typeof t.read=="function"&&mle(t.readableEncoding),cq=t=>{if(t.readableDidRead||!Rx(t))return;let e=t;e[Sx]??=t.readableLength},nm=(t,e)=>{if(t.readableDidRead&&!e||!Rx(t))return;let r=t;if(r[vx]!==void 0)return r[vx];let n,i=t.errored;if(i&&i.code!=="ECONNRESET")n=i;else if(r[Sx]!==void 0&&t.readableLength!==r[Sx])n=im();else{let s=e??[],o=t.read();o!==null&&s.push(gq(o,t.readableEncoding));let a=s.length===1?s[0]:Buffer.concat(s);n=a;let c=t.headers["content-length"];if(typeof c=="string"&&/^\d+$/.test(c)){let l=Number(c);Number.isSafeInteger(l)&&a.length!==l&&(n=im())}}return r[vx]=n,n},lq=(t,e)=>{if(e instanceof Error){t.error(e);return}e.length>0&&t.enqueue(e),t.close()},hle=(t,e,r,n,i)=>{let s={method:t,headers:r,signal:i.signal};if(t==="TRACE"){s.method="GET";let o=new uc(e,s);return Object.defineProperty(o,"method",{get(){return"TRACE"}}),o}if(!(t==="GET"||t==="HEAD"))if("rawBody"in n&&n.rawBody instanceof Buffer)s.body=new ReadableStream({start(o){o.enqueue(n.rawBody),o.close()}});else if(n[yq]){let o;s.body=new ReadableStream({async pull(a){try{if(!o){let u=nm(n);if(u!==void 0){lq(a,u);return}}o||=Ex.Readable.toWeb(n).getReader();let{done:c,value:l}=await o.read();c?a.close():a.enqueue(l)}catch(c){a.error(c)}}})}else{let o=nm(n);o!==void 0?s.body=new ReadableStream({start(a){lq(a,o)}}):s.body=Ex.Readable.toWeb(n)}return new uc(e,s)},bs=Symbol("getRequestCache"),ji=Symbol("requestCache"),dc=Symbol("incomingKey"),vu=Symbol("urlKey"),bq=Symbol("methodKey"),vq=Symbol("headersKey"),gu=Symbol("abortControllerKey"),xx=Symbol("getAbortController"),wx=Symbol("abortRequest"),gs=Symbol("bodyBuffer"),rm=Symbol("bodyReadPromise"),Ki=Symbol("bodyConsumedDirectly"),uq=Symbol("bodyLockReader"),bu=Symbol("abortReason"),im=()=>new TypeError("Body is unusable"),Eu=()=>Promise.reject(im()),yle=new TextDecoder,gle=t=>{if(t[Ki])return Eu();t[Ki]=!0},ble=t=>t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength),vle=t=>(t[vq]||=hq(t[dc])).get("content-type")||"",Ele=/^[!#$%&'*+\-.^_`|~0-9A-Za-z]+$/,Sle=t=>{if(typeof t!="string"||t.length===0)return"GET";switch(t){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"PATCH":case"POST":case"PUT":case"QUERY":return t}let e=t.toUpperCase();switch(e){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"POST":case"PUT":return e;default:return t}},xle=t=>{if(!Ele.test(t))return new TypeError(`'${t}' is not a valid HTTP method.`);let e=t.toUpperCase();if(e==="CONNECT"||e==="TRACK"||e==="TRACE"&&t!=="TRACE")return new TypeError(`'${t}' HTTP method is unsupported.`)},Ox=(t,e,r)=>{if(t[Ki])return Eu();let n=t.method;if(n==="GET"||n==="HEAD")return t[bs]()[e]();let i=xle(n);if(i)return Promise.reject(i);if(t[ji]&&n!=="TRACE")return t[ji][e]();let s=gle(t);if(s)return s;let o=wle(t);if(o){let a=Promise.resolve(r(o,t));return t[gs]=void 0,a}return _le(t).then(a=>{let c=r(a,t);return t[gs]=void 0,c})},wle=t=>{let e=t[dc];if("rawBody"in e&&e.rawBody instanceof Buffer)return e.rawBody},dq=(t,e)=>{if(e.errored)return e.errored;let r=t[bu];return r!==void 0?r instanceof Error?r:new Error(String(r)):new Error("Client connection prematurely closed.")},_le=t=>{if(t[gs])return Promise.resolve(t[gs]);if(t[rm])return t[rm];let e=t[dc];if(e.readableDidRead)return Eu();let r=nm(e);if(r!==void 0)return r instanceof Error?Promise.reject(r):(t[gs]=r,Promise.resolve(r));let n=new Promise((i,s)=>{let o=[],a=!1,c=y=>{a||(a=!0,m(),y())},l=y=>{let b=e.errored??y;return!Rx(e)||b&&b.code!=="ECONNRESET"?!1:(c(()=>{let v=nm(e,o);v instanceof Error?s(v):v===void 0?s(y??dq(t,e)):(t[gs]=v,i(v))}),!0)},u=y=>{o.push(gq(y,e.readableEncoding))},d=()=>{c(()=>{let y=o.length===1?o[0]:Buffer.concat(o);t[gs]=y,i(y)})},p=y=>{l(y)||c(()=>{s(y)})},f=()=>{if(e.readableEnded){d();return}l()||c(()=>{s(dq(t,e))})},m=()=>{e.off("data",u),e.off("end",d),e.off("error",p),e.off("close",f),t[rm]=void 0};e.on("data",u),e.on("end",d),e.on("error",p),e.on("close",f),queueMicrotask(()=>{a||(e.readableEnded?d():e.errored?p(e.errored):e.destroyed&&f())})});return t[rm]=n,n},Qn={get method(){return this[bq]},get url(){return this[vu]},get headers(){return this[vq]||=hq(this[dc])},[wx](t){this[bu]===void 0&&(this[bu]=t);let e=this[gu];e&&!e.signal.aborted&&e.abort(t)},[xx](){return this[gu]||=new AbortController,this[bu]!==void 0&&!this[gu].signal.aborted&&this[gu].abort(this[bu]),this[gu]},[bs](){let t=this[xx]();if(this[ji])return this[ji];let e=this.method;if(this[Ki]&&!(e==="GET"||e==="HEAD")){this[gs]=void 0;let r={method:e==="TRACE"?"GET":e,headers:this.headers,signal:t.signal};e!=="TRACE"&&(r.body=new ReadableStream({start(i){i.close()}}),r.duplex="half");let n=new uc(this[vu],r);return e==="TRACE"&&Object.defineProperty(n,"method",{get(){return"TRACE"}}),this[ji]=n}return this[ji]=hle(this.method,this[vu],this.headers,this[dc],t)},get body(){if(!this[Ki])return this[bs]().body;let t=this[bs]();return!this[uq]&&t.body&&(this[uq]=t.body.getReader()),t.body},get bodyUsed(){return this[Ki]?!0:this[ji]?this[ji].bodyUsed:!1}};Object.defineProperty(Qn,"signal",{get(){return this[xx]().signal}});["cache","credentials","destination","integrity","mode","redirect","referrer","referrerPolicy","keepalive"].forEach(t=>{Object.defineProperty(Qn,t,{get(){return this[bs]()[t]}})});["clone","formData"].forEach(t=>{Object.defineProperty(Qn,t,{value:function(){if(this[Ki]){if(t==="clone")throw im();return Eu()}return this[bs]()[t]()}})});Object.defineProperty(Qn,"text",{value:function(){return Ox(this,"text",t=>yle.decode(t))}});Object.defineProperty(Qn,"arrayBuffer",{value:function(){return Ox(this,"arrayBuffer",t=>ble(t))}});Object.defineProperty(Qn,"blob",{value:function(){return Ox(this,"blob",(t,e)=>{let r=vle(e),n=r?{headers:{"content-type":r}}:void 0;return new Response(t,n).blob()})}});Object.defineProperty(Qn,"json",{value:function(){return this[Ki]?Eu():this.text().then(JSON.parse)}});Object.defineProperty(Qn,Symbol.for("nodejs.util.inspect.custom"),{value:function(t,e,r){return`Request (lightweight) ${r({method:this.method,url:this.url,headers:this.headers,nativeRequest:this[ji]},{...e,depth:t==null?null:t-1})}`}});Object.setPrototypeOf(Qn,uc.prototype);Ile=(t,e)=>{let r=Object.create(Qn);r[dc]=t,r[bq]=Sle(t.method);let n=t.url||"";if(n[0]!=="/"&&(n.startsWith("http://")||n.startsWith("https://"))){if(t instanceof Tn.Http2ServerRequest)throw new Wn("Absolute URL for :path is not allowed in HTTP/2");try{r[vu]=new URL(n).href}catch(o){throw new Wn("Invalid absolute URL",{cause:o})}return r}let i=(t instanceof Tn.Http2ServerRequest?t.authority:t.headers.host)||e;if(!i)throw new Wn("Missing host header");let s;if(t instanceof Tn.Http2ServerRequest){if(s=t.scheme,!(s==="http"||s==="https"))throw new Wn("Unsupported scheme")}else s=t.socket&&t.socket.encrypted?"https":"http";try{r[vu]=ule(s,i,n)}catch(o){throw o instanceof Wn?o:new Wn("Invalid URL",{cause:o})}return r},ys="text/plain; charset=UTF-8",_x=Symbol("responseCache"),lc=Symbol("getResponseCache"),Pi=Symbol("cache"),sm=global.Response,Yn=class Eq{#e;#t;[lc](){let e=this[Pi],r=e&&e[2]instanceof Headers?e[2]:void 0;return delete this[Pi],this[_x]||=new sm(this.#e,r?{status:this.#t?.status,statusText:this.#t?.statusText,headers:r}:this.#t)}constructor(e,r){let n;if(this.#e=e,r instanceof sm){let i=r[_x];if(i){this.#t=i,this[lc]();return}this.#t=r instanceof Eq?r.#t:r,n=new Headers(r.headers)}else this.#t=r;(e==null||typeof e=="string"||typeof e?.getReader<"u"||e instanceof Blob||e instanceof Uint8Array)&&(this[Pi]=[r?.status||200,e??null,n||r?.headers])}get headers(){let e=this[Pi];return e?(e[2]instanceof Headers||(e[2]=new Headers(e[2]||(e[1]===null?void 0:{"content-type":ys}))),e[2]):this[lc]().headers}get status(){return this[Pi]?.[0]??this[lc]().status}get ok(){let e=this.status;return e>=200&&e<300}};["body","bodyUsed","redirected","statusText","trailers","type","url"].forEach(t=>{Object.defineProperty(Yn.prototype,t,{get(){return this[lc]()[t]}})});["arrayBuffer","blob","clone","formData","json","text"].forEach(t=>{Object.defineProperty(Yn.prototype,t,{value:function(){return this[lc]()[t]()}})});Object.defineProperty(Yn.prototype,Symbol.for("nodejs.util.inspect.custom"),{value:function(t,e,r){return`Response (lightweight) ${r({status:this.status,headers:this.headers,ok:this.ok,nativeResponse:this[_x]},{...e,depth:t==null?null:t-1})}`}});Object.setPrototypeOf(Yn,sm);Object.setPrototypeOf(Yn.prototype,sm.prototype);Tle=/^https?:\/\/[!#-;=?-[\]_a-z~A-Z]+$/,kle=t=>t instanceof URL?t.href:Tle.test(t)?t:new URL(t).href,Ale=new Set([301,302,303,307,308]);Object.defineProperty(Yn,"redirect",{value:function(e,r=302){if(!Ale.has(r))throw new RangeError("Invalid status code");return new Yn(null,{status:r,headers:{location:kle(e)}})},writable:!0,configurable:!0});Object.defineProperty(Yn,"json",{value:function(e,r){let n=JSON.stringify(e);if(n===void 0)throw new TypeError("The data is not JSON serializable");let i=r?.headers,s;return i?(s=new Headers(i),s.has("content-type")||s.set("content-type","application/json")):s={"content-type":"application/json"},new Yn(n,{status:r?.status??200,statusText:r?.statusText,headers:s})},writable:!0,configurable:!0});Ix=(t,e)=>{let r={};if(t instanceof Headers||(t=new Headers(t??void 0)),t.has("set-cookie")){let n=[];for(let[i,s]of t)i==="set-cookie"?n.push(s):r[i]=s;n.length>0&&(r["set-cookie"]=n)}else for(let[n,i]of t)r[n]=i;return e&&(r["content-type"]??=e),r},om=Symbol("outgoingEnded"),fq=Symbol("incomingDraining"),Ole=500,Cle=64*1024*1024,xq=t=>{let e=t;if(t.destroyed||e[fq])return;if(e[fq]=!0,t instanceof Tn.Http2ServerRequest){try{t.stream?.close?.(Tn.constants.NGHTTP2_NO_ERROR)}catch{}return}let r=0,n=()=>{clearTimeout(s),t.off("data",o),t.off("end",n),t.off("error",n)},i=()=>{n();let a=t.socket;a&&!a.destroyed&&(typeof a.destroySoon=="function"?a.destroySoon():typeof a.destroy=="function"&&a.destroy())},s=setTimeout(i,Ole);s.unref?.();let o=a=>{r+=a.length,r>Cle&&i()};t.on("data",o),t.on("end",n),t.on("error",n),t.resume()},jle=(t,e,r,n)=>()=>{e.errored?(cq(e),t[wx](e.errored.toString())):r.writableFinished||(cq(e),t[wx]("Client connection prematurely closed.")),n&&!e.readableEnded&&setTimeout(()=>{e.readableEnded||setTimeout(()=>{xq(e)})})},Ple=t=>{if(!(Pi in t))return!1;let e=t[Pi][1];return e===null||typeof e=="string"||e instanceof Uint8Array},Kle=()=>new Response(null,{status:400}),wq=t=>new Response(null,{status:t instanceof Error&&(t.name==="TimeoutError"||t.constructor.name==="TimeoutError")?504:500}),am=(t,e)=>{let r=t instanceof Error?t:new Error("unknown error",{cause:t});r.code==="ERR_STREAM_PREMATURE_CLOSE"?console.info("The user aborted a request."):(console.error(t),e.headersSent||e.writeHead(500,{"Content-Type":"text/plain"}),e.end(`Error: ${r.message}`),e.destroy(r))},Tx=t=>{"flushHeaders"in t&&t.writable&&t.flushHeaders()},_q=async(t,e)=>{let[r,n,i]=t[Pi];if(!i){n===null?(e.writeHead(r),e.end()):typeof n=="string"?(e.writeHead(r,{"Content-Type":ys,"Content-Length":Buffer.byteLength(n)}),e.end(n)):n instanceof Uint8Array?(e.writeHead(r,{"Content-Type":ys,"Content-Length":n.byteLength}),e.end(n)):n instanceof Blob?(e.writeHead(r,{"Content-Type":ys,"Content-Length":n.size}),e.end(new Uint8Array(await n.arrayBuffer()))):(e.writeHead(r,{"Content-Type":ys}),Tx(e),await pq(n,e)?.catch(o=>am(o,e))),e[om]?.();return}let s=!1;if(i instanceof Headers)s=i.has("content-length"),i=Ix(i,n===null?void 0:ys);else if(Array.isArray(i)){let o=new Headers(i);s=o.has("content-length"),i=Ix(o,n===null?void 0:ys)}else for(let o in i)if(o.length===14&&o.toLowerCase()==="content-length"){s=!0;break}s||(typeof n=="string"?i["Content-Length"]=Buffer.byteLength(n):n instanceof Uint8Array?i["Content-Length"]=n.byteLength:n instanceof Blob&&(i["Content-Length"]=n.size)),e.writeHead(r,i),n==null?e.end():typeof n=="string"||n instanceof Uint8Array?e.end(n):n instanceof Blob?e.end(new Uint8Array(await n.arrayBuffer())):(Tx(e),await pq(n,e)?.catch(o=>am(o,e))),e[om]?.()},Iq=t=>typeof t.then=="function",Dle=async(t,e,r={})=>{if(Iq(t))if(r.errorHandler)try{t=await t}catch(i){let s=await r.errorHandler(i);if(!s)return;t=s}else t=await t.catch(wq);if(Pi in t)return _q(t,e);let n=Ix(t.headers,t.body===null?void 0:ys);if(t.body){let i=t.body.getReader(),s=[],o=!1,a;if(n["transfer-encoding"]!=="chunked"){let c=2;for(let l=0;l<c;l++){a||=i.read();let u=await Rle(a).catch(d=>{console.error(d),o=!0});if(!u){if(l===1){await new Promise(d=>setTimeout(d)),c=3;continue}break}if(a=void 0,u.value&&s.push(u.value),u.done){o=!0;break}}o&&!("content-length"in n)&&(n["content-length"]=s.reduce((l,u)=>l+u.length,0))}e.writeHead(t.status,n),s.forEach(c=>{e.write(c)}),o?e.end():(s.length===0&&Tx(e),await Sq(i,e,a))}else n[rq]||(e.writeHead(t.status,n),e.end());e[om]?.()},Cx=(t,e={})=>{let r=e.autoCleanupIncoming??!0;return e.overrideGlobalObjects!==!1&&global.Request!==uc&&(Object.defineProperty(global,"Request",{value:uc}),Object.defineProperty(global,"Response",{value:Yn})),async(n,i)=>{let s,o,a=!1,c=!1,l=()=>{!o||c||(c=!0,i.on("close",jle(o,n,i,a)))};try{if(o=Ile(n,e.hostname),a=r&&!(n.method==="GET"||n.method==="HEAD"),a&&(n[yq]=!0,n instanceof Tn.Http2ServerRequest&&(i[om]=()=>{n.readableEnded||setTimeout(()=>{n.readableEnded||setTimeout(()=>{n.destroy(),i.destroy()})})})),s=t(o,{incoming:n,outgoing:i}),!Iq(s)&&Ple(s))return a&&!n.readableEnded&&i.once("finish",()=>{n.readableEnded||xq(n)}),_q(s,i);l()}catch(u){if(s)return am(u,i);if(e.errorHandler){if(l(),s=await e.errorHandler(o?u:dle(u)),!s)return}else o?s=wq(u):s=Kle()}try{return await Dle(s,i,e)}catch(u){return am(u,i)}}},Mle=globalThis.CloseEvent??class extends Event{#e;constructor(t,e={}){super(t,e),this.#e=e}get wasClean(){return this.#e.wasClean??!1}get code(){return this.#e.code??0}get reason(){return this.#e.reason??""}},Nle=globalThis.ErrorEvent??class extends Event{#e;constructor(t,e={}){super(t,e),this.#e=e}get message(){return this.#e.message??""}get filename(){return this.#e.filename??""}get lineno(){return this.#e.lineno??0}get colno(){return this.#e.colno??0}get error(){return this.#e.error??null}},Lle=()=>Symbol("connection"),qle=Symbol("CONNECTION_SYMBOL_KEY"),Fle=Symbol("WAIT_FOR_WEBSOCKET_SYMBOL"),RDe=iq(async(t,e,r)=>{if(t.req.header("upgrade")?.toLowerCase()!=="websocket")return;let n=t.env,i=n[Fle];if(!i||!n.incoming)return new Response(null,{status:500});let s=Lle();return n[qle]=s,(async()=>{let o;try{o=await i(n.incoming,s)}catch{return}let a=[],c=(d,p)=>{a.push([d,p])};o.on("message",c);let l={binaryType:"arraybuffer",close(d,p){o.close(d,p)},protocol:o.protocol,raw:o,get readyState(){return o.readyState},send(d,p){o.send(d,{compress:p?.compress})},url:new URL(t.req.url)};try{e?.onOpen?.(new Event("open"),l)}catch(d){(r?.onError??console.error)(d)}let u=(d,p)=>{let f=Array.isArray(d)?d:[d];for(let m of f)try{e?.onMessage?.(new MessageEvent("message",{data:p?m instanceof ArrayBuffer?m:m.buffer.slice(m.byteOffset,m.byteOffset+m.byteLength):typeof m=="string"?m:Buffer.from(m).toString("utf-8")}),l)}catch(y){(r?.onError??console.error)(y)}};o.off("message",c);for(let d of a)u(...d);o.on("message",(d,p)=>{u(d,p)}),o.on("close",(d,p)=>{try{e?.onClose?.(new Mle("close",{code:d,reason:p.toString()}),l)}catch(f){(r?.onError??console.error)(f)}}),o.on("error",d=>{try{e?.onError?.(new Nle("error",{error:d}),l)}catch(p){(r?.onError??console.error)(p)}})})(),new Response})});function $le(t){if(t)try{return kq.default.parse(t).type}catch{let e=(t.split(";",1)[0]??"").trim().toLowerCase();return e===""||t.slice(e.length).includes(",")?void 0:e}}function Aq(t){return t==="application/json"?!0:$le(t)==="application/json"}var kq,Rq=R(()=>{kq=tt(rE(),1)});function Oq(t,e){if(!Number.isFinite(t)||t<1)return;let r=setInterval(e,Math.min(t,2147483647));return r.unref?.(),r}var Cq=R(()=>{});var g,Px,jq,fc,vs,lm,Et,Pq,Kq,LDe,Ule,Jle,Kx,Pr,Su,Dq,qt,tn,rn,Ft,um,Mq,Di,Nq,Lq,Dx,Mi,be,Mx,mc,Nx,qDe,dm,zle,pm,Gle,xu,pc,qq,Ble,Hle,Vle,Wle,Yle,Qle,fm,Lx,Xle,Zle,qx,mm,eue,tue,hm,rue,wu,_u,nue,Iu,hc,iue,Tu,ym,gm,bm,FDe,vm,Em,Sm,Fq,$q,Uq,Fx,Jq,ku,yc,zq,sue,oue,aue,cue,lue,$x,uue,due,pue,fue,mue,hue,yue,gue,bue,vue,Eue,Sue,xue,wue,_ue,Iue,Ux,Jx,zx,Tue,kue,Aue,Gx,Rue,Oue,Cue,jue,Pue,Gq,Bx,Kue,xm,$De,Due,Au,Mue,UDe,Ru,Nue,Hx,Lue,que,Fue,$ue,Uue,Jue,zue,cm,Gue,Bue,Hue,Ou,Vx,Vue,Wue,Yue,Que,Xue,Zue,ede,tde,rde,nde,ide,sde,ode,ade,cde,lde,ude,dde,gc,pde,fde,mde,hde,yde,gde,bde,Wx,vde,JDe,zDe,GDe,BDe,HDe,VDe,ce,jx,bc=R(()=>{g=tt(require("zod/v4"),1),Px="2025-11-25",jq="2025-03-26",fc=[Px,"2025-06-18","2025-03-26","2024-11-05","2024-10-07"],vs="io.modelcontextprotocol/related-task",lm="2.0",Et=g.custom(t=>t!==null&&(typeof t=="object"||typeof t=="function")),Pq=g.union([g.string(),g.number().int()]),Kq=g.string(),LDe=g.looseObject({ttl:g.number().optional(),pollInterval:g.number().optional()}),Ule=g.object({ttl:g.number().optional()}),Jle=g.object({taskId:g.string()}),Kx=g.looseObject({progressToken:Pq.optional(),[vs]:Jle.optional()}),Pr=g.object({_meta:Kx.optional()}),Su=Pr.extend({task:Ule.optional()}),Dq=t=>Su.safeParse(t).success,qt=g.object({method:g.string(),params:Pr.loose().optional()}),tn=g.object({_meta:Kx.optional()}),rn=g.object({method:g.string(),params:tn.loose().optional()}),Ft=g.looseObject({_meta:Kx.optional()}),um=g.union([g.string(),g.number().int()]),Mq=g.object({jsonrpc:g.literal(lm),id:um,...qt.shape}).strict(),Di=t=>Mq.safeParse(t).success,Nq=g.object({jsonrpc:g.literal(lm),...rn.shape}).strict(),Lq=t=>Nq.safeParse(t).success,Dx=g.object({jsonrpc:g.literal(lm),id:um,result:Ft}).strict(),Mi=t=>Dx.safeParse(t).success;(function(t){t[t.ConnectionClosed=-32e3]="ConnectionClosed",t[t.RequestTimeout=-32001]="RequestTimeout",t[t.ParseError=-32700]="ParseError",t[t.InvalidRequest=-32600]="InvalidRequest",t[t.MethodNotFound=-32601]="MethodNotFound",t[t.InvalidParams=-32602]="InvalidParams",t[t.InternalError=-32603]="InternalError",t[t.UrlElicitationRequired=-32042]="UrlElicitationRequired"})(be||(be={}));Mx=g.object({jsonrpc:g.literal(lm),id:um.optional(),error:g.object({code:g.number().int(),message:g.string(),data:g.unknown().optional()})}).strict(),mc=t=>Mx.safeParse(t).success,Nx=g.union([Mq,Nq,Dx,Mx]),qDe=g.union([Dx,Mx]),dm=Ft.strict(),zle=tn.extend({requestId:um.optional(),reason:g.string().optional()}),pm=rn.extend({method:g.literal("notifications/cancelled"),params:zle}),Gle=g.object({src:g.string(),mimeType:g.string().optional(),sizes:g.array(g.string()).optional(),theme:g.enum(["light","dark"]).optional()}),xu=g.object({icons:g.array(Gle).optional()}),pc=g.object({name:g.string(),title:g.string().optional()}),qq=pc.extend({...pc.shape,...xu.shape,version:g.string(),websiteUrl:g.string().optional(),description:g.string().optional()}),Ble=g.intersection(g.object({applyDefaults:g.boolean().optional()}),g.record(g.string(),g.unknown())),Hle=g.preprocess(t=>t&&typeof t=="object"&&!Array.isArray(t)&&Object.keys(t).length===0?{form:{}}:t,g.intersection(g.object({form:Ble.optional(),url:Et.optional()}),g.record(g.string(),g.unknown()).optional())),Vle=g.looseObject({list:Et.optional(),cancel:Et.optional(),requests:g.looseObject({sampling:g.looseObject({createMessage:Et.optional()}).optional(),elicitation:g.looseObject({create:Et.optional()}).optional()}).optional()}),Wle=g.looseObject({list:Et.optional(),cancel:Et.optional(),requests:g.looseObject({tools:g.looseObject({call:Et.optional()}).optional()}).optional()}),Yle=g.object({experimental:g.record(g.string(),Et).optional(),sampling:g.object({context:Et.optional(),tools:Et.optional()}).optional(),elicitation:Hle.optional(),roots:g.object({listChanged:g.boolean().optional()}).optional(),tasks:Vle.optional(),extensions:g.record(g.string(),Et).optional()}),Qle=Pr.extend({protocolVersion:g.string(),capabilities:Yle,clientInfo:qq}),fm=qt.extend({method:g.literal("initialize"),params:Qle}),Lx=t=>fm.safeParse(t).success,Xle=g.object({experimental:g.record(g.string(),Et).optional(),logging:Et.optional(),completions:Et.optional(),prompts:g.object({listChanged:g.boolean().optional()}).optional(),resources:g.object({subscribe:g.boolean().optional(),listChanged:g.boolean().optional()}).optional(),tools:g.object({listChanged:g.boolean().optional()}).optional(),tasks:Wle.optional(),extensions:g.record(g.string(),Et).optional()}),Zle=Ft.extend({protocolVersion:g.string(),capabilities:Xle,serverInfo:qq,instructions:g.string().optional()}),qx=rn.extend({method:g.literal("notifications/initialized"),params:tn.optional()}),mm=qt.extend({method:g.literal("ping"),params:Pr.optional()}),eue=g.object({progress:g.number(),total:g.optional(g.number()),message:g.optional(g.string())}),tue=g.object({...tn.shape,...eue.shape,progressToken:Pq}),hm=rn.extend({method:g.literal("notifications/progress"),params:tue}),rue=Pr.extend({cursor:Kq.optional()}),wu=qt.extend({params:rue.optional()}),_u=Ft.extend({nextCursor:Kq.optional()}),nue=g.enum(["working","input_required","completed","failed","cancelled"]),Iu=g.object({taskId:g.string(),status:nue,ttl:g.union([g.number(),g.null()]),createdAt:g.string(),lastUpdatedAt:g.string(),pollInterval:g.optional(g.number()),statusMessage:g.optional(g.string())}),hc=Ft.extend({task:Iu}),iue=tn.merge(Iu),Tu=rn.extend({method:g.literal("notifications/tasks/status"),params:iue}),ym=qt.extend({method:g.literal("tasks/get"),params:Pr.extend({taskId:g.string()})}),gm=Ft.merge(Iu),bm=qt.extend({method:g.literal("tasks/result"),params:Pr.extend({taskId:g.string()})}),FDe=Ft.loose(),vm=wu.extend({method:g.literal("tasks/list")}),Em=_u.extend({tasks:g.array(Iu)}),Sm=qt.extend({method:g.literal("tasks/cancel"),params:Pr.extend({taskId:g.string()})}),Fq=Ft.merge(Iu),$q=g.object({uri:g.string(),mimeType:g.optional(g.string()),_meta:g.record(g.string(),g.unknown()).optional()}),Uq=$q.extend({text:g.string()}),Fx=g.string().refine(t=>{try{return atob(t),!0}catch{return!1}},{message:"Invalid Base64 string"}),Jq=$q.extend({blob:Fx}),ku=g.enum(["user","assistant"]),yc=g.object({audience:g.array(ku).optional(),priority:g.number().min(0).max(1).optional(),lastModified:g.iso.datetime({offset:!0}).optional()}),zq=g.object({...pc.shape,...xu.shape,uri:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),size:g.optional(g.number()),annotations:yc.optional(),_meta:g.optional(g.looseObject({}))}),sue=g.object({...pc.shape,...xu.shape,uriTemplate:g.string(),description:g.optional(g.string()),mimeType:g.optional(g.string()),annotations:yc.optional(),_meta:g.optional(g.looseObject({}))}),oue=wu.extend({method:g.literal("resources/list")}),aue=_u.extend({resources:g.array(zq)}),cue=wu.extend({method:g.literal("resources/templates/list")}),lue=_u.extend({resourceTemplates:g.array(sue)}),$x=Pr.extend({uri:g.string()}),uue=$x,due=qt.extend({method:g.literal("resources/read"),params:uue}),pue=Ft.extend({contents:g.array(g.union([Uq,Jq]))}),fue=rn.extend({method:g.literal("notifications/resources/list_changed"),params:tn.optional()}),mue=$x,hue=qt.extend({method:g.literal("resources/subscribe"),params:mue}),yue=$x,gue=qt.extend({method:g.literal("resources/unsubscribe"),params:yue}),bue=tn.extend({uri:g.string()}),vue=rn.extend({method:g.literal("notifications/resources/updated"),params:bue}),Eue=g.object({name:g.string(),description:g.optional(g.string()),required:g.optional(g.boolean())}),Sue=g.object({...pc.shape,...xu.shape,description:g.optional(g.string()),arguments:g.optional(g.array(Eue)),_meta:g.optional(g.looseObject({}))}),xue=wu.extend({method:g.literal("prompts/list")}),wue=_u.extend({prompts:g.array(Sue)}),_ue=Pr.extend({name:g.string(),arguments:g.record(g.string(),g.string()).optional()}),Iue=qt.extend({method:g.literal("prompts/get"),params:_ue}),Ux=g.object({type:g.literal("text"),text:g.string(),annotations:yc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Jx=g.object({type:g.literal("image"),data:Fx,mimeType:g.string(),annotations:yc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),zx=g.object({type:g.literal("audio"),data:Fx,mimeType:g.string(),annotations:yc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Tue=g.object({type:g.literal("tool_use"),name:g.string(),id:g.string(),input:g.record(g.string(),g.unknown()),_meta:g.record(g.string(),g.unknown()).optional()}),kue=g.object({type:g.literal("resource"),resource:g.union([Uq,Jq]),annotations:yc.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Aue=zq.extend({type:g.literal("resource_link")}),Gx=g.union([Ux,Jx,zx,Aue,kue]),Rue=g.object({role:ku,content:Gx}),Oue=Ft.extend({description:g.string().optional(),messages:g.array(Rue)}),Cue=rn.extend({method:g.literal("notifications/prompts/list_changed"),params:tn.optional()}),jue=g.object({title:g.string().optional(),readOnlyHint:g.boolean().optional(),destructiveHint:g.boolean().optional(),idempotentHint:g.boolean().optional(),openWorldHint:g.boolean().optional()}),Pue=g.object({taskSupport:g.enum(["required","optional","forbidden"]).optional()}),Gq=g.object({...pc.shape,...xu.shape,description:g.string().optional(),inputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),Et).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()),outputSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),Et).optional(),required:g.array(g.string()).optional()}).catchall(g.unknown()).optional(),annotations:jue.optional(),execution:Pue.optional(),_meta:g.record(g.string(),g.unknown()).optional()}),Bx=wu.extend({method:g.literal("tools/list")}),Kue=_u.extend({tools:g.array(Gq)}),xm=Ft.extend({content:g.array(Gx).default([]),structuredContent:g.record(g.string(),g.unknown()).optional(),isError:g.boolean().optional()}),$De=xm.or(Ft.extend({toolResult:g.unknown()})),Due=Su.extend({name:g.string(),arguments:g.record(g.string(),g.unknown()).optional()}),Au=qt.extend({method:g.literal("tools/call"),params:Due}),Mue=rn.extend({method:g.literal("notifications/tools/list_changed"),params:tn.optional()}),UDe=g.object({autoRefresh:g.boolean().default(!0),debounceMs:g.number().int().nonnegative().default(300)}),Ru=g.enum(["debug","info","notice","warning","error","critical","alert","emergency"]),Nue=Pr.extend({level:Ru}),Hx=qt.extend({method:g.literal("logging/setLevel"),params:Nue}),Lue=tn.extend({level:Ru,logger:g.string().optional(),data:g.unknown()}),que=rn.extend({method:g.literal("notifications/message"),params:Lue}),Fue=g.object({name:g.string().optional()}),$ue=g.object({hints:g.array(Fue).optional(),costPriority:g.number().min(0).max(1).optional(),speedPriority:g.number().min(0).max(1).optional(),intelligencePriority:g.number().min(0).max(1).optional()}),Uue=g.object({mode:g.enum(["auto","required","none"]).optional()}),Jue=g.object({type:g.literal("tool_result"),toolUseId:g.string().describe("The unique identifier for the corresponding tool call."),content:g.array(Gx).default([]),structuredContent:g.object({}).loose().optional(),isError:g.boolean().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),zue=g.discriminatedUnion("type",[Ux,Jx,zx]),cm=g.discriminatedUnion("type",[Ux,Jx,zx,Tue,Jue]),Gue=g.object({role:ku,content:g.union([cm,g.array(cm)]),_meta:g.record(g.string(),g.unknown()).optional()}),Bue=Su.extend({messages:g.array(Gue),modelPreferences:$ue.optional(),systemPrompt:g.string().optional(),includeContext:g.enum(["none","thisServer","allServers"]).optional(),temperature:g.number().optional(),maxTokens:g.number().int(),stopSequences:g.array(g.string()).optional(),metadata:Et.optional(),tools:g.array(Gq).optional(),toolChoice:Uue.optional()}),Hue=qt.extend({method:g.literal("sampling/createMessage"),params:Bue}),Ou=Ft.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens"]).or(g.string())),role:ku,content:zue}),Vx=Ft.extend({model:g.string(),stopReason:g.optional(g.enum(["endTurn","stopSequence","maxTokens","toolUse"]).or(g.string())),role:ku,content:g.union([cm,g.array(cm)])}),Vue=g.object({type:g.literal("boolean"),title:g.string().optional(),description:g.string().optional(),default:g.boolean().optional()}),Wue=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),minLength:g.number().optional(),maxLength:g.number().optional(),format:g.enum(["email","uri","date","date-time"]).optional(),default:g.string().optional()}),Yue=g.object({type:g.enum(["number","integer"]),title:g.string().optional(),description:g.string().optional(),minimum:g.number().optional(),maximum:g.number().optional(),default:g.number().optional()}),Que=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),default:g.string().optional()}),Xue=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),oneOf:g.array(g.object({const:g.string(),title:g.string()})),default:g.string().optional()}),Zue=g.object({type:g.literal("string"),title:g.string().optional(),description:g.string().optional(),enum:g.array(g.string()),enumNames:g.array(g.string()).optional(),default:g.string().optional()}),ede=g.union([Que,Xue]),tde=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({type:g.literal("string"),enum:g.array(g.string())}),default:g.array(g.string()).optional()}),rde=g.object({type:g.literal("array"),title:g.string().optional(),description:g.string().optional(),minItems:g.number().optional(),maxItems:g.number().optional(),items:g.object({anyOf:g.array(g.object({const:g.string(),title:g.string()}))}),default:g.array(g.string()).optional()}),nde=g.union([tde,rde]),ide=g.union([Zue,ede,nde]),sde=g.union([ide,Vue,Wue,Yue]),ode=Su.extend({mode:g.literal("form").optional(),message:g.string(),requestedSchema:g.object({type:g.literal("object"),properties:g.record(g.string(),sde),required:g.array(g.string()).optional()})}),ade=Su.extend({mode:g.literal("url"),message:g.string(),elicitationId:g.string(),url:g.string().url()}),cde=g.union([ode,ade]),lde=qt.extend({method:g.literal("elicitation/create"),params:cde}),ude=tn.extend({elicitationId:g.string()}),dde=rn.extend({method:g.literal("notifications/elicitation/complete"),params:ude}),gc=Ft.extend({action:g.enum(["accept","decline","cancel"]),content:g.preprocess(t=>t===null?void 0:t,g.record(g.string(),g.union([g.string(),g.number(),g.boolean(),g.array(g.string())])).optional())}),pde=g.object({type:g.literal("ref/resource"),uri:g.string()}),fde=g.object({type:g.literal("ref/prompt"),name:g.string()}),mde=Pr.extend({ref:g.union([fde,pde]),argument:g.object({name:g.string(),value:g.string()}),context:g.object({arguments:g.record(g.string(),g.string()).optional()}).optional()}),hde=qt.extend({method:g.literal("completion/complete"),params:mde}),yde=Ft.extend({completion:g.looseObject({values:g.array(g.string()).max(100),total:g.optional(g.number().int()),hasMore:g.optional(g.boolean())})}),gde=g.object({uri:g.string().startsWith("file://"),name:g.string().optional(),_meta:g.record(g.string(),g.unknown()).optional()}),bde=qt.extend({method:g.literal("roots/list"),params:Pr.optional()}),Wx=Ft.extend({roots:g.array(gde)}),vde=rn.extend({method:g.literal("notifications/roots/list_changed"),params:tn.optional()}),JDe=g.union([mm,fm,hde,Hx,Iue,xue,oue,cue,due,hue,gue,Au,Bx,ym,bm,vm,Sm]),zDe=g.union([pm,hm,qx,vde,Tu]),GDe=g.union([dm,Ou,Vx,gc,Wx,gm,Em,hc]),BDe=g.union([mm,Hue,lde,bde,ym,bm,vm,Sm]),HDe=g.union([pm,hm,que,vue,fue,Mue,Cue,Tu,dde]),VDe=g.union([dm,Zle,yde,Oue,wue,aue,lue,pue,xm,Kue,gm,Em,hc]),ce=class t extends Error{constructor(e,r,n){super(`MCP error ${e}: ${r}`),this.code=e,this.data=n,this.name="McpError"}static fromError(e,r,n){if(e===be.UrlElicitationRequired&&n){let i=n;if(i.elicitations)return new jx(i.elicitations,r)}return new t(e,r,n)}},jx=class extends ce{constructor(e,r=`URL elicitation${e.length>1?"s":""} required`){super(be.UrlElicitationRequired,r,{elicitations:e})}get elicitations(){return this.data?.elicitations??[]}}});var wm,Bq=R(()=>{Rq();Cq();bc();wm=class{constructor(e={}){this._started=!1,this._hasHandledRequest=!1,this._streamMapping=new Map,this._requestToStreamMapping=new Map,this._resumableStreams=new Set,this._requestResponseMap=new Map,this._initialized=!1,this._enableJsonResponse=!1,this._standaloneSseStreamId="_GET_stream",this._closed=!1,this.sessionIdGenerator=e.sessionIdGenerator,this._enableJsonResponse=e.enableJsonResponse??!1,this._eventStore=e.eventStore,this._onsessioninitialized=e.onsessioninitialized,this._onsessionclosed=e.onsessionclosed,this._allowedHosts=e.allowedHosts,this._allowedOrigins=e.allowedOrigins,this._enableDnsRebindingProtection=e.enableDnsRebindingProtection??!1,this._retryInterval=e.retryInterval,this._keepAliveMs=e.keepAliveMs??15e3}startKeepAlive(e,r){if(this._closed)return;let n=Oq(this._keepAliveMs,()=>{try{e.enqueue(r.encode(`: keepalive
`))}catch{n!==void 0&&clearInterval(n)}});return n}async start(){if(this._started)throw new Error("Transport already started");this._started=!0}createJsonErrorResponse(e,r,n,i){let s={code:r,message:n};return i?.data!==void 0&&(s.data=i.data),new Response(JSON.stringify({jsonrpc:"2.0",error:s,id:null}),{status:e,headers:{"Content-Type":"application/json",...i?.headers}})}validateRequestHeaders(e){if(this._enableDnsRebindingProtection){if(this._allowedHosts&&this._allowedHosts.length>0){let r=e.headers.get("host");if(!r||!this._allowedHosts.includes(r)){let n=`Invalid Host header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}if(this._allowedOrigins&&this._allowedOrigins.length>0){let r=e.headers.get("origin");if(r&&!this._allowedOrigins.includes(r)){let n=`Invalid Origin header: ${r}`;return this.onerror?.(new Error(n)),this.createJsonErrorResponse(403,-32e3,n)}}}}async handleRequest(e,r){if(this._closed)return this.createJsonErrorResponse(404,-32001,"Session not found");if(!this.sessionIdGenerator&&this._hasHandledRequest)throw new Error("Stateless transport cannot be reused across requests. Create a new transport per request.");this._hasHandledRequest=!0;let n=this.validateRequestHeaders(e);if(n)return n;switch(e.method){case"POST":return this.handlePostRequest(e,r);case"GET":return this.handleGetRequest(e);case"DELETE":return this.handleDeleteRequest(e);default:return this.handleUnsupportedRequest()}}async writePrimingEvent(e,r,n,i){if(!this._eventStore||i<"2025-11-25")return;let s=await this._eventStore.storeEvent(n,{}),o=`id: ${s}
data:
`;this._retryInterval!==void 0&&(o=`id: ${s}
retry: ${this._retryInterval}
data:
`),e.enqueue(r.encode(o)),this._resumableStreams.add(n)}async handleGetRequest(e){if(!e.headers.get("accept")?.includes("text/event-stream"))return this.onerror?.(new Error("Not Acceptable: Client must accept text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept text/event-stream");let n=this.validateSession(e);if(n)return n;let i=this.validateProtocolVersion(e);if(i)return i;if(this._eventStore){let u=e.headers.get("last-event-id");if(u)return this.replayEvents(u)}if(this._streamMapping.get(this._standaloneSseStreamId)!==void 0)return this.onerror?.(new Error("Conflict: Only one SSE stream is allowed per session")),this.createJsonErrorResponse(409,-32e3,"Conflict: Only one SSE stream is allowed per session");let s=new TextEncoder,o,a,c=new ReadableStream({start:u=>{o=u},cancel:()=>{a!==void 0&&clearInterval(a),this._streamMapping.get(this._standaloneSseStreamId)?.controller===o&&this._streamMapping.delete(this._standaloneSseStreamId)}}),l={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"};return this.sessionId!==void 0&&(l["mcp-session-id"]=this.sessionId),this._streamMapping.set(this._standaloneSseStreamId,{controller:o,encoder:s,cleanup:()=>{a!==void 0&&clearInterval(a),this._streamMapping.delete(this._standaloneSseStreamId);try{o.close()}catch{}}}),a=this.startKeepAlive(o,s),new Response(c,{headers:l})}async replayEvents(e){if(!this._eventStore)return this.onerror?.(new Error("Event store not configured")),this.createJsonErrorResponse(400,-32e3,"Event store not configured");try{let r;if(this._eventStore.getStreamIdForEventId){if(r=await this._eventStore.getStreamIdForEventId(e),!r)return this.onerror?.(new Error("Invalid event ID format")),this.createJsonErrorResponse(400,-32e3,"Invalid event ID format");if(this._streamMapping.get(r)!==void 0)return this.onerror?.(new Error("Conflict: Stream already has an active connection")),this.createJsonErrorResponse(409,-32e3,"Conflict: Stream already has an active connection")}let n={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"};this.sessionId!==void 0&&(n["mcp-session-id"]=this.sessionId);let i=new TextEncoder,s,o,a,c=!1,l=new ReadableStream({start:d=>{s=d},cancel:()=>{c=!0,o!==void 0&&clearInterval(o),a!==void 0&&this._streamMapping.get(a)?.controller===s&&this._streamMapping.delete(a)}}),u=new Set;if(a=await this._eventStore.replayEventsAfter(e,{send:async(d,p)=>{if(this.writeSSEEvent(s,i,p,d))u.add(d);else{this.onerror?.(new Error("Failed replay events"));try{s.close()}catch{}}}}),this._closed||c){try{s.close()}catch{}return this.createJsonErrorResponse(404,-32001,"Session not found")}return this._streamMapping.get(a)?.cleanup(),this._streamMapping.set(a,{controller:s,encoder:i,replayedEventIds:u,cleanup:()=>{o!==void 0&&clearInterval(o),this._streamMapping.delete(a);try{s.close()}catch{}}}),this._resumableStreams.add(a),o=this.startKeepAlive(s,i),new Response(l,{headers:n})}catch(r){return this.onerror?.(r),this.createJsonErrorResponse(500,-32e3,"Error replaying events")}}writeSSEEvent(e,r,n,i){try{let s=`event: message
`;return i&&(s+=`id: ${i}
`),s+=`data: ${JSON.stringify(n)}
`,e.enqueue(r.encode(s)),!0}catch(s){return this.onerror?.(s),!1}}handleUnsupportedRequest(){return this.onerror?.(new Error("Method not allowed.")),new Response(JSON.stringify({jsonrpc:"2.0",error:{code:-32e3,message:"Method not allowed."},id:null}),{status:405,headers:{Allow:"GET, POST, DELETE","Content-Type":"application/json"}})}async handlePostRequest(e,r){try{let n=e.headers.get("accept");if(!n?.includes("application/json")||!n.includes("text/event-stream"))return this.onerror?.(new Error("Not Acceptable: Client must accept both application/json and text/event-stream")),this.createJsonErrorResponse(406,-32e3,"Not Acceptable: Client must accept both application/json and text/event-stream");let i=e.headers.get("content-type");if(!Aq(i))return this.onerror?.(new Error("Unsupported Media Type: Content-Type must be application/json")),this.createJsonErrorResponse(415,-32e3,"Unsupported Media Type: Content-Type must be application/json");let s={headers:Object.fromEntries(e.headers.entries()),url:new URL(e.url)},o;if(r?.parsedBody!==void 0)o=r.parsedBody;else try{o=await e.json()}catch{return this.onerror?.(new Error("Parse error: Invalid JSON")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON")}let a;try{Array.isArray(o)?a=o.map(E=>Nx.parse(E)):a=[Nx.parse(o)]}catch{return this.onerror?.(new Error("Parse error: Invalid JSON-RPC message")),this.createJsonErrorResponse(400,-32700,"Parse error: Invalid JSON-RPC message")}if(this._closed)return this.createJsonErrorResponse(404,-32001,"Session not found");let c=a.some(Lx);if(c){if(this._initialized&&this.sessionId!==void 0)return this.onerror?.(new Error("Invalid Request: Server already initialized")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Server already initialized");if(a.length>1)return this.onerror?.(new Error("Invalid Request: Only one initialization request is allowed")),this.createJsonErrorResponse(400,-32600,"Invalid Request: Only one initialization request is allowed");this.sessionId=this.sessionIdGenerator?.(),this._initialized=!0,this.sessionId&&this._onsessioninitialized&&await Promise.resolve(this._onsessioninitialized(this.sessionId))}if(!c){let E=this.validateSession(e);if(E)return E;let S=this.validateProtocolVersion(e);if(S)return S}if(this._closed)return this.createJsonErrorResponse(404,-32001,"Session not found");if(!a.some(Di)){for(let E of a)this.onmessage?.(E,{authInfo:r?.authInfo,requestInfo:s});return new Response(null,{status:202})}let u=crypto.randomUUID(),d=a.find(E=>Lx(E)),p=d?d.params.protocolVersion:e.headers.get("mcp-protocol-version")??jq;if(this._enableJsonResponse)return new Promise(E=>{this._streamMapping.set(u,{resolveJson:E,cleanup:()=>{this._streamMapping.delete(u)}});for(let S of a)Di(S)&&this._requestToStreamMapping.set(S.id,u);for(let S of a)this.onmessage?.(S,{authInfo:r?.authInfo,requestInfo:s})});let f=new TextEncoder,m,y,b=new ReadableStream({start:E=>{m=E},cancel:()=>{y!==void 0&&clearInterval(y),this._streamMapping.get(u)?.controller===m&&this._streamMapping.delete(u)}}),v={"Content-Type":"text/event-stream","Cache-Control":"no-cache, no-transform",Connection:"keep-alive","X-Accel-Buffering":"no"};this.sessionId!==void 0&&(v["mcp-session-id"]=this.sessionId);for(let E of a)Di(E)&&(this._streamMapping.set(u,{controller:m,encoder:f,cleanup:()=>{y!==void 0&&clearInterval(y),this._streamMapping.delete(u);try{m.close()}catch{}}}),this._requestToStreamMapping.set(E.id,u));try{await this.writePrimingEvent(m,f,u,p);for(let E of a){let S,k;Di(E)&&this._eventStore&&p>="2025-11-25"&&(S=()=>{this.closeSSEStream(E.id)},k=()=>{this.closeStandaloneSSEStream()}),this.onmessage?.(E,{authInfo:r?.authInfo,requestInfo:s,closeSSEStream:S,closeStandaloneSSEStream:k})}}catch(E){this._streamMapping.get(u)?.cleanup(),this._resumableStreams.delete(u);for(let S of a)Di(S)&&this._requestToStreamMapping.delete(S.id);throw E}return this._streamMapping.get(u)?.controller===m&&(y=this.startKeepAlive(m,f)),new Response(b,{status:200,headers:v})}catch(n){return this.onerror?.(n),this.createJsonErrorResponse(400,-32700,"Parse error",{data:String(n)})}}async handleDeleteRequest(e){let r=this.validateSession(e);if(r)return r;let n=this.validateProtocolVersion(e);if(n)return n;try{return await Promise.resolve(this._onsessionclosed?.(this.sessionId)),new Response(null,{status:200})}finally{await this.close()}}validateSession(e){if(this.sessionIdGenerator===void 0)return;if(!this._initialized)return this.onerror?.(new Error("Bad Request: Server not initialized")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Server not initialized");let r=e.headers.get("mcp-session-id");if(!r)return this.onerror?.(new Error("Bad Request: Mcp-Session-Id header is required")),this.createJsonErrorResponse(400,-32e3,"Bad Request: Mcp-Session-Id header is required");if(r!==this.sessionId)return this.onerror?.(new Error("Session not found")),this.createJsonErrorResponse(404,-32001,"Session not found")}validateProtocolVersion(e){let r=e.headers.get("mcp-protocol-version");if(r!==null&&!fc.includes(r))return this.onerror?.(new Error(`Bad Request: Unsupported protocol version: ${r} (supported versions: ${fc.join(", ")})`)),this.createJsonErrorResponse(400,-32e3,`Bad Request: Unsupported protocol version: ${r} (supported versions: ${fc.join(", ")})`)}async close(){this._closed||(this._closed=!0,this._streamMapping.forEach(({cleanup:e})=>{e()}),this._streamMapping.clear(),this._requestResponseMap.clear(),this._resumableStreams.clear(),this.onclose?.())}closeSSEStream(e){let r=this._requestToStreamMapping.get(e);if(!r)return;let n=this._streamMapping.get(r);n&&n.cleanup()}closeStandaloneSSEStream(){let e=this._streamMapping.get(this._standaloneSseStreamId);e&&e.cleanup()}async send(e,r){let n=r?.relatedRequestId;if((Mi(e)||mc(e))&&(n=e.id),n===void 0){if(Mi(e)||mc(e))throw new Error("Cannot send a response on a standalone SSE stream unless resuming a previous client request");let o;this._eventStore&&(o=await this._eventStore.storeEvent(this._standaloneSseStreamId,e));let a=this._streamMapping.get(this._standaloneSseStreamId);if(a===void 0)return;a.controller&&a.encoder&&(o===void 0||!a.replayedEventIds?.has(o))&&this.writeSSEEvent(a.controller,a.encoder,e,o);return}let i=this._requestToStreamMapping.get(n);if(!i)throw new Error(`No connection established for request ID: ${String(n)}`);let s=this._streamMapping.get(i);if(!this._enableJsonResponse){let o;this._eventStore&&(o=await this._eventStore.storeEvent(i,e),s=this._streamMapping.get(i)),s?.controller&&s?.encoder&&(o===void 0||!s.replayedEventIds?.has(o))&&this.writeSSEEvent(s.controller,s.encoder,e,o)&&o!==void 0&&this._resumableStreams.add(i)}if(Mi(e)||mc(e)){this._requestResponseMap.set(n,e);let o=Array.from(this._requestToStreamMapping.entries()).filter(([c,l])=>l===i).map(([c])=>c);if(o.every(c=>this._requestResponseMap.has(c))){if(!s){if(this._closed){for(let c of o)this._requestResponseMap.delete(c),this._requestToStreamMapping.delete(c);return}if(!this._enableJsonResponse&&this._eventStore&&this._resumableStreams.has(i)){for(let c of o)this._requestResponseMap.delete(c),this._requestToStreamMapping.delete(c);this._resumableStreams.delete(i);return}for(let c of o)this._requestResponseMap.delete(c),this._requestToStreamMapping.delete(c);throw new Error(`No connection established for request ID: ${String(n)}`)}if(this._enableJsonResponse&&s.resolveJson){let c={"Content-Type":"application/json"};this.sessionId!==void 0&&(c["mcp-session-id"]=this.sessionId);let l=o.map(u=>this._requestResponseMap.get(u));l.length===1?s.resolveJson(new Response(JSON.stringify(l[0]),{status:200,headers:c})):s.resolveJson(new Response(JSON.stringify(l),{status:200,headers:c}))}else s.cleanup();for(let c of o)this._requestResponseMap.delete(c),this._requestToStreamMapping.delete(c);this._resumableStreams.delete(i)}}}}});var _m,Hq=R(()=>{Tq();Bq();_m=class{constructor(e={}){this._requestContext=new WeakMap,this._webStandardTransport=new wm(e),this._requestListener=Cx(async r=>{let n=this._requestContext.get(r);return this._webStandardTransport.handleRequest(r,{authInfo:n?.authInfo,parsedBody:n?.parsedBody})},{overrideGlobalObjects:!1})}get sessionId(){return this._webStandardTransport.sessionId}set onclose(e){this._webStandardTransport.onclose=e}get onclose(){return this._webStandardTransport.onclose}set onerror(e){this._webStandardTransport.onerror=e}get onerror(){return this._webStandardTransport.onerror}set onmessage(e){this._webStandardTransport.onmessage=e}get onmessage(){return this._webStandardTransport.onmessage}async start(){return this._webStandardTransport.start()}async close(){return this._webStandardTransport.close()}async send(e,r){return this._webStandardTransport.send(e,r)}async handleRequest(e,r,n){let i=e.auth;await Cx(async o=>this._webStandardTransport.handleRequest(o,{authInfo:i,parsedBody:n}),{overrideGlobalObjects:!1})(e,r)}closeSSEStream(e){this._webStandardTransport.closeSSEStream(e)}closeStandaloneSSEStream(){this._webStandardTransport.closeStandaloneSSEStream()}}});function Tm(t){return!!t._zod}function Es(t,e){return Tm(t)?Im.safeParse(t,e):t.safeParse(e)}function km(t){if(!t)return;let e;if(Tm(t)?e=t._zod?.def?.shape:e=t.shape,!!e){if(typeof e=="function")try{return e()}catch{return}return e}}function Am(t){if(Tm(t)){let s=t._zod?.def;if(s){if(s.value!==void 0)return s.value;if(Array.isArray(s.values)&&s.values.length>0)return s.values[0]}}let r=t._def;if(r){if(r.value!==void 0)return r.value;if(Array.isArray(r.values)&&r.values.length>0)return r.values[0]}let n=t.value;if(n!==void 0)return n}var Sde,Im,Rm=R(()=>{Sde=tt(require("zod/v3"),1),Im=tt(require("zod/v4-mini"),1)});function Ss(t){return t==="completed"||t==="failed"||t==="cancelled"}var Vq=R(()=>{});var Om=R(()=>{});var Yx=R(()=>{Om()});var xs=R(()=>{});var Cm=R(()=>{});var nn=R(()=>{Cm()});var wde,Qx=R(()=>{wde=require("zod/v3");xs();yt()});var Xx=R(()=>{xs()});var Zx=R(()=>{});var jm=R(()=>{yt()});var ew=R(()=>{yt()});var tw=R(()=>{xs()});var rw=R(()=>{yt()});var nw=R(()=>{yt();nn()});var iw=R(()=>{});var sw=R(()=>{yt()});var ow=R(()=>{});var DMe,Pm=R(()=>{xs();DMe=new Set("ABCDEFGHIJKLMNOPQRSTUVXYZabcdefghijklmnopqrstuvxyz0123456789")});var Tde,Km=R(()=>{Tde=require("zod/v3");yt();Pm();jm();nn()});var aw=R(()=>{yt();Km();nn()});var cw=R(()=>{});var lw=R(()=>{nn()});var uw=R(()=>{});var Dm=R(()=>{yt()});var dw=R(()=>{yt();Dm()});var pw=R(()=>{xs()});var fw=R(()=>{yt()});var mw=R(()=>{yt();nn()});var hw=R(()=>{yt()});var yw=R(()=>{yt()});var gw=R(()=>{xs();yt()});var bw=R(()=>{yt()});var vw=R(()=>{nn()});var Ew=R(()=>{nn()});var Sw=R(()=>{yt()});var Ade,xw=R(()=>{Ade=require("zod/v3");nn();Qx();Xx();Zx();jm();ew();tw();rw();nw();iw();sw();ow();aw();cw();lw();uw();dw();pw();fw();mw();hw();yw();Km();gw();Pm();bw();vw();Dm();Ew();Sw()});var yt=R(()=>{Om();xw();Cm();nn()});var Wq=R(()=>{});var ww=R(()=>{yt();Yx();nn()});var Yq=R(()=>{Om();Yx();xs();Cm();yt();Wq();nn();Qx();Xx();Zx();jm();ew();tw();rw();nw();iw();sw();ow();aw();cw();lw();uw();dw();pw();fw();mw();hw();yw();Sw();Km();gw();Pm();bw();vw();Dm();Ew();xw();ww();ww()});function _w(t){let r=km(t)?.method;if(!r)throw new Error("Schema is missing a method literal");let n=Am(r);if(typeof n!="string")throw new Error("Schema method literal must be a string");return n}function Iw(t,e){let r=Es(t,e);if(!r.success)throw r.error;return r.data}var Ode,Qq=R(()=>{Ode=tt(require("zod/v4-mini"),1);Rm();Yq()});function Xq(t){return t!==null&&typeof t=="object"&&!Array.isArray(t)}function Zq(t,e){let r={...t};for(let n in e){let i=n,s=e[i];if(s===void 0)continue;let o=r[i];Xq(o)&&Xq(s)?r[i]={...o,...s}:r[i]=s}return r}var Cde,Mm,e2=R(()=>{Rm();bc();Vq();Qq();Cde=6e4,Mm=class{constructor(e){this._options=e,this._requestMessageId=0,this._requestHandlers=new Map,this._requestHandlerAbortControllers=new Map,this._notificationHandlers=new Map,this._responseHandlers=new Map,this._progressHandlers=new Map,this._timeoutInfo=new Map,this._pendingDebouncedNotifications=new Set,this._taskProgressTokens=new Map,this._requestResolvers=new Map,this.setNotificationHandler(pm,r=>{this._oncancel(r)}),this.setNotificationHandler(hm,r=>{this._onprogress(r)}),this.setRequestHandler(mm,r=>({})),this._taskStore=e?.taskStore,this._taskMessageQueue=e?.taskMessageQueue,this._taskStore&&(this.setRequestHandler(ym,async(r,n)=>{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new ce(be.InvalidParams,"Failed to retrieve task: Task not found");return{...i}}),this.setRequestHandler(bm,async(r,n)=>{let i=async()=>{let s=r.params.taskId;if(this._taskMessageQueue){let a;for(;a=await this._taskMessageQueue.dequeue(s,n.sessionId);){if(a.type==="response"||a.type==="error"){let c=a.message,l=c.id,u=this._requestResolvers.get(l);if(u)if(this._requestResolvers.delete(l),a.type==="response")u(c);else{let d=c,p=new ce(d.error.code,d.error.message,d.error.data);u(p)}else{let d=a.type==="response"?"Response":"Error";this._onerror(new Error(`${d} handler missing for request ${l}`))}continue}await this._transport?.send(a.message,{relatedRequestId:n.requestId})}}let o=await this._taskStore.getTask(s,n.sessionId);if(!o)throw new ce(be.InvalidParams,`Task not found: ${s}`);if(!Ss(o.status))return await this._waitForTaskUpdate(s,n.signal),await i();if(Ss(o.status)){let a=await this._taskStore.getTaskResult(s,n.sessionId);return this._clearTaskQueue(s),{...a,_meta:{...a._meta,[vs]:{taskId:s}}}}return await i()};return await i()}),this.setRequestHandler(vm,async(r,n)=>{try{let{tasks:i,nextCursor:s}=await this._taskStore.listTasks(r.params?.cursor,n.sessionId);return{tasks:i,nextCursor:s,_meta:{}}}catch(i){throw new ce(be.InvalidParams,`Failed to list tasks: ${i instanceof Error?i.message:String(i)}`)}}),this.setRequestHandler(Sm,async(r,n)=>{try{let i=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!i)throw new ce(be.InvalidParams,`Task not found: ${r.params.taskId}`);if(Ss(i.status))throw new ce(be.InvalidParams,`Cannot cancel task in terminal status: ${i.status}`);await this._taskStore.updateTaskStatus(r.params.taskId,"cancelled","Client cancelled task execution.",n.sessionId),this._clearTaskQueue(r.params.taskId);let s=await this._taskStore.getTask(r.params.taskId,n.sessionId);if(!s)throw new ce(be.InvalidParams,`Task not found after cancellation: ${r.params.taskId}`);return{_meta:{},...s}}catch(i){throw i instanceof ce?i:new ce(be.InvalidRequest,`Failed to cancel task: ${i instanceof Error?i.message:String(i)}`)}}))}async _oncancel(e){if(!e.params.requestId)return;this._requestHandlerAbortControllers.get(e.params.requestId)?.abort(e.params.reason)}_setupTimeout(e,r,n,i,s=!1){this._timeoutInfo.set(e,{timeoutId:setTimeout(i,r),startTime:Date.now(),timeout:r,maxTotalTimeout:n,resetTimeoutOnProgress:s,onTimeout:i})}_resetTimeout(e){let r=this._timeoutInfo.get(e);if(!r)return!1;let n=Date.now()-r.startTime;if(r.maxTotalTimeout&&n>=r.maxTotalTimeout)throw this._timeoutInfo.delete(e),ce.fromError(be.RequestTimeout,"Maximum total timeout exceeded",{maxTotalTimeout:r.maxTotalTimeout,totalElapsed:n});return clearTimeout(r.timeoutId),r.timeoutId=setTimeout(r.onTimeout,r.timeout),!0}_cleanupTimeout(e){let r=this._timeoutInfo.get(e);r&&(clearTimeout(r.timeoutId),this._timeoutInfo.delete(e))}async connect(e){if(this._transport)throw new Error("Already connected to a transport. Call close() before connecting to a new transport, or use a separate Protocol instance per connection.");this._transport=e;let r=this.transport?.onclose;this._transport.onclose=()=>{r?.(),this._onclose()};let n=this.transport?.onerror;this._transport.onerror=s=>{n?.(s),this._onerror(s)};let i=this._transport?.onmessage;this._transport.onmessage=(s,o)=>{i?.(s,o),Mi(s)||mc(s)?this._onresponse(s):Di(s)?this._onrequest(s,o):Lq(s)?this._onnotification(s):this._onerror(new Error(`Unknown message type: ${JSON.stringify(s)}`))},await this._transport.start()}_onclose(){let e=this._responseHandlers;this._responseHandlers=new Map,this._progressHandlers.clear(),this._taskProgressTokens.clear(),this._pendingDebouncedNotifications.clear();for(let n of this._timeoutInfo.values())clearTimeout(n.timeoutId);this._timeoutInfo.clear();for(let n of this._requestHandlerAbortControllers.values())n.abort();this._requestHandlerAbortControllers.clear();let r=ce.fromError(be.ConnectionClosed,"Connection closed");this._transport=void 0,this.onclose?.();for(let n of e.values())n(r)}_onerror(e){this.onerror?.(e)}_onnotification(e){let r=this._notificationHandlers.get(e.method)??this.fallbackNotificationHandler;r!==void 0&&Promise.resolve().then(()=>r(e)).catch(n=>this._onerror(new Error(`Uncaught error in notification handler: ${n}`)))}_onrequest(e,r){let n=this._requestHandlers.get(e.method)??this.fallbackRequestHandler,i=this._transport,s=e.params?._meta?.[vs]?.taskId;if(n===void 0){let u={jsonrpc:"2.0",id:e.id,error:{code:be.MethodNotFound,message:"Method not found"}};s&&this._taskMessageQueue?this._enqueueTaskMessage(s,{type:"error",message:u,timestamp:Date.now()},i?.sessionId).catch(d=>this._onerror(new Error(`Failed to enqueue error response: ${d}`))):i?.send(u).catch(d=>this._onerror(new Error(`Failed to send an error response: ${d}`)));return}let o=new AbortController;this._requestHandlerAbortControllers.set(e.id,o);let a=Dq(e.params)?e.params.task:void 0,c=this._taskStore?this.requestTaskStore(e,i?.sessionId):void 0,l={signal:o.signal,sessionId:i?.sessionId,_meta:e.params?._meta,sendNotification:async u=>{if(o.signal.aborted)return;let d={relatedRequestId:e.id};s&&(d.relatedTask={taskId:s}),await this.notification(u,d)},sendRequest:async(u,d,p)=>{if(o.signal.aborted)throw new ce(be.ConnectionClosed,"Request was cancelled");let f={...p,relatedRequestId:e.id};s&&!f.relatedTask&&(f.relatedTask={taskId:s});let m=f.relatedTask?.taskId??s;return m&&c&&await c.updateTaskStatus(m,"input_required"),await this.request(u,d,f)},authInfo:r?.authInfo,requestId:e.id,requestInfo:r?.requestInfo,taskId:s,taskStore:c,taskRequestedTtl:a?.ttl,closeSSEStream:r?.closeSSEStream,closeStandaloneSSEStream:r?.closeStandaloneSSEStream};Promise.resolve().then(()=>{a&&this.assertTaskHandlerCapability(e.method)}).then(()=>n(e,l)).then(async u=>{if(o.signal.aborted)return;let d={result:u,jsonrpc:"2.0",id:e.id};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"response",message:d,timestamp:Date.now()},i?.sessionId):await i?.send(d)},async u=>{if(o.signal.aborted)return;let d={jsonrpc:"2.0",id:e.id,error:{code:Number.isSafeInteger(u.code)?u.code:be.InternalError,message:u.message??"Internal error",...u.data!==void 0&&{data:u.data}}};s&&this._taskMessageQueue?await this._enqueueTaskMessage(s,{type:"error",message:d,timestamp:Date.now()},i?.sessionId):await i?.send(d)}).catch(u=>this._onerror(new Error(`Failed to send response: ${u}`))).finally(()=>{this._requestHandlerAbortControllers.get(e.id)===o&&this._requestHandlerAbortControllers.delete(e.id)})}_onprogress(e){let{progressToken:r,...n}=e.params,i=Number(r),s=this._progressHandlers.get(i);if(!s){this._onerror(new Error(`Received a progress notification for an unknown token: ${JSON.stringify(e)}`));return}let o=this._responseHandlers.get(i),a=this._timeoutInfo.get(i);if(a&&o&&a.resetTimeoutOnProgress)try{this._resetTimeout(i)}catch(c){this._responseHandlers.delete(i),this._progressHandlers.delete(i),this._cleanupTimeout(i),o(c);return}s(n)}_onresponse(e){let r=Number(e.id),n=this._requestResolvers.get(r);if(n){if(this._requestResolvers.delete(r),Mi(e))n(e);else{let o=new ce(e.error.code,e.error.message,e.error.data);n(o)}return}let i=this._responseHandlers.get(r);if(i===void 0){this._onerror(new Error(`Received a response for an unknown message ID: ${JSON.stringify(e)}`));return}this._responseHandlers.delete(r),this._cleanupTimeout(r);let s=!1;if(Mi(e)&&e.result&&typeof e.result=="object"){let o=e.result;if(o.task&&typeof o.task=="object"){let a=o.task;typeof a.taskId=="string"&&(s=!0,this._taskProgressTokens.set(a.taskId,r))}}if(s||this._progressHandlers.delete(r),Mi(e))i(e);else{let o=ce.fromError(e.error.code,e.error.message,e.error.data);i(o)}}get transport(){return this._transport}async close(){await this._transport?.close()}async*requestStream(e,r,n){let{task:i}=n??{};if(!i){try{yield{type:"result",result:await this.request(e,r,n)}}catch(o){yield{type:"error",error:o instanceof ce?o:new ce(be.InternalError,String(o))}}return}let s;try{let o=await this.request(e,hc,n);if(o.task)s=o.task.taskId,yield{type:"taskCreated",task:o.task};else throw new ce(be.InternalError,"Task creation did not return a task");for(;;){let a=await this.getTask({taskId:s},n);if(yield{type:"taskStatus",task:a},Ss(a.status)){a.status==="completed"?yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)}:a.status==="failed"?yield{type:"error",error:new ce(be.InternalError,`Task ${s} failed`)}:a.status==="cancelled"&&(yield{type:"error",error:new ce(be.InternalError,`Task ${s} was cancelled`)});return}if(a.status==="input_required"){yield{type:"result",result:await this.getTaskResult({taskId:s},r,n)};return}let c=a.pollInterval??this._options?.defaultTaskPollInterval??1e3;await new Promise(l=>setTimeout(l,c)),n?.signal?.throwIfAborted()}}catch(o){yield{type:"error",error:o instanceof ce?o:new ce(be.InternalError,String(o))}}}request(e,r,n){let{relatedRequestId:i,resumptionToken:s,onresumptiontoken:o,task:a,relatedTask:c}=n??{};return new Promise((l,u)=>{let d=E=>{u(E)};if(!this._transport){d(new Error("Not connected"));return}if(this._options?.enforceStrictCapabilities===!0)try{this.assertCapabilityForMethod(e.method),a&&this.assertTaskCapability(e.method)}catch(E){d(E);return}n?.signal?.throwIfAborted();let p=this._requestMessageId++,f={...e,jsonrpc:"2.0",id:p};n?.onprogress&&(this._progressHandlers.set(p,n.onprogress),f.params={...e.params,_meta:{...e.params?._meta||{},progressToken:p}}),a&&(f.params={...f.params,task:a}),c&&(f.params={...f.params,_meta:{...f.params?._meta||{},[vs]:c}});let m=E=>{this._responseHandlers.delete(p),this._progressHandlers.delete(p),this._cleanupTimeout(p),this._transport?.send({jsonrpc:"2.0",method:"notifications/cancelled",params:{requestId:p,reason:String(E)}},{relatedRequestId:i,resumptionToken:s,onresumptiontoken:o}).catch(k=>this._onerror(new Error(`Failed to send cancellation: ${k}`)));let S=E instanceof ce?E:new ce(be.RequestTimeout,String(E));u(S)};this._responseHandlers.set(p,E=>{if(!n?.signal?.aborted){if(E instanceof Error)return u(E);try{let S=Es(r,E.result);S.success?l(S.data):u(S.error)}catch(S){u(S)}}}),n?.signal?.addEventListener("abort",()=>{m(n?.signal?.reason)});let y=n?.timeout??Cde,b=()=>m(ce.fromError(be.RequestTimeout,"Request timed out",{timeout:y}));this._setupTimeout(p,y,n?.maxTotalTimeout,b,n?.resetTimeoutOnProgress??!1);let v=c?.taskId;if(v){let E=S=>{let k=this._responseHandlers.get(p);k?k(S):this._onerror(new Error(`Response handler missing for side-channeled request ${p}`))};this._requestResolvers.set(p,E),this._enqueueTaskMessage(v,{type:"request",message:f,timestamp:Date.now()}).catch(S=>{this._cleanupTimeout(p),u(S)})}else this._transport.send(f,{relatedRequestId:i,resumptionToken:s,onresumptiontoken:o}).catch(E=>{this._cleanupTimeout(p),u(E)})})}async getTask(e,r){return this.request({method:"tasks/get",params:e},gm,r)}async getTaskResult(e,r,n){return this.request({method:"tasks/result",params:e},r,n)}async listTasks(e,r){return this.request({method:"tasks/list",params:e},Em,r)}async cancelTask(e,r){return this.request({method:"tasks/cancel",params:e},Fq,r)}async notification(e,r){if(!this._transport)throw new Error("Not connected");this.assertNotificationCapability(e.method);let n=r?.relatedTask?.taskId;if(n){let a={...e,jsonrpc:"2.0",params:{...e.params,_meta:{...e.params?._meta||{},[vs]:r.relatedTask}}};await this._enqueueTaskMessage(n,{type:"notification",message:a,timestamp:Date.now()});return}if((this._options?.debouncedNotificationMethods??[]).includes(e.method)&&!e.params&&!r?.relatedRequestId&&!r?.relatedTask){if(this._pendingDebouncedNotifications.has(e.method))return;this._pendingDebouncedNotifications.add(e.method),Promise.resolve().then(()=>{if(this._pendingDebouncedNotifications.delete(e.method),!this._transport)return;let a={...e,jsonrpc:"2.0"};r?.relatedTask&&(a={...a,params:{...a.params,_meta:{...a.params?._meta||{},[vs]:r.relatedTask}}}),this._transport?.send(a,r).catch(c=>this._onerror(c))});return}let o={...e,jsonrpc:"2.0"};r?.relatedTask&&(o={...o,params:{...o.params,_meta:{...o.params?._meta||{},[vs]:r.relatedTask}}}),await this._transport.send(o,r)}setRequestHandler(e,r){let n=_w(e);this.assertRequestHandlerCapability(n),this._requestHandlers.set(n,(i,s)=>{let o=Iw(e,i);return Promise.resolve(r(o,s))})}removeRequestHandler(e){this._requestHandlers.delete(e)}assertCanSetRequestHandler(e){if(this._requestHandlers.has(e))throw new Error(`A request handler for ${e} already exists, which would be overridden`)}setNotificationHandler(e,r){let n=_w(e);this._notificationHandlers.set(n,i=>{let s=Iw(e,i);return Promise.resolve(r(s))})}removeNotificationHandler(e){this._notificationHandlers.delete(e)}_cleanupTaskProgressHandler(e){let r=this._taskProgressTokens.get(e);r!==void 0&&(this._progressHandlers.delete(r),this._taskProgressTokens.delete(e))}async _enqueueTaskMessage(e,r,n){if(!this._taskStore||!this._taskMessageQueue)throw new Error("Cannot enqueue task message: taskStore and taskMessageQueue are not configured");let i=this._options?.maxTaskQueueSize;await this._taskMessageQueue.enqueue(e,r,n,i)}async _clearTaskQueue(e,r){if(this._taskMessageQueue){let n=await this._taskMessageQueue.dequeueAll(e,r);for(let i of n)if(i.type==="request"&&Di(i.message)){let s=i.message.id,o=this._requestResolvers.get(s);o?(o(new ce(be.InternalError,"Task cancelled or completed")),this._requestResolvers.delete(s)):this._onerror(new Error(`Resolver missing for request ${s} during task ${e} cleanup`))}}}async _waitForTaskUpdate(e,r){let n=this._options?.defaultTaskPollInterval??1e3;try{let i=await this._taskStore?.getTask(e);i?.pollInterval&&(n=i.pollInterval)}catch{}return new Promise((i,s)=>{if(r.aborted){s(new ce(be.InvalidRequest,"Request cancelled"));return}let o=setTimeout(i,n);r.addEventListener("abort",()=>{clearTimeout(o),s(new ce(be.InvalidRequest,"Request cancelled"))},{once:!0})})}requestTaskStore(e,r){let n=this._taskStore;if(!n)throw new Error("No task store configured");return{createTask:async i=>{if(!e)throw new Error("No request provided");return await n.createTask(i,e.id,{method:e.method,params:e.params},r)},getTask:async i=>{let s=await n.getTask(i,r);if(!s)throw new ce(be.InvalidParams,"Failed to retrieve task: Task not found");return s},storeTaskResult:async(i,s,o)=>{await n.storeTaskResult(i,s,o,r);let a=await n.getTask(i,r);if(a){let c=Tu.parse({method:"notifications/tasks/status",params:a});await this.notification(c),Ss(a.status)&&this._cleanupTaskProgressHandler(i)}},getTaskResult:i=>n.getTaskResult(i,r),updateTaskStatus:async(i,s,o)=>{let a=await n.getTask(i,r);if(!a)throw new ce(be.InvalidParams,`Task "${i}" not found - it may have been cleaned up`);if(Ss(a.status))throw new ce(be.InvalidParams,`Cannot update task "${i}" from terminal status "${a.status}" to "${s}". Terminal states (completed, failed, cancelled) cannot transition to other states.`);await n.updateTaskStatus(i,s,o,r);let c=await n.getTask(i,r);if(c){let l=Tu.parse({method:"notifications/tasks/status",params:c});await this.notification(l),Ss(c.status)&&this._cleanupTaskProgressHandler(i)}},listTasks:i=>n.listTasks(i,r)}}}});var Ku=h(Te=>{"use strict";Object.defineProperty(Te,"__esModule",{value:!0});Te.regexpCode=Te.getEsmExportName=Te.getProperty=Te.safeStringify=Te.stringify=Te.strConcat=Te.addCodeArg=Te.str=Te._=Te.nil=Te._Code=Te.Name=Te.IDENTIFIER=Te._CodeOrName=void 0;var ju=class{};Te._CodeOrName=ju;Te.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;var Ro=class extends ju{constructor(e){if(super(),!Te.IDENTIFIER.test(e))throw new Error("CodeGen: name must be a valid identifier");this.str=e}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}};Te.Name=Ro;var sn=class extends ju{constructor(e){super(),this._items=typeof e=="string"?[e]:e}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let e=this._items[0];return e===""||e==='""'}get str(){var e;return(e=this._str)!==null&&e!==void 0?e:this._str=this._items.reduce((r,n)=>`${r}${n}`,"")}get names(){var e;return(e=this._names)!==null&&e!==void 0?e:this._names=this._items.reduce((r,n)=>(n instanceof Ro&&(r[n.str]=(r[n.str]||0)+1),r),{})}};Te._Code=sn;Te.nil=new sn("");function t2(t,...e){let r=[t[0]],n=0;for(;n<e.length;)kw(r,e[n]),r.push(t[++n]);return new sn(r)}Te._=t2;var Tw=new sn("+");function r2(t,...e){let r=[Pu(t[0])],n=0;for(;n<e.length;)r.push(Tw),kw(r,e[n]),r.push(Tw,Pu(t[++n]));return jde(r),new sn(r)}Te.str=r2;function kw(t,e){e instanceof sn?t.push(...e._items):e instanceof Ro?t.push(e):t.push(Dde(e))}Te.addCodeArg=kw;function jde(t){let e=1;for(;e<t.length-1;){if(t[e]===Tw){let r=Pde(t[e-1],t[e+1]);if(r!==void 0){t.splice(e-1,3,r);continue}t[e++]="+"}e++}}function Pde(t,e){if(e==='""')return t;if(t==='""')return e;if(typeof t=="string")return e instanceof Ro||t[t.length-1]!=='"'?void 0:typeof e!="string"?`${t.slice(0,-1)}${e}"`:e[0]==='"'?t.slice(0,-1)+e.slice(1):void 0;if(typeof e=="string"&&e[0]==='"'&&!(t instanceof Ro))return`"${t}${e.slice(1)}`}function Kde(t,e){return e.emptyStr()?t:t.emptyStr()?e:r2`${t}${e}`}Te.strConcat=Kde;function Dde(t){return typeof t=="number"||typeof t=="boolean"||t===null?t:Pu(Array.isArray(t)?t.join(","):t)}function Mde(t){return new sn(Pu(t))}Te.stringify=Mde;function Pu(t){return JSON.stringify(t).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}Te.safeStringify=Pu;function Nde(t){return typeof t=="string"&&Te.IDENTIFIER.test(t)?new sn(`.${t}`):t2`[${t}]`}Te.getProperty=Nde;function Lde(t){if(typeof t=="string"&&Te.IDENTIFIER.test(t))return new sn(`${t}`);throw new Error(`CodeGen: invalid export name: ${t}, use explicit $id name mapping`)}Te.getEsmExportName=Lde;function qde(t){return new sn(t.toString())}Te.regexpCode=qde});var Ow=h(Er=>{"use strict";Object.defineProperty(Er,"__esModule",{value:!0});Er.ValueScope=Er.ValueScopeName=Er.Scope=Er.varKinds=Er.UsedValueState=void 0;var vr=Ku(),Aw=class extends Error{constructor(e){super(`CodeGen: "code" for ${e} not defined`),this.value=e.value}},Nm;(function(t){t[t.Started=0]="Started",t[t.Completed=1]="Completed"})(Nm||(Er.UsedValueState=Nm={}));Er.varKinds={const:new vr.Name("const"),let:new vr.Name("let"),var:new vr.Name("var")};var Lm=class{constructor({prefixes:e,parent:r}={}){this._names={},this._prefixes=e,this._parent=r}toName(e){return e instanceof vr.Name?e:this.name(e)}name(e){return new vr.Name(this._newName(e))}_newName(e){let r=this._names[e]||this._nameGroup(e);return`${e}${r.index++}`}_nameGroup(e){var r,n;if(!((n=(r=this._parent)===null||r===void 0?void 0:r._prefixes)===null||n===void 0)&&n.has(e)||this._prefixes&&!this._prefixes.has(e))throw new Error(`CodeGen: prefix "${e}" is not allowed in this scope`);return this._names[e]={prefix:e,index:0}}};Er.Scope=Lm;var qm=class extends vr.Name{constructor(e,r){super(r),this.prefix=e}setValue(e,{property:r,itemIndex:n}){this.value=e,this.scopePath=(0,vr._)`.${new vr.Name(r)}[${n}]`}};Er.ValueScopeName=qm;var Fde=(0,vr._)`\n`,Rw=class extends Lm{constructor(e){super(e),this._values={},this._scope=e.scope,this.opts={...e,_n:e.lines?Fde:vr.nil}}get(){return this._scope}name(e){return new qm(e,this._newName(e))}value(e,r){var n;if(r.ref===void 0)throw new Error("CodeGen: ref must be passed in value");let i=this.toName(e),{prefix:s}=i,o=(n=r.key)!==null&&n!==void 0?n:r.ref,a=this._values[s];if(a){let u=a.get(o);if(u)return u}else a=this._values[s]=new Map;a.set(o,i);let c=this._scope[s]||(this._scope[s]=[]),l=c.length;return c[l]=r.ref,i.setValue(r,{property:s,itemIndex:l}),i}getValue(e,r){let n=this._values[e];if(n)return n.get(r)}scopeRefs(e,r=this._values){return this._reduceValues(r,n=>{if(n.scopePath===void 0)throw new Error(`CodeGen: name "${n}" has no value`);return(0,vr._)`${e}${n.scopePath}`})}scopeCode(e=this._values,r,n){return this._reduceValues(e,i=>{if(i.value===void 0)throw new Error(`CodeGen: name "${i}" has no value`);return i.value.code},r,n)}_reduceValues(e,r,n={},i){let s=vr.nil;for(let o in e){let a=e[o];if(!a)continue;let c=n[o]=n[o]||new Map;a.forEach(l=>{if(c.has(l))return;c.set(l,Nm.Started);let u=r(l);if(u){let d=this.opts.es5?Er.varKinds.var:Er.varKinds.const;s=(0,vr._)`${s}${d} ${l} = ${u};${this.opts._n}`}else if(u=i?.(l))s=(0,vr._)`${s}${u}${this.opts._n}`;else throw new Aw(l);c.set(l,Nm.Completed)})}return s}};Er.ValueScope=Rw});var ue=h(me=>{"use strict";Object.defineProperty(me,"__esModule",{value:!0});me.or=me.and=me.not=me.CodeGen=me.operators=me.varKinds=me.ValueScopeName=me.ValueScope=me.Scope=me.Name=me.regexpCode=me.stringify=me.getProperty=me.nil=me.strConcat=me.str=me._=void 0;var Se=Ku(),kn=Ow(),ws=Ku();Object.defineProperty(me,"_",{enumerable:!0,get:function(){return ws._}});Object.defineProperty(me,"str",{enumerable:!0,get:function(){return ws.str}});Object.defineProperty(me,"strConcat",{enumerable:!0,get:function(){return ws.strConcat}});Object.defineProperty(me,"nil",{enumerable:!0,get:function(){return ws.nil}});Object.defineProperty(me,"getProperty",{enumerable:!0,get:function(){return ws.getProperty}});Object.defineProperty(me,"stringify",{enumerable:!0,get:function(){return ws.stringify}});Object.defineProperty(me,"regexpCode",{enumerable:!0,get:function(){return ws.regexpCode}});Object.defineProperty(me,"Name",{enumerable:!0,get:function(){return ws.Name}});var Jm=Ow();Object.defineProperty(me,"Scope",{enumerable:!0,get:function(){return Jm.Scope}});Object.defineProperty(me,"ValueScope",{enumerable:!0,get:function(){return Jm.ValueScope}});Object.defineProperty(me,"ValueScopeName",{enumerable:!0,get:function(){return Jm.ValueScopeName}});Object.defineProperty(me,"varKinds",{enumerable:!0,get:function(){return Jm.varKinds}});me.operators={GT:new Se._Code(">"),GTE:new Se._Code(">="),LT:new Se._Code("<"),LTE:new Se._Code("<="),EQ:new Se._Code("==="),NEQ:new Se._Code("!=="),NOT:new Se._Code("!"),OR:new Se._Code("||"),AND:new Se._Code("&&"),ADD:new Se._Code("+")};var Li=class{optimizeNodes(){return this}optimizeNames(e,r){return this}},Cw=class extends Li{constructor(e,r,n){super(),this.varKind=e,this.name=r,this.rhs=n}render({es5:e,_n:r}){let n=e?kn.varKinds.var:this.varKind,i=this.rhs===void 0?"":` = ${this.rhs}`;return`${n} ${this.name}${i};`+r}optimizeNames(e,r){if(e[this.name.str])return this.rhs&&(this.rhs=Ec(this.rhs,e,r)),this}get names(){return this.rhs instanceof Se._CodeOrName?this.rhs.names:{}}},Fm=class extends Li{constructor(e,r,n){super(),this.lhs=e,this.rhs=r,this.sideEffects=n}render({_n:e}){return`${this.lhs} = ${this.rhs};`+e}optimizeNames(e,r){if(!(this.lhs instanceof Se.Name&&!e[this.lhs.str]&&!this.sideEffects))return this.rhs=Ec(this.rhs,e,r),this}get names(){let e=this.lhs instanceof Se.Name?{}:{...this.lhs.names};return Um(e,this.rhs)}},jw=class extends Fm{constructor(e,r,n,i){super(e,n,i),this.op=r}render({_n:e}){return`${this.lhs} ${this.op}= ${this.rhs};`+e}},Pw=class extends Li{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`${this.label}:`+e}},Kw=class extends Li{constructor(e){super(),this.label=e,this.names={}}render({_n:e}){return`break${this.label?` ${this.label}`:""};`+e}},Dw=class extends Li{constructor(e){super(),this.error=e}render({_n:e}){return`throw ${this.error};`+e}get names(){return this.error.names}},Mw=class extends Li{constructor(e){super(),this.code=e}render({_n:e}){return`${this.code};`+e}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(e,r){return this.code=Ec(this.code,e,r),this}get names(){return this.code instanceof Se._CodeOrName?this.code.names:{}}},Du=class extends Li{constructor(e=[]){super(),this.nodes=e}render(e){return this.nodes.reduce((r,n)=>r+n.render(e),"")}optimizeNodes(){let{nodes:e}=this,r=e.length;for(;r--;){let n=e[r].optimizeNodes();Array.isArray(n)?e.splice(r,1,...n):n?e[r]=n:e.splice(r,1)}return e.length>0?this:void 0}optimizeNames(e,r){let{nodes:n}=this,i=n.length;for(;i--;){let s=n[i];s.optimizeNames(e,r)||($de(e,s.names),n.splice(i,1))}return n.length>0?this:void 0}get names(){return this.nodes.reduce((e,r)=>jo(e,r.names),{})}},qi=class extends Du{render(e){return"{"+e._n+super.render(e)+"}"+e._n}},Nw=class extends Du{},vc=class extends qi{};vc.kind="else";var Oo=class t extends qi{constructor(e,r){super(r),this.condition=e}render(e){let r=`if(${this.condition})`+super.render(e);return this.else&&(r+="else "+this.else.render(e)),r}optimizeNodes(){super.optimizeNodes();let e=this.condition;if(e===!0)return this.nodes;let r=this.else;if(r){let n=r.optimizeNodes();r=this.else=Array.isArray(n)?new vc(n):n}if(r)return e===!1?r instanceof t?r:r.nodes:this.nodes.length?this:new t(n2(e),r instanceof t?[r]:r.nodes);if(!(e===!1||!this.nodes.length))return this}optimizeNames(e,r){var n;if(this.else=(n=this.else)===null||n===void 0?void 0:n.optimizeNames(e,r),!!(super.optimizeNames(e,r)||this.else))return this.condition=Ec(this.condition,e,r),this}get names(){let e=super.names;return Um(e,this.condition),this.else&&jo(e,this.else.names),e}};Oo.kind="if";var Co=class extends qi{};Co.kind="for";var Lw=class extends Co{constructor(e){super(),this.iteration=e}render(e){return`for(${this.iteration})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iteration=Ec(this.iteration,e,r),this}get names(){return jo(super.names,this.iteration.names)}},qw=class extends Co{constructor(e,r,n,i){super(),this.varKind=e,this.name=r,this.from=n,this.to=i}render(e){let r=e.es5?kn.varKinds.var:this.varKind,{name:n,from:i,to:s}=this;return`for(${r} ${n}=${i}; ${n}<${s}; ${n}++)`+super.render(e)}get names(){let e=Um(super.names,this.from);return Um(e,this.to)}},$m=class extends Co{constructor(e,r,n,i){super(),this.loop=e,this.varKind=r,this.name=n,this.iterable=i}render(e){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(e)}optimizeNames(e,r){if(super.optimizeNames(e,r))return this.iterable=Ec(this.iterable,e,r),this}get names(){return jo(super.names,this.iterable.names)}},Mu=class extends qi{constructor(e,r,n){super(),this.name=e,this.args=r,this.async=n}render(e){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(e)}};Mu.kind="func";var Nu=class extends Du{render(e){return"return "+super.render(e)}};Nu.kind="return";var Fw=class extends qi{render(e){let r="try"+super.render(e);return this.catch&&(r+=this.catch.render(e)),this.finally&&(r+=this.finally.render(e)),r}optimizeNodes(){var e,r;return super.optimizeNodes(),(e=this.catch)===null||e===void 0||e.optimizeNodes(),(r=this.finally)===null||r===void 0||r.optimizeNodes(),this}optimizeNames(e,r){var n,i;return super.optimizeNames(e,r),(n=this.catch)===null||n===void 0||n.optimizeNames(e,r),(i=this.finally)===null||i===void 0||i.optimizeNames(e,r),this}get names(){let e=super.names;return this.catch&&jo(e,this.catch.names),this.finally&&jo(e,this.finally.names),e}},Lu=class extends qi{constructor(e){super(),this.error=e}render(e){return`catch(${this.error})`+super.render(e)}};Lu.kind="catch";var qu=class extends qi{render(e){return"finally"+super.render(e)}};qu.kind="finally";var $w=class{constructor(e,r={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...r,_n:r.lines?`
`:""},this._extScope=e,this._scope=new kn.Scope({parent:e}),this._nodes=[new Nw]}toString(){return this._root.render(this.opts)}name(e){return this._scope.name(e)}scopeName(e){return this._extScope.name(e)}scopeValue(e,r){let n=this._extScope.value(e,r);return(this._values[n.prefix]||(this._values[n.prefix]=new Set)).add(n),n}getScopeValue(e,r){return this._extScope.getValue(e,r)}scopeRefs(e){return this._extScope.scopeRefs(e,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(e,r,n,i){let s=this._scope.toName(r);return n!==void 0&&i&&(this._constants[s.str]=n),this._leafNode(new Cw(e,s,n)),s}const(e,r,n){return this._def(kn.varKinds.const,e,r,n)}let(e,r,n){return this._def(kn.varKinds.let,e,r,n)}var(e,r,n){return this._def(kn.varKinds.var,e,r,n)}assign(e,r,n){return this._leafNode(new Fm(e,r,n))}add(e,r){return this._leafNode(new jw(e,me.operators.ADD,r))}code(e){return typeof e=="function"?e():e!==Se.nil&&this._leafNode(new Mw(e)),this}object(...e){let r=["{"];for(let[n,i]of e)r.length>1&&r.push(","),r.push(n),(n!==i||this.opts.es5)&&(r.push(":"),(0,Se.addCodeArg)(r,i));return r.push("}"),new Se._Code(r)}if(e,r,n){if(this._blockNode(new Oo(e)),r&&n)this.code(r).else().code(n).endIf();else if(r)this.code(r).endIf();else if(n)throw new Error('CodeGen: "else" body without "then" body');return this}elseIf(e){return this._elseNode(new Oo(e))}else(){return this._elseNode(new vc)}endIf(){return this._endBlockNode(Oo,vc)}_for(e,r){return this._blockNode(e),r&&this.code(r).endFor(),this}for(e,r){return this._for(new Lw(e),r)}forRange(e,r,n,i,s=this.opts.es5?kn.varKinds.var:kn.varKinds.let){let o=this._scope.toName(e);return this._for(new qw(s,o,r,n),()=>i(o))}forOf(e,r,n,i=kn.varKinds.const){let s=this._scope.toName(e);if(this.opts.es5){let o=r instanceof Se.Name?r:this.var("_arr",r);return this.forRange("_i",0,(0,Se._)`${o}.length`,a=>{this.var(s,(0,Se._)`${o}[${a}]`),n(s)})}return this._for(new $m("of",i,s,r),()=>n(s))}forIn(e,r,n,i=this.opts.es5?kn.varKinds.var:kn.varKinds.const){if(this.opts.ownProperties)return this.forOf(e,(0,Se._)`Object.keys(${r})`,n);let s=this._scope.toName(e);return this._for(new $m("in",i,s,r),()=>n(s))}endFor(){return this._endBlockNode(Co)}label(e){return this._leafNode(new Pw(e))}break(e){return this._leafNode(new Kw(e))}return(e){let r=new Nu;if(this._blockNode(r),this.code(e),r.nodes.length!==1)throw new Error('CodeGen: "return" should have one node');return this._endBlockNode(Nu)}try(e,r,n){if(!r&&!n)throw new Error('CodeGen: "try" without "catch" and "finally"');let i=new Fw;if(this._blockNode(i),this.code(e),r){let s=this.name("e");this._currNode=i.catch=new Lu(s),r(s)}return n&&(this._currNode=i.finally=new qu,this.code(n)),this._endBlockNode(Lu,qu)}throw(e){return this._leafNode(new Dw(e))}block(e,r){return this._blockStarts.push(this._nodes.length),e&&this.code(e).endBlock(r),this}endBlock(e){let r=this._blockStarts.pop();if(r===void 0)throw new Error("CodeGen: not in self-balancing block");let n=this._nodes.length-r;if(n<0||e!==void 0&&n!==e)throw new Error(`CodeGen: wrong number of nodes: ${n} vs ${e} expected`);return this._nodes.length=r,this}func(e,r=Se.nil,n,i){return this._blockNode(new Mu(e,r,n)),i&&this.code(i).endFunc(),this}endFunc(){return this._endBlockNode(Mu)}optimize(e=1){for(;e-- >0;)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(e){return this._currNode.nodes.push(e),this}_blockNode(e){this._currNode.nodes.push(e),this._nodes.push(e)}_endBlockNode(e,r){let n=this._currNode;if(n instanceof e||r&&n instanceof r)return this._nodes.pop(),this;throw new Error(`CodeGen: not in block "${r?`${e.kind}/${r.kind}`:e.kind}"`)}_elseNode(e){let r=this._currNode;if(!(r instanceof Oo))throw new Error('CodeGen: "else" without "if"');return this._currNode=r.else=e,this}get _root(){return this._nodes[0]}get _currNode(){let e=this._nodes;return e[e.length-1]}set _currNode(e){let r=this._nodes;r[r.length-1]=e}};me.CodeGen=$w;function jo(t,e){for(let r in e)t[r]=(t[r]||0)+(e[r]||0);return t}function Um(t,e){return e instanceof Se._CodeOrName?jo(t,e.names):t}function Ec(t,e,r){if(t instanceof Se.Name)return n(t);if(!i(t))return t;return new Se._Code(t._items.reduce((s,o)=>(o instanceof Se.Name&&(o=n(o)),o instanceof Se._Code?s.push(...o._items):s.push(o),s),[]));function n(s){let o=r[s.str];return o===void 0||e[s.str]!==1?s:(delete e[s.str],o)}function i(s){return s instanceof Se._Code&&s._items.some(o=>o instanceof Se.Name&&e[o.str]===1&&r[o.str]!==void 0)}}function $de(t,e){for(let r in e)t[r]=(t[r]||0)-(e[r]||0)}function n2(t){return typeof t=="boolean"||typeof t=="number"||t===null?!t:(0,Se._)`!${Uw(t)}`}me.not=n2;var Ude=i2(me.operators.AND);function Jde(...t){return t.reduce(Ude)}me.and=Jde;var zde=i2(me.operators.OR);function Gde(...t){return t.reduce(zde)}me.or=Gde;function i2(t){return(e,r)=>e===Se.nil?r:r===Se.nil?e:(0,Se._)`${Uw(e)} ${t} ${Uw(r)}`}function Uw(t){return t instanceof Se.Name?t:(0,Se._)`(${t})`}});var we=h(he=>{"use strict";Object.defineProperty(he,"__esModule",{value:!0});he.checkStrictMode=he.getErrorPath=he.Type=he.useFunc=he.setEvaluated=he.evaluatedPropsToName=he.mergeEvaluated=he.eachItem=he.unescapeJsonPointer=he.escapeJsonPointer=he.escapeFragment=he.unescapeFragment=he.schemaRefOrVal=he.schemaHasRulesButRef=he.schemaHasRules=he.checkUnknownRules=he.alwaysValidSchema=he.toHash=void 0;var qe=ue(),Bde=Ku();function Hde(t){let e={};for(let r of t)e[r]=!0;return e}he.toHash=Hde;function Vde(t,e){return typeof e=="boolean"?e:Object.keys(e).length===0?!0:(a2(t,e),!c2(e,t.self.RULES.all))}he.alwaysValidSchema=Vde;function a2(t,e=t.schema){let{opts:r,self:n}=t;if(!r.strictSchema||typeof e=="boolean")return;let i=n.RULES.keywords;for(let s in e)i[s]||d2(t,`unknown keyword: "${s}"`)}he.checkUnknownRules=a2;function c2(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(e[r])return!0;return!1}he.schemaHasRules=c2;function Wde(t,e){if(typeof t=="boolean")return!t;for(let r in t)if(r!=="$ref"&&e.all[r])return!0;return!1}he.schemaHasRulesButRef=Wde;function Yde({topSchemaRef:t,schemaPath:e},r,n,i){if(!i){if(typeof r=="number"||typeof r=="boolean")return r;if(typeof r=="string")return(0,qe._)`${r}`}return(0,qe._)`${t}${e}${(0,qe.getProperty)(n)}`}he.schemaRefOrVal=Yde;function Qde(t){return l2(decodeURIComponent(t))}he.unescapeFragment=Qde;function Xde(t){return encodeURIComponent(zw(t))}he.escapeFragment=Xde;function zw(t){return typeof t=="number"?`${t}`:t.replace(/~/g,"~0").replace(/\//g,"~1")}he.escapeJsonPointer=zw;function l2(t){return t.replace(/~1/g,"/").replace(/~0/g,"~")}he.unescapeJsonPointer=l2;function Zde(t,e){if(Array.isArray(t))for(let r of t)e(r);else e(t)}he.eachItem=Zde;function s2({mergeNames:t,mergeToName:e,mergeValues:r,resultToName:n}){return(i,s,o,a)=>{let c=o===void 0?s:o instanceof qe.Name?(s instanceof qe.Name?t(i,s,o):e(i,s,o),o):s instanceof qe.Name?(e(i,o,s),s):r(s,o);return a===qe.Name&&!(c instanceof qe.Name)?n(i,c):c}}he.mergeEvaluated={props:s2({mergeNames:(t,e,r)=>t.if((0,qe._)`${r} !== true && ${e} !== undefined`,()=>{t.if((0,qe._)`${e} === true`,()=>t.assign(r,!0),()=>t.assign(r,(0,qe._)`${r} || {}`).code((0,qe._)`Object.assign(${r}, ${e})`))}),mergeToName:(t,e,r)=>t.if((0,qe._)`${r} !== true`,()=>{e===!0?t.assign(r,!0):(t.assign(r,(0,qe._)`${r} || {}`),Gw(t,r,e))}),mergeValues:(t,e)=>t===!0?!0:{...t,...e},resultToName:u2}),items:s2({mergeNames:(t,e,r)=>t.if((0,qe._)`${r} !== true && ${e} !== undefined`,()=>t.assign(r,(0,qe._)`${e} === true ? true : ${r} > ${e} ? ${r} : ${e}`)),mergeToName:(t,e,r)=>t.if((0,qe._)`${r} !== true`,()=>t.assign(r,e===!0?!0:(0,qe._)`${r} > ${e} ? ${r} : ${e}`)),mergeValues:(t,e)=>t===!0?!0:Math.max(t,e),resultToName:(t,e)=>t.var("items",e)})};function u2(t,e){if(e===!0)return t.var("props",!0);let r=t.var("props",(0,qe._)`{}`);return e!==void 0&&Gw(t,r,e),r}he.evaluatedPropsToName=u2;function Gw(t,e,r){Object.keys(r).forEach(n=>t.assign((0,qe._)`${e}${(0,qe.getProperty)(n)}`,!0))}he.setEvaluated=Gw;var o2={};function epe(t,e){return t.scopeValue("func",{ref:e,code:o2[e.code]||(o2[e.code]=new Bde._Code(e.code))})}he.useFunc=epe;var Jw;(function(t){t[t.Num=0]="Num",t[t.Str=1]="Str"})(Jw||(he.Type=Jw={}));function tpe(t,e,r){if(t instanceof qe.Name){let n=e===Jw.Num;return r?n?(0,qe._)`"[" + ${t} + "]"`:(0,qe._)`"['" + ${t} + "']"`:n?(0,qe._)`"/" + ${t}`:(0,qe._)`"/" + ${t}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return r?(0,qe.getProperty)(t).toString():"/"+zw(t)}he.getErrorPath=tpe;function d2(t,e,r=t.opts.strictSchema){if(r){if(e=`strict mode: ${e}`,r===!0)throw new Error(e);t.self.logger.warn(e)}}he.checkStrictMode=d2});var Fi=h(Bw=>{"use strict";Object.defineProperty(Bw,"__esModule",{value:!0});var Qt=ue(),rpe={data:new Qt.Name("data"),valCxt:new Qt.Name("valCxt"),instancePath:new Qt.Name("instancePath"),parentData:new Qt.Name("parentData"),parentDataProperty:new Qt.Name("parentDataProperty"),rootData:new Qt.Name("rootData"),dynamicAnchors:new Qt.Name("dynamicAnchors"),vErrors:new Qt.Name("vErrors"),errors:new Qt.Name("errors"),this:new Qt.Name("this"),self:new Qt.Name("self"),scope:new Qt.Name("scope"),json:new Qt.Name("json"),jsonPos:new Qt.Name("jsonPos"),jsonLen:new Qt.Name("jsonLen"),jsonPart:new Qt.Name("jsonPart")};Bw.default=rpe});var Fu=h(Xt=>{"use strict";Object.defineProperty(Xt,"__esModule",{value:!0});Xt.extendErrors=Xt.resetErrorsCount=Xt.reportExtraError=Xt.reportError=Xt.keyword$DataError=Xt.keywordError=void 0;var _e=ue(),zm=we(),lr=Fi();Xt.keywordError={message:({keyword:t})=>(0,_e.str)`must pass "${t}" keyword validation`};Xt.keyword$DataError={message:({keyword:t,schemaType:e})=>e?(0,_e.str)`"${t}" keyword must be ${e} ($data)`:(0,_e.str)`"${t}" keyword is invalid ($data)`};function npe(t,e=Xt.keywordError,r,n){let{it:i}=t,{gen:s,compositeRule:o,allErrors:a}=i,c=m2(t,e,r);n??(o||a)?p2(s,c):f2(i,(0,_e._)`[${c}]`)}Xt.reportError=npe;function ipe(t,e=Xt.keywordError,r){let{it:n}=t,{gen:i,compositeRule:s,allErrors:o}=n,a=m2(t,e,r);p2(i,a),s||o||f2(n,lr.default.vErrors)}Xt.reportExtraError=ipe;function spe(t,e){t.assign(lr.default.errors,e),t.if((0,_e._)`${lr.default.vErrors} !== null`,()=>t.if(e,()=>t.assign((0,_e._)`${lr.default.vErrors}.length`,e),()=>t.assign(lr.default.vErrors,null)))}Xt.resetErrorsCount=spe;function ope({gen:t,keyword:e,schemaValue:r,data:n,errsCount:i,it:s}){if(i===void 0)throw new Error("ajv implementation error");let o=t.name("err");t.forRange("i",i,lr.default.errors,a=>{t.const(o,(0,_e._)`${lr.default.vErrors}[${a}]`),t.if((0,_e._)`${o}.instancePath === undefined`,()=>t.assign((0,_e._)`${o}.instancePath`,(0,_e.strConcat)(lr.default.instancePath,s.errorPath))),t.assign((0,_e._)`${o}.schemaPath`,(0,_e.str)`${s.errSchemaPath}/${e}`),s.opts.verbose&&(t.assign((0,_e._)`${o}.schema`,r),t.assign((0,_e._)`${o}.data`,n))})}Xt.extendErrors=ope;function p2(t,e){let r=t.const("err",e);t.if((0,_e._)`${lr.default.vErrors} === null`,()=>t.assign(lr.default.vErrors,(0,_e._)`[${r}]`),(0,_e._)`${lr.default.vErrors}.push(${r})`),t.code((0,_e._)`${lr.default.errors}++`)}function f2(t,e){let{gen:r,validateName:n,schemaEnv:i}=t;i.$async?r.throw((0,_e._)`new ${t.ValidationError}(${e})`):(r.assign((0,_e._)`${n}.errors`,e),r.return(!1))}var Po={keyword:new _e.Name("keyword"),schemaPath:new _e.Name("schemaPath"),params:new _e.Name("params"),propertyName:new _e.Name("propertyName"),message:new _e.Name("message"),schema:new _e.Name("schema"),parentSchema:new _e.Name("parentSchema")};function m2(t,e,r){let{createErrors:n}=t.it;return n===!1?(0,_e._)`{}`:ape(t,e,r)}function ape(t,e,r={}){let{gen:n,it:i}=t,s=[cpe(i,r),lpe(t,r)];return upe(t,e,s),n.object(...s)}function cpe({errorPath:t},{instancePath:e}){let r=e?(0,_e.str)`${t}${(0,zm.getErrorPath)(e,zm.Type.Str)}`:t;return[lr.default.instancePath,(0,_e.strConcat)(lr.default.instancePath,r)]}function lpe({keyword:t,it:{errSchemaPath:e}},{schemaPath:r,parentSchema:n}){let i=n?e:(0,_e.str)`${e}/${t}`;return r&&(i=(0,_e.str)`${i}${(0,zm.getErrorPath)(r,zm.Type.Str)}`),[Po.schemaPath,i]}function upe(t,{params:e,message:r},n){let{keyword:i,data:s,schemaValue:o,it:a}=t,{opts:c,propertyName:l,topSchemaRef:u,schemaPath:d}=a;n.push([Po.keyword,i],[Po.params,typeof e=="function"?e(t):e||(0,_e._)`{}`]),c.messages&&n.push([Po.message,typeof r=="function"?r(t):r]),c.verbose&&n.push([Po.schema,o],[Po.parentSchema,(0,_e._)`${u}${d}`],[lr.default.data,s]),l&&n.push([Po.propertyName,l])}});var y2=h(Sc=>{"use strict";Object.defineProperty(Sc,"__esModule",{value:!0});Sc.boolOrEmptySchema=Sc.topBoolOrEmptySchema=void 0;var dpe=Fu(),ppe=ue(),fpe=Fi(),mpe={message:"boolean schema is false"};function hpe(t){let{gen:e,schema:r,validateName:n}=t;r===!1?h2(t,!1):typeof r=="object"&&r.$async===!0?e.return(fpe.default.data):(e.assign((0,ppe._)`${n}.errors`,null),e.return(!0))}Sc.topBoolOrEmptySchema=hpe;function ype(t,e){let{gen:r,schema:n}=t;n===!1?(r.var(e,!1),h2(t)):r.var(e,!0)}Sc.boolOrEmptySchema=ype;function h2(t,e){let{gen:r,data:n}=t,i={gen:r,keyword:"false schema",data:n,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it:t};(0,dpe.reportError)(i,mpe,void 0,e)}});var Hw=h(xc=>{"use strict";Object.defineProperty(xc,"__esModule",{value:!0});xc.getRules=xc.isJSONType=void 0;var gpe=["string","number","integer","boolean","null","object","array"],bpe=new Set(gpe);function vpe(t){return typeof t=="string"&&bpe.has(t)}xc.isJSONType=vpe;function Epe(){let t={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...t,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},t.number,t.string,t.array,t.object],post:{rules:[]},all:{},keywords:{}}}xc.getRules=Epe});var Vw=h(_s=>{"use strict";Object.defineProperty(_s,"__esModule",{value:!0});_s.shouldUseRule=_s.shouldUseGroup=_s.schemaHasRulesForType=void 0;function Spe({schema:t,self:e},r){let n=e.RULES.types[r];return n&&n!==!0&&g2(t,n)}_s.schemaHasRulesForType=Spe;function g2(t,e){return e.rules.some(r=>b2(t,r))}_s.shouldUseGroup=g2;function b2(t,e){var r;return t[e.keyword]!==void 0||((r=e.definition.implements)===null||r===void 0?void 0:r.some(n=>t[n]!==void 0))}_s.shouldUseRule=b2});var $u=h(Zt=>{"use strict";Object.defineProperty(Zt,"__esModule",{value:!0});Zt.reportTypeError=Zt.checkDataTypes=Zt.checkDataType=Zt.coerceAndCheckDataType=Zt.getJSONTypes=Zt.getSchemaTypes=Zt.DataType=void 0;var xpe=Hw(),wpe=Vw(),_pe=Fu(),le=ue(),v2=we(),wc;(function(t){t[t.Correct=0]="Correct",t[t.Wrong=1]="Wrong"})(wc||(Zt.DataType=wc={}));function Ipe(t){let e=E2(t.type);if(e.includes("null")){if(t.nullable===!1)throw new Error("type: null contradicts nullable: false")}else{if(!e.length&&t.nullable!==void 0)throw new Error('"nullable" cannot be used without "type"');t.nullable===!0&&e.push("null")}return e}Zt.getSchemaTypes=Ipe;function E2(t){let e=Array.isArray(t)?t:t?[t]:[];if(e.every(xpe.isJSONType))return e;throw new Error("type must be JSONType or JSONType[]: "+e.join(","))}Zt.getJSONTypes=E2;function Tpe(t,e){let{gen:r,data:n,opts:i}=t,s=kpe(e,i.coerceTypes),o=e.length>0&&!(s.length===0&&e.length===1&&(0,wpe.schemaHasRulesForType)(t,e[0]));if(o){let a=Yw(e,n,i.strictNumbers,wc.Wrong);r.if(a,()=>{s.length?Ape(t,e,s):Qw(t)})}return o}Zt.coerceAndCheckDataType=Tpe;var S2=new Set(["string","number","integer","boolean","null"]);function kpe(t,e){return e?t.filter(r=>S2.has(r)||e==="array"&&r==="array"):[]}function Ape(t,e,r){let{gen:n,data:i,opts:s}=t,o=n.let("dataType",(0,le._)`typeof ${i}`),a=n.let("coerced",(0,le._)`undefined`);s.coerceTypes==="array"&&n.if((0,le._)`${o} == 'object' && Array.isArray(${i}) && ${i}.length == 1`,()=>n.assign(i,(0,le._)`${i}[0]`).assign(o,(0,le._)`typeof ${i}`).if(Yw(e,i,s.strictNumbers),()=>n.assign(a,i))),n.if((0,le._)`${a} !== undefined`);for(let l of r)(S2.has(l)||l==="array"&&s.coerceTypes==="array")&&c(l);n.else(),Qw(t),n.endIf(),n.if((0,le._)`${a} !== undefined`,()=>{n.assign(i,a),Rpe(t,a)});function c(l){switch(l){case"string":n.elseIf((0,le._)`${o} == "number" || ${o} == "boolean"`).assign(a,(0,le._)`"" + ${i}`).elseIf((0,le._)`${i} === null`).assign(a,(0,le._)`""`);return;case"number":n.elseIf((0,le._)`${o} == "boolean" || ${i} === null
|| (${o} == "string" && ${i} && ${i} == +${i})`).assign(a,(0,le._)`+${i}`);return;case"integer":n.elseIf((0,le._)`${o} === "boolean" || ${i} === null
|| (${o} === "string" && ${i} && ${i} == +${i} && !(${i} % 1))`).assign(a,(0,le._)`+${i}`);return;case"boolean":n.elseIf((0,le._)`${i} === "false" || ${i} === 0 || ${i} === null`).assign(a,!1).elseIf((0,le._)`${i} === "true" || ${i} === 1`).assign(a,!0);return;case"null":n.elseIf((0,le._)`${i} === "" || ${i} === 0 || ${i} === false`),n.assign(a,null);return;case"array":n.elseIf((0,le._)`${o} === "string" || ${o} === "number"
|| ${o} === "boolean" || ${i} === null`).assign(a,(0,le._)`[${i}]`)}}}function Rpe({gen:t,parentData:e,parentDataProperty:r},n){t.if((0,le._)`${e} !== undefined`,()=>t.assign((0,le._)`${e}[${r}]`,n))}function Ww(t,e,r,n=wc.Correct){let i=n===wc.Correct?le.operators.EQ:le.operators.NEQ,s;switch(t){case"null":return(0,le._)`${e} ${i} null`;case"array":s=(0,le._)`Array.isArray(${e})`;break;case"object":s=(0,le._)`${e} && typeof ${e} == "object" && !Array.isArray(${e})`;break;case"integer":s=o((0,le._)`!(${e} % 1) && !isNaN(${e})`);break;case"number":s=o();break;default:return(0,le._)`typeof ${e} ${i} ${t}`}return n===wc.Correct?s:(0,le.not)(s);function o(a=le.nil){return(0,le.and)((0,le._)`typeof ${e} == "number"`,a,r?(0,le._)`isFinite(${e})`:le.nil)}}Zt.checkDataType=Ww;function Yw(t,e,r,n){if(t.length===1)return Ww(t[0],e,r,n);let i,s=(0,v2.toHash)(t);if(s.array&&s.object){let o=(0,le._)`typeof ${e} != "object"`;i=s.null?o:(0,le._)`!${e} || ${o}`,delete s.null,delete s.array,delete s.object}else i=le.nil;s.number&&delete s.integer;for(let o in s)i=(0,le.and)(i,Ww(o,e,r,n));return i}Zt.checkDataTypes=Yw;var Ope={message:({schema:t})=>`must be ${t}`,params:({schema:t,schemaValue:e})=>typeof t=="string"?(0,le._)`{type: ${t}}`:(0,le._)`{type: ${e}}`};function Qw(t){let e=Cpe(t);(0,_pe.reportError)(e,Ope)}Zt.reportTypeError=Qw;function Cpe(t){let{gen:e,data:r,schema:n}=t,i=(0,v2.schemaRefOrVal)(t,n,"type");return{gen:e,keyword:"type",data:r,schema:n.type,schemaCode:i,schemaValue:i,parentSchema:n,params:{},it:t}}});var w2=h(Gm=>{"use strict";Object.defineProperty(Gm,"__esModule",{value:!0});Gm.assignDefaults=void 0;var _c=ue(),jpe=we();function Ppe(t,e){let{properties:r,items:n}=t.schema;if(e==="object"&&r)for(let i in r)x2(t,i,r[i].default);else e==="array"&&Array.isArray(n)&&n.forEach((i,s)=>x2(t,s,i.default))}Gm.assignDefaults=Ppe;function x2(t,e,r){let{gen:n,compositeRule:i,data:s,opts:o}=t;if(r===void 0)return;let a=(0,_c._)`${s}${(0,_c.getProperty)(e)}`;if(i){(0,jpe.checkStrictMode)(t,`default is ignored for: ${a}`);return}let c=(0,_c._)`${a} === undefined`;o.useDefaults==="empty"&&(c=(0,_c._)`${c} || ${a} === null || ${a} === ""`),n.if(c,(0,_c._)`${a} = ${(0,_c.stringify)(r)}`)}});var on=h(Me=>{"use strict";Object.defineProperty(Me,"__esModule",{value:!0});Me.validateUnion=Me.validateArray=Me.usePattern=Me.callValidateCode=Me.schemaProperties=Me.allSchemaProperties=Me.noPropertyInData=Me.propertyInData=Me.isOwnProperty=Me.hasPropFunc=Me.reportMissingProp=Me.checkMissingProp=Me.checkReportMissingProp=void 0;var He=ue(),Xw=we(),Is=Fi(),Kpe=we();function Dpe(t,e){let{gen:r,data:n,it:i}=t;r.if(e_(r,n,e,i.opts.ownProperties),()=>{t.setParams({missingProperty:(0,He._)`${e}`},!0),t.error()})}Me.checkReportMissingProp=Dpe;function Mpe({gen:t,data:e,it:{opts:r}},n,i){return(0,He.or)(...n.map(s=>(0,He.and)(e_(t,e,s,r.ownProperties),(0,He._)`${i} = ${s}`)))}Me.checkMissingProp=Mpe;function Npe(t,e){t.setParams({missingProperty:e},!0),t.error()}Me.reportMissingProp=Npe;function _2(t){return t.scopeValue("func",{ref:Object.prototype.hasOwnProperty,code:(0,He._)`Object.prototype.hasOwnProperty`})}Me.hasPropFunc=_2;function Zw(t,e,r){return(0,He._)`${_2(t)}.call(${e}, ${r})`}Me.isOwnProperty=Zw;function Lpe(t,e,r,n){let i=(0,He._)`${e}${(0,He.getProperty)(r)} !== undefined`;return n?(0,He._)`${i} && ${Zw(t,e,r)}`:i}Me.propertyInData=Lpe;function e_(t,e,r,n){let i=(0,He._)`${e}${(0,He.getProperty)(r)} === undefined`;return n?(0,He.or)(i,(0,He.not)(Zw(t,e,r))):i}Me.noPropertyInData=e_;function I2(t){return t?Object.keys(t).filter(e=>e!=="__proto__"):[]}Me.allSchemaProperties=I2;function qpe(t,e){return I2(e).filter(r=>!(0,Xw.alwaysValidSchema)(t,e[r]))}Me.schemaProperties=qpe;function Fpe({schemaCode:t,data:e,it:{gen:r,topSchemaRef:n,schemaPath:i,errorPath:s},it:o},a,c,l){let u=l?(0,He._)`${t}, ${e}, ${n}${i}`:e,d=[[Is.default.instancePath,(0,He.strConcat)(Is.default.instancePath,s)],[Is.default.parentData,o.parentData],[Is.default.parentDataProperty,o.parentDataProperty],[Is.default.rootData,Is.default.rootData]];o.opts.dynamicRef&&d.push([Is.default.dynamicAnchors,Is.default.dynamicAnchors]);let p=(0,He._)`${u}, ${r.object(...d)}`;return c!==He.nil?(0,He._)`${a}.call(${c}, ${p})`:(0,He._)`${a}(${p})`}Me.callValidateCode=Fpe;var $pe=(0,He._)`new RegExp`;function Upe({gen:t,it:{opts:e}},r){let n=e.unicodeRegExp?"u":"",{regExp:i}=e.code,s=i(r,n);return t.scopeValue("pattern",{key:s.toString(),ref:s,code:(0,He._)`${i.code==="new RegExp"?$pe:(0,Kpe.useFunc)(t,i)}(${r}, ${n})`})}Me.usePattern=Upe;function Jpe(t){let{gen:e,data:r,keyword:n,it:i}=t,s=e.name("valid");if(i.allErrors){let a=e.let("valid",!0);return o(()=>e.assign(a,!1)),a}return e.var(s,!0),o(()=>e.break()),s;function o(a){let c=e.const("len",(0,He._)`${r}.length`);e.forRange("i",0,c,l=>{t.subschema({keyword:n,dataProp:l,dataPropType:Xw.Type.Num},s),e.if((0,He.not)(s),a)})}}Me.validateArray=Jpe;function zpe(t){let{gen:e,schema:r,keyword:n,it:i}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(r.some(c=>(0,Xw.alwaysValidSchema)(i,c))&&!i.opts.unevaluated)return;let o=e.let("valid",!1),a=e.name("_valid");e.block(()=>r.forEach((c,l)=>{let u=t.subschema({keyword:n,schemaProp:l,compositeRule:!0},a);e.assign(o,(0,He._)`${o} || ${a}`),t.mergeValidEvaluated(u,a)||e.if((0,He.not)(o))})),t.result(o,()=>t.reset(),()=>t.error(!0))}Me.validateUnion=zpe});var A2=h(Xn=>{"use strict";Object.defineProperty(Xn,"__esModule",{value:!0});Xn.validateKeywordUsage=Xn.validSchemaType=Xn.funcKeywordCode=Xn.macroKeywordCode=void 0;var ur=ue(),Ko=Fi(),Gpe=on(),Bpe=Fu();function Hpe(t,e){let{gen:r,keyword:n,schema:i,parentSchema:s,it:o}=t,a=e.macro.call(o.self,i,s,o),c=k2(r,n,a);o.opts.validateSchema!==!1&&o.self.validateSchema(a,!0);let l=r.name("valid");t.subschema({schema:a,schemaPath:ur.nil,errSchemaPath:`${o.errSchemaPath}/${n}`,topSchemaRef:c,compositeRule:!0},l),t.pass(l,()=>t.error(!0))}Xn.macroKeywordCode=Hpe;function Vpe(t,e){var r;let{gen:n,keyword:i,schema:s,parentSchema:o,$data:a,it:c}=t;Ype(c,e);let l=!a&&e.compile?e.compile.call(c.self,s,o,c):e.validate,u=k2(n,i,l),d=n.let("valid");t.block$data(d,p),t.ok((r=e.valid)!==null&&r!==void 0?r:d);function p(){if(e.errors===!1)y(),e.modifying&&T2(t),b(()=>t.error());else{let v=e.async?f():m();e.modifying&&T2(t),b(()=>Wpe(t,v))}}function f(){let v=n.let("ruleErrs",null);return n.try(()=>y((0,ur._)`await `),E=>n.assign(d,!1).if((0,ur._)`${E} instanceof ${c.ValidationError}`,()=>n.assign(v,(0,ur._)`${E}.errors`),()=>n.throw(E))),v}function m(){let v=(0,ur._)`${u}.errors`;return n.assign(v,null),y(ur.nil),v}function y(v=e.async?(0,ur._)`await `:ur.nil){let E=c.opts.passContext?Ko.default.this:Ko.default.self,S=!("compile"in e&&!a||e.schema===!1);n.assign(d,(0,ur._)`${v}${(0,Gpe.callValidateCode)(t,u,E,S)}`,e.modifying)}function b(v){var E;n.if((0,ur.not)((E=e.valid)!==null&&E!==void 0?E:d),v)}}Xn.funcKeywordCode=Vpe;function T2(t){let{gen:e,data:r,it:n}=t;e.if(n.parentData,()=>e.assign(r,(0,ur._)`${n.parentData}[${n.parentDataProperty}]`))}function Wpe(t,e){let{gen:r}=t;r.if((0,ur._)`Array.isArray(${e})`,()=>{r.assign(Ko.default.vErrors,(0,ur._)`${Ko.default.vErrors} === null ? ${e} : ${Ko.default.vErrors}.concat(${e})`).assign(Ko.default.errors,(0,ur._)`${Ko.default.vErrors}.length`),(0,Bpe.extendErrors)(t)},()=>t.error())}function Ype({schemaEnv:t},e){if(e.async&&!t.$async)throw new Error("async keyword in sync schema")}function k2(t,e,r){if(r===void 0)throw new Error(`keyword "${e}" failed to compile`);return t.scopeValue("keyword",typeof r=="function"?{ref:r}:{ref:r,code:(0,ur.stringify)(r)})}function Qpe(t,e,r=!1){return!e.length||e.some(n=>n==="array"?Array.isArray(t):n==="object"?t&&typeof t=="object"&&!Array.isArray(t):typeof t==n||r&&typeof t>"u")}Xn.validSchemaType=Qpe;function Xpe({schema:t,opts:e,self:r,errSchemaPath:n},i,s){if(Array.isArray(i.keyword)?!i.keyword.includes(s):i.keyword!==s)throw new Error("ajv implementation error");let o=i.dependencies;if(o?.some(a=>!Object.prototype.hasOwnProperty.call(t,a)))throw new Error(`parent schema must have dependencies of ${s}: ${o.join(",")}`);if(i.validateSchema&&!i.validateSchema(t[s])){let c=`keyword "${s}" value is invalid at path "${n}": `+r.errorsText(i.validateSchema.errors);if(e.validateSchema==="log")r.logger.error(c);else throw new Error(c)}}Xn.validateKeywordUsage=Xpe});var O2=h(Ts=>{"use strict";Object.defineProperty(Ts,"__esModule",{value:!0});Ts.extendSubschemaMode=Ts.extendSubschemaData=Ts.getSubschema=void 0;var Zn=ue(),R2=we();function Zpe(t,{keyword:e,schemaProp:r,schema:n,schemaPath:i,errSchemaPath:s,topSchemaRef:o}){if(e!==void 0&&n!==void 0)throw new Error('both "keyword" and "schema" passed, only one allowed');if(e!==void 0){let a=t.schema[e];return r===void 0?{schema:a,schemaPath:(0,Zn._)`${t.schemaPath}${(0,Zn.getProperty)(e)}`,errSchemaPath:`${t.errSchemaPath}/${e}`}:{schema:a[r],schemaPath:(0,Zn._)`${t.schemaPath}${(0,Zn.getProperty)(e)}${(0,Zn.getProperty)(r)}`,errSchemaPath:`${t.errSchemaPath}/${e}/${(0,R2.escapeFragment)(r)}`}}if(n!==void 0){if(i===void 0||s===void 0||o===void 0)throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"');return{schema:n,schemaPath:i,topSchemaRef:o,errSchemaPath:s}}throw new Error('either "keyword" or "schema" must be passed')}Ts.getSubschema=Zpe;function efe(t,e,{dataProp:r,dataPropType:n,data:i,dataTypes:s,propertyName:o}){if(i!==void 0&&r!==void 0)throw new Error('both "data" and "dataProp" passed, only one allowed');let{gen:a}=e;if(r!==void 0){let{errorPath:l,dataPathArr:u,opts:d}=e,p=a.let("data",(0,Zn._)`${e.data}${(0,Zn.getProperty)(r)}`,!0);c(p),t.errorPath=(0,Zn.str)`${l}${(0,R2.getErrorPath)(r,n,d.jsPropertySyntax)}`,t.parentDataProperty=(0,Zn._)`${r}`,t.dataPathArr=[...u,t.parentDataProperty]}if(i!==void 0){let l=i instanceof Zn.Name?i:a.let("data",i,!0);c(l),o!==void 0&&(t.propertyName=o)}s&&(t.dataTypes=s);function c(l){t.data=l,t.dataLevel=e.dataLevel+1,t.dataTypes=[],e.definedProperties=new Set,t.parentData=e.data,t.dataNames=[...e.dataNames,l]}}Ts.extendSubschemaData=efe;function tfe(t,{jtdDiscriminator:e,jtdMetadata:r,compositeRule:n,createErrors:i,allErrors:s}){n!==void 0&&(t.compositeRule=n),i!==void 0&&(t.createErrors=i),s!==void 0&&(t.allErrors=s),t.jtdDiscriminator=e,t.jtdMetadata=r}Ts.extendSubschemaMode=tfe});var t_=h((Vqe,C2)=>{"use strict";C2.exports=function t(e,r){if(e===r)return!0;if(e&&r&&typeof e=="object"&&typeof r=="object"){if(e.constructor!==r.constructor)return!1;var n,i,s;if(Array.isArray(e)){if(n=e.length,n!=r.length)return!1;for(i=n;i--!==0;)if(!t(e[i],r[i]))return!1;return!0}if(e.constructor===RegExp)return e.source===r.source&&e.flags===r.flags;if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===r.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===r.toString();if(s=Object.keys(e),n=s.length,n!==Object.keys(r).length)return!1;for(i=n;i--!==0;)if(!Object.prototype.hasOwnProperty.call(r,s[i]))return!1;for(i=n;i--!==0;){var o=s[i];if(!t(e[o],r[o]))return!1}return!0}return e!==e&&r!==r}});var P2=h((Wqe,j2)=>{"use strict";var ks=j2.exports=function(t,e,r){typeof e=="function"&&(r=e,e={}),r=e.cb||r;var n=typeof r=="function"?r:r.pre||function(){},i=r.post||function(){};Bm(e,n,i,t,"",t)};ks.keywords={additionalItems:!0,items:!0,contains:!0,additionalProperties:!0,propertyNames:!0,not:!0,if:!0,then:!0,else:!0};ks.arrayKeywords={items:!0,allOf:!0,anyOf:!0,oneOf:!0};ks.propsKeywords={$defs:!0,definitions:!0,properties:!0,patternProperties:!0,dependencies:!0};ks.skipKeywords={default:!0,enum:!0,const:!0,required:!0,maximum:!0,minimum:!0,exclusiveMaximum:!0,exclusiveMinimum:!0,multipleOf:!0,maxLength:!0,minLength:!0,pattern:!0,format:!0,maxItems:!0,minItems:!0,uniqueItems:!0,maxProperties:!0,minProperties:!0};function Bm(t,e,r,n,i,s,o,a,c,l){if(n&&typeof n=="object"&&!Array.isArray(n)){e(n,i,s,o,a,c,l);for(var u in n){var d=n[u];if(Array.isArray(d)){if(u in ks.arrayKeywords)for(var p=0;p<d.length;p++)Bm(t,e,r,d[p],i+"/"+u+"/"+p,s,i,u,n,p)}else if(u in ks.propsKeywords){if(d&&typeof d=="object")for(var f in d)Bm(t,e,r,d[f],i+"/"+u+"/"+rfe(f),s,i,u,n,f)}else(u in ks.keywords||t.allKeys&&!(u in ks.skipKeywords))&&Bm(t,e,r,d,i+"/"+u,s,i,u,n)}r(n,i,s,o,a,c,l)}}function rfe(t){return t.replace(/~/g,"~0").replace(/\//g,"~1")}});var Uu=h(Sr=>{"use strict";Object.defineProperty(Sr,"__esModule",{value:!0});Sr.getSchemaRefs=Sr.resolveUrl=Sr.normalizeId=Sr._getFullPath=Sr.getFullPath=Sr.inlineRef=void 0;var nfe=we(),ife=t_(),sfe=P2(),ofe=new Set(["type","format","pattern","maxLength","minLength","maxProperties","minProperties","maxItems","minItems","maximum","minimum","uniqueItems","multipleOf","required","enum","const"]);function afe(t,e=!0){return typeof t=="boolean"?!0:e===!0?!r_(t):e?K2(t)<=e:!1}Sr.inlineRef=afe;var cfe=new Set(["$ref","$recursiveRef","$recursiveAnchor","$dynamicRef","$dynamicAnchor"]);function r_(t){for(let e in t){if(cfe.has(e))return!0;let r=t[e];if(Array.isArray(r)&&r.some(r_)||typeof r=="object"&&r_(r))return!0}return!1}function K2(t){let e=0;for(let r in t){if(r==="$ref")return 1/0;if(e++,!ofe.has(r)&&(typeof t[r]=="object"&&(0,nfe.eachItem)(t[r],n=>e+=K2(n)),e===1/0))return 1/0}return e}function D2(t,e="",r){r!==!1&&(e=Ic(e));let n=t.parse(e);return M2(t,n)}Sr.getFullPath=D2;function M2(t,e){return t.serialize(e).split("#")[0]+"#"}Sr._getFullPath=M2;var lfe=/#\/?$/;function Ic(t){return t?t.replace(lfe,""):""}Sr.normalizeId=Ic;function ufe(t,e,r){return r=Ic(r),t.resolve(e,r)}Sr.resolveUrl=ufe;var dfe=/^[a-z_][-a-z0-9._]*$/i;function pfe(t,e){if(typeof t=="boolean")return{};let{schemaId:r,uriResolver:n}=this.opts,i=Ic(t[r]||e),s={"":i},o=D2(n,i,!1),a={},c=new Set;return sfe(t,{allKeys:!0},(d,p,f,m)=>{if(m===void 0)return;let y=o+p,b=s[m];typeof d[r]=="string"&&(b=v.call(this,d[r])),E.call(this,d.$anchor),E.call(this,d.$dynamicAnchor),s[p]=b;function v(S){let k=this.opts.uriResolver.resolve;if(S=Ic(b?k(b,S):S),c.has(S))throw u(S);c.add(S);let _=this.refs[S];return typeof _=="string"&&(_=this.refs[_]),typeof _=="object"?l(d,_.schema,S):S!==Ic(y)&&(S[0]==="#"?(l(d,a[S],S),a[S]=d):this.refs[S]=y),S}function E(S){if(typeof S=="string"){if(!dfe.test(S))throw new Error(`invalid anchor "${S}"`);v.call(this,`#${S}`)}}}),a;function l(d,p,f){if(p!==void 0&&!ife(d,p))throw u(f)}function u(d){return new Error(`reference "${d}" resolves to more than one schema`)}}Sr.getSchemaRefs=pfe});var Gu=h(As=>{"use strict";Object.defineProperty(As,"__esModule",{value:!0});As.getData=As.KeywordCxt=As.validateFunctionCode=void 0;var $2=y2(),N2=$u(),i_=Vw(),Hm=$u(),ffe=w2(),zu=A2(),n_=O2(),J=ue(),Z=Fi(),mfe=Uu(),$i=we(),Ju=Fu();function hfe(t){if(z2(t)&&(G2(t),J2(t))){bfe(t);return}U2(t,()=>(0,$2.topBoolOrEmptySchema)(t))}As.validateFunctionCode=hfe;function U2({gen:t,validateName:e,schema:r,schemaEnv:n,opts:i},s){i.code.es5?t.func(e,(0,J._)`${Z.default.data}, ${Z.default.valCxt}`,n.$async,()=>{t.code((0,J._)`"use strict"; ${L2(r,i)}`),gfe(t,i),t.code(s)}):t.func(e,(0,J._)`${Z.default.data}, ${yfe(i)}`,n.$async,()=>t.code(L2(r,i)).code(s))}function yfe(t){return(0,J._)`{${Z.default.instancePath}="", ${Z.default.parentData}, ${Z.default.parentDataProperty}, ${Z.default.rootData}=${Z.default.data}${t.dynamicRef?(0,J._)`, ${Z.default.dynamicAnchors}={}`:J.nil}}={}`}function gfe(t,e){t.if(Z.default.valCxt,()=>{t.var(Z.default.instancePath,(0,J._)`${Z.default.valCxt}.${Z.default.instancePath}`),t.var(Z.default.parentData,(0,J._)`${Z.default.valCxt}.${Z.default.parentData}`),t.var(Z.default.parentDataProperty,(0,J._)`${Z.default.valCxt}.${Z.default.parentDataProperty}`),t.var(Z.default.rootData,(0,J._)`${Z.default.valCxt}.${Z.default.rootData}`),e.dynamicRef&&t.var(Z.default.dynamicAnchors,(0,J._)`${Z.default.valCxt}.${Z.default.dynamicAnchors}`)},()=>{t.var(Z.default.instancePath,(0,J._)`""`),t.var(Z.default.parentData,(0,J._)`undefined`),t.var(Z.default.parentDataProperty,(0,J._)`undefined`),t.var(Z.default.rootData,Z.default.data),e.dynamicRef&&t.var(Z.default.dynamicAnchors,(0,J._)`{}`)})}function bfe(t){let{schema:e,opts:r,gen:n}=t;U2(t,()=>{r.$comment&&e.$comment&&H2(t),wfe(t),n.let(Z.default.vErrors,null),n.let(Z.default.errors,0),r.unevaluated&&vfe(t),B2(t),Tfe(t)})}function vfe(t){let{gen:e,validateName:r}=t;t.evaluated=e.const("evaluated",(0,J._)`${r}.evaluated`),e.if((0,J._)`${t.evaluated}.dynamicProps`,()=>e.assign((0,J._)`${t.evaluated}.props`,(0,J._)`undefined`)),e.if((0,J._)`${t.evaluated}.dynamicItems`,()=>e.assign((0,J._)`${t.evaluated}.items`,(0,J._)`undefined`))}function L2(t,e){let r=typeof t=="object"&&t[e.schemaId];return r&&(e.code.source||e.code.process)?(0,J._)`/*# sourceURL=${r} */`:J.nil}function Efe(t,e){if(z2(t)&&(G2(t),J2(t))){Sfe(t,e);return}(0,$2.boolOrEmptySchema)(t,e)}function J2({schema:t,self:e}){if(typeof t=="boolean")return!t;for(let r in t)if(e.RULES.all[r])return!0;return!1}function z2(t){return typeof t.schema!="boolean"}function Sfe(t,e){let{schema:r,gen:n,opts:i}=t;i.$comment&&r.$comment&&H2(t),_fe(t),Ife(t);let s=n.const("_errs",Z.default.errors);B2(t,s),n.var(e,(0,J._)`${s} === ${Z.default.errors}`)}function G2(t){(0,$i.checkUnknownRules)(t),xfe(t)}function B2(t,e){if(t.opts.jtd)return q2(t,[],!1,e);let r=(0,N2.getSchemaTypes)(t.schema),n=(0,N2.coerceAndCheckDataType)(t,r);q2(t,r,!n,e)}function xfe(t){let{schema:e,errSchemaPath:r,opts:n,self:i}=t;e.$ref&&n.ignoreKeywordsWithRef&&(0,$i.schemaHasRulesButRef)(e,i.RULES)&&i.logger.warn(`$ref: keywords ignored in schema at path "${r}"`)}function wfe(t){let{schema:e,opts:r}=t;e.default!==void 0&&r.useDefaults&&r.strictSchema&&(0,$i.checkStrictMode)(t,"default is ignored in the schema root")}function _fe(t){let e=t.schema[t.opts.schemaId];e&&(t.baseId=(0,mfe.resolveUrl)(t.opts.uriResolver,t.baseId,e))}function Ife(t){if(t.schema.$async&&!t.schemaEnv.$async)throw new Error("async schema in sync schema")}function H2({gen:t,schemaEnv:e,schema:r,errSchemaPath:n,opts:i}){let s=r.$comment;if(i.$comment===!0)t.code((0,J._)`${Z.default.self}.logger.log(${s})`);else if(typeof i.$comment=="function"){let o=(0,J.str)`${n}/$comment`,a=t.scopeValue("root",{ref:e.root});t.code((0,J._)`${Z.default.self}.opts.$comment(${s}, ${o}, ${a}.schema)`)}}function Tfe(t){let{gen:e,schemaEnv:r,validateName:n,ValidationError:i,opts:s}=t;r.$async?e.if((0,J._)`${Z.default.errors} === 0`,()=>e.return(Z.default.data),()=>e.throw((0,J._)`new ${i}(${Z.default.vErrors})`)):(e.assign((0,J._)`${n}.errors`,Z.default.vErrors),s.unevaluated&&kfe(t),e.return((0,J._)`${Z.default.errors} === 0`))}function kfe({gen:t,evaluated:e,props:r,items:n}){r instanceof J.Name&&t.assign((0,J._)`${e}.props`,r),n instanceof J.Name&&t.assign((0,J._)`${e}.items`,n)}function q2(t,e,r,n){let{gen:i,schema:s,data:o,allErrors:a,opts:c,self:l}=t,{RULES:u}=l;if(s.$ref&&(c.ignoreKeywordsWithRef||!(0,$i.schemaHasRulesButRef)(s,u))){i.block(()=>W2(t,"$ref",u.all.$ref.definition));return}c.jtd||Afe(t,e),i.block(()=>{for(let p of u.rules)d(p);d(u.post)});function d(p){(0,i_.shouldUseGroup)(s,p)&&(p.type?(i.if((0,Hm.checkDataType)(p.type,o,c.strictNumbers)),F2(t,p),e.length===1&&e[0]===p.type&&r&&(i.else(),(0,Hm.reportTypeError)(t)),i.endIf()):F2(t,p),a||i.if((0,J._)`${Z.default.errors} === ${n||0}`))}}function F2(t,e){let{gen:r,schema:n,opts:{useDefaults:i}}=t;i&&(0,ffe.assignDefaults)(t,e.type),r.block(()=>{for(let s of e.rules)(0,i_.shouldUseRule)(n,s)&&W2(t,s.keyword,s.definition,e.type)})}function Afe(t,e){t.schemaEnv.meta||!t.opts.strictTypes||(Rfe(t,e),t.opts.allowUnionTypes||Ofe(t,e),Cfe(t,t.dataTypes))}function Rfe(t,e){if(e.length){if(!t.dataTypes.length){t.dataTypes=e;return}e.forEach(r=>{V2(t.dataTypes,r)||s_(t,`type "${r}" not allowed by context "${t.dataTypes.join(",")}"`)}),Pfe(t,e)}}function Ofe(t,e){e.length>1&&!(e.length===2&&e.includes("null"))&&s_(t,"use allowUnionTypes to allow union type keyword")}function Cfe(t,e){let r=t.self.RULES.all;for(let n in r){let i=r[n];if(typeof i=="object"&&(0,i_.shouldUseRule)(t.schema,i)){let{type:s}=i.definition;s.length&&!s.some(o=>jfe(e,o))&&s_(t,`missing type "${s.join(",")}" for keyword "${n}"`)}}}function jfe(t,e){return t.includes(e)||e==="number"&&t.includes("integer")}function V2(t,e){return t.includes(e)||e==="integer"&&t.includes("number")}function Pfe(t,e){let r=[];for(let n of t.dataTypes)V2(e,n)?r.push(n):e.includes("integer")&&n==="number"&&r.push("integer");t.dataTypes=r}function s_(t,e){let r=t.schemaEnv.baseId+t.errSchemaPath;e+=` at "${r}" (strictTypes)`,(0,$i.checkStrictMode)(t,e,t.opts.strictTypes)}var Vm=class{constructor(e,r,n){if((0,zu.validateKeywordUsage)(e,r,n),this.gen=e.gen,this.allErrors=e.allErrors,this.keyword=n,this.data=e.data,this.schema=e.schema[n],this.$data=r.$data&&e.opts.$data&&this.schema&&this.schema.$data,this.schemaValue=(0,$i.schemaRefOrVal)(e,this.schema,n,this.$data),this.schemaType=r.schemaType,this.parentSchema=e.schema,this.params={},this.it=e,this.def=r,this.$data)this.schemaCode=e.gen.const("vSchema",Y2(this.$data,e));else if(this.schemaCode=this.schemaValue,!(0,zu.validSchemaType)(this.schema,r.schemaType,r.allowUndefined))throw new Error(`${n} value must be ${JSON.stringify(r.schemaType)}`);("code"in r?r.trackErrors:r.errors!==!1)&&(this.errsCount=e.gen.const("_errs",Z.default.errors))}result(e,r,n){this.failResult((0,J.not)(e),r,n)}failResult(e,r,n){this.gen.if(e),n?n():this.error(),r?(this.gen.else(),r(),this.allErrors&&this.gen.endIf()):this.allErrors?this.gen.endIf():this.gen.else()}pass(e,r){this.failResult((0,J.not)(e),void 0,r)}fail(e){if(e===void 0){this.error(),this.allErrors||this.gen.if(!1);return}this.gen.if(e),this.error(),this.allErrors?this.gen.endIf():this.gen.else()}fail$data(e){if(!this.$data)return this.fail(e);let{schemaCode:r}=this;this.fail((0,J._)`${r} !== undefined && (${(0,J.or)(this.invalid$data(),e)})`)}error(e,r,n){if(r){this.setParams(r),this._error(e,n),this.setParams({});return}this._error(e,n)}_error(e,r){(e?Ju.reportExtraError:Ju.reportError)(this,this.def.error,r)}$dataError(){(0,Ju.reportError)(this,this.def.$dataError||Ju.keyword$DataError)}reset(){if(this.errsCount===void 0)throw new Error('add "trackErrors" to keyword definition');(0,Ju.resetErrorsCount)(this.gen,this.errsCount)}ok(e){this.allErrors||this.gen.if(e)}setParams(e,r){r?Object.assign(this.params,e):this.params=e}block$data(e,r,n=J.nil){this.gen.block(()=>{this.check$data(e,n),r()})}check$data(e=J.nil,r=J.nil){if(!this.$data)return;let{gen:n,schemaCode:i,schemaType:s,def:o}=this;n.if((0,J.or)((0,J._)`${i} === undefined`,r)),e!==J.nil&&n.assign(e,!0),(s.length||o.validateSchema)&&(n.elseIf(this.invalid$data()),this.$dataError(),e!==J.nil&&n.assign(e,!1)),n.else()}invalid$data(){let{gen:e,schemaCode:r,schemaType:n,def:i,it:s}=this;return(0,J.or)(o(),a());function o(){if(n.length){if(!(r instanceof J.Name))throw new Error("ajv implementation error");let c=Array.isArray(n)?n:[n];return(0,J._)`${(0,Hm.checkDataTypes)(c,r,s.opts.strictNumbers,Hm.DataType.Wrong)}`}return J.nil}function a(){if(i.validateSchema){let c=e.scopeValue("validate$data",{ref:i.validateSchema});return(0,J._)`!${c}(${r})`}return J.nil}}subschema(e,r){let n=(0,n_.getSubschema)(this.it,e);(0,n_.extendSubschemaData)(n,this.it,e),(0,n_.extendSubschemaMode)(n,e);let i={...this.it,...n,items:void 0,props:void 0};return Efe(i,r),i}mergeEvaluated(e,r){let{it:n,gen:i}=this;n.opts.unevaluated&&(n.props!==!0&&e.props!==void 0&&(n.props=$i.mergeEvaluated.props(i,e.props,n.props,r)),n.items!==!0&&e.items!==void 0&&(n.items=$i.mergeEvaluated.items(i,e.items,n.items,r)))}mergeValidEvaluated(e,r){let{it:n,gen:i}=this;if(n.opts.unevaluated&&(n.props!==!0||n.items!==!0))return i.if(r,()=>this.mergeEvaluated(e,J.Name)),!0}};As.KeywordCxt=Vm;function W2(t,e,r,n){let i=new Vm(t,r,e);"code"in r?r.code(i,n):i.$data&&r.validate?(0,zu.funcKeywordCode)(i,r):"macro"in r?(0,zu.macroKeywordCode)(i,r):(r.compile||r.validate)&&(0,zu.funcKeywordCode)(i,r)}var Kfe=/^\/(?:[^~]|~0|~1)*$/,Dfe=/^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/;function Y2(t,{dataLevel:e,dataNames:r,dataPathArr:n}){let i,s;if(t==="")return Z.default.rootData;if(t[0]==="/"){if(!Kfe.test(t))throw new Error(`Invalid JSON-pointer: ${t}`);i=t,s=Z.default.rootData}else{let l=Dfe.exec(t);if(!l)throw new Error(`Invalid JSON-pointer: ${t}`);let u=+l[1];if(i=l[2],i==="#"){if(u>=e)throw new Error(c("property/index",u));return n[e-u]}if(u>e)throw new Error(c("data",u));if(s=r[e-u],!i)return s}let o=s,a=i.split("/");for(let l of a)l&&(s=(0,J._)`${s}${(0,J.getProperty)((0,$i.unescapeJsonPointer)(l))}`,o=(0,J._)`${o} && ${s}`);return o;function c(l,u){return`Cannot access ${l} ${u} levels up, current level is ${e}`}}As.getData=Y2});var Wm=h(a_=>{"use strict";Object.defineProperty(a_,"__esModule",{value:!0});var o_=class extends Error{constructor(e){super("validation failed"),this.errors=e,this.ajv=this.validation=!0}};a_.default=o_});var Bu=h(u_=>{"use strict";Object.defineProperty(u_,"__esModule",{value:!0});var c_=Uu(),l_=class extends Error{constructor(e,r,n,i){super(i||`can't resolve reference ${n} from id ${r}`),this.missingRef=(0,c_.resolveUrl)(e,r,n),this.missingSchema=(0,c_.normalizeId)((0,c_.getFullPath)(e,this.missingRef))}};u_.default=l_});var Qm=h(an=>{"use strict";Object.defineProperty(an,"__esModule",{value:!0});an.resolveSchema=an.getCompilingSchema=an.resolveRef=an.compileSchema=an.SchemaEnv=void 0;var An=ue(),Mfe=Wm(),Do=Fi(),Rn=Uu(),Q2=we(),Nfe=Gu(),Tc=class{constructor(e){var r;this.refs={},this.dynamicAnchors={};let n;typeof e.schema=="object"&&(n=e.schema),this.schema=e.schema,this.schemaId=e.schemaId,this.root=e.root||this,this.baseId=(r=e.baseId)!==null&&r!==void 0?r:(0,Rn.normalizeId)(n?.[e.schemaId||"$id"]),this.schemaPath=e.schemaPath,this.localRefs=e.localRefs,this.meta=e.meta,this.$async=n?.$async,this.refs={}}};an.SchemaEnv=Tc;function p_(t){let e=X2.call(this,t);if(e)return e;let r=(0,Rn.getFullPath)(this.opts.uriResolver,t.root.baseId),{es5:n,lines:i}=this.opts.code,{ownProperties:s}=this.opts,o=new An.CodeGen(this.scope,{es5:n,lines:i,ownProperties:s}),a;t.$async&&(a=o.scopeValue("Error",{ref:Mfe.default,code:(0,An._)`require("ajv/dist/runtime/validation_error").default`}));let c=o.scopeName("validate");t.validateName=c;let l={gen:o,allErrors:this.opts.allErrors,data:Do.default.data,parentData:Do.default.parentData,parentDataProperty:Do.default.parentDataProperty,dataNames:[Do.default.data],dataPathArr:[An.nil],dataLevel:0,dataTypes:[],definedProperties:new Set,topSchemaRef:o.scopeValue("schema",this.opts.code.source===!0?{ref:t.schema,code:(0,An.stringify)(t.schema)}:{ref:t.schema}),validateName:c,ValidationError:a,schema:t.schema,schemaEnv:t,rootId:r,baseId:t.baseId||r,schemaPath:An.nil,errSchemaPath:t.schemaPath||(this.opts.jtd?"":"#"),errorPath:(0,An._)`""`,opts:this.opts,self:this},u;try{this._compilations.add(t),(0,Nfe.validateFunctionCode)(l),o.optimize(this.opts.code.optimize);let d=o.toString();u=`${o.scopeRefs(Do.default.scope)}return ${d}`,this.opts.code.process&&(u=this.opts.code.process(u,t));let f=new Function(`${Do.default.self}`,`${Do.default.scope}`,u)(this,this.scope.get());if(this.scope.value(c,{ref:f}),f.errors=null,f.schema=t.schema,f.schemaEnv=t,t.$async&&(f.$async=!0),this.opts.code.source===!0&&(f.source={validateName:c,validateCode:d,scopeValues:o._values}),this.opts.unevaluated){let{props:m,items:y}=l;f.evaluated={props:m instanceof An.Name?void 0:m,items:y instanceof An.Name?void 0:y,dynamicProps:m instanceof An.Name,dynamicItems:y instanceof An.Name},f.source&&(f.source.evaluated=(0,An.stringify)(f.evaluated))}return t.validate=f,t}catch(d){throw delete t.validate,delete t.validateName,u&&this.logger.error("Error compiling schema, function code:",u),d}finally{this._compilations.delete(t)}}an.compileSchema=p_;function Lfe(t,e,r){var n;r=(0,Rn.resolveUrl)(this.opts.uriResolver,e,r);let i=t.refs[r];if(i)return i;let s=$fe.call(this,t,r);if(s===void 0){let o=(n=t.localRefs)===null||n===void 0?void 0:n[r],{schemaId:a}=this.opts;o&&(s=new Tc({schema:o,schemaId:a,root:t,baseId:e}))}if(s!==void 0)return t.refs[r]=qfe.call(this,s)}an.resolveRef=Lfe;function qfe(t){return(0,Rn.inlineRef)(t.schema,this.opts.inlineRefs)?t.schema:t.validate?t:p_.call(this,t)}function X2(t){for(let e of this._compilations)if(Ffe(e,t))return e}an.getCompilingSchema=X2;function Ffe(t,e){return t.schema===e.schema&&t.root===e.root&&t.baseId===e.baseId}function $fe(t,e){let r;for(;typeof(r=this.refs[e])=="string";)e=r;return r||this.schemas[e]||Ym.call(this,t,e)}function Ym(t,e){let r=this.opts.uriResolver.parse(e),n=(0,Rn._getFullPath)(this.opts.uriResolver,r),i=(0,Rn.getFullPath)(this.opts.uriResolver,t.baseId,void 0);if(Object.keys(t.schema).length>0&&n===i)return d_.call(this,r,t);let s=(0,Rn.normalizeId)(n),o=this.refs[s]||this.schemas[s];if(typeof o=="string"){let a=Ym.call(this,t,o);return typeof a?.schema!="object"?void 0:d_.call(this,r,a)}if(typeof o?.schema=="object"){if(o.validate||p_.call(this,o),s===(0,Rn.normalizeId)(e)){let{schema:a}=o,{schemaId:c}=this.opts,l=a[c];return l&&(i=(0,Rn.resolveUrl)(this.opts.uriResolver,i,l)),new Tc({schema:a,schemaId:c,root:t,baseId:i})}return d_.call(this,r,o)}}an.resolveSchema=Ym;var Ufe=new Set(["properties","patternProperties","enum","dependencies","definitions"]);function d_(t,{baseId:e,schema:r,root:n}){var i;if(((i=t.fragment)===null||i===void 0?void 0:i[0])!=="/")return;for(let a of t.fragment.slice(1).split("/")){if(typeof r=="boolean")return;let c=r[(0,Q2.unescapeFragment)(a)];if(c===void 0)return;r=c;let l=typeof r=="object"&&r[this.opts.schemaId];!Ufe.has(a)&&l&&(e=(0,Rn.resolveUrl)(this.opts.uriResolver,e,l))}let s;if(typeof r!="boolean"&&r.$ref&&!(0,Q2.schemaHasRulesButRef)(r,this.RULES)){let a=(0,Rn.resolveUrl)(this.opts.uriResolver,e,r.$ref);s=Ym.call(this,n,a)}let{schemaId:o}=this.opts;if(s=s||new Tc({schema:r,schemaId:o,root:n,baseId:e}),s.schema!==s.root.schema)return s}});var Z2=h((t2e,Jfe)=>{Jfe.exports={$id:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#",description:"Meta-schema for $data reference (JSON AnySchema extension proposal)",type:"object",required:["$data"],properties:{$data:{type:"string",anyOf:[{format:"relative-json-pointer"},{format:"json-pointer"}]}},additionalProperties:!1}});var b_=h((r2e,o4)=>{"use strict";var zfe=RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu),m_=RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u),Gfe=RegExp.prototype.test.bind(/^\d*$/u),Mo=RegExp.prototype.test.bind(/^[\da-f]{2}$/iu),h_=RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu),t4=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/]$/u),y_=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:@/?]$/u),Bfe=RegExp.prototype.test.bind(/^[A-Za-z0-9\-._~!$&'()*+,;=:]$/u),xr=new Array(256);{let t="0123456789ABCDEF";for(let e=0;e<256;e++)xr[e]="%"+t[e>>4]+t[e&15]}function er(t){return t<2048?xr[192|t>>6]+xr[128|t&63]:t<65536?xr[224|t>>12]+xr[128|t>>6&63]+xr[128|t&63]:xr[240|t>>18]+xr[128|t>>12&63]+xr[128|t>>6&63]+xr[128|t&63]}function Hfe(t){let e="",r=0,n=0;for(n=0;n<t.length;n++)if(r=t[n].charCodeAt(0),r!==48){if(!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n];break}for(n+=1;n<t.length;n++){if(r=t[n].charCodeAt(0),!(r>=48&&r<=57||r>=65&&r<=70||r>=97&&r<=102))return"";e+=t[n]}return e}var Vfe=RegExp.prototype.test.bind(/^[\dA-Fa-f]{1,4}$/),Wfe=RegExp.prototype.test.bind(/^[vV][\dA-Fa-f]+\.[A-Za-z\d\-._~!$&'()*+,;=:]+$/),Yfe=RegExp.prototype.test.bind(/^[A-Za-z\d\-._~]$/),Qfe=RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);function Xfe(t){if(t.length===0)return!1;for(let e=0;e<t.length;e++)if(!Yfe(t[e])){if(t[e]==="%"&&e+2<t.length&&Mo(t.slice(e+1,e+3))){e+=2;continue}return!1}return!0}function e4(t){let e=-1,r=0,n=-1,i=0;for(let a=0;a<t.length;a++)t[a]==="0"?(n===-1&&(n=a),i++,i>r&&(r=i,e=n)):(n=-1,i=0);if(r<2)return t.join(":");let s=t.slice(0,e).join(":"),o=t.slice(e+r).join(":");return s+"::"+o}function Zfe(t){let e=t.indexOf("::");if(e!==-1&&t.indexOf("::",e+1)!==-1)return;let r=e===-1?t.split(":"):t.slice(0,e).split(":"),n=e===-1?[]:t.slice(e+2).split(":");e!==-1&&(r.length===1&&r[0]===""&&(r.length=0),n.length===1&&n[0]===""&&(n.length=0));let i=r.concat(n),s=0;for(let a=0;a<i.length;a++){let c=i[a];if(c==="")return;if(c.indexOf(".")!==-1){if(a!==i.length-1||e!==-1&&n.length===0||!m_(c))return;s+=2;continue}if(!Vfe(c))return;i[a]=parseInt(c,16).toString(16),s++}if(e===-1)return s!==8?void 0:e4(i);if(s>=8)return;let o=i.slice(0,r.length);for(let a=s;a<8;a++)o.push("0");for(let a=r.length;a<i.length;a++)o.push(i[a]);return e4(o)}function f_(t){let e=t[0]==="["&&t[t.length-1]==="]";if((t[0]==="["||t[t.length-1]==="]")&&!e)return{host:t,isIPV6:!1,error:!0};let n=e?t.slice(1,-1):t;if(e&&Wfe(n))return n=n.toLowerCase(),{host:`[${n}]`,escapedHost:n,isIPV6:!1,isIPVFuture:!0};if(eme(n,":")<2)return{host:t,isIPV6:!1,error:e};let i="",s=n.indexOf("%");if(s!==-1){let a=n.slice(s,s+3).toLowerCase()==="%25"?3:1;if(i=n.slice(s+a),!Xfe(i))return{host:t,isIPV6:!1,error:!0};n=n.slice(0,s)}let o=Zfe(n);return o===void 0?{host:t,isIPV6:!1,error:!0}:{host:o+(i?"%"+i:""),escapedHost:o+(i?"%25"+i:""),isIPV6:!0}}function eme(t,e){let r=0;for(let n=0;n<t.length;n++)t[n]===e&&r++;return r}function tme(t){let e=t,r=[],n=-1,i=0;for(;i=e.length;){if(i===1){if(e===".")break;if(e==="/"){r.push("/");break}else{r.push(e);break}}else if(i===2){if(e[0]==="."){if(e[1]===".")break;if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&(e[1]==="."||e[1]==="/")){r.push("/");break}}else if(i===3&&e==="/.."){r.length!==0&&r.pop(),r.push("/");break}if(e[0]==="."){if(e[1]==="."){if(e[2]==="/"){e=e.slice(3);continue}}else if(e[1]==="/"){e=e.slice(2);continue}}else if(e[0]==="/"&&e[1]==="."){if(e[2]==="/"){e=e.slice(2);continue}else if(e[2]==="."&&e[3]==="/"){e=e.slice(3),r.length!==0&&r.pop();continue}}if((n=e.indexOf("/",1))===-1){r.push(e);break}else r.push(e.slice(0,n)),e=e.slice(n)}return r.join("")}var rme={"@":"%40","/":"%2F","?":"%3F","#":"%23",":":"%3A"},nme=/[@/?#:]/g,ime=/[@/?#]/g;function r4(t,e){let r=e?ime:nme;return r.lastIndex=0,t.replace(r,n=>rme[n])}function n4(t,e=!1){if(t.indexOf("%")===-1)return t;let r="";for(let n=0;n<t.length;n++){if(t[n]==="%"&&n+2<t.length){let i=t.slice(n+1,n+3);if(Mo(i)){let s=i.toUpperCase(),o=String.fromCharCode(parseInt(s,16));e&&h_(o)?r+=o:r+="%"+s,n+=2;continue}}r+=t[n]}return r}function sme(t){let e="";for(let r=0;r<t.length;r++){let n=t[r];if(n==="%"&&r+2<t.length){let i=t.slice(r+1,r+3);if(Mo(i)){let s=i.toUpperCase(),o=String.fromCharCode(parseInt(s,16));o!=="."&&h_(o)?e+=o:e+="%"+s,r+=2;continue}}if(t4(n))e+=n;else{let i=t.charCodeAt(r);if(i<128)e+=s4(i)?n:xr[i];else if(i<55296||i>57343)e+=er(i);else if(i<=56319&&r+1<t.length){let s=t.charCodeAt(r+1);s>=56320&&s<=57343?(e+=er(65536+(i-55296<<10)+(s-56320)),r++):e+=er(65533)}else e+=er(65533)}}return e}function ome(t,e=!1){let r="",n=e&&t[0]!=="/";for(let i=0;i<t.length;i++){let s=t[i];if(s==="%"&&i+2<t.length){let o=t.slice(i+1,i+3);if(Mo(o)){r+="%"+o.toUpperCase(),i+=2;continue}}if(s==="/"&&(n=!1),t4(s)&&(s!==":"||!n))r+=s;else{let o=t.charCodeAt(i);if(o<128)r+=xr[o];else if(o<55296||o>57343)r+=er(o);else if(o<=56319&&i+1<t.length){let a=t.charCodeAt(i+1);a>=56320&&a<=57343?(r+=er(65536+(o-55296<<10)+(a-56320)),i++):r+=er(65533)}else r+=er(65533)}}return r}function g_(t,e){let r="";for(let n=0;n<t.length;n++){let i=t[n];if(i==="%"&&n+2<t.length){let s=t.slice(n+1,n+3);if(Mo(s)){r+="%"+s.toUpperCase(),n+=2;continue}}if(e(i))r+=i;else{let s=t.charCodeAt(n);if(s<128)r+=xr[s];else if(s<55296||s>57343)r+=er(s);else if(s<=56319&&n+1<t.length){let o=t.charCodeAt(n+1);o>=56320&&o<=57343?(r+=er(65536+(s-55296<<10)+(o-56320)),n++):r+=er(65533)}else r+=er(65533)}}return r}function i4(t){return g_(t,Bfe)}function ame(t){return g_(t,y_)}function cme(t){return g_(t,y_)}function s4(t){return t>=48&&t<=57||t>=65&&t<=90||t>=97&&t<=122||t===42||t===43||t===45||t===46||t===47||t===64||t===95}function lme(t){let e="";for(let r=0;r<t.length;r++){let n=t[r];if(n==="%"&&r+2<t.length){let i=t.slice(r+1,r+3);if(Mo(i)){let s=i.toUpperCase(),o=String.fromCharCode(parseInt(s,16));h_(o)?e+=o:e+="%"+s,r+=2;continue}}if(y_(n))e+=n;else{let i=t.charCodeAt(r);if(i<128)e+=s4(i)?n:xr[i];else if(i<55296||i>57343)e+=er(i);else if(i<=56319&&r+1<t.length){let s=t.charCodeAt(r+1);s>=56320&&s<=57343?(e+=er(65536+(i-55296<<10)+(s-56320)),r++):e+=er(65533)}else e+=er(65533)}}return e}function ume(t){let e="";for(let r=0;r<t.length;r++){if(t[r]==="%"&&r+2<t.length){let n=t.slice(r+1,r+3);if(Mo(n)){e+="%"+n.toUpperCase(),r+=2;continue}}e+=escape(t[r])}return e}function dme(t){let e=[];if(t.userinfo!==void 0&&(e.push(i4(t.userinfo)),e.push("@")),t.host!==void 0){let r=t.host;if(!m_(r)){let n=f_(r);n.isIPV6!==!0&&n.isIPVFuture!==!0&&(r=n4(r,!0),n=f_(r)),n.isIPV6===!0||n.isIPVFuture===!0?r=`[${n.escapedHost}]`:r=r4(r,!1)}e.push(r)}if(typeof t.port=="number"||typeof t.port=="string"){let r=String(t.port);if(!Gfe(r))throw new TypeError("URI port is malformed.");e.push(":"),e.push(r)}return e.length?e.join(""):void 0}o4.exports={nonSimpleDomain:Qfe,recomposeAuthority:dme,reescapeHostDelimiters:r4,normalizePercentEncoding:n4,normalizePathEncoding:sme,serializePathEncoding:ome,normalizeQueryFragmentEncoding:lme,encodeUserinfo:i4,encodeQuery:ame,encodeFragment:cme,escapePreservingEscapes:ume,removeDotSegments:tme,isIPv4:m_,isUUID:zfe,normalizeIPv6:f_,stringArrayToHexStripped:Hfe}});var d4=h((n2e,u4)=>{"use strict";var{isUUID:pme}=b_(),fme=/^([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-./:;=@]|%[\da-f]{2})+)$/iu,mme=["http","https","ws","wss","urn","urn:uuid"];function hme(t){return mme.indexOf(t)!==-1}function v_(t){return t.secure===!0?!0:t.secure===!1?!1:t.scheme?t.scheme.length===3&&(t.scheme[0]==="w"||t.scheme[0]==="W")&&(t.scheme[1]==="s"||t.scheme[1]==="S")&&(t.scheme[2]==="s"||t.scheme[2]==="S"):!1}function a4(t){return t.host||(t.error=t.error||"HTTP URIs must have a host."),t}function c4(t){let e=String(t.scheme).toLowerCase()==="https";return(t.port===(e?443:80)||t.port==="")&&(t.port=void 0),t.path||(t.path="/"),t}function yme(t){return t.secure=v_(t),t.resourceName=(t.path||"/")+(t.query?"?"+t.query:""),t.path=void 0,t.query=void 0,t}function gme(t){if((t.port===(v_(t)?443:80)||t.port==="")&&(t.port=void 0),typeof t.secure=="boolean"&&(t.scheme=t.secure?"wss":"ws",t.secure=void 0),t.resourceName){let e=t.resourceName.indexOf("?"),r=e===-1?t.resourceName:t.resourceName.slice(0,e);t.path=r&&r!=="/"?r:void 0,t.query=e===-1?void 0:t.resourceName.slice(e+1),t.resourceName=void 0}return t.fragment=void 0,t}function bme(t,e){if(!t.path)return t.error="URN can not be parsed",t;let r=t.path.match(fme);if(r&&r[0]===t.path){let n=e.scheme||t.scheme||"urn";t.nid=r[1].toLowerCase(),t.nss=r[2];let i=`${n}:${e.nid||t.nid}`,s=E_(i);t.path=void 0,s&&(t=s.parse(t,e))}else t.error=t.error||"URN can not be parsed.";return t}function vme(t,e){if(t.nid===void 0)throw new Error("URN without nid cannot be serialized");let r=e.scheme||t.scheme||"urn",n=t.nid.toLowerCase(),i=`${r}:${e.nid||n}`,s=E_(i);s&&(t=s.serialize(t,e));let o=t,a=t.nss;return o.path=`${n||e.nid}:${a}`,e.skipEscape=!0,o}function Eme(t,e){let r=t;return r.uuid=r.nss,r.nss=void 0,!e.tolerant&&(!r.uuid||!pme(r.uuid))&&(r.error=r.error||"UUID is not valid."),r}function Sme(t){let e=t;return e.nss=(t.uuid||"").toLowerCase(),e}var l4={scheme:"http",domainHost:!0,parse:a4,serialize:c4},xme={scheme:"https",domainHost:l4.domainHost,parse:a4,serialize:c4},Xm={scheme:"ws",domainHost:!0,parse:yme,serialize:gme},wme={scheme:"wss",domainHost:Xm.domainHost,parse:Xm.parse,serialize:Xm.serialize},_me={scheme:"urn",parse:bme,serialize:vme,skipNormalize:!0},Ime={scheme:"urn:uuid",parse:Eme,serialize:Sme,skipNormalize:!0},Zm={http:l4,https:xme,ws:Xm,wss:wme,urn:_me,"urn:uuid":Ime};Object.setPrototypeOf(Zm,null);function E_(t){return t&&(Zm[t]||Zm[t.toLowerCase()])||void 0}u4.exports={wsIsSecure:v_,SCHEMES:Zm,isValidSchemeName:hme,getSchemeHandler:E_}});var I4=h((i2e,rh)=>{"use strict";var{normalizeIPv6:y4,removeDotSegments:Vu,recomposeAuthority:Tme,normalizePercentEncoding:g4,normalizePathEncoding:kme,serializePathEncoding:p4,normalizeQueryFragmentEncoding:f4,encodeQuery:Ame,encodeFragment:Rme,reescapeHostDelimiters:Ome,isIPv4:b4,nonSimpleDomain:Cme}=b_(),{SCHEMES:v4,getSchemeHandler:S_}=d4(),E4=/^[A-Za-z][A-Za-z0-9+.-]*$/u,S4="URI scheme is malformed.";function m4(t){let e=unescape(String(t));if(!E4.test(e))throw new TypeError(S4);return e}function jme(t,e){return typeof t=="string"?t=Fme(t,e):typeof t=="object"&&(t=th(No(t,e),e)),t}function Pme(t,e,r){let n=r?Object.assign({scheme:"null"},r):{scheme:"null"},{parsed:i,malformedAuthorityOrPort:s,malformedPercentEncoding:o,malformedSchemeSpecific:a,malformedHost:c,malformedScheme:l}=eh(t,n),{parsed:u,malformedAuthorityOrPort:d,malformedPercentEncoding:p,malformedSchemeSpecific:f,malformedHost:m,malformedScheme:y}=eh(e,n);if(s||d||o||p||a||f||c||m||l||y)throw new Error(i.error||u.error||"URI is malformed.");let b=x4(i,u,n,!0),v=S_(r&&r.scheme||b.scheme),E=b.host,S=E!==void 0&&E!==""&&(b4(E)||y4(E).isIPV6);w4(b,r||{},v,S);let k=E&&E.indexOf("%")!==-1&&!new RegExp("\\P{ASCII}","u").test(E);if(b.error&&!k)throw new Error(b.error);return n.skipEscape=!0,No(b,n)}function x4(t,e,r,n){let i={};return n||(t=th(No(t,r),r),e=th(No(e,r),r)),r=r||{},!r.tolerant&&e.scheme?(i.scheme=e.scheme,i.userinfo=e.userinfo,i.host=e.host,i.port=e.port,i.path=Vu(e.path||""),i.query=e.query):(e.userinfo!==void 0||e.host!==void 0||e.port!==void 0?(i.userinfo=e.userinfo,i.host=e.host,i.port=e.port,i.path=Vu(e.path||""),i.query=e.query):(e.path?(e.path[0]==="/"?i.path=Vu(e.path):((t.userinfo!==void 0||t.host!==void 0||t.port!==void 0)&&!t.path?i.path="/"+e.path:t.path?i.path=t.path.slice(0,t.path.lastIndexOf("/")+1)+e.path:i.path=e.path,i.path=Vu(i.path)),i.query=e.query):(i.path=t.path,e.query!==void 0?i.query=e.query:i.query=t.query),i.userinfo=t.userinfo,i.host=t.host,i.port=t.port),i.scheme=t.scheme),i.fragment=e.fragment,i}function Kme(t,e,r){let n=h4(t,r),i=h4(e,r);return n!==void 0&&i!==void 0&&n===i}function No(t,e){let r={host:t.host,scheme:t.scheme,userinfo:t.userinfo,port:t.port,path:t.path,query:t.query,nid:t.nid,nss:t.nss,uuid:t.uuid,fragment:t.fragment,reference:t.reference,resourceName:t.resourceName,secure:t.secure,error:""},n=Object.assign({},e),i=[];r.scheme&&(r.scheme=m4(r.scheme));let s=S_(n.scheme||r.scheme);s&&s.serialize&&s.serialize(r,n);let o=r.userinfo!==void 0||r.host!==void 0||r.port!==void 0,a=!n.skipEscape&&r.scheme===void 0&&!o;r.path!==void 0&&(n.skipEscape?r.path=g4(r.path):r.path=p4(r.path,a)),n.reference!=="suffix"&&r.scheme&&(r.scheme=m4(r.scheme),i.push(r.scheme,":"));let c=Tme(r);if(c!==void 0&&(n.reference!=="suffix"&&i.push("//"),i.push(c),r.path&&r.path[0]!=="/"&&i.push("/")),r.path!==void 0){let l=r.path;!n.absolutePath&&(!s||!s.absolutePath)&&(l=Vu(l)),a&&(l=p4(l,!0)),c===void 0&&l[0]==="/"&&l[1]==="/"&&(l="/%2F"+l.slice(2)),i.push(l)}return r.query!==void 0&&i.push("?",Ame(r.query)),r.fragment!==void 0&&i.push("#",Rme(r.fragment)),i.join("")}var Dme=/^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u,Mme=/^(?:[^#/:?]+:)?\/\/([^/?#]*)/,Nme=/^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;function Lme(t,e){if(e[2]!==void 0&&t.path&&t.path[0]!=="/")return'URI path must start with "/" when authority is present.';if(typeof t.port=="number"&&(t.port<0||t.port>65535))return"URI port is malformed."}function Hu(t){if(t===void 0)return!1;let e=t.indexOf("%");for(;e!==-1;){if(e+2>=t.length||!/^[\da-f]{2}$/iu.test(t.slice(e+1,e+3)))return!0;e=t.indexOf("%",e+3)}return!1}function x_(t){return t[0]==="["&&t[t.length-1]==="]"}function qme(t){let e=t[4];return Hu(t[3])||e!==void 0&&!x_(e)&&Hu(e)||Hu(t[6])||Hu(t[7])||Hu(t[8])}function w4(t,e,r,n){if(!e.unicodeSupport&&(!r||!r.unicodeSupport)&&t.host&&!x_(t.host)&&(e.domainHost||r&&r.domainHost)&&n===!1&&Cme(t.host))try{t.host=new URL("http://"+t.host).hostname}catch(i){return t.error=t.error||"Host's domain name can not be converted to ASCII: "+i,!0}return!1}function eh(t,e){let r=Object.assign({},e),n={scheme:void 0,userinfo:void 0,host:"",port:void 0,path:"",query:void 0,fragment:void 0},i=!1,s=!1,o=!1,a=!1,c=!1,l=!1,u=!1;r.reference==="suffix"&&(r.scheme?t=r.scheme+":"+t:t="//"+t);let d=t.match(Mme);d!==null&&d[1].indexOf("\\")!==-1&&(n.error="URI authority must not contain a literal backslash.",i=!0);let p=t.match(Nme);if(p!==null){let m=p[1],y=m.replace(/[\t\n\r]/g,"");y.length>=2&&(y.slice(0,2)!=="//"?(n.error=n.error||"URI authority must not contain a literal backslash.",i=!0):m.length!==y.length&&(n.error=n.error||"URI authority introducer must not contain whitespace.",i=!0))}let f=t.match(Dme);if(f){if(n.scheme=f[1],n.userinfo=f[3],n.host=f[4],n.port=parseInt(f[5],10),n.path=f[6]||"",n.query=f[7],n.fragment=f[8],n.scheme!==void 0){let b=unescape(n.scheme);E4.test(b)?n.scheme=b.toLowerCase():(n.error=n.error||S4,l=!0)}s=qme(f),s&&(n.error=n.error||"URI contains malformed percent-encoding."),isNaN(n.port)&&(n.port=f[5]);let m=Lme(n,f);if(m!==void 0&&(n.error=n.error||m,i=!0),n.host)if(b4(n.host)===!1){let v=x_(n.host),E=n.host.indexOf("[")!==-1||n.host.indexOf("]")!==-1,S=y4(n.host);u=S.isIPV6||S.isIPVFuture===!0,c=E&&(!v||S.error===!0),n.host=u?S.host:S.host.toLowerCase(),c&&(n.error=n.error||"URI host is malformed.",i=!0)}else u=!0;n.scheme===void 0&&n.userinfo===void 0&&n.host===void 0&&n.port===void 0&&n.query===void 0&&!n.path?n.reference="same-document":n.scheme===void 0?n.reference="relative":n.fragment===void 0?n.reference="absolute":n.reference="uri",r.reference&&r.reference!=="suffix"&&r.reference!==n.reference&&(n.error=n.error||"URI is not a "+r.reference+" reference.");let y=S_(r.scheme||n.scheme);if(c||(a=w4(n,r,y,u)),!y||y&&!y.skipNormalize){if(t.indexOf("%")!==-1&&n.host!==void 0&&!c){let b=u?n.host:g4(n.host,!0);n.host=Ome(b,u)}n.path&&(n.path=kme(n.path)),n.query&&(n.query=f4(n.query)),n.fragment&&(n.fragment=f4(n.fragment))}y&&y.parse&&(y.parse(n,r),y===v4.urn&&n.nid===void 0&&(o=!0))}else n.error=n.error||"URI can not be parsed.";return{parsed:n,malformedAuthorityOrPort:i,malformedPercentEncoding:s,malformedSchemeSpecific:o,malformedHost:a,malformedScheme:l}}function th(t,e){return eh(t,e).parsed}function Fme(t,e){return _4(t,e).normalized}function _4(t,e){let{parsed:r,malformedAuthorityOrPort:n,malformedPercentEncoding:i,malformedSchemeSpecific:s,malformedHost:o,malformedScheme:a}=eh(t,e);return{normalized:n||i||s||o||a?t:No(r,e),malformedAuthorityOrPort:n,malformedPercentEncoding:i,malformedSchemeSpecific:s,malformedHost:o,malformedScheme:a}}function h4(t,e){if(typeof t!="string"&&typeof t!="object")return;let r;try{r=typeof t=="string"?t:No(t,e)}catch{return}let{normalized:n,malformedAuthorityOrPort:i,malformedPercentEncoding:s,malformedSchemeSpecific:o,malformedHost:a,malformedScheme:c}=_4(r,e);return i||s||o||a||c?void 0:n}var w_={SCHEMES:v4,normalize:jme,resolve:Pme,resolveComponent:x4,equal:Kme,serialize:No,parse:th};rh.exports=w_;rh.exports.default=w_;rh.exports.fastUri=w_});var k4=h(__=>{"use strict";Object.defineProperty(__,"__esModule",{value:!0});var T4=I4();T4.code='require("ajv/dist/runtime/uri").default';__.default=T4});var D4=h(Ut=>{"use strict";Object.defineProperty(Ut,"__esModule",{value:!0});Ut.CodeGen=Ut.Name=Ut.nil=Ut.stringify=Ut.str=Ut._=Ut.KeywordCxt=void 0;var $me=Gu();Object.defineProperty(Ut,"KeywordCxt",{enumerable:!0,get:function(){return $me.KeywordCxt}});var kc=ue();Object.defineProperty(Ut,"_",{enumerable:!0,get:function(){return kc._}});Object.defineProperty(Ut,"str",{enumerable:!0,get:function(){return kc.str}});Object.defineProperty(Ut,"stringify",{enumerable:!0,get:function(){return kc.stringify}});Object.defineProperty(Ut,"nil",{enumerable:!0,get:function(){return kc.nil}});Object.defineProperty(Ut,"Name",{enumerable:!0,get:function(){return kc.Name}});Object.defineProperty(Ut,"CodeGen",{enumerable:!0,get:function(){return kc.CodeGen}});var Ume=Wm(),j4=Bu(),Jme=Hw(),Wu=Qm(),zme=ue(),Yu=Uu(),nh=$u(),T_=we(),A4=Z2(),Gme=k4(),P4=(t,e)=>new RegExp(t,e);P4.code="new RegExp";var Bme=["removeAdditional","useDefaults","coerceTypes"],Hme=new Set(["validate","serialize","parse","wrapper","root","schema","keyword","pattern","formats","validate$data","func","obj","Error"]),Vme={errorDataPath:"",format:"`validateFormats: false` can be used instead.",nullable:'"nullable" keyword is supported by default.',jsonPointers:"Deprecated jsPropertySyntax can be used instead.",extendRefs:"Deprecated ignoreKeywordsWithRef can be used instead.",missingRefs:"Pass empty schema with $id that should be ignored to ajv.addSchema.",processCode:"Use option `code: {process: (code, schemaEnv: object) => string}`",sourceCode:"Use option `code: {source: true}`",strictDefaults:"It is default now, see option `strict`.",strictKeywords:"It is default now, see option `strict`.",uniqueItems:'"uniqueItems" keyword is always validated.',unknownFormats:"Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).",cache:"Map is used as cache, schema object as key.",serialize:"Map is used as cache, schema object as key.",ajvErrors:"It is default now."},Wme={ignoreKeywordsWithRef:"",jsPropertySyntax:"",unicode:'"minLength"/"maxLength" account for unicode characters by default.'},R4=200;function Yme(t){var e,r,n,i,s,o,a,c,l,u,d,p,f,m,y,b,v,E,S,k,_,O,N,ee,q;let U=t.strict,te=(e=t.code)===null||e===void 0?void 0:e.optimize,Ge=te===!0||te===void 0?1:te||0,T=(n=(r=t.code)===null||r===void 0?void 0:r.regExp)!==null&&n!==void 0?n:P4,K=(i=t.uriResolver)!==null&&i!==void 0?i:Gme.default;return{strictSchema:(o=(s=t.strictSchema)!==null&&s!==void 0?s:U)!==null&&o!==void 0?o:!0,strictNumbers:(c=(a=t.strictNumbers)!==null&&a!==void 0?a:U)!==null&&c!==void 0?c:!0,strictTypes:(u=(l=t.strictTypes)!==null&&l!==void 0?l:U)!==null&&u!==void 0?u:"log",strictTuples:(p=(d=t.strictTuples)!==null&&d!==void 0?d:U)!==null&&p!==void 0?p:"log",strictRequired:(m=(f=t.strictRequired)!==null&&f!==void 0?f:U)!==null&&m!==void 0?m:!1,code:t.code?{...t.code,optimize:Ge,regExp:T}:{optimize:Ge,regExp:T},loopRequired:(y=t.loopRequired)!==null&&y!==void 0?y:R4,loopEnum:(b=t.loopEnum)!==null&&b!==void 0?b:R4,meta:(v=t.meta)!==null&&v!==void 0?v:!0,messages:(E=t.messages)!==null&&E!==void 0?E:!0,inlineRefs:(S=t.inlineRefs)!==null&&S!==void 0?S:!0,schemaId:(k=t.schemaId)!==null&&k!==void 0?k:"$id",addUsedSchema:(_=t.addUsedSchema)!==null&&_!==void 0?_:!0,validateSchema:(O=t.validateSchema)!==null&&O!==void 0?O:!0,validateFormats:(N=t.validateFormats)!==null&&N!==void 0?N:!0,unicodeRegExp:(ee=t.unicodeRegExp)!==null&&ee!==void 0?ee:!0,int32range:(q=t.int32range)!==null&&q!==void 0?q:!0,uriResolver:K}}var Qu=class{constructor(e={}){this.schemas={},this.refs={},this.formats=Object.create(null),this._compilations=new Set,this._loading={},this._cache=new Map,e=this.opts={...e,...Yme(e)};let{es5:r,lines:n}=this.opts.code;this.scope=new zme.ValueScope({scope:{},prefixes:Hme,es5:r,lines:n}),this.logger=rhe(e.logger);let i=e.validateFormats;e.validateFormats=!1,this.RULES=(0,Jme.getRules)(),O4.call(this,Vme,e,"NOT SUPPORTED"),O4.call(this,Wme,e,"DEPRECATED","warn"),this._metaOpts=ehe.call(this),e.formats&&Xme.call(this),this._addVocabularies(),this._addDefaultMetaSchema(),e.keywords&&Zme.call(this,e.keywords),typeof e.meta=="object"&&this.addMetaSchema(e.meta),Qme.call(this),e.validateFormats=i}_addVocabularies(){this.addKeyword("$async")}_addDefaultMetaSchema(){let{$data:e,meta:r,schemaId:n}=this.opts,i=A4;n==="id"&&(i={...A4},i.id=i.$id,delete i.$id),r&&e&&this.addMetaSchema(i,i[n],!1)}defaultMeta(){let{meta:e,schemaId:r}=this.opts;return this.opts.defaultMeta=typeof e=="object"?e[r]||e:void 0}validate(e,r){let n;if(typeof e=="string"){if(n=this.getSchema(e),!n)throw new Error(`no schema with key or ref "${e}"`)}else n=this.compile(e);let i=n(r);return"$async"in n||(this.errors=n.errors),i}compile(e,r){let n=this._addSchema(e,r);return n.validate||this._compileSchemaEnv(n)}compileAsync(e,r){if(typeof this.opts.loadSchema!="function")throw new Error("options.loadSchema should be a function");let{loadSchema:n}=this.opts;return i.call(this,e,r);async function i(u,d){await s.call(this,u.$schema);let p=this._addSchema(u,d);return p.validate||o.call(this,p)}async function s(u){u&&!this.getSchema(u)&&await i.call(this,{$ref:u},!0)}async function o(u){try{return this._compileSchemaEnv(u)}catch(d){if(!(d instanceof j4.default))throw d;return a.call(this,d),await c.call(this,d.missingSchema),o.call(this,u)}}function a({missingSchema:u,missingRef:d}){if(this.refs[u])throw new Error(`AnySchema ${u} is loaded but ${d} cannot be resolved`)}async function c(u){let d=await l.call(this,u);this.refs[u]||await s.call(this,d.$schema),this.refs[u]||this.addSchema(d,u,r)}async function l(u){let d=this._loading[u];if(d)return d;try{return await(this._loading[u]=n(u))}finally{delete this._loading[u]}}}addSchema(e,r,n,i=this.opts.validateSchema){if(Array.isArray(e)){for(let o of e)this.addSchema(o,void 0,n,i);return this}let s;if(typeof e=="object"){let{schemaId:o}=this.opts;if(s=e[o],s!==void 0&&typeof s!="string")throw new Error(`schema ${o} must be string`)}return r=(0,Yu.normalizeId)(r||s),this._checkUnique(r),this.schemas[r]=this._addSchema(e,n,r,i,!0),this}addMetaSchema(e,r,n=this.opts.validateSchema){return this.addSchema(e,r,!0,n),this}validateSchema(e,r){if(typeof e=="boolean")return!0;let n;if(n=e.$schema,n!==void 0&&typeof n!="string")throw new Error("$schema must be a string");if(n=n||this.opts.defaultMeta||this.defaultMeta(),!n)return this.logger.warn("meta-schema not available"),this.errors=null,!0;let i=this.validate(n,e);if(!i&&r){let s="schema is invalid: "+this.errorsText();if(this.opts.validateSchema==="log")this.logger.error(s);else throw new Error(s)}return i}getSchema(e){let r;for(;typeof(r=C4.call(this,e))=="string";)e=r;if(r===void 0){let{schemaId:n}=this.opts,i=new Wu.SchemaEnv({schema:{},schemaId:n});if(r=Wu.resolveSchema.call(this,i,e),!r)return;this.refs[e]=r}return r.validate||this._compileSchemaEnv(r)}removeSchema(e){if(e instanceof RegExp)return this._removeAllSchemas(this.schemas,e),this._removeAllSchemas(this.refs,e),this;switch(typeof e){case"undefined":return this._removeAllSchemas(this.schemas),this._removeAllSchemas(this.refs),this._cache.clear(),this;case"string":{let r=C4.call(this,e);return typeof r=="object"&&this._cache.delete(r.schema),delete this.schemas[e],delete this.refs[e],this}case"object":{let r=e;this._cache.delete(r);let n=e[this.opts.schemaId];return n&&(n=(0,Yu.normalizeId)(n),delete this.schemas[n],delete this.refs[n]),this}default:throw new Error("ajv.removeSchema: invalid parameter")}}addVocabulary(e){for(let r of e)this.addKeyword(r);return this}addKeyword(e,r){let n;if(typeof e=="string")n=e,typeof r=="object"&&(this.logger.warn("these parameters are deprecated, see docs for addKeyword"),r.keyword=n);else if(typeof e=="object"&&r===void 0){if(r=e,n=r.keyword,Array.isArray(n)&&!n.length)throw new Error("addKeywords: keyword must be string or non-empty array")}else throw new Error("invalid addKeywords parameters");if(ihe.call(this,n,r),!r)return(0,T_.eachItem)(n,s=>I_.call(this,s)),this;ohe.call(this,r);let i={...r,type:(0,nh.getJSONTypes)(r.type),schemaType:(0,nh.getJSONTypes)(r.schemaType)};return(0,T_.eachItem)(n,i.type.length===0?s=>I_.call(this,s,i):s=>i.type.forEach(o=>I_.call(this,s,i,o))),this}getKeyword(e){let r=this.RULES.all[e];return typeof r=="object"?r.definition:!!r}removeKeyword(e){let{RULES:r}=this;delete r.keywords[e],delete r.all[e];for(let n of r.rules){let i=n.rules.findIndex(s=>s.keyword===e);i>=0&&n.rules.splice(i,1)}return this}addFormat(e,r){return typeof r=="string"&&(r=new RegExp(r)),this.formats[e]=r,this}errorsText(e=this.errors,{separator:r=", ",dataVar:n="data"}={}){return!e||e.length===0?"No errors":e.map(i=>`${n}${i.instancePath} ${i.message}`).reduce((i,s)=>i+r+s)}$dataMetaSchema(e,r){let n=this.RULES.all;e=JSON.parse(JSON.stringify(e));for(let i of r){let s=i.split("/").slice(1),o=e;for(let a of s)o=o[a];for(let a in n){let c=n[a];if(typeof c!="object")continue;let{$data:l}=c.definition,u=o[a];l&&u&&(o[a]=K4(u))}}return e}_removeAllSchemas(e,r){for(let n in e){let i=e[n];(!r||r.test(n))&&(typeof i=="string"?delete e[n]:i&&!i.meta&&(this._cache.delete(i.schema),delete e[n]))}}_addSchema(e,r,n,i=this.opts.validateSchema,s=this.opts.addUsedSchema){let o,{schemaId:a}=this.opts;if(typeof e=="object")o=e[a];else{if(this.opts.jtd)throw new Error("schema must be object");if(typeof e!="boolean")throw new Error("schema must be object or boolean")}let c=this._cache.get(e);if(c!==void 0)return c;n=(0,Yu.normalizeId)(o||n);let l=Yu.getSchemaRefs.call(this,e,n);return c=new Wu.SchemaEnv({schema:e,schemaId:a,meta:r,baseId:n,localRefs:l}),this._cache.set(c.schema,c),s&&!n.startsWith("#")&&(n&&this._checkUnique(n),this.refs[n]=c),i&&this.validateSchema(e,!0),c}_checkUnique(e){if(this.schemas[e]||this.refs[e])throw new Error(`schema with key or id "${e}" already exists`)}_compileSchemaEnv(e){if(e.meta?this._compileMetaSchema(e):Wu.compileSchema.call(this,e),!e.validate)throw new Error("ajv implementation error");return e.validate}_compileMetaSchema(e){let r=this.opts;this.opts=this._metaOpts;try{Wu.compileSchema.call(this,e)}finally{this.opts=r}}};Qu.ValidationError=Ume.default;Qu.MissingRefError=j4.default;Ut.default=Qu;function O4(t,e,r,n="error"){for(let i in t){let s=i;s in e&&this.logger[n](`${r}: option ${i}. ${t[s]}`)}}function C4(t){return t=(0,Yu.normalizeId)(t),this.schemas[t]||this.refs[t]}function Qme(){let t=this.opts.schemas;if(t)if(Array.isArray(t))this.addSchema(t);else for(let e in t)this.addSchema(t[e],e)}function Xme(){for(let t in this.opts.formats){let e=this.opts.formats[t];e&&this.addFormat(t,e)}}function Zme(t){if(Array.isArray(t)){this.addVocabulary(t);return}this.logger.warn("keywords option as map is deprecated, pass array");for(let e in t){let r=t[e];r.keyword||(r.keyword=e),this.addKeyword(r)}}function ehe(){let t={...this.opts};for(let e of Bme)delete t[e];return t}var the={log(){},warn(){},error(){}};function rhe(t){if(t===!1)return the;if(t===void 0)return console;if(t.log&&t.warn&&t.error)return t;throw new Error("logger must implement log, warn and error methods")}var nhe=/^[a-z_$][a-z0-9_$:-]*$/i;function ihe(t,e){let{RULES:r}=this;if((0,T_.eachItem)(t,n=>{if(r.keywords[n])throw new Error(`Keyword ${n} is already defined`);if(!nhe.test(n))throw new Error(`Keyword ${n} has invalid name`)}),!!e&&e.$data&&!("code"in e||"validate"in e))throw new Error('$data keyword must have "code" or "validate" function')}function I_(t,e,r){var n;let i=e?.post;if(r&&i)throw new Error('keyword with "post" flag cannot have "type"');let{RULES:s}=this,o=i?s.post:s.rules.find(({type:c})=>c===r);if(o||(o={type:r,rules:[]},s.rules.push(o)),s.keywords[t]=!0,!e)return;let a={keyword:t,definition:{...e,type:(0,nh.getJSONTypes)(e.type),schemaType:(0,nh.getJSONTypes)(e.schemaType)}};e.before?she.call(this,o,a,e.before):o.rules.push(a),s.all[t]=a,(n=e.implements)===null||n===void 0||n.forEach(c=>this.addKeyword(c))}function she(t,e,r){let n=t.rules.findIndex(i=>i.keyword===r);n>=0?t.rules.splice(n,0,e):(t.rules.push(e),this.logger.warn(`rule ${r} is not defined`))}function ohe(t){let{metaSchema:e}=t;e!==void 0&&(t.$data&&this.opts.$data&&(e=K4(e)),t.validateSchema=this.compile(e,!0))}var ahe={$ref:"https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#"};function K4(t){return{anyOf:[t,ahe]}}});var M4=h(k_=>{"use strict";Object.defineProperty(k_,"__esModule",{value:!0});var che={keyword:"id",code(){throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID')}};k_.default=che});var F4=h(Lo=>{"use strict";Object.defineProperty(Lo,"__esModule",{value:!0});Lo.callRef=Lo.getValidate=void 0;var lhe=Bu(),N4=on(),wr=ue(),Ac=Fi(),L4=Qm(),ih=we(),uhe={keyword:"$ref",schemaType:"string",code(t){let{gen:e,schema:r,it:n}=t,{baseId:i,schemaEnv:s,validateName:o,opts:a,self:c}=n,{root:l}=s;if((r==="#"||r==="#/")&&i===l.baseId)return d();let u=L4.resolveRef.call(c,l,i,r);if(u===void 0)throw new lhe.default(n.opts.uriResolver,i,r);if(u instanceof L4.SchemaEnv)return p(u);return f(u);function d(){if(s===l)return sh(t,o,s,s.$async);let m=e.scopeValue("root",{ref:l});return sh(t,(0,wr._)`${m}.validate`,l,l.$async)}function p(m){let y=q4(t,m);sh(t,y,m,m.$async)}function f(m){let y=e.scopeValue("schema",a.code.source===!0?{ref:m,code:(0,wr.stringify)(m)}:{ref:m}),b=e.name("valid"),v=t.subschema({schema:m,dataTypes:[],schemaPath:wr.nil,topSchemaRef:y,errSchemaPath:r},b);t.mergeEvaluated(v),t.ok(b)}}};function q4(t,e){let{gen:r}=t;return e.validate?r.scopeValue("validate",{ref:e.validate}):(0,wr._)`${r.scopeValue("wrapper",{ref:e})}.validate`}Lo.getValidate=q4;function sh(t,e,r,n){let{gen:i,it:s}=t,{allErrors:o,schemaEnv:a,opts:c}=s,l=c.passContext?Ac.default.this:wr.nil;n?u():d();function u(){if(!a.$async)throw new Error("async schema referenced by sync schema");let m=i.let("valid");i.try(()=>{i.code((0,wr._)`await ${(0,N4.callValidateCode)(t,e,l)}`),f(e),o||i.assign(m,!0)},y=>{i.if((0,wr._)`!(${y} instanceof ${s.ValidationError})`,()=>i.throw(y)),p(y),o||i.assign(m,!1)}),t.ok(m)}function d(){t.result((0,N4.callValidateCode)(t,e,l),()=>f(e),()=>p(e))}function p(m){let y=(0,wr._)`${m}.errors`;i.assign(Ac.default.vErrors,(0,wr._)`${Ac.default.vErrors} === null ? ${y} : ${Ac.default.vErrors}.concat(${y})`),i.assign(Ac.default.errors,(0,wr._)`${Ac.default.vErrors}.length`)}function f(m){var y;if(!s.opts.unevaluated)return;let b=(y=r?.validate)===null||y===void 0?void 0:y.evaluated;if(s.props!==!0)if(b&&!b.dynamicProps)b.props!==void 0&&(s.props=ih.mergeEvaluated.props(i,b.props,s.props));else{let v=i.var("props",(0,wr._)`${m}.evaluated.props`);s.props=ih.mergeEvaluated.props(i,v,s.props,wr.Name)}if(s.items!==!0)if(b&&!b.dynamicItems)b.items!==void 0&&(s.items=ih.mergeEvaluated.items(i,b.items,s.items));else{let v=i.var("items",(0,wr._)`${m}.evaluated.items`);s.items=ih.mergeEvaluated.items(i,v,s.items,wr.Name)}}}Lo.callRef=sh;Lo.default=uhe});var $4=h(A_=>{"use strict";Object.defineProperty(A_,"__esModule",{value:!0});var dhe=M4(),phe=F4(),fhe=["$schema","$id","$defs","$vocabulary",{keyword:"$comment"},"definitions",dhe.default,phe.default];A_.default=fhe});var U4=h(R_=>{"use strict";Object.defineProperty(R_,"__esModule",{value:!0});var oh=ue(),Rs=oh.operators,ah={maximum:{okStr:"<=",ok:Rs.LTE,fail:Rs.GT},minimum:{okStr:">=",ok:Rs.GTE,fail:Rs.LT},exclusiveMaximum:{okStr:"<",ok:Rs.LT,fail:Rs.GTE},exclusiveMinimum:{okStr:">",ok:Rs.GT,fail:Rs.LTE}},mhe={message:({keyword:t,schemaCode:e})=>(0,oh.str)`must be ${ah[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,oh._)`{comparison: ${ah[t].okStr}, limit: ${e}}`},hhe={keyword:Object.keys(ah),type:"number",schemaType:"number",$data:!0,error:mhe,code(t){let{keyword:e,data:r,schemaCode:n}=t;t.fail$data((0,oh._)`${r} ${ah[e].fail} ${n} || isNaN(${r})`)}};R_.default=hhe});var J4=h(O_=>{"use strict";Object.defineProperty(O_,"__esModule",{value:!0});var Xu=ue(),yhe={message:({schemaCode:t})=>(0,Xu.str)`must be multiple of ${t}`,params:({schemaCode:t})=>(0,Xu._)`{multipleOf: ${t}}`},ghe={keyword:"multipleOf",type:"number",schemaType:"number",$data:!0,error:yhe,code(t){let{gen:e,data:r,schemaCode:n,it:i}=t,s=i.opts.multipleOfPrecision,o=e.let("res"),a=s?(0,Xu._)`Math.abs(Math.round(${o}) - ${o}) > 1e-${s}`:(0,Xu._)`${o} !== parseInt(${o})`;t.fail$data((0,Xu._)`(${n} === 0 || (${o} = ${r}/${n}, ${a}))`)}};O_.default=ghe});var G4=h(C_=>{"use strict";Object.defineProperty(C_,"__esModule",{value:!0});function z4(t){let e=t.length,r=0,n=0,i;for(;n<e;)r++,i=t.charCodeAt(n++),i>=55296&&i<=56319&&n<e&&(i=t.charCodeAt(n),(i&64512)===56320&&n++);return r}C_.default=z4;z4.code='require("ajv/dist/runtime/ucs2length").default'});var B4=h(j_=>{"use strict";Object.defineProperty(j_,"__esModule",{value:!0});var qo=ue(),bhe=we(),vhe=G4(),Ehe={message({keyword:t,schemaCode:e}){let r=t==="maxLength"?"more":"fewer";return(0,qo.str)`must NOT have ${r} than ${e} characters`},params:({schemaCode:t})=>(0,qo._)`{limit: ${t}}`},She={keyword:["maxLength","minLength"],type:"string",schemaType:"number",$data:!0,error:Ehe,code(t){let{keyword:e,data:r,schemaCode:n,it:i}=t,s=e==="maxLength"?qo.operators.GT:qo.operators.LT,o=i.opts.unicode===!1?(0,qo._)`${r}.length`:(0,qo._)`${(0,bhe.useFunc)(t.gen,vhe.default)}(${r})`;t.fail$data((0,qo._)`${o} ${s} ${n}`)}};j_.default=She});var H4=h(P_=>{"use strict";Object.defineProperty(P_,"__esModule",{value:!0});var xhe=on(),whe=we(),Rc=ue(),_he={message:({schemaCode:t})=>(0,Rc.str)`must match pattern "${t}"`,params:({schemaCode:t})=>(0,Rc._)`{pattern: ${t}}`},Ihe={keyword:"pattern",type:"string",schemaType:"string",$data:!0,error:_he,code(t){let{gen:e,data:r,$data:n,schema:i,schemaCode:s,it:o}=t,a=o.opts.unicodeRegExp?"u":"";if(n){let{regExp:c}=o.opts.code,l=c.code==="new RegExp"?(0,Rc._)`new RegExp`:(0,whe.useFunc)(e,c),u=e.let("valid");e.try(()=>e.assign(u,(0,Rc._)`${l}(${s}, ${a}).test(${r})`),()=>e.assign(u,!1)),t.fail$data((0,Rc._)`!${u}`)}else{let c=(0,xhe.usePattern)(t,i);t.fail$data((0,Rc._)`!${c}.test(${r})`)}}};P_.default=Ihe});var V4=h(K_=>{"use strict";Object.defineProperty(K_,"__esModule",{value:!0});var Zu=ue(),The={message({keyword:t,schemaCode:e}){let r=t==="maxProperties"?"more":"fewer";return(0,Zu.str)`must NOT have ${r} than ${e} properties`},params:({schemaCode:t})=>(0,Zu._)`{limit: ${t}}`},khe={keyword:["maxProperties","minProperties"],type:"object",schemaType:"number",$data:!0,error:The,code(t){let{keyword:e,data:r,schemaCode:n}=t,i=e==="maxProperties"?Zu.operators.GT:Zu.operators.LT;t.fail$data((0,Zu._)`Object.keys(${r}).length ${i} ${n}`)}};K_.default=khe});var W4=h(D_=>{"use strict";Object.defineProperty(D_,"__esModule",{value:!0});var ed=on(),td=ue(),Ahe=we(),Rhe={message:({params:{missingProperty:t}})=>(0,td.str)`must have required property '${t}'`,params:({params:{missingProperty:t}})=>(0,td._)`{missingProperty: ${t}}`},Ohe={keyword:"required",type:"object",schemaType:"array",$data:!0,error:Rhe,code(t){let{gen:e,schema:r,schemaCode:n,data:i,$data:s,it:o}=t,{opts:a}=o;if(!s&&r.length===0)return;let c=r.length>=a.loopRequired;if(o.allErrors?l():u(),a.strictRequired){let f=t.parentSchema.properties,{definedProperties:m}=t.it;for(let y of r)if(f?.[y]===void 0&&!m.has(y)){let b=o.schemaEnv.baseId+o.errSchemaPath,v=`required property "${y}" is not defined at "${b}" (strictRequired)`;(0,Ahe.checkStrictMode)(o,v,o.opts.strictRequired)}}function l(){if(c||s)t.block$data(td.nil,d);else for(let f of r)(0,ed.checkReportMissingProp)(t,f)}function u(){let f=e.let("missing");if(c||s){let m=e.let("valid",!0);t.block$data(m,()=>p(f,m)),t.ok(m)}else e.if((0,ed.checkMissingProp)(t,r,f)),(0,ed.reportMissingProp)(t,f),e.else()}function d(){e.forOf("prop",n,f=>{t.setParams({missingProperty:f}),e.if((0,ed.noPropertyInData)(e,i,f,a.ownProperties),()=>t.error())})}function p(f,m){t.setParams({missingProperty:f}),e.forOf(f,n,()=>{e.assign(m,(0,ed.propertyInData)(e,i,f,a.ownProperties)),e.if((0,td.not)(m),()=>{t.error(),e.break()})},td.nil)}}};D_.default=Ohe});var Y4=h(M_=>{"use strict";Object.defineProperty(M_,"__esModule",{value:!0});var rd=ue(),Che={message({keyword:t,schemaCode:e}){let r=t==="maxItems"?"more":"fewer";return(0,rd.str)`must NOT have ${r} than ${e} items`},params:({schemaCode:t})=>(0,rd._)`{limit: ${t}}`},jhe={keyword:["maxItems","minItems"],type:"array",schemaType:"number",$data:!0,error:Che,code(t){let{keyword:e,data:r,schemaCode:n}=t,i=e==="maxItems"?rd.operators.GT:rd.operators.LT;t.fail$data((0,rd._)`${r}.length ${i} ${n}`)}};M_.default=jhe});var ch=h(N_=>{"use strict";Object.defineProperty(N_,"__esModule",{value:!0});var Q4=t_();Q4.code='require("ajv/dist/runtime/equal").default';N_.default=Q4});var X4=h(q_=>{"use strict";Object.defineProperty(q_,"__esModule",{value:!0});var L_=$u(),Jt=ue(),Phe=we(),Khe=ch(),Dhe={message:({params:{i:t,j:e}})=>(0,Jt.str)`must NOT have duplicate items (items ## ${e} and ${t} are identical)`,params:({params:{i:t,j:e}})=>(0,Jt._)`{i: ${t}, j: ${e}}`},Mhe={keyword:"uniqueItems",type:"array",schemaType:"boolean",$data:!0,error:Dhe,code(t){let{gen:e,data:r,$data:n,schema:i,parentSchema:s,schemaCode:o,it:a}=t;if(!n&&!i)return;let c=e.let("valid"),l=s.items?(0,L_.getSchemaTypes)(s.items):[];t.block$data(c,u,(0,Jt._)`${o} === false`),t.ok(c);function u(){let m=e.let("i",(0,Jt._)`${r}.length`),y=e.let("j");t.setParams({i:m,j:y}),e.assign(c,!0),e.if((0,Jt._)`${m} > 1`,()=>(d()?p:f)(m,y))}function d(){return l.length>0&&!l.some(m=>m==="object"||m==="array")}function p(m,y){let b=e.name("item"),v=(0,L_.checkDataTypes)(l,b,a.opts.strictNumbers,L_.DataType.Wrong),E=e.const("indices",(0,Jt._)`{}`);e.for((0,Jt._)`;${m}--;`,()=>{e.let(b,(0,Jt._)`${r}[${m}]`),e.if(v,(0,Jt._)`continue`),l.length>1&&e.if((0,Jt._)`typeof ${b} == "string"`,(0,Jt._)`${b} += "_"`),e.if((0,Jt._)`typeof ${E}[${b}] == "number"`,()=>{e.assign(y,(0,Jt._)`${E}[${b}]`),t.error(),e.assign(c,!1).break()}).code((0,Jt._)`${E}[${b}] = ${m}`)})}function f(m,y){let b=(0,Phe.useFunc)(e,Khe.default),v=e.name("outer");e.label(v).for((0,Jt._)`;${m}--;`,()=>e.for((0,Jt._)`${y} = ${m}; ${y}--;`,()=>e.if((0,Jt._)`${b}(${r}[${m}], ${r}[${y}])`,()=>{t.error(),e.assign(c,!1).break(v)})))}}};q_.default=Mhe});var Z4=h($_=>{"use strict";Object.defineProperty($_,"__esModule",{value:!0});var F_=ue(),Nhe=we(),Lhe=ch(),qhe={message:"must be equal to constant",params:({schemaCode:t})=>(0,F_._)`{allowedValue: ${t}}`},Fhe={keyword:"const",$data:!0,error:qhe,code(t){let{gen:e,data:r,$data:n,schemaCode:i,schema:s}=t;n||s&&typeof s=="object"?t.fail$data((0,F_._)`!${(0,Nhe.useFunc)(e,Lhe.default)}(${r}, ${i})`):t.fail((0,F_._)`${s} !== ${r}`)}};$_.default=Fhe});var eF=h(U_=>{"use strict";Object.defineProperty(U_,"__esModule",{value:!0});var nd=ue(),$he=we(),Uhe=ch(),Jhe={message:"must be equal to one of the allowed values",params:({schemaCode:t})=>(0,nd._)`{allowedValues: ${t}}`},zhe={keyword:"enum",schemaType:"array",$data:!0,error:Jhe,code(t){let{gen:e,data:r,$data:n,schema:i,schemaCode:s,it:o}=t;if(!n&&i.length===0)throw new Error("enum must have non-empty array");let a=i.length>=o.opts.loopEnum,c,l=()=>c??(c=(0,$he.useFunc)(e,Uhe.default)),u;if(a||n)u=e.let("valid"),t.block$data(u,d);else{if(!Array.isArray(i))throw new Error("ajv implementation error");let f=e.const("vSchema",s);u=(0,nd.or)(...i.map((m,y)=>p(f,y)))}t.pass(u);function d(){e.assign(u,!1),e.forOf("v",s,f=>e.if((0,nd._)`${l()}(${r}, ${f})`,()=>e.assign(u,!0).break()))}function p(f,m){let y=i[m];return typeof y=="object"&&y!==null?(0,nd._)`${l()}(${r}, ${f}[${m}])`:(0,nd._)`${r} === ${y}`}}};U_.default=zhe});var tF=h(J_=>{"use strict";Object.defineProperty(J_,"__esModule",{value:!0});var Ghe=U4(),Bhe=J4(),Hhe=B4(),Vhe=H4(),Whe=V4(),Yhe=W4(),Qhe=Y4(),Xhe=X4(),Zhe=Z4(),eye=eF(),tye=[Ghe.default,Bhe.default,Hhe.default,Vhe.default,Whe.default,Yhe.default,Qhe.default,Xhe.default,{keyword:"type",schemaType:["string","array"]},{keyword:"nullable",schemaType:"boolean"},Zhe.default,eye.default];J_.default=tye});var G_=h(id=>{"use strict";Object.defineProperty(id,"__esModule",{value:!0});id.validateAdditionalItems=void 0;var Fo=ue(),z_=we(),rye={message:({params:{len:t}})=>(0,Fo.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,Fo._)`{limit: ${t}}`},nye={keyword:"additionalItems",type:"array",schemaType:["boolean","object"],before:"uniqueItems",error:rye,code(t){let{parentSchema:e,it:r}=t,{items:n}=e;if(!Array.isArray(n)){(0,z_.checkStrictMode)(r,'"additionalItems" is ignored when "items" is not an array of schemas');return}rF(t,n)}};function rF(t,e){let{gen:r,schema:n,data:i,keyword:s,it:o}=t;o.items=!0;let a=r.const("len",(0,Fo._)`${i}.length`);if(n===!1)t.setParams({len:e.length}),t.pass((0,Fo._)`${a} <= ${e.length}`);else if(typeof n=="object"&&!(0,z_.alwaysValidSchema)(o,n)){let l=r.var("valid",(0,Fo._)`${a} <= ${e.length}`);r.if((0,Fo.not)(l),()=>c(l)),t.ok(l)}function c(l){r.forRange("i",e.length,a,u=>{t.subschema({keyword:s,dataProp:u,dataPropType:z_.Type.Num},l),o.allErrors||r.if((0,Fo.not)(l),()=>r.break())})}}id.validateAdditionalItems=rF;id.default=nye});var B_=h(sd=>{"use strict";Object.defineProperty(sd,"__esModule",{value:!0});sd.validateTuple=void 0;var nF=ue(),lh=we(),iye=on(),sye={keyword:"items",type:"array",schemaType:["object","array","boolean"],before:"uniqueItems",code(t){let{schema:e,it:r}=t;if(Array.isArray(e))return iF(t,"additionalItems",e);r.items=!0,!(0,lh.alwaysValidSchema)(r,e)&&t.ok((0,iye.validateArray)(t))}};function iF(t,e,r=t.schema){let{gen:n,parentSchema:i,data:s,keyword:o,it:a}=t;u(i),a.opts.unevaluated&&r.length&&a.items!==!0&&(a.items=lh.mergeEvaluated.items(n,r.length,a.items));let c=n.name("valid"),l=n.const("len",(0,nF._)`${s}.length`);r.forEach((d,p)=>{(0,lh.alwaysValidSchema)(a,d)||(n.if((0,nF._)`${l} > ${p}`,()=>t.subschema({keyword:o,schemaProp:p,dataProp:p},c)),t.ok(c))});function u(d){let{opts:p,errSchemaPath:f}=a,m=r.length,y=m===d.minItems&&(m===d.maxItems||d[e]===!1);if(p.strictTuples&&!y){let b=`"${o}" is ${m}-tuple, but minItems or maxItems/${e} are not specified or different at path "${f}"`;(0,lh.checkStrictMode)(a,b,p.strictTuples)}}}sd.validateTuple=iF;sd.default=sye});var sF=h(H_=>{"use strict";Object.defineProperty(H_,"__esModule",{value:!0});var oye=B_(),aye={keyword:"prefixItems",type:"array",schemaType:["array"],before:"uniqueItems",code:t=>(0,oye.validateTuple)(t,"items")};H_.default=aye});var aF=h(V_=>{"use strict";Object.defineProperty(V_,"__esModule",{value:!0});var oF=ue(),cye=we(),lye=on(),uye=G_(),dye={message:({params:{len:t}})=>(0,oF.str)`must NOT have more than ${t} items`,params:({params:{len:t}})=>(0,oF._)`{limit: ${t}}`},pye={keyword:"items",type:"array",schemaType:["object","boolean"],before:"uniqueItems",error:dye,code(t){let{schema:e,parentSchema:r,it:n}=t,{prefixItems:i}=r;n.items=!0,!(0,cye.alwaysValidSchema)(n,e)&&(i?(0,uye.validateAdditionalItems)(t,i):t.ok((0,lye.validateArray)(t)))}};V_.default=pye});var cF=h(W_=>{"use strict";Object.defineProperty(W_,"__esModule",{value:!0});var cn=ue(),uh=we(),fye={message:({params:{min:t,max:e}})=>e===void 0?(0,cn.str)`must contain at least ${t} valid item(s)`:(0,cn.str)`must contain at least ${t} and no more than ${e} valid item(s)`,params:({params:{min:t,max:e}})=>e===void 0?(0,cn._)`{minContains: ${t}}`:(0,cn._)`{minContains: ${t}, maxContains: ${e}}`},mye={keyword:"contains",type:"array",schemaType:["object","boolean"],before:"uniqueItems",trackErrors:!0,error:fye,code(t){let{gen:e,schema:r,parentSchema:n,data:i,it:s}=t,o,a,{minContains:c,maxContains:l}=n;s.opts.next?(o=c===void 0?1:c,a=l):o=1;let u=e.const("len",(0,cn._)`${i}.length`);if(t.setParams({min:o,max:a}),a===void 0&&o===0){(0,uh.checkStrictMode)(s,'"minContains" == 0 without "maxContains": "contains" keyword ignored');return}if(a!==void 0&&o>a){(0,uh.checkStrictMode)(s,'"minContains" > "maxContains" is always invalid'),t.fail();return}if((0,uh.alwaysValidSchema)(s,r)){let y=(0,cn._)`${u} >= ${o}`;a!==void 0&&(y=(0,cn._)`${y} && ${u} <= ${a}`),t.pass(y);return}s.items=!0;let d=e.name("valid");a===void 0&&o===1?f(d,()=>e.if(d,()=>e.break())):o===0?(e.let(d,!0),a!==void 0&&e.if((0,cn._)`${i}.length > 0`,p)):(e.let(d,!1),p()),t.result(d,()=>t.reset());function p(){let y=e.name("_valid"),b=e.let("count",0);f(y,()=>e.if(y,()=>m(b)))}function f(y,b){e.forRange("i",0,u,v=>{t.subschema({keyword:"contains",dataProp:v,dataPropType:uh.Type.Num,compositeRule:!0},y),b()})}function m(y){e.code((0,cn._)`${y}++`),a===void 0?e.if((0,cn._)`${y} >= ${o}`,()=>e.assign(d,!0).break()):(e.if((0,cn._)`${y} > ${a}`,()=>e.assign(d,!1).break()),o===1?e.assign(d,!0):e.if((0,cn._)`${y} >= ${o}`,()=>e.assign(d,!0)))}}};W_.default=mye});var dF=h(ei=>{"use strict";Object.defineProperty(ei,"__esModule",{value:!0});ei.validateSchemaDeps=ei.validatePropertyDeps=ei.error=void 0;var Y_=ue(),hye=we(),od=on();ei.error={message:({params:{property:t,depsCount:e,deps:r}})=>{let n=e===1?"property":"properties";return(0,Y_.str)`must have ${n} ${r} when property ${t} is present`},params:({params:{property:t,depsCount:e,deps:r,missingProperty:n}})=>(0,Y_._)`{property: ${t},
missingProperty: ${n},
depsCount: ${e},
deps: ${r}}`};var yye={keyword:"dependencies",type:"object",schemaType:"object",error:ei.error,code(t){let[e,r]=gye(t);lF(t,e),uF(t,r)}};function gye({schema:t}){let e={},r={};for(let n in t){if(n==="__proto__")continue;let i=Array.isArray(t[n])?e:r;i[n]=t[n]}return[e,r]}function lF(t,e=t.schema){let{gen:r,data:n,it:i}=t;if(Object.keys(e).length===0)return;let s=r.let("missing");for(let o in e){let a=e[o];if(a.length===0)continue;let c=(0,od.propertyInData)(r,n,o,i.opts.ownProperties);t.setParams({property:o,depsCount:a.length,deps:a.join(", ")}),i.allErrors?r.if(c,()=>{for(let l of a)(0,od.checkReportMissingProp)(t,l)}):(r.if((0,Y_._)`${c} && (${(0,od.checkMissingProp)(t,a,s)})`),(0,od.reportMissingProp)(t,s),r.else())}}ei.validatePropertyDeps=lF;function uF(t,e=t.schema){let{gen:r,data:n,keyword:i,it:s}=t,o=r.name("valid");for(let a in e)(0,hye.alwaysValidSchema)(s,e[a])||(r.if((0,od.propertyInData)(r,n,a,s.opts.ownProperties),()=>{let c=t.subschema({keyword:i,schemaProp:a},o);t.mergeValidEvaluated(c,o)},()=>r.var(o,!0)),t.ok(o))}ei.validateSchemaDeps=uF;ei.default=yye});var fF=h(Q_=>{"use strict";Object.defineProperty(Q_,"__esModule",{value:!0});var pF=ue(),bye=we(),vye={message:"property name must be valid",params:({params:t})=>(0,pF._)`{propertyName: ${t.propertyName}}`},Eye={keyword:"propertyNames",type:"object",schemaType:["object","boolean"],error:vye,code(t){let{gen:e,schema:r,data:n,it:i}=t;if((0,bye.alwaysValidSchema)(i,r))return;let s=e.name("valid");e.forIn("key",n,o=>{t.setParams({propertyName:o}),t.subschema({keyword:"propertyNames",data:o,dataTypes:["string"],propertyName:o,compositeRule:!0},s),e.if((0,pF.not)(s),()=>{t.error(!0),i.allErrors||e.break()})}),t.ok(s)}};Q_.default=Eye});var Z_=h(X_=>{"use strict";Object.defineProperty(X_,"__esModule",{value:!0});var dh=on(),On=ue(),Sye=Fi(),ph=we(),xye={message:"must NOT have additional properties",params:({params:t})=>(0,On._)`{additionalProperty: ${t.additionalProperty}}`},wye={keyword:"additionalProperties",type:["object"],schemaType:["boolean","object"],allowUndefined:!0,trackErrors:!0,error:xye,code(t){let{gen:e,schema:r,parentSchema:n,data:i,errsCount:s,it:o}=t;if(!s)throw new Error("ajv implementation error");let{allErrors:a,opts:c}=o;if(o.props=!0,c.removeAdditional!=="all"&&(0,ph.alwaysValidSchema)(o,r))return;let l=(0,dh.allSchemaProperties)(n.properties),u=(0,dh.allSchemaProperties)(n.patternProperties);d(),t.ok((0,On._)`${s} === ${Sye.default.errors}`);function d(){e.forIn("key",i,b=>{!l.length&&!u.length?m(b):e.if(p(b),()=>m(b))})}function p(b){let v;if(l.length>8){let E=(0,ph.schemaRefOrVal)(o,n.properties,"properties");v=(0,dh.isOwnProperty)(e,E,b)}else l.length?v=(0,On.or)(...l.map(E=>(0,On._)`${b} === ${E}`)):v=On.nil;return u.length&&(v=(0,On.or)(v,...u.map(E=>(0,On._)`${(0,dh.usePattern)(t,E)}.test(${b})`))),(0,On.not)(v)}function f(b){e.code((0,On._)`delete ${i}[${b}]`)}function m(b){if(c.removeAdditional==="all"||c.removeAdditional&&r===!1){f(b);return}if(r===!1){t.setParams({additionalProperty:b}),t.error(),a||e.break();return}if(typeof r=="object"&&!(0,ph.alwaysValidSchema)(o,r)){let v=e.name("valid");c.removeAdditional==="failing"?(y(b,v,!1),e.if((0,On.not)(v),()=>{t.reset(),f(b)})):(y(b,v),a||e.if((0,On.not)(v),()=>e.break()))}}function y(b,v,E){let S={keyword:"additionalProperties",dataProp:b,dataPropType:ph.Type.Str};E===!1&&Object.assign(S,{compositeRule:!0,createErrors:!1,allErrors:!1}),t.subschema(S,v)}}};X_.default=wye});var yF=h(tI=>{"use strict";Object.defineProperty(tI,"__esModule",{value:!0});var _ye=Gu(),mF=on(),eI=we(),hF=Z_(),Iye={keyword:"properties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,parentSchema:n,data:i,it:s}=t;s.opts.removeAdditional==="all"&&n.additionalProperties===void 0&&hF.default.code(new _ye.KeywordCxt(s,hF.default,"additionalProperties"));let o=(0,mF.allSchemaProperties)(r);for(let d of o)s.definedProperties.add(d);s.opts.unevaluated&&o.length&&s.props!==!0&&(s.props=eI.mergeEvaluated.props(e,(0,eI.toHash)(o),s.props));let a=o.filter(d=>!(0,eI.alwaysValidSchema)(s,r[d]));if(a.length===0)return;let c=e.name("valid");for(let d of a)l(d)?u(d):(e.if((0,mF.propertyInData)(e,i,d,s.opts.ownProperties)),u(d),s.allErrors||e.else().var(c,!0),e.endIf()),t.it.definedProperties.add(d),t.ok(c);function l(d){return s.opts.useDefaults&&!s.compositeRule&&r[d].default!==void 0}function u(d){t.subschema({keyword:"properties",schemaProp:d,dataProp:d},c)}}};tI.default=Iye});var EF=h(rI=>{"use strict";Object.defineProperty(rI,"__esModule",{value:!0});var gF=on(),fh=ue(),bF=we(),vF=we(),Tye={keyword:"patternProperties",type:"object",schemaType:"object",code(t){let{gen:e,schema:r,data:n,parentSchema:i,it:s}=t,{opts:o}=s,a=(0,gF.allSchemaProperties)(r),c=a.filter(y=>(0,bF.alwaysValidSchema)(s,r[y]));if(a.length===0||c.length===a.length&&(!s.opts.unevaluated||s.props===!0))return;let l=o.strictSchema&&!o.allowMatchingProperties&&i.properties,u=e.name("valid");s.props!==!0&&!(s.props instanceof fh.Name)&&(s.props=(0,vF.evaluatedPropsToName)(e,s.props));let{props:d}=s;p();function p(){for(let y of a)l&&f(y),s.allErrors?m(y):(e.var(u,!0),m(y),e.if(u))}function f(y){for(let b in l)new RegExp(y).test(b)&&(0,bF.checkStrictMode)(s,`property ${b} matches pattern ${y} (use allowMatchingProperties)`)}function m(y){e.forIn("key",n,b=>{e.if((0,fh._)`${(0,gF.usePattern)(t,y)}.test(${b})`,()=>{let v=c.includes(y);v||t.subschema({keyword:"patternProperties",schemaProp:y,dataProp:b,dataPropType:vF.Type.Str},u),s.opts.unevaluated&&d!==!0?e.assign((0,fh._)`${d}[${b}]`,!0):!v&&!s.allErrors&&e.if((0,fh.not)(u),()=>e.break())})})}}};rI.default=Tye});var SF=h(nI=>{"use strict";Object.defineProperty(nI,"__esModule",{value:!0});var kye=we(),Aye={keyword:"not",schemaType:["object","boolean"],trackErrors:!0,code(t){let{gen:e,schema:r,it:n}=t;if((0,kye.alwaysValidSchema)(n,r)){t.fail();return}let i=e.name("valid");t.subschema({keyword:"not",compositeRule:!0,createErrors:!1,allErrors:!1},i),t.failResult(i,()=>t.reset(),()=>t.error())},error:{message:"must NOT be valid"}};nI.default=Aye});var xF=h(iI=>{"use strict";Object.defineProperty(iI,"__esModule",{value:!0});var Rye=on(),Oye={keyword:"anyOf",schemaType:"array",trackErrors:!0,code:Rye.validateUnion,error:{message:"must match a schema in anyOf"}};iI.default=Oye});var wF=h(sI=>{"use strict";Object.defineProperty(sI,"__esModule",{value:!0});var mh=ue(),Cye=we(),jye={message:"must match exactly one schema in oneOf",params:({params:t})=>(0,mh._)`{passingSchemas: ${t.passing}}`},Pye={keyword:"oneOf",schemaType:"array",trackErrors:!0,error:jye,code(t){let{gen:e,schema:r,parentSchema:n,it:i}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");if(i.opts.discriminator&&n.discriminator)return;let s=r,o=e.let("valid",!1),a=e.let("passing",null),c=e.name("_valid");t.setParams({passing:a}),e.block(l),t.result(o,()=>t.reset(),()=>t.error(!0));function l(){s.forEach((u,d)=>{let p;(0,Cye.alwaysValidSchema)(i,u)?e.var(c,!0):p=t.subschema({keyword:"oneOf",schemaProp:d,compositeRule:!0},c),d>0&&e.if((0,mh._)`${c} && ${o}`).assign(o,!1).assign(a,(0,mh._)`[${a}, ${d}]`).else(),e.if(c,()=>{e.assign(o,!0),e.assign(a,d),p&&t.mergeEvaluated(p,mh.Name)})})}}};sI.default=Pye});var _F=h(oI=>{"use strict";Object.defineProperty(oI,"__esModule",{value:!0});var Kye=we(),Dye={keyword:"allOf",schemaType:"array",code(t){let{gen:e,schema:r,it:n}=t;if(!Array.isArray(r))throw new Error("ajv implementation error");let i=e.name("valid");r.forEach((s,o)=>{if((0,Kye.alwaysValidSchema)(n,s))return;let a=t.subschema({keyword:"allOf",schemaProp:o},i);t.ok(i),t.mergeEvaluated(a)})}};oI.default=Dye});var kF=h(aI=>{"use strict";Object.defineProperty(aI,"__esModule",{value:!0});var hh=ue(),TF=we(),Mye={message:({params:t})=>(0,hh.str)`must match "${t.ifClause}" schema`,params:({params:t})=>(0,hh._)`{failingKeyword: ${t.ifClause}}`},Nye={keyword:"if",schemaType:["object","boolean"],trackErrors:!0,error:Mye,code(t){let{gen:e,parentSchema:r,it:n}=t;r.then===void 0&&r.else===void 0&&(0,TF.checkStrictMode)(n,'"if" without "then" and "else" is ignored');let i=IF(n,"then"),s=IF(n,"else");if(!i&&!s)return;let o=e.let("valid",!0),a=e.name("_valid");if(c(),t.reset(),i&&s){let u=e.let("ifClause");t.setParams({ifClause:u}),e.if(a,l("then",u),l("else",u))}else i?e.if(a,l("then")):e.if((0,hh.not)(a),l("else"));t.pass(o,()=>t.error(!0));function c(){let u=t.subschema({keyword:"if",compositeRule:!0,createErrors:!1,allErrors:!1},a);t.mergeEvaluated(u)}function l(u,d){return()=>{let p=t.subschema({keyword:u},a);e.assign(o,a),t.mergeValidEvaluated(p,o),d?e.assign(d,(0,hh._)`${u}`):t.setParams({ifClause:u})}}}};function IF(t,e){let r=t.schema[e];return r!==void 0&&!(0,TF.alwaysValidSchema)(t,r)}aI.default=Nye});var AF=h(cI=>{"use strict";Object.defineProperty(cI,"__esModule",{value:!0});var Lye=we(),qye={keyword:["then","else"],schemaType:["object","boolean"],code({keyword:t,parentSchema:e,it:r}){e.if===void 0&&(0,Lye.checkStrictMode)(r,`"${t}" without "if" is ignored`)}};cI.default=qye});var RF=h(lI=>{"use strict";Object.defineProperty(lI,"__esModule",{value:!0});var Fye=G_(),$ye=sF(),Uye=B_(),Jye=aF(),zye=cF(),Gye=dF(),Bye=fF(),Hye=Z_(),Vye=yF(),Wye=EF(),Yye=SF(),Qye=xF(),Xye=wF(),Zye=_F(),ege=kF(),tge=AF();function rge(t=!1){let e=[Yye.default,Qye.default,Xye.default,Zye.default,ege.default,tge.default,Bye.default,Hye.default,Gye.default,Vye.default,Wye.default];return t?e.push($ye.default,Jye.default):e.push(Fye.default,Uye.default),e.push(zye.default),e}lI.default=rge});var OF=h(uI=>{"use strict";Object.defineProperty(uI,"__esModule",{value:!0});var pt=ue(),nge={message:({schemaCode:t})=>(0,pt.str)`must match format "${t}"`,params:({schemaCode:t})=>(0,pt._)`{format: ${t}}`},ige={keyword:"format",type:["number","string"],schemaType:"string",$data:!0,error:nge,code(t,e){let{gen:r,data:n,$data:i,schema:s,schemaCode:o,it:a}=t,{opts:c,errSchemaPath:l,schemaEnv:u,self:d}=a;if(!c.validateFormats)return;i?p():f();function p(){let m=r.scopeValue("formats",{ref:d.formats,code:c.code.formats}),y=r.const("fDef",(0,pt._)`${m}[${o}]`),b=r.let("fType"),v=r.let("format");r.if((0,pt._)`typeof ${y} == "object" && !(${y} instanceof RegExp)`,()=>r.assign(b,(0,pt._)`${y}.type || "string"`).assign(v,(0,pt._)`${y}.validate`),()=>r.assign(b,(0,pt._)`"string"`).assign(v,y)),t.fail$data((0,pt.or)(E(),S()));function E(){return c.strictSchema===!1?pt.nil:(0,pt._)`${o} && !${v}`}function S(){let k=u.$async?(0,pt._)`(${y}.async ? await ${v}(${n}) : ${v}(${n}))`:(0,pt._)`${v}(${n})`,_=(0,pt._)`(typeof ${v} == "function" ? ${k} : ${v}.test(${n}))`;return(0,pt._)`${v} && ${v} !== true && ${b} === ${e} && !${_}`}}function f(){let m=d.formats[s];if(!m){E();return}if(m===!0)return;let[y,b,v]=S(m);y===e&&t.pass(k());function E(){if(c.strictSchema===!1){d.logger.warn(_());return}throw new Error(_());function _(){return`unknown format "${s}" ignored in schema at path "${l}"`}}function S(_){let O=_ instanceof RegExp?(0,pt.regexpCode)(_):c.code.formats?(0,pt._)`${c.code.formats}${(0,pt.getProperty)(s)}`:void 0,N=r.scopeValue("formats",{key:s,ref:_,code:O});return typeof _=="object"&&!(_ instanceof RegExp)?[_.type||"string",_.validate,(0,pt._)`${N}.validate`]:["string",_,N]}function k(){if(typeof m=="object"&&!(m instanceof RegExp)&&m.async){if(!u.$async)throw new Error("async format in sync schema");return(0,pt._)`await ${v}(${n})`}return typeof b=="function"?(0,pt._)`${v}(${n})`:(0,pt._)`${v}.test(${n})`}}}};uI.default=ige});var CF=h(dI=>{"use strict";Object.defineProperty(dI,"__esModule",{value:!0});var sge=OF(),oge=[sge.default];dI.default=oge});var jF=h(Oc=>{"use strict";Object.defineProperty(Oc,"__esModule",{value:!0});Oc.contentVocabulary=Oc.metadataVocabulary=void 0;Oc.metadataVocabulary=["title","description","default","deprecated","readOnly","writeOnly","examples"];Oc.contentVocabulary=["contentMediaType","contentEncoding","contentSchema"]});var KF=h(pI=>{"use strict";Object.defineProperty(pI,"__esModule",{value:!0});var age=$4(),cge=tF(),lge=RF(),uge=CF(),PF=jF(),dge=[age.default,cge.default,(0,lge.default)(),uge.default,PF.metadataVocabulary,PF.contentVocabulary];pI.default=dge});var MF=h(yh=>{"use strict";Object.defineProperty(yh,"__esModule",{value:!0});yh.DiscrError=void 0;var DF;(function(t){t.Tag="tag",t.Mapping="mapping"})(DF||(yh.DiscrError=DF={}))});var LF=h(mI=>{"use strict";Object.defineProperty(mI,"__esModule",{value:!0});var Cc=ue(),fI=MF(),NF=Qm(),pge=Bu(),fge=we(),mge={message:({params:{discrError:t,tagName:e}})=>t===fI.DiscrError.Tag?`tag "${e}" must be string`:`value of tag "${e}" must be in oneOf`,params:({params:{discrError:t,tag:e,tagName:r}})=>(0,Cc._)`{error: ${t}, tag: ${r}, tagValue: ${e}}`},hge={keyword:"discriminator",type:"object",schemaType:"object",error:mge,code(t){let{gen:e,data:r,schema:n,parentSchema:i,it:s}=t,{oneOf:o}=i;if(!s.opts.discriminator)throw new Error("discriminator: requires discriminator option");let a=n.propertyName;if(typeof a!="string")throw new Error("discriminator: requires propertyName");if(n.mapping)throw new Error("discriminator: mapping is not supported");if(!o)throw new Error("discriminator: requires oneOf keyword");let c=e.let("valid",!1),l=e.const("tag",(0,Cc._)`${r}${(0,Cc.getProperty)(a)}`);e.if((0,Cc._)`typeof ${l} == "string"`,()=>u(),()=>t.error(!1,{discrError:fI.DiscrError.Tag,tag:l,tagName:a})),t.ok(c);function u(){let f=p();e.if(!1);for(let m in f)e.elseIf((0,Cc._)`${l} === ${m}`),e.assign(c,d(f[m]));e.else(),t.error(!1,{discrError:fI.DiscrError.Mapping,tag:l,tagName:a}),e.endIf()}function d(f){let m=e.name("valid"),y=t.subschema({keyword:"oneOf",schemaProp:f},m);return t.mergeEvaluated(y,Cc.Name),m}function p(){var f;let m={},y=v(i),b=!0;for(let k=0;k<o.length;k++){let _=o[k];if(_?.$ref&&!(0,fge.schemaHasRulesButRef)(_,s.self.RULES)){let N=_.$ref;if(_=NF.resolveRef.call(s.self,s.schemaEnv.root,s.baseId,N),_ instanceof NF.SchemaEnv&&(_=_.schema),_===void 0)throw new pge.default(s.opts.uriResolver,s.baseId,N)}let O=(f=_?.properties)===null||f===void 0?void 0:f[a];if(typeof O!="object")throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/${a}"`);b=b&&(y||v(_)),E(O,k)}if(!b)throw new Error(`discriminator: "${a}" must be required`);return m;function v({required:k}){return Array.isArray(k)&&k.includes(a)}function E(k,_){if(k.const)S(k.const,_);else if(k.enum)for(let O of k.enum)S(O,_);else throw new Error(`discriminator: "properties/${a}" must have "const" or "enum"`)}function S(k,_){if(typeof k!="string"||k in m)throw new Error(`discriminator: "${a}" values must be unique strings`);m[k]=_}}}};mI.default=hge});var qF=h((B2e,yge)=>{yge.exports={$schema:"http://json-schema.org/draft-07/schema#",$id:"http://json-schema.org/draft-07/schema#",title:"Core schema meta-schema",definitions:{schemaArray:{type:"array",minItems:1,items:{$ref:"#"}},nonNegativeInteger:{type:"integer",minimum:0},nonNegativeIntegerDefault0:{allOf:[{$ref:"#/definitions/nonNegativeInteger"},{default:0}]},simpleTypes:{enum:["array","boolean","integer","null","number","object","string"]},stringArray:{type:"array",items:{type:"string"},uniqueItems:!0,default:[]}},type:["object","boolean"],properties:{$id:{type:"string",format:"uri-reference"},$schema:{type:"string",format:"uri"},$ref:{type:"string",format:"uri-reference"},$comment:{type:"string"},title:{type:"string"},description:{type:"string"},default:!0,readOnly:{type:"boolean",default:!1},examples:{type:"array",items:!0},multipleOf:{type:"number",exclusiveMinimum:0},maximum:{type:"number"},exclusiveMaximum:{type:"number"},minimum:{type:"number"},exclusiveMinimum:{type:"number"},maxLength:{$ref:"#/definitions/nonNegativeInteger"},minLength:{$ref:"#/definitions/nonNegativeIntegerDefault0"},pattern:{type:"string",format:"regex"},additionalItems:{$ref:"#"},items:{anyOf:[{$ref:"#"},{$ref:"#/definitions/schemaArray"}],default:!0},maxItems:{$ref:"#/definitions/nonNegativeInteger"},minItems:{$ref:"#/definitions/nonNegativeIntegerDefault0"},uniqueItems:{type:"boolean",default:!1},contains:{$ref:"#"},maxProperties:{$ref:"#/definitions/nonNegativeInteger"},minProperties:{$ref:"#/definitions/nonNegativeIntegerDefault0"},required:{$ref:"#/definitions/stringArray"},additionalProperties:{$ref:"#"},definitions:{type:"object",additionalProperties:{$ref:"#"},default:{}},properties:{type:"object",additionalProperties:{$ref:"#"},default:{}},patternProperties:{type:"object",additionalProperties:{$ref:"#"},propertyNames:{format:"regex"},default:{}},dependencies:{type:"object",additionalProperties:{anyOf:[{$ref:"#"},{$ref:"#/definitions/stringArray"}]}},propertyNames:{$ref:"#"},const:!0,enum:{type:"array",items:!0,minItems:1,uniqueItems:!0},type:{anyOf:[{$ref:"#/definitions/simpleTypes"},{type:"array",items:{$ref:"#/definitions/simpleTypes"},minItems:1,uniqueItems:!0}]},format:{type:"string"},contentMediaType:{type:"string"},contentEncoding:{type:"string"},if:{$ref:"#"},then:{$ref:"#"},else:{$ref:"#"},allOf:{$ref:"#/definitions/schemaArray"},anyOf:{$ref:"#/definitions/schemaArray"},oneOf:{$ref:"#/definitions/schemaArray"},not:{$ref:"#"}},default:!0}});var yI=h((Ve,hI)=>{"use strict";Object.defineProperty(Ve,"__esModule",{value:!0});Ve.MissingRefError=Ve.ValidationError=Ve.CodeGen=Ve.Name=Ve.nil=Ve.stringify=Ve.str=Ve._=Ve.KeywordCxt=Ve.Ajv=void 0;var gge=D4(),bge=KF(),vge=LF(),FF=qF(),Ege=["/properties"],gh="http://json-schema.org/draft-07/schema",jc=class extends gge.default{_addVocabularies(){super._addVocabularies(),bge.default.forEach(e=>this.addVocabulary(e)),this.opts.discriminator&&this.addKeyword(vge.default)}_addDefaultMetaSchema(){if(super._addDefaultMetaSchema(),!this.opts.meta)return;let e=this.opts.$data?this.$dataMetaSchema(FF,Ege):FF;this.addMetaSchema(e,gh,!1),this.refs["http://json-schema.org/schema"]=gh}defaultMeta(){return this.opts.defaultMeta=super.defaultMeta()||(this.getSchema(gh)?gh:void 0)}};Ve.Ajv=jc;hI.exports=Ve=jc;hI.exports.Ajv=jc;Object.defineProperty(Ve,"__esModule",{value:!0});Ve.default=jc;var Sge=Gu();Object.defineProperty(Ve,"KeywordCxt",{enumerable:!0,get:function(){return Sge.KeywordCxt}});var Pc=ue();Object.defineProperty(Ve,"_",{enumerable:!0,get:function(){return Pc._}});Object.defineProperty(Ve,"str",{enumerable:!0,get:function(){return Pc.str}});Object.defineProperty(Ve,"stringify",{enumerable:!0,get:function(){return Pc.stringify}});Object.defineProperty(Ve,"nil",{enumerable:!0,get:function(){return Pc.nil}});Object.defineProperty(Ve,"Name",{enumerable:!0,get:function(){return Pc.Name}});Object.defineProperty(Ve,"CodeGen",{enumerable:!0,get:function(){return Pc.CodeGen}});var xge=Wm();Object.defineProperty(Ve,"ValidationError",{enumerable:!0,get:function(){return xge.default}});var wge=Bu();Object.defineProperty(Ve,"MissingRefError",{enumerable:!0,get:function(){return wge.default}})});var VF=h(ri=>{"use strict";Object.defineProperty(ri,"__esModule",{value:!0});ri.formatNames=ri.fastFormats=ri.fullFormats=void 0;function ti(t,e){return{validate:t,compare:e}}ri.fullFormats={date:ti(zF,EI),time:ti(bI(!0),SI),"date-time":ti($F(!0),BF),"iso-time":ti(bI(),GF),"iso-date-time":ti($F(),HF),duration:/^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/,uri:Rge,"uri-reference":/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i,"uri-template":/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i,url:/^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu,email:/^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,hostname:/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i,ipv4:/^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/,ipv6:/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i,regex:Mge,uuid:/^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i,"json-pointer":/^(?:\/(?:[^~/]|~0|~1)*)*$/,"json-pointer-uri-fragment":/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i,"relative-json-pointer":/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/,byte:Oge,int32:{type:"number",validate:Pge},int64:{type:"number",validate:Kge},float:{type:"number",validate:JF},double:{type:"number",validate:JF},password:!0,binary:!0};ri.fastFormats={...ri.fullFormats,date:ti(/^\d\d\d\d-[0-1]\d-[0-3]\d$/,EI),time:ti(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,SI),"date-time":ti(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i,BF),"iso-time":ti(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,GF),"iso-date-time":ti(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i,HF),uri:/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i,"uri-reference":/^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i,email:/^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i};ri.formatNames=Object.keys(ri.fullFormats);function _ge(t){return t%4===0&&(t%100!==0||t%400===0)}var Ige=/^(\d\d\d\d)-(\d\d)-(\d\d)$/,Tge=[0,31,28,31,30,31,30,31,31,30,31,30,31];function zF(t){let e=Ige.exec(t);if(!e)return!1;let r=+e[1],n=+e[2],i=+e[3];return n>=1&&n<=12&&i>=1&&i<=(n===2&&_ge(r)?29:Tge[n])}function EI(t,e){if(t&&e)return t>e?1:t<e?-1:0}var gI=/^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i;function bI(t){return function(r){let n=gI.exec(r);if(!n)return!1;let i=+n[1],s=+n[2],o=+n[3],a=n[4],c=n[5]==="-"?-1:1,l=+(n[6]||0),u=+(n[7]||0);if(l>23||u>59||t&&!a)return!1;if(i<=23&&s<=59&&o<60)return!0;let d=s-u*c,p=i-l*c-(d<0?1:0);return(p===23||p===-1)&&(d===59||d===-1)&&o<61}}function SI(t,e){if(!(t&&e))return;let r=new Date("2020-01-01T"+t).valueOf(),n=new Date("2020-01-01T"+e).valueOf();if(r&&n)return r-n}function GF(t,e){if(!(t&&e))return;let r=gI.exec(t),n=gI.exec(e);if(r&&n)return t=r[1]+r[2]+r[3],e=n[1]+n[2]+n[3],t>e?1:t<e?-1:0}var vI=/t|\s/i;function $F(t){let e=bI(t);return function(n){let i=n.split(vI);return i.length===2&&zF(i[0])&&e(i[1])}}function BF(t,e){if(!(t&&e))return;let r=new Date(t).valueOf(),n=new Date(e).valueOf();if(r&&n)return r-n}function HF(t,e){if(!(t&&e))return;let[r,n]=t.split(vI),[i,s]=e.split(vI),o=EI(r,i);if(o!==void 0)return o||SI(n,s)}var kge=/\/|:/,Age=/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;function Rge(t){return kge.test(t)&&Age.test(t)}var UF=/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm;function Oge(t){return UF.lastIndex=0,UF.test(t)}var Cge=-(2**31),jge=2**31-1;function Pge(t){return Number.isInteger(t)&&t<=jge&&t>=Cge}function Kge(t){return Number.isInteger(t)}function JF(){return!0}var Dge=/[^\\]\\Z/;function Mge(t){if(Dge.test(t))return!1;try{return new RegExp(t),!0}catch{return!1}}});var WF=h(Kc=>{"use strict";Object.defineProperty(Kc,"__esModule",{value:!0});Kc.formatLimitDefinition=void 0;var Nge=yI(),Cn=ue(),Os=Cn.operators,bh={formatMaximum:{okStr:"<=",ok:Os.LTE,fail:Os.GT},formatMinimum:{okStr:">=",ok:Os.GTE,fail:Os.LT},formatExclusiveMaximum:{okStr:"<",ok:Os.LT,fail:Os.GTE},formatExclusiveMinimum:{okStr:">",ok:Os.GT,fail:Os.LTE}},Lge={message:({keyword:t,schemaCode:e})=>(0,Cn.str)`should be ${bh[t].okStr} ${e}`,params:({keyword:t,schemaCode:e})=>(0,Cn._)`{comparison: ${bh[t].okStr}, limit: ${e}}`};Kc.formatLimitDefinition={keyword:Object.keys(bh),type:"string",schemaType:"string",$data:!0,error:Lge,code(t){let{gen:e,data:r,schemaCode:n,keyword:i,it:s}=t,{opts:o,self:a}=s;if(!o.validateFormats)return;let c=new Nge.KeywordCxt(s,a.RULES.all.format.definition,"format");c.$data?l():u();function l(){let p=e.scopeValue("formats",{ref:a.formats,code:o.code.formats}),f=e.const("fmt",(0,Cn._)`${p}[${c.schemaCode}]`);t.fail$data((0,Cn.or)((0,Cn._)`typeof ${f} != "object"`,(0,Cn._)`${f} instanceof RegExp`,(0,Cn._)`typeof ${f}.compare != "function"`,d(f)))}function u(){let p=c.schema,f=a.formats[p];if(!f||f===!0)return;if(typeof f!="object"||f instanceof RegExp||typeof f.compare!="function")throw new Error(`"${i}": format "${p}" does not define "compare" function`);let m=e.scopeValue("formats",{key:p,ref:f,code:o.code.formats?(0,Cn._)`${o.code.formats}${(0,Cn.getProperty)(p)}`:void 0});t.fail$data(d(m))}function d(p){return(0,Cn._)`${p}.compare(${r}, ${n}) ${bh[i].fail} 0`}},dependencies:["format"]};var qge=t=>(t.addKeyword(Kc.formatLimitDefinition),t);Kc.default=qge});var ZF=h((ad,XF)=>{"use strict";Object.defineProperty(ad,"__esModule",{value:!0});var Dc=VF(),Fge=WF(),xI=ue(),YF=new xI.Name("fullFormats"),$ge=new xI.Name("fastFormats"),wI=(t,e={keywords:!0})=>{if(Array.isArray(e))return QF(t,e,Dc.fullFormats,YF),t;let[r,n]=e.mode==="fast"?[Dc.fastFormats,$ge]:[Dc.fullFormats,YF],i=e.formats||Dc.formatNames;return QF(t,i,r,n),e.keywords&&(0,Fge.default)(t),t};wI.get=(t,e="full")=>{let n=(e==="fast"?Dc.fastFormats:Dc.fullFormats)[t];if(!n)throw new Error(`Unknown format "${t}"`);return n};function QF(t,e,r,n){var i,s;(i=(s=t.opts.code).formats)!==null&&i!==void 0||(s.formats=(0,xI._)`require("ajv-formats/dist/formats").${n}`);for(let o of e)t.addFormat(o,r[o])}XF.exports=ad=wI;Object.defineProperty(ad,"__esModule",{value:!0});ad.default=wI});function Uge(){let t=new e$.default({strict:!1,validateFormats:!0,validateSchema:!1,allErrors:!0});return(0,t$.default)(t),t}var e$,t$,vh,r$=R(()=>{e$=tt(yI(),1),t$=tt(ZF(),1);vh=class{constructor(e){this._ajv=e??Uge()}getValidator(e){let r="$id"in e&&typeof e.$id=="string"?this._ajv.getSchema(e.$id)??this._ajv.compile(e):this._ajv.compile(e);return n=>r(n)?{valid:!0,data:n,errorMessage:void 0}:{valid:!1,data:void 0,errorMessage:this._ajv.errorsText(r.errors)}}}});var Eh,n$=R(()=>{bc();Eh=class{constructor(e){this._server=e}requestStream(e,r,n){return this._server.requestStream(e,r,n)}createMessageStream(e,r){let n=this._server.getClientCapabilities();if((e.tools||e.toolChoice)&&!n?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let i=e.messages[e.messages.length-1],s=Array.isArray(i.content)?i.content:[i.content],o=s.some(u=>u.type==="tool_result"),a=e.messages.length>1?e.messages[e.messages.length-2]:void 0,c=a?Array.isArray(a.content)?a.content:[a.content]:[],l=c.some(u=>u.type==="tool_use");if(o){if(s.some(u=>u.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!l)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(l){let u=new Set(c.filter(p=>p.type==="tool_use").map(p=>p.id)),d=new Set(s.filter(p=>p.type==="tool_result").map(p=>p.toolUseId));if(u.size!==d.size||![...u].every(p=>d.has(p)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return this.requestStream({method:"sampling/createMessage",params:e},Ou,r)}elicitInputStream(e,r){let n=this._server.getClientCapabilities(),i=e.mode??"form";switch(i){case"url":{if(!n?.elicitation?.url)throw new Error("Client does not support url elicitation.");break}case"form":{if(!n?.elicitation?.form)throw new Error("Client does not support form elicitation.");break}}let s=i==="form"&&e.mode===void 0?{...e,mode:"form"}:e;return this.requestStream({method:"elicitation/create",params:s},gc,r)}async getTask(e,r){return this._server.getTask({taskId:e},r)}async getTaskResult(e,r,n){return this._server.getTaskResult({taskId:e},r,n)}async listTasks(e,r){return this._server.listTasks(e?{cursor:e}:void 0,r)}async cancelTask(e,r){return this._server.cancelTask({taskId:e},r)}}});function i$(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"tools/call":if(!t.tools?.call)throw new Error(`${r} does not support task creation for tools/call (required for ${e})`);break;default:break}}function s$(t,e,r){if(!t)throw new Error(`${r} does not support task creation (required for ${e})`);switch(e){case"sampling/createMessage":if(!t.sampling?.createMessage)throw new Error(`${r} does not support task creation for sampling/createMessage (required for ${e})`);break;case"elicitation/create":if(!t.elicitation?.create)throw new Error(`${r} does not support task creation for elicitation/create (required for ${e})`);break;default:break}}var o$=R(()=>{});var Sh,a$=R(()=>{e2();bc();r$();Rm();n$();o$();Sh=class extends Mm{constructor(e,r){super(r),this._serverInfo=e,this._loggingLevels=new Map,this.LOG_LEVEL_SEVERITY=new Map(Ru.options.map((n,i)=>[n,i])),this.isMessageIgnored=(n,i)=>{let s=this._loggingLevels.get(i);return s?this.LOG_LEVEL_SEVERITY.get(n)<this.LOG_LEVEL_SEVERITY.get(s):!1},this._capabilities=r?.capabilities??{},this._instructions=r?.instructions,this._jsonSchemaValidator=r?.jsonSchemaValidator??new vh,this.setRequestHandler(fm,n=>this._oninitialize(n)),this.setNotificationHandler(qx,()=>this.oninitialized?.()),this._capabilities.logging&&this.setRequestHandler(Hx,async(n,i)=>{let s=i.sessionId||i.requestInfo?.headers["mcp-session-id"]||void 0,{level:o}=n.params,a=Ru.safeParse(o);return a.success&&this._loggingLevels.set(s,a.data),{}})}get experimental(){return this._experimental||(this._experimental={tasks:new Eh(this)}),this._experimental}registerCapabilities(e){if(this.transport)throw new Error("Cannot register capabilities after connecting to transport");this._capabilities=Zq(this._capabilities,e)}setRequestHandler(e,r){let i=km(e)?.method;if(!i)throw new Error("Schema is missing a method literal");let s=Am(i);if(typeof s!="string")throw new Error("Schema method literal must be a string");if(s==="tools/call"){let a=async(c,l)=>{let u=Es(Au,c);if(!u.success){let m=u.error instanceof Error?u.error.message:String(u.error);throw new ce(be.InvalidParams,`Invalid tools/call request: ${m}`)}let{params:d}=u.data,p=await Promise.resolve(r(c,l));if(d.task){let m=Es(hc,p);if(!m.success){let y=m.error instanceof Error?m.error.message:String(m.error);throw new ce(be.InvalidParams,`Invalid task creation result: ${y}`)}return m.data}let f=Es(xm,p);if(!f.success){let m=f.error instanceof Error?f.error.message:String(f.error);throw new ce(be.InvalidParams,`Invalid tools/call result: ${m}`)}return f.data};return super.setRequestHandler(e,a)}return super.setRequestHandler(e,r)}assertCapabilityForMethod(e){switch(e){case"sampling/createMessage":if(!this._clientCapabilities?.sampling)throw new Error(`Client does not support sampling (required for ${e})`);break;case"elicitation/create":if(!this._clientCapabilities?.elicitation)throw new Error(`Client does not support elicitation (required for ${e})`);break;case"roots/list":if(!this._clientCapabilities?.roots)throw new Error(`Client does not support listing roots (required for ${e})`);break;case"ping":break}}assertNotificationCapability(e){switch(e){case"notifications/message":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"notifications/resources/updated":case"notifications/resources/list_changed":if(!this._capabilities.resources)throw new Error(`Server does not support notifying about resources (required for ${e})`);break;case"notifications/tools/list_changed":if(!this._capabilities.tools)throw new Error(`Server does not support notifying of tool list changes (required for ${e})`);break;case"notifications/prompts/list_changed":if(!this._capabilities.prompts)throw new Error(`Server does not support notifying of prompt list changes (required for ${e})`);break;case"notifications/elicitation/complete":if(!this._clientCapabilities?.elicitation?.url)throw new Error(`Client does not support URL elicitation (required for ${e})`);break;case"notifications/cancelled":break;case"notifications/progress":break}}assertRequestHandlerCapability(e){if(this._capabilities)switch(e){case"completion/complete":if(!this._capabilities.completions)throw new Error(`Server does not support completions (required for ${e})`);break;case"logging/setLevel":if(!this._capabilities.logging)throw new Error(`Server does not support logging (required for ${e})`);break;case"prompts/get":case"prompts/list":if(!this._capabilities.prompts)throw new Error(`Server does not support prompts (required for ${e})`);break;case"resources/list":case"resources/templates/list":case"resources/read":if(!this._capabilities.resources)throw new Error(`Server does not support resources (required for ${e})`);break;case"tools/call":case"tools/list":if(!this._capabilities.tools)throw new Error(`Server does not support tools (required for ${e})`);break;case"tasks/get":case"tasks/list":case"tasks/result":case"tasks/cancel":if(!this._capabilities.tasks)throw new Error(`Server does not support tasks capability (required for ${e})`);break;case"ping":case"initialize":break}}assertTaskCapability(e){s$(this._clientCapabilities?.tasks?.requests,e,"Client")}assertTaskHandlerCapability(e){this._capabilities&&i$(this._capabilities.tasks?.requests,e,"Server")}async _oninitialize(e){let r=e.params.protocolVersion;return this._clientCapabilities=e.params.capabilities,this._clientVersion=e.params.clientInfo,{protocolVersion:fc.includes(r)?r:Px,capabilities:this.getCapabilities(),serverInfo:this._serverInfo,...this._instructions&&{instructions:this._instructions}}}getClientCapabilities(){return this._clientCapabilities}getClientVersion(){return this._clientVersion}getCapabilities(){return this._capabilities}async ping(){return this.request({method:"ping"},dm)}async createMessage(e,r){if((e.tools||e.toolChoice)&&!this._clientCapabilities?.sampling?.tools)throw new Error("Client does not support sampling tools capability.");if(e.messages.length>0){let n=e.messages[e.messages.length-1],i=Array.isArray(n.content)?n.content:[n.content],s=i.some(l=>l.type==="tool_result"),o=e.messages.length>1?e.messages[e.messages.length-2]:void 0,a=o?Array.isArray(o.content)?o.content:[o.content]:[],c=a.some(l=>l.type==="tool_use");if(s){if(i.some(l=>l.type!=="tool_result"))throw new Error("The last message must contain only tool_result content if any is present");if(!c)throw new Error("tool_result blocks are not matching any tool_use from the previous message")}if(c){let l=new Set(a.filter(d=>d.type==="tool_use").map(d=>d.id)),u=new Set(i.filter(d=>d.type==="tool_result").map(d=>d.toolUseId));if(l.size!==u.size||![...l].every(d=>u.has(d)))throw new Error("ids of tool_result blocks and tool_use blocks from previous message do not match")}}return e.tools?this.request({method:"sampling/createMessage",params:e},Vx,r):this.request({method:"sampling/createMessage",params:e},Ou,r)}async elicitInput(e,r){switch(e.mode??"form"){case"url":{if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support url elicitation.");let i=e;return this.request({method:"elicitation/create",params:i},gc,r)}case"form":{if(!this._clientCapabilities?.elicitation?.form)throw new Error("Client does not support form elicitation.");let i=e.mode==="form"?e:{...e,mode:"form"},s=await this.request({method:"elicitation/create",params:i},gc,r);if(s.action==="accept"&&s.content&&i.requestedSchema)try{let a=this._jsonSchemaValidator.getValidator(i.requestedSchema)(s.content);if(!a.valid)throw new ce(be.InvalidParams,`Elicitation response content does not match requested schema: ${a.errorMessage}`)}catch(o){throw o instanceof ce?o:new ce(be.InternalError,`Error validating elicitation response: ${o instanceof Error?o.message:String(o)}`)}return s}}}createElicitationCompletionNotifier(e,r){if(!this._clientCapabilities?.elicitation?.url)throw new Error("Client does not support URL elicitation (required for notifications/elicitation/complete)");return()=>this.notification({method:"notifications/elicitation/complete",params:{elicitationId:e}},r)}async listRoots(e,r){return this.request({method:"roots/list",params:e},Wx,r)}async sendLoggingMessage(e,r){if(this._capabilities.logging&&!this.isMessageIgnored(e.level,r))return this.notification({method:"notifications/message",params:e})}async sendResourceUpdated(e){return this.notification({method:"notifications/resources/updated",params:e})}async sendResourceListChanged(){return this.notification({method:"notifications/resources/list_changed"})}async sendToolListChanged(){return this.notification({method:"notifications/tools/list_changed"})}async sendPromptListChanged(){return this.notification({method:"notifications/prompts/list_changed"})}}});function _I(t,e){return typeof t!="number"||!Number.isFinite(t)?e.default:Math.min(Math.max(1,Math.trunc(t)),e.max)}function cd(t,e){let r=t[e];if(typeof r!="string"||r.trim().length===0)throw new Error(`"${e}" is required`);return r}function II(t){return{content:[{type:"text",text:JSON.stringify(t,null,2)}]}}async function zge(t,e,r){if(e==="search"){let n=await t.search({projectId:cd(r,"projectId"),query:cd(r,"query"),limit:_I(r.limit,c$)});return II({observations:n})}if(e==="context"){let n=await t.context({projectId:cd(r,"projectId"),query:cd(r,"query"),limit:_I(r.limit,l$)}),i=n.map(s=>s.content).filter(s=>typeof s=="string"&&s.length>0).join(`
`);return II({observations:n,context:i})}if(e==="recent"){let n=await t.recent({projectId:cd(r,"projectId"),limit:_I(r.limit,u$)});return II({observations:n})}throw new Error(`Unknown tool: ${e}`)}function d$(t,e){let r=new Sh({name:"claude-mem",version:e},{capabilities:{tools:{}}});return r.setRequestHandler(Bx,async()=>({tools:Jge})),r.setRequestHandler(Au,async n=>{let i=n.params.name,s=n.params.arguments??{};try{return await zge(t,i,s)}catch(o){let a=o instanceof Error?o:new Error(String(o));return x.warn("SYSTEM","recall MCP tool call failed",{tool:i},a),{isError:!0,content:[{type:"text",text:a.message}]}}}),r}var c$,l$,u$,Jge,p$=R(()=>{"use strict";a$();bc();fe();c$={default:20,max:100},l$={default:10,max:50},u$={default:20,max:100},Jge=[{name:"search",description:"Full-text search your claude-mem memory for a project. Returns matching observations (most relevant first).",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"Project to search within."},query:{type:"string",description:"Search query."},limit:{type:"integer",minimum:1,maximum:c$.max}},required:["projectId","query"]}},{name:"context",description:"Like search, but also returns a concatenated context string ready to inject into a prompt.",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"Project to search within."},query:{type:"string",description:"Search query."},limit:{type:"integer",minimum:1,maximum:l$.max}},required:["projectId","query"]}},{name:"recent",description:"List the most recent observations for a project (newest first).",inputSchema:{type:"object",properties:{projectId:{type:"string",description:"Project to list."},limit:{type:"integer",minimum:1,maximum:u$.max}},required:["projectId"]}}]});var $o,xh=R(()=>{"use strict";$o=class{constructor(e){this.client=e}client;async hit(e){let r=await this.client.query(`INSERT INTO rate_limit_counters (subject_id, window_start, count)
VALUES ($1, $2, 1)
ON CONFLICT (subject_id, window_start)
DO UPDATE SET count = rate_limit_counters.count + 1
RETURNING count`,[e.subjectId,e.windowStart]),n=Number(r.rows[0]?.count??0);return{allowed:n<=e.limit,count:n,limit:e.limit,windowStart:e.windowStart}}}});var Kr,Uo=R(()=>{"use strict";wn();Kr=class{constructor(e){this.client=e}client;async record(e){await this.client.query(`INSERT INTO usage_events (id, team_id, project_id, kind, quantity, metadata)
VALUES ($1, $2, $3, $4, $5, $6::jsonb)`,[Ze(),e.teamId,e.projectId??null,e.kind,Math.max(0,Math.trunc(e.quantity??1)),JSON.stringify(e.metadata??{})])}async total(e){let r=await this.client.query(`SELECT COALESCE(SUM(quantity), 0)::bigint AS total
FROM usage_events
WHERE team_id = $1 AND kind = $2 AND created_at >= $3`,[e.teamId,e.kind,e.since]);return Number(r.rows[0]?.total??0)}async summarize(e){let r=await this.client.query(`SELECT kind, SUM(quantity)::bigint AS total
FROM usage_events
WHERE team_id = $1 AND created_at >= $2
GROUP BY kind`,[e.teamId,e.since]),n={};for(let i of r.rows)n[i.kind]=Number(i.total);return n}}});function Gge(t,e){let r=e*1e3;return new Date(Math.floor(t/r)*r)}function Bge(t){return new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),1))}async function Hge(t,e,r,n,i){let s=Gge(Date.now(),e.windowSec),o=s.getTime()+e.windowSec*1e3,a=await t.hit({subjectId:r,windowStart:s,limit:e.max});if(n.setHeader("X-RateLimit-Limit",String(e.max)),n.setHeader("X-RateLimit-Remaining",String(Math.max(0,e.max-a.count))),n.setHeader("X-RateLimit-Reset",String(Math.ceil(o/1e3))),!a.allowed){let c=Math.max(1,Math.ceil((o-Date.now())/1e3));return n.setHeader("Retry-After",String(c)),n.status(429).json({error:"rate_limited",message:`Rate limit exceeded (${e.max} requests / ${e.windowSec}s)`})}return i()}function f$(t,e){let r=new $o(t);return async(n,i,s)=>{let o=n.authContext?.apiKeyId;if(!o)return s();try{return await Hge(r,e,o,i,s)}catch(a){return x.warn("HTTP","rate limit check failed; allowing request (fail open)",{error:a instanceof Error?a.message:String(a)}),s()}}}async function Vge(t,e,r,n,i){let s=await t.total({teamId:r,kind:e.kind,since:Bge(new Date)});return s>=e.cap?n.status(402).json({error:"quota_exceeded",message:`Monthly ${e.kind} quota reached (${e.cap})`,used:s,cap:e.cap}):i()}function TI(t,e){let r=new Kr(t);return async(n,i,s)=>{let o=n.authContext?.teamId;if(!o)return s();try{return await Vge(r,e,o,i,s)}catch(a){return x.warn("HTTP","quota check failed; allowing request (fail open)",{error:a instanceof Error?a.message:String(a)}),s()}}}var m$=R(()=>{"use strict";xh();Uo();fe()});function h$(t){let e=new Kr(t);return(r,n,i)=>{let s=r.authContext?.teamId;s&&e.record({teamId:s,projectId:r.authContext?.projectId??null,kind:"request",metadata:{method:r.method,path:r.path,apiKeyId:r.authContext?.apiKeyId??null}}).catch(o=>{x.warn("HTTP","usage metering record failed",{error:o instanceof Error?o.message:String(o)})}),i()}}var y$=R(()=>{"use strict";Uo();fe()});function Wge(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,sourceAdapter:t.source_adapter,sourceEventId:t.source_event_id,idempotencyKey:t.idempotency_key,eventType:t.event_type,platformSource:t.platform_source,payload:ht(t.payload),metadata:ht(t.metadata),occurredAtEpoch:t.occurred_at.getTime(),receivedAtEpoch:t.received_at.getTime(),createdAtEpoch:t.created_at.getTime()}}function g$(t){let e=cr(t.platformSource);if(t.externalSessionId){let r=[t.teamId,t.projectId,"external"];return e&&r.push(e),r.push(t.externalSessionId),`server_session:v1:${xn(r)}`}return t.contentSessionId?`server_session:v1:${xn([t.teamId,t.projectId,"content",e,t.agentId??null,t.contentSessionId])}`:t.agentId&&e?`server_session:v1:${xn([t.teamId,t.projectId,"agent",e,t.agentId,t.agentType??null])}`:null}function Cs(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,externalSessionId:t.external_session_id,idempotencyKey:t.idempotency_key,contentSessionId:t.content_session_id,agentId:t.agent_id,agentType:t.agent_type,platformSource:t.platform_source,generationStatus:t.generation_status,metadata:ht(t.metadata),startedAtEpoch:De(t.started_at),endedAtEpoch:Qr(t.ended_at)?.getTime()??null,lastGeneratedAtEpoch:Qr(t.last_generated_at)?.getTime()??null,createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}var zt,js=R(()=>{"use strict";wn();So();zt=class{constructor(e){this.client=e}client;async create(e){await Sn(this.client,e.projectId,e.teamId);let r=e.id??Ze(),n=cr(e.platformSource),i=g$({...e,platformSource:n}),s=await se(this.client,`
INSERT INTO server_sessions (
id, project_id, team_id, external_session_id, idempotency_key, content_session_id,
agent_id, agent_type, platform_source, generation_status, metadata
)
VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11::jsonb)
ON CONFLICT (project_id, idempotency_key) WHERE idempotency_key IS NOT NULL DO UPDATE SET
external_session_id = excluded.external_session_id,
content_session_id = excluded.content_session_id,
agent_id = excluded.agent_id,
agent_type = excluded.agent_type,
platform_source = excluded.platform_source,
generation_status = excluded.generation_status,
metadata = excluded.metadata,
updated_at = now()
RETURNING *
`,[r,e.projectId,e.teamId,e.externalSessionId??null,i,e.contentSessionId??null,e.agentId??null,e.agentType??null,n,e.generationStatus??"idle",JSON.stringify(e.metadata??{})]);return Cs(s)}async getByIdForScope(e){let r=await se(this.client,"SELECT * FROM server_sessions WHERE id = $1 AND project_id = $2 AND team_id = $3",[e.id,e.projectId,e.teamId]);return r?Cs(r):null}async listByProject(e,r){return(await this.client.query(`
SELECT * FROM server_sessions
WHERE project_id = $1 AND team_id = $2
ORDER BY started_at DESC
`,[e,r])).rows.map(Cs)}async findByExternalIdForScope(e){let r=Object.prototype.hasOwnProperty.call(e,"platformSource"),n=r?cr(e.platformSource):null,i=await se(this.client,`
SELECT * FROM server_sessions
WHERE external_session_id = $1 AND project_id = $2 AND team_id = $3
AND (
$4::boolean = false
OR ($5::text IS NULL AND platform_source IS NULL)
OR platform_source = $5
)
ORDER BY started_at DESC
LIMIT 1
`,[e.externalSessionId,e.projectId,e.teamId,r,n]);return i?Cs(i):null}async findIdByContentSessionId(e){let r=Object.prototype.hasOwnProperty.call(e,"platformSource"),n=r?cr(e.platformSource):null,i=await se(this.client,`
SELECT id FROM server_sessions
WHERE content_session_id = $1 AND project_id = $2 AND team_id = $3
AND (
$4::boolean = false
OR ($5::text IS NULL AND platform_source IS NULL)
OR platform_source = $5
)
ORDER BY started_at DESC
LIMIT 1
`,[e.contentSessionId,e.projectId,e.teamId,r,n]);return i?i.id:null}async endSession(e){let r=await se(this.client,`
UPDATE server_sessions
SET ended_at = COALESCE(ended_at, now()),
updated_at = CASE WHEN ended_at IS NULL THEN now() ELSE updated_at END
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return r?Cs(r):null}async markGenerationStarted(e){let r=await se(this.client,`
UPDATE server_sessions
SET generation_status = 'processing', updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return r?Cs(r):null}async markGenerationCompleted(e){let r=await se(this.client,`
UPDATE server_sessions
SET generation_status = 'completed',
last_generated_at = now(),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId]);return r?Cs(r):null}async markGenerationFailed(e){let r=await se(this.client,`
UPDATE server_sessions
SET generation_status = 'failed',
metadata = jsonb_set(
COALESCE(metadata, '{}'::jsonb),
'{lastGenerationError}',
COALESCE(to_jsonb($4::text), 'null'::jsonb),
true
),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[e.id,e.projectId,e.teamId,e.error??null]);return r?Cs(r):null}async listUnprocessedEvents(e){let r=e.limit??500;return(await this.client.query(`
SELECT e.*
FROM agent_events e
WHERE e.server_session_id = $1
AND e.project_id = $2
AND e.team_id = $3
AND NOT EXISTS (
SELECT 1 FROM observation_generation_jobs j
WHERE j.agent_event_id = e.id
AND j.project_id = e.project_id
AND j.team_id = e.team_id
AND j.source_type = 'agent_event'
AND j.status = 'completed'
)
ORDER BY e.occurred_at ASC
LIMIT $4
`,[e.serverSessionId,e.projectId,e.teamId,r])).rows.map(Wge)}}});function E$(t){let e=Xge.safeParse(t);if(!e.success)throw new ld(e.error.issues);return e.data}var tr,Mc,b$,v$,Yge,Qge,Xge,ld,wh=R(()=>{"use strict";tr=require("zod"),Mc={event:"server_beta_generate_event",summary:"server_beta_generate_summary"},b$={event:"evt",summary:"sum"},v$=tr.z.object({team_id:tr.z.string().min(1,"team_id is required"),project_id:tr.z.string().min(1,"project_id is required"),source_type:tr.z.enum(["agent_event","session_summary","observation_reindex"]),source_id:tr.z.string().min(1,"source_id is required"),generation_job_id:tr.z.string().min(1,"generation_job_id is required"),api_key_id:tr.z.string().min(1).nullable(),actor_id:tr.z.string().min(1).nullable(),source_adapter:tr.z.string().min(1,"source_adapter is required"),request_id:tr.z.string().min(1).nullable().optional()}),Yge=v$.extend({kind:tr.z.literal("event"),agent_event_id:tr.z.string().min(1)}),Qge=v$.extend({kind:tr.z.literal("summary"),server_session_id:tr.z.string().min(1)}),Xge=tr.z.discriminatedUnion("kind",[Yge,Qge]),ld=class extends Error{issues;constructor(e){super(`invalid server generation job payload: ${e.map(r=>r.message).join("; ")}`),this.issues=e}}});function Nc(t){let e=b$[t.kind],r=JSON.stringify({kind:t.kind,team_id:t.team_id,project_id:t.project_id,source_type:t.source_type,source_id:t.source_id}),n=(0,S$.createHash)("sha256").update(r).digest("hex");return`${e}_${n}`}var S$,kI=R(()=>{"use strict";S$=require("crypto");wh()});function x$(t){return{kind:"event",team_id:t.event.teamId,project_id:t.event.projectId,source_type:"agent_event",source_id:t.event.id,generation_job_id:t.outboxId,agent_event_id:t.event.id,api_key_id:t.apiKeyId,actor_id:t.actorId,source_adapter:t.sourceAdapter??t.event.sourceAdapter??"api",request_id:t.requestId}}var w$,_h,_$=R(()=>{"use strict";Qa();fs();Ao();fe();kI();wn();w$="observation_generate_for_event",_h=class{constructor(e){this.options=e}options;async ingestOne(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events",s=await In(this.options.pool,async a=>{let l=await new Xr(a).create(e);if(!n)return{event:l,outbox:null};let u=new dt(a),d=new Wt(a),p=Ze(),f=x$({outboxId:p,event:l,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),m=await u.create({id:p,projectId:l.projectId,teamId:l.teamId,sourceType:"agent_event",sourceId:l.id,agentEventId:l.id,serverSessionId:l.serverSessionId,jobType:w$,bullmqJobId:Nc({kind:"event",team_id:l.teamId,project_id:l.projectId,source_type:"agent_event",source_id:l.id}),payload:f});return await d.append({generationJobId:m.id,projectId:m.projectId,teamId:m.teamId,eventType:"queued",statusAfter:m.status,attempt:m.attempts,details:{source:i}}),{event:l,outbox:m}}),o="skipped";return s.outbox&&(o=await this.publishEventJob(s.event,s.outbox)),{event:s.event,outbox:s.outbox,enqueueState:o}}async ingestBatch(e,r={}){let n=r.generate??!0,i=r.source??"http_post_v1_events_batch",s=await In(this.options.pool,async o=>{let a=new Xr(o),c=new dt(o),l=new Wt(o),u=[];for(let d of e){let p=await a.create(d);if(!n){u.push({event:p,outbox:null});continue}let f=Ze(),m=x$({outboxId:f,event:p,apiKeyId:r.apiKeyId??null,actorId:r.actorId??null,sourceAdapter:r.sourceAdapter??null,requestId:r.requestId??null}),y=await c.create({id:f,projectId:p.projectId,teamId:p.teamId,sourceType:"agent_event",sourceId:p.id,agentEventId:p.id,serverSessionId:p.serverSessionId,jobType:w$,bullmqJobId:Nc({kind:"event",team_id:p.teamId,project_id:p.projectId,source_type:"agent_event",source_id:p.id}),payload:m});await l.append({generationJobId:y.id,projectId:y.projectId,teamId:y.teamId,eventType:"queued",statusAfter:y.status,attempt:y.attempts,details:{source:i}}),u.push({event:p,outbox:y})}return u});return Promise.all(s.map(async({event:o,outbox:a})=>{let c=a?await this.publishEventJob(o,a):"skipped";return{event:o,outbox:a,enqueueState:c}}))}async publishEventJob(e,r){let n=this.options.resolveEventQueue();if(!n)return"queued_only";let i=r.bullmqJobId??Nc({kind:"event",team_id:e.teamId,project_id:e.projectId,source_type:"agent_event",source_id:e.id});try{return await n.add(i,r.payload),"enqueued"}catch(s){return x.warn("SYSTEM","failed to publish event generation job to BullMQ",{outboxId:r.id,error:s instanceof Error?s.message:String(s)}),"queued_only"}}}});function AI(t){return Nc({kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId})}function RI(t){return{kind:"summary",team_id:t.teamId,project_id:t.projectId,source_type:"session_summary",source_id:t.serverSessionId,generation_job_id:t.generationJobId,server_session_id:t.serverSessionId,api_key_id:t.apiKeyId??null,actor_id:t.actorId??null,source_adapter:t.sourceAdapter??"api",request_id:t.requestId??null}}var I$=R(()=>{"use strict";kI()});var Zge,Ih,T$=R(()=>{"use strict";fs();Ao();js();fe();I$();wn();Zge="observation_generate_session_summary",Ih=class{constructor(e){this.options=e}options;async end(e){let r=e.source??"http_post_v1_sessions_end",n=await In(this.options.pool,async s=>{let a=await new zt(s).endSession({id:e.sessionId,projectId:e.projectId,teamId:e.teamId});if(!a)return{session:null,outbox:null};let c=new dt(s),l=new Wt(s),u=Ze(),d=RI({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId,generationJobId:u,apiKeyId:e.apiKeyId??null,actorId:e.actorId??null,sourceAdapter:e.sourceAdapter??null}),p=await c.create({id:u,projectId:a.projectId,teamId:a.teamId,sourceType:"session_summary",sourceId:a.id,serverSessionId:a.id,jobType:Zge,bullmqJobId:AI({serverSessionId:a.id,teamId:a.teamId,projectId:a.projectId}),payload:d});return await l.append({generationJobId:p.id,projectId:p.projectId,teamId:p.teamId,eventType:"queued",statusAfter:p.status,attempt:p.attempts,details:{source:r}}),{session:a,outbox:p}});if(!n.session||!n.outbox)return{session:n.session,outbox:null,enqueueState:"skipped"};let i=await this.publishSummaryJob(n.session.id,n.outbox,e);return{session:n.session,outbox:n.outbox,enqueueState:i}}async publishSummaryJob(e,r,n){let i=this.options.resolveSummaryQueue();if(!i)return"queued_only";let s=r.bullmqJobId??AI({serverSessionId:e,teamId:r.teamId,projectId:r.projectId}),o=RI({serverSessionId:e,teamId:r.teamId,projectId:r.projectId,generationJobId:r.id,apiKeyId:n.apiKeyId??null,actorId:n.actorId??null,sourceAdapter:n.sourceAdapter??null});try{return await i.add(s,o),"enqueued"}catch(a){return x.warn("SYSTEM","failed to publish summary generation job to BullMQ",{outboxId:r.id,error:a instanceof Error?a.message:String(a)}),"queued_only"}}}});function k$(t){return`${(process.env.CLAUDE_MEM_PUBLIC_URL??`${t.protocol}://${t.get("host")??"localhost"}`).replace(/\/+$/,"")}/v1/mcp`}function A$(t,e){return`claude mcp add --transport http claude-mem ${t} --header "Authorization: Bearer ${e}"`}async function C$(t,e,r=D$,n=rbe){if(O$.includes(e.status))return{job:e,timedOut:!1};let i=Date.now()+r,s=e;for(;Date.now()<i;){await new Promise(a=>setTimeout(a,n));let o=await t.getByIdForScope({id:e.id,projectId:e.projectId,teamId:e.teamId});if(!o)return{job:s,timedOut:!1};if(s=o,O$.includes(o.status))return{job:o,timedOut:!1}}return{job:s,timedOut:!0}}function ibe(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&M$.has(e)?e:null,n=typeof t.query.source_type=="string"?t.query.source_type.trim():"",i=n&&nbe.has(n)?n:null,s=kh(t.query.limit,N$,1,L$),o=kh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER),a=typeof t.query.since=="string"?t.query.since.trim():"",c=null;if(a){let l=new Date(a);Number.isNaN(l.getTime())||(c=l)}return{status:r,sourceType:i,limit:s,offset:o,since:c}}function j$(t){if(!t||typeof t!="object")return 0;let e=t.retried_count;return typeof e=="number"&&Number.isFinite(e)&&e>=0?Math.floor(e):0}function P$(t){let e=typeof t.query.status=="string"?t.query.status.trim():"",r=e&&M$.has(e)?e:null,n=kh(t.query.limit,N$,1,L$),i=kh(t.query.offset,0,0,Number.MAX_SAFE_INTEGER);return{status:r,limit:n,offset:i}}function kh(t,e,r,n){if(typeof t!="string")return e;let i=Number.parseInt(t,10);return Number.isFinite(i)?Math.max(r,Math.min(n,i)):e}function OI(t,e={}){let r={id:t.id,projectId:t.project_id,teamId:t.team_id,sourceType:t.source_type,sourceId:t.source_id,status:t.status,attempts:t.attempts,maxAttempts:t.max_attempts,createdAtEpoch:new Date(t.created_at).getTime(),completedAtEpoch:t.completed_at?new Date(t.completed_at).getTime():null,failedAtEpoch:t.failed_at?new Date(t.failed_at).getTime():null,lastError:t.last_error&&typeof t.last_error=="object"?t.last_error:null};return e.includePayload&&t.payload&&typeof t.payload=="object"&&(r.payload=t.payload),r}function sbe(t){let e={"event.received":"agent_event","event.batch_received":"agent_event","event.write":"agent_event","event.batch_write":"agent_event","session.write":"server_session","session.end":"server_session","memory.write":"observation","observation.read":"observation","observation.search":"observation","observation.context":"observation","observation.generated":"observation","session_summary.generated":"observation","generation_job.queued":"observation_generation_job","generation_job.enqueued":"observation_generation_job","generation_job.processing":"observation_generation_job","generation_job.completed":"observation_generation_job","generation_job.failed":"observation_generation_job","generation_job.scope_violation":"observation_generation_job","generation_job.revoked_key":"observation_generation_job","generation_job.retried_by_operator":"observation_generation_job","generation_job.cancelled_by_operator":"observation_generation_job","generation_job.stalled":"observation_generation_job"};return e[t]?e[t]:t.split(".")[0]??"unknown"}function obe(t,e){let r=t.authContext?.projectId??null;if(!(t.authContext?.teamId??null))return{status:403,body:{error:"Forbidden",message:"API key is not bound to a team"}};if(!r)return null;for(let i of e)if(i.projectId!==r)return{status:403,body:{error:"Forbidden",message:"API key is scoped to a different project"}};return null}function ud(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,externalSessionId:t.externalSessionId,contentSessionId:t.contentSessionId,agentId:t.agentId,agentType:t.agentType,platformSource:t.platformSource,generationStatus:t.generationStatus,metadata:t.metadata,startedAtEpoch:t.startedAtEpoch,endedAtEpoch:t.endedAtEpoch,lastGeneratedAtEpoch:t.lastGeneratedAtEpoch,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function dd(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,sourceAdapter:t.sourceAdapter,sourceEventId:t.sourceEventId,eventType:t.eventType,platformSource:t.platformSource,payload:t.payload,metadata:t.metadata,occurredAtEpoch:t.occurredAtEpoch,receivedAtEpoch:t.receivedAtEpoch,createdAtEpoch:t.createdAtEpoch}}function Lc(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,serverSessionId:t.serverSessionId,kind:t.kind,content:t.content,metadata:t.metadata,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function abe(t){return{id:t.id,projectId:t.project_id,teamId:t.team_id,serverSessionId:t.server_session_id,kind:t.kind,content:t.content,metadata:t.metadata&&typeof t.metadata=="object"?t.metadata:{},generationKey:t.generation_key,createdByJobId:t.created_by_job_id,createdAtEpoch:new Date(t.created_at).getTime(),updatedAtEpoch:new Date(t.updated_at).getTime(),source:{id:t.source_id_pk,sourceType:t.source_type,sourceId:t.source_id,generationJobId:t.generation_job_id,createdAtEpoch:new Date(t.source_created_at).getTime()}}}function CI(t,e){return{id:t.id,status:t.status,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,transport:e,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function K$(t,e){return{id:t.id,status:t.status,transport:e,bullmqJobId:t.bullmqJobId,sourceType:t.sourceType,sourceId:t.sourceId,attempts:t.attempts,maxAttempts:t.maxAttempts,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}function jI(t){return{id:t.id,projectId:t.projectId,teamId:t.teamId,sourceType:t.sourceType,sourceId:t.sourceId,agentEventId:t.agentEventId,serverSessionId:t.serverSessionId,jobType:t.jobType,status:t.status,bullmqJobId:t.bullmqJobId,attempts:t.attempts,maxAttempts:t.maxAttempts,nextAttemptAtEpoch:t.nextAttemptAtEpoch,completedAtEpoch:t.completedAtEpoch,failedAtEpoch:t.failedAtEpoch,cancelledAtEpoch:t.cancelledAtEpoch,lastError:t.lastError,createdAtEpoch:t.createdAtEpoch,updatedAtEpoch:t.updatedAtEpoch}}var oe,Ah,ebe,tbe,R$,D$,rbe,O$,Th,nbe,M$,N$,L$,q$=R(()=>{"use strict";oe=require("zod");YM();Qa();fs();Oi();su();Xa();fe();Kf();bx();tq();Hq();p$();m$();y$();Uo();Ah=require("node:crypto");js();_$();T$();So();ebe="api",tbe="13.24.21";R$=oe.z.object({generate:oe.z.union([oe.z.literal("true"),oe.z.literal("false")]).optional(),wait:oe.z.union([oe.z.literal("true"),oe.z.literal("false")]).optional()}),D$=3e4,rbe=100,O$=["completed","failed","cancelled"];Th=class{constructor(e){this.options=e;this.ingestEvents=new _h({pool:e.pool,resolveEventQueue:()=>this.resolveQueue("event")}),this.endSession=new Ih({pool:e.pool,resolveSummaryQueue:()=>this.resolveQueue("summary")})}options;ingestEvents;endSession;getIngestEventsService(){return this.ingestEvents}getEndSessionService(){return this.endSession}setupRoutes(e){e.use("/v1",eq());let r=wo(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]}),n=wo(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:read"]}),i=[],s=Number(process.env.CLAUDE_MEM_RATE_LIMIT_PER_MIN??"0");s>0&&i.push(f$(this.options.pool,{windowSec:60,max:s}));let o=Number(process.env.CLAUDE_MEM_MONTHLY_REQUEST_CAP??"0");o>0&&i.push(TI(this.options.pool,{kind:"request",cap:o})),process.env.CLAUDE_MEM_USAGE_METERING==="1"&&i.push(h$(this.options.pool));let a=[...i],c=Number(process.env.CLAUDE_MEM_MONTHLY_TOKEN_CAP??"0");c>0&&a.push(TI(this.options.pool,{kind:"tokens",cap:c}));let l=[r,...a],u=[n,...i];e.get("/v1/usage",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=new Date(Date.UTC(new Date().getUTCFullYear(),new Date().getUTCMonth(),1)),b=await new Kr(this.options.pool).summarize({teamId:m,since:y});f.status(200).json({since:y.toISOString(),usage:b})})),e.post("/v1/keys",l,this.handleCreate(oe.z.object({label:oe.z.string().max(120).optional(),expiresInDays:oe.z.number().int().positive().max(365).optional()}),async(p,f,m)=>{let y=this.requireTeamId(p,f);if(!y)return;let b=`cm_${(0,Ah.randomBytes)(24).toString("hex")}`,v=(0,Ah.createHash)("sha256").update(b).digest("hex"),E=m.expiresInDays?new Date(Date.now()+m.expiresInDays*864e5):null,S=await new Nt(this.options.pool).createApiKey({keyHash:v,teamId:y,projectId:p.authContext?.projectId??null,actorId:p.authContext?.apiKeyId??"api",scopes:["memories:read"],expiresAt:E});m.label;let k=k$(p);f.status(201).json({id:S.id,apiKey:b,scopes:["memories:read"],expiresAt:E?.toISOString()??null,mcpUrl:k,connectCommand:A$(k,b)})})),e.get("/v1/connect",u,this.asyncHandler(async(p,f)=>{if(!this.requireTeamId(p,f))return;let y=k$(p);f.status(200).json({mcpUrl:y,connectCommand:A$(y,"<YOUR_API_KEY>"),hint:"POST /v1/keys (write scope) to mint a read-only key for this link."})})),e.post("/v1/events",l,this.asyncHandler(async(p,f)=>{let m=R$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let y=m.data.generate!=="false",b=m.data.wait==="true",v=uS.safeParse(p.body);if(!v.success){f.status(400).json({error:"ValidationError",issues:v.error.issues});return}let E=v.data,S=this.requireTeamId(p,f);if(!S||!this.ensureProjectAllowed(p,f,E.projectId))return;let k=this.toAgentEventInput(E,S);await this.applyContentSessionLinks([k],[p.body],S);let _,O=null,N="skipped",ee={generate:y,source:"http_post_v1_events",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:k.sourceAdapter,requestId:p.requestId??null};try{let q=await this.ingestEvents.ingestOne(k,ee);_=q.event,O=q.outbox,N=q.enqueueState}catch(q){let U=q instanceof Error?q:new Error(String(q));x.warn("SYSTEM","event.write ingest failed",{requestId:p.requestId??null},U),this.handleDbError(U,f,"event.write");return}if(await this.auditWrite(p,"event.received",_.id,_.projectId,{sourceAdapter:_.sourceAdapter,sourceEventId:_.sourceEventId,eventType:_.eventType,serverSessionId:_.serverSessionId,generationJobId:O?.id??null}),b){let q=O,U=!1;if(O){let te=new dt(this.options.pool),Ge=await C$(te,O);q=Ge.job,U=Ge.timedOut}f.status(201).json({event:dd(_),generationJob:q?K$(q,N):null,...U?{waitTimedOut:!0}:{}});return}f.status(201).json({event:dd(_),...O?{generationJob:CI(O,N)}:{}})})),e.post("/v1/events/batch",l,this.asyncHandler(async(p,f)=>{let m=R$.safeParse(p.query);if(!m.success){f.status(400).json({error:"ValidationError",issues:m.error.issues});return}let y=m.data.generate!=="false",b=m.data.wait==="true",E=oe.z.array(uS).min(1).max(500).safeParse(p.body);if(!E.success){f.status(400).json({error:"ValidationError",issues:E.error.issues});return}let S=this.requireTeamId(p,f);if(!S)return;let k=obe(p,E.data);if(k){f.status(k.status).json(k.body);return}let _=E.data.map(q=>this.toAgentEventInput(q,S));await this.applyContentSessionLinks(_,Array.isArray(p.body)?p.body:E.data,S);let O=[],N=[],ee={generate:y,source:"http_post_v1_events_batch",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:null,requestId:p.requestId??null};try{let q=await this.ingestEvents.ingestBatch(_,ee);O=q.map(({event:U,outbox:te})=>({event:U,outbox:te})),N=q.map(({enqueueState:U})=>U)}catch(q){let U=q instanceof Error?q:new Error(String(q));x.warn("SYSTEM","event.batch_write ingest failed",{requestId:p.requestId??null},U),this.handleDbError(U,f,"event.batch_write");return}if(await this.auditWrite(p,"event.batch_received",null,null,{eventCount:O.length,generationJobIds:O.map(({outbox:q})=>q?.id??null).filter(Boolean)}),b){let q=new dt(this.options.pool),U=Date.now()+D$,te=[];for(let T of O){if(!T.outbox){te.push({event:T.event,outbox:null,timedOut:!1});continue}let K=Math.max(0,U-Date.now()),P=await C$(q,T.outbox,K);te.push({event:T.event,outbox:P.job,timedOut:P.timedOut})}let Ge=te.some(T=>T.timedOut);f.status(201).json({events:te.map(({event:T,outbox:K,timedOut:P},C)=>({event:dd(T),generationJob:K?K$(K,N[C]):null,...P?{waitTimedOut:!0}:{}})),...Ge?{waitTimedOut:!0}:{}});return}f.status(201).json({events:O.map(({event:q,outbox:U},te)=>({event:dd(q),...U?{generationJob:CI(U,N[te])}:{}}))})})),e.get("/v1/events/:id",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=new Xr(this.options.pool),v=await this.loadScopedById(p,f,{id:y,teamId:m,table:"agent_events",notFound:"Event not found",load:E=>b.getByIdForScope({id:y,projectId:E,teamId:m})});v&&f.json({event:dd(v)})})),e.get("/v1/events/:id/observations",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),v=(await this.options.pool.query("SELECT id, project_id FROM agent_events WHERE id = $1 AND team_id = $2",[y,m])).rows[0];if(!v){f.status(404).json({error:"NotFound",message:"Event not found"});return}if(!this.ensureProjectAllowed(p,f,v.project_id))return;let E=await this.options.pool.query(`
SELECT o.id, o.project_id, o.team_id, o.server_session_id, o.kind, o.content,
o.metadata, o.generation_key, o.created_by_job_id, o.created_at, o.updated_at,
os.id AS source_id_pk, os.source_type, os.source_id, os.generation_job_id, os.created_at AS source_created_at
FROM observation_sources os
INNER JOIN observations o ON o.id = os.observation_id
WHERE os.source_type = 'agent_event'
AND os.source_id = $1
AND o.team_id = $2
AND o.project_id = $3
ORDER BY o.created_at ASC
`,[v.id,m,v.project_id]);await this.auditWrite(p,"observation.read",v.id,v.project_id,{mode:"event_observations",eventId:v.id,resultCount:E.rows.length,observationIds:E.rows.map(S=>S.id)}),f.json({eventId:v.id,observations:E.rows.map(abe)})})),e.get("/v1/teams/:teamId/jobs",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.teamId);if(!y){f.status(400).json({error:"ValidationError",message:"teamId required"});return}if(y!==m){f.status(404).json({error:"NotFound",message:"Team not found"});return}let b=p.authContext?.projectId??null,{status:v,limit:E,offset:S}=P$(p),k=[],_=0;try{({jobs:k,total:_}=await this.listJobsForScope({teamId:m,projectId:b,status:v,limit:E,offset:S}))}catch(O){let N=O instanceof Error?O:new Error(String(O));x.warn("SYSTEM","team.jobs.list query failed",{requestId:p.requestId??null},N),this.handleDbError(N,f,"team.jobs.list");return}await this.auditWrite(p,"observation.read",null,b,{mode:"team_jobs",teamId:m,projectId:b,status:v,limit:E,offset:S,resultCount:k.length}),f.status(200).json({jobs:k.map(O=>OI(O)),total:_,limit:E,offset:S})})),e.get("/v1/projects/:projectId/jobs",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.projectId);if(!y){f.status(400).json({error:"ValidationError",message:"projectId required"});return}if((await this.options.pool.query("SELECT id FROM projects WHERE id = $1 AND team_id = $2",[y,m])).rows.length===0){f.status(404).json({error:"NotFound",message:"Project not found"});return}let v=p.authContext?.projectId??null;if(v&&v!==y){f.status(404).json({error:"NotFound",message:"Project not found"});return}let{status:E,limit:S,offset:k}=P$(p),_=[],O=0;try{({jobs:_,total:O}=await this.listJobsForScope({teamId:m,projectId:y,status:E,limit:S,offset:k}))}catch(N){let ee=N instanceof Error?N:new Error(String(N));x.warn("SYSTEM","project.jobs.list query failed",{requestId:p.requestId??null},ee),this.handleDbError(ee,f,"project.jobs.list");return}await this.auditWrite(p,"observation.read",null,y,{mode:"project_jobs",teamId:m,projectId:y,status:E,limit:S,offset:k,resultCount:_.length}),f.status(200).json({jobs:_.map(N=>OI(N)),total:O,limit:S,offset:k})})),e.get("/v1/jobs",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=p.authContext?.projectId??null,v=(typeof p.query.include=="string"?p.query.include:"").split(",").map(te=>te.trim()).includes("payload"),E=p.authContext?.scopes??[],S=E.includes("*")||E.includes("admin")||E.includes("memories:admin");if(v&&!S){f.status(403).json({error:"Forbidden",message:"`include=payload` requires admin scope"});return}let{status:k,sourceType:_,limit:O,offset:N,since:ee}=ibe(p),q=[],U=0;try{({jobs:q,total:U}=await this.listJobsForScope({teamId:m,projectId:y,status:k,sourceType:_,limit:O,offset:N,since:ee}))}catch(te){let Ge=te instanceof Error?te:new Error(String(te));x.warn("SYSTEM","jobs.list query failed",{requestId:p.requestId??null},Ge),this.handleDbError(Ge,f,"jobs.list");return}await this.auditWrite(p,"observation.read",null,y,{mode:"jobs_list",teamId:m,projectId:y,status:k,sourceType:_,limit:O,offset:N,since:ee?ee.toISOString():null,resultCount:q.length,includePayload:v,requestId:p.requestId??null}),f.status(200).json({jobs:q.map(te=>OI(te,{includePayload:v})),total:U,limit:O,offset:N,requestId:p.requestId??null})})),e.get("/v1/jobs/:id",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=new dt(this.options.pool),v=await this.loadScopedById(p,f,{id:y,teamId:m,table:"observation_generation_jobs",notFound:"Generation job not found",scopeMismatch:"not-found",load:E=>b.getByIdForScope({id:y,projectId:E,teamId:m})});v&&f.json({generationJob:jI(v)})})),e.post("/v1/jobs/:id/retry",l,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=await this.retryGenerationJob(p,f,y,m);b&&f.status(200).json({generationJob:jI(b.job),retriedCount:b.retriedCount,alreadyQueued:b.alreadyQueued,requestId:p.requestId??null})})),e.post("/v1/jobs/:id/cancel",l,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=await this.cancelGenerationJob(p,f,y,m);b&&f.status(200).json({generationJob:jI(b.job),alreadyCancelled:b.alreadyCancelled,requestId:p.requestId??null})})),e.post("/v1/sessions/start",l,this.handleCreate(oe.z.object({projectId:oe.z.string().min(1),externalSessionId:oe.z.string().min(1).optional(),contentSessionId:oe.z.string().min(1).nullable().optional(),agentId:oe.z.string().min(1).nullable().optional(),agentType:oe.z.string().min(1).nullable().optional(),platformSource:oe.z.string().min(1).nullable().optional(),metadata:oe.z.record(oe.z.string(),oe.z.unknown()).optional()}),async(p,f,m)=>{let y=this.requireTeamId(p,f);if(!y||!this.ensureProjectAllowed(p,f,m.projectId))return;let b=new zt(this.options.pool),v=cr(m.platformSource);try{if(m.externalSessionId){let k=await b.findByExternalIdForScope({externalSessionId:m.externalSessionId,projectId:m.projectId,teamId:y,platformSource:v});if(k){f.status(200).json({session:ud(k)});return}}let E={projectId:m.projectId,teamId:y,externalSessionId:m.externalSessionId??null,contentSessionId:m.contentSessionId??null,agentId:m.agentId??null,agentType:m.agentType??null,platformSource:v,metadata:m.metadata??{}},S;try{S=await b.create(E)}catch(k){let _=k instanceof Error?k.code:k?.code;if(m.externalSessionId&&_==="23505"){let O=await b.findByExternalIdForScope({externalSessionId:m.externalSessionId,projectId:m.projectId,teamId:y,platformSource:v});if(O){f.status(200).json({session:ud(O)});return}}throw k}await this.auditWrite(p,"session.write",S.id,S.projectId),f.status(201).json({session:ud(S)})}catch(E){this.handleDbError(E,f,"session.write")}})),e.get("/v1/sessions/:id",u,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=new zt(this.options.pool),v=await this.loadScopedById(p,f,{id:y,teamId:m,table:"server_sessions",notFound:"Session not found",load:E=>b.getByIdForScope({id:y,projectId:E,teamId:m})});v&&f.json({session:ud(v)})})),e.post("/v1/sessions/:id/end",l,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=this.routeParam(p.params.id),b=await this.loadScopedById(p,f,{id:y,teamId:m,table:"server_sessions",notFound:"Session not found",load:async _=>_});if(!b)return;let v=null,E=null,S="skipped",k={sessionId:y,projectId:b,teamId:m,source:"http_post_v1_sessions_end",apiKeyId:p.authContext?.apiKeyId??null,actorId:await this.resolveActorId(p),sourceAdapter:"api"};try{let _=await this.endSession.end(k);v=_.session,E=_.outbox,S=_.enqueueState}catch(_){let O=_ instanceof Error?_:new Error(String(_));x.warn("SYSTEM","session.end failed",{requestId:p.requestId??null},O),this.handleDbError(O,f,"session.end");return}if(!v){f.status(404).json({error:"NotFound",message:"Session not found"});return}await this.auditWrite(p,"session.end",v.id,v.projectId),f.status(200).json({session:ud(v),...E?{generationJob:CI(E,S)}:{}})})),e.post("/v1/memories",l,this.handleCreate(oe.z.object({projectId:oe.z.string().min(1),serverSessionId:oe.z.string().min(1).nullable().optional(),contentSessionId:oe.z.string().min(1).nullable().optional(),platformSource:oe.z.string().min(1).nullable().optional(),kind:oe.z.string().min(1).optional(),content:oe.z.string().min(1),metadata:oe.z.record(oe.z.string(),oe.z.unknown()).optional()}),async(p,f,m)=>{let y=this.requireTeamId(p,f);if(!y||!this.ensureProjectAllowed(p,f,m.projectId))return;let b=await this.resolveMemorySessionLink({serverSessionId:m.serverSessionId??null,contentSessionId:m.contentSessionId??null,projectId:m.projectId,teamId:y,...this.sessionLookupPlatformScope(p.body)}),v={projectId:m.projectId,teamId:y,serverSessionId:b,kind:m.kind??"manual",content:m.content,metadata:m.metadata??{}};try{let S=await new Zr(this.options.pool).create(v);await this.auditWrite(p,"memory.write",S.id,S.projectId),f.status(201).json({memory:Lc(S)})}catch(E){let S=E instanceof Error?E:new Error(String(E));x.warn("SYSTEM","memory.write failed",{requestId:p.requestId??null},S),this.handleDbError(S,f,"memory.write")}})),e.post("/v1/search",u,this.handleCreate(oe.z.object({projectId:oe.z.string().min(1),query:oe.z.string().min(1),limit:oe.z.number().int().positive().max(100).optional(),platformSource:oe.z.string().min(1).nullable().optional()}),async(p,f,m)=>{let y=this.requireTeamId(p,f);if(!y||!this.ensureProjectAllowed(p,f,m.projectId))return;let b=cr(m.platformSource),v;try{v=await new Zr(this.options.pool).search({projectId:m.projectId,teamId:y,query:m.query,limit:m.limit??20,platformSource:b})}catch(E){let S=E instanceof Error?E:new Error(String(E));x.warn("SYSTEM","observation.search failed",{requestId:p.requestId??null},S),this.handleDbError(S,f,"observation.search");return}await this.auditWrite(p,"observation.read",null,m.projectId,{mode:"search",query:m.query,limit:m.limit??20,platformSource:b,resultCount:v.length,observationIds:v.map(E=>E.id)}),f.status(200).json({observations:v.map(Lc)})})),e.post("/v1/context",u,this.handleCreate(oe.z.object({projectId:oe.z.string().min(1),query:oe.z.string().min(1),limit:oe.z.number().int().positive().max(50).optional(),platformSource:oe.z.string().min(1).nullable().optional()}),async(p,f,m)=>{let y=this.requireTeamId(p,f);if(!y||!this.ensureProjectAllowed(p,f,m.projectId))return;let b=cr(m.platformSource),v;try{v=await new Zr(this.options.pool).search({projectId:m.projectId,teamId:y,query:m.query,limit:m.limit??10,platformSource:b})}catch(S){let k=S instanceof Error?S:new Error(String(S));x.warn("SYSTEM","observation.context failed",{requestId:p.requestId??null},k),this.handleDbError(k,f,"observation.context");return}let E=v.map(S=>S.content).filter(S=>typeof S=="string"&&S.length>0).join(`
`);await this.auditWrite(p,"observation.read",null,m.projectId,{mode:"context",query:m.query,limit:m.limit??10,platformSource:b,resultCount:v.length,observationIds:v.map(S=>S.id)}),f.status(200).json({observations:v.map(Lc),context:E})}));let d=this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=p.authContext?.projectId??null,b=new Zr(this.options.pool),v=_=>{if(y&&y!==_)throw new Error("API key is scoped to a different project")},S=d$({search:async({projectId:_,query:O,limit:N})=>{v(_);let ee=await b.search({projectId:_,teamId:m,query:O,limit:N});return await this.auditWrite(p,"observation.read",null,_,{mode:"search",via:"mcp",query:O,limit:N,resultCount:ee.length,observationIds:ee.map(q=>q.id)}),ee.map(Lc)},context:async({projectId:_,query:O,limit:N})=>{v(_);let ee=await b.search({projectId:_,teamId:m,query:O,limit:N});return await this.auditWrite(p,"observation.read",null,_,{mode:"context",via:"mcp",query:O,limit:N,resultCount:ee.length,observationIds:ee.map(q=>q.id)}),ee.map(Lc)},recent:async({projectId:_,limit:O})=>{v(_);let N=await b.listByProject({projectId:_,teamId:m,limit:O});return await this.auditWrite(p,"observation.read",null,_,{mode:"recent",via:"mcp",limit:O,resultCount:N.length,observationIds:N.map(ee=>ee.id)}),N.map(Lc)}},tbe),k=new _m({sessionIdGenerator:void 0});f.on("close",()=>{k.close(),S.close()}),await S.connect(k),await k.handleRequest(p,f,p.body)});e.post("/v1/mcp",u,d),e.get("/v1/mcp",u,d),e.delete("/v1/memories/:id",l,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=String(p.params.id),b=p.authContext?.projectId??null;try{if(!await this.deleteObservationForScope(y,m,b)){f.status(404).json({error:"not_found"});return}await this.auditWrite(p,"observation.deleted",y,b,{via:"api"}),f.status(200).json({deleted:!0,id:y})}catch(v){let E=v instanceof Error?v:new Error(String(v));x.warn("SYSTEM","observation.delete failed",{requestId:p.requestId??null},E),this.handleDbError(E,f,"observation.delete")}})),e.delete("/v1/projects/:projectId/memory",l,this.asyncHandler(async(p,f)=>{let m=this.requireTeamId(p,f);if(!m)return;let y=String(p.params.projectId);if(this.ensureProjectAllowed(p,f,y))try{if(!await new _n(this.options.pool).getByIdForTeam(y,m)){f.status(404).json({error:"not_found"});return}let v=await new cc(this.options.pool).purgeProjectMemory({projectId:y,teamId:m});await this.auditWrite(p,"project.memory_purged",y,y,{...v,via:"api"}),f.status(200).json({purged:!0,projectId:y,counts:v})}catch(b){let v=b instanceof Error?b:new Error(String(b));x.warn("SYSTEM","project.purge failed",{requestId:p.requestId??null},v),this.handleDbError(v,f,"project.purge")}}))}async resolveActorId(e){let r=e.authContext?.apiKeyId??null;if(!r)return null;try{return(await this.options.pool.query("SELECT actor_id FROM api_keys WHERE id = $1",[r])).rows[0]?.actor_id??null}catch(n){return x.warn("SYSTEM","failed to resolve actor_id for audit",{apiKeyId:r,error:n instanceof Error?n.message:String(n)}),null}}resolveQueue(e){let r=e==="summary"?this.options.getSummaryQueue:this.options.getEventQueue;if(r)return r();let n=this.options.queueManager;if(typeof n.getQueue=="function")try{return n.getQueue(e)}catch(i){let s=i instanceof Error?i:new Error(String(i));return x.warn("SYSTEM","queue lane resolution failed; enqueue will be skipped",{lane:e},s),null}return null}toAgentEventInput(e,r){let n=e.sourceType??ebe,i=typeof e.occurredAtEpoch=="number"?e.occurredAtEpoch:Date.now();return{projectId:e.projectId,teamId:r,serverSessionId:e.serverSessionId??null,contentSessionId:e.contentSessionId??null,sourceAdapter:n,sourceEventId:typeof e.sourceEventId=="string"?e.sourceEventId:null,eventType:e.eventType,platformSource:cr(e.platformSource),payload:e.payload??{},metadata:typeof e.metadata=="object"&&e.metadata!==null?e.metadata:{},occurredAt:new Date(i)}}requireTeamId(e,r){let n=e.authContext?.teamId??null;return n||(r.status(403).json({error:"Forbidden",message:"API key is not bound to a team"}),null)}async resolveMemorySessionLink(e){if(e.serverSessionId)return e.serverSessionId;if(!e.contentSessionId)return null;let r=Object.prototype.hasOwnProperty.call(e,"platformSource")?{platformSource:e.platformSource??null}:{};try{return await new zt(this.options.pool).findIdByContentSessionId({contentSessionId:e.contentSessionId,projectId:e.projectId,teamId:e.teamId,...r})}catch(n){return x.warn("HTTP","session linkage lookup failed; storing memory unlinked",{error:n instanceof Error?n.message:String(n)}),null}}async applyContentSessionLinks(e,r,n){let i=new zt(this.options.pool),s=new Map;await Promise.all(e.map(async(o,a)=>{if(o.serverSessionId||!o.contentSessionId)return;let c=this.sessionLookupPlatformScope(r[a]),l=Object.prototype.hasOwnProperty.call(c,"platformSource"),u=JSON.stringify([o.projectId,n,o.contentSessionId,l,l?c.platformSource??null:null]),d=s.get(u);d||(d=i.findIdByContentSessionId({contentSessionId:o.contentSessionId,projectId:o.projectId,teamId:n,...c}).catch(f=>(x.warn("HTTP","session linkage lookup failed; storing event unlinked",{error:f instanceof Error?f.message:String(f)}),null)),s.set(u,d));let p=await d;p&&(o.serverSessionId=p)}))}sessionLookupPlatformScope(e){if(!e||typeof e!="object")return{};if(!Object.prototype.hasOwnProperty.call(e,"platformSource"))return{};let r=e.platformSource;return{platformSource:typeof r=="string"?ps(r):null}}ensureProjectAllowed(e,r,n){return e.authContext?.projectId&&e.authContext.projectId!==n?(r.status(403).json({error:"Forbidden",message:"API key is scoped to a different project"}),!1):!0}async loadScopedById(e,r,n){let s=(await this.options.pool.query(`SELECT project_id FROM ${n.table} WHERE id = $1 AND team_id = $2`,[n.id,n.teamId])).rows[0];if(!s)return r.status(404).json({error:"NotFound",message:n.notFound}),null;if(n.scopeMismatch==="not-found"){if(e.authContext?.projectId&&e.authContext.projectId!==s.project_id)return r.status(404).json({error:"NotFound",message:n.notFound}),null}else if(!this.ensureProjectAllowed(e,r,s.project_id))return null;let o=await n.load(s.project_id);return o||(r.status(404).json({error:"NotFound",message:n.notFound}),null)}async deleteObservationForScope(e,r,n){let i=new cc(this.options.pool);return n?i.deleteObservation({id:e,projectId:n,teamId:r}):((await this.options.pool.query("DELETE FROM observations WHERE id = $1 AND team_id = $2",[e,r])).rowCount??0)>0}handleDbError(e,r,n){let i=e instanceof Error?e.message:String(e);if(i.includes("project_id must belong to team_id")||i.includes("server_session_id must belong")||i.includes("agent_event source_id must belong")){r.status(403).json({error:"Forbidden",message:i});return}x.error("SYSTEM",`${n} failed`,{error:i}),r.status(500).json({error:"InternalError",message:"Failed to persist event"})}async auditWrite(e,r,n,i,s){let o=new Nt(this.options.pool),a=await this.resolveActorId(e),c={...e.requestId?{requestId:e.requestId}:{},...s??{}},l={teamId:e.authContext?.teamId??null,projectId:i??e.authContext?.projectId??null,actorId:a,apiKeyId:e.authContext?.apiKeyId??null,action:r,resourceType:sbe(r),resourceId:n,details:c};try{await o.createAuditLog(l)}catch(u){x.warn("SYSTEM","audit log insert failed",{action:r,requestId:e.requestId??null,error:u instanceof Error?u.message:String(u)})}}async listJobsForScope(e){let r=[e.teamId],n="WHERE team_id = $1";e.projectId&&(r.push(e.projectId),n+=` AND project_id = $${r.length}`),e.status&&(r.push(e.status),n+=` AND status = $${r.length}`),e.sourceType&&(r.push(e.sourceType),n+=` AND source_type = $${r.length}`),e.since&&(r.push(e.since),n+=` AND created_at >= $${r.length}`);let i=await this.options.pool.query(`SELECT COUNT(*)::text AS total FROM observation_generation_jobs ${n}`,r),s=Number.parseInt(i.rows[0]?.total??"0",10);r.push(e.limit,e.offset);let o=r.length-1,a=r.length;return{jobs:(await this.options.pool.query(`
SELECT id, project_id, team_id, source_type, source_id, status, attempts,
max_attempts, created_at, completed_at, failed_at, last_error, payload
FROM observation_generation_jobs
${n}
ORDER BY created_at DESC
LIMIT $${o} OFFSET $${a}
`,r)).rows,total:s}}async retryGenerationJob(e,r,n,i){if(!n)return r.status(400).json({error:"ValidationError",message:"job id required"}),null;let s=new dt(this.options.pool),o=await this.loadScopedById(e,r,{id:n,teamId:i,table:"observation_generation_jobs",notFound:"Generation job not found",scopeMismatch:"not-found",load:b=>s.getByIdForScope({id:n,projectId:b,teamId:i})});if(!o)return null;if(o.status==="queued")return await this.auditWrite(e,"generation_job.retried_by_operator",o.id,o.projectId,{outcome:"noop_already_queued",currentAttempts:o.attempts,requestId:e.requestId??null}),{job:o,retriedCount:j$(o.payload),alreadyQueued:!0};if(o.status==="processing")return r.status(409).json({error:"Conflict",message:"Generation job is currently processing; cancel or wait for completion before retrying"}),null;if(o.status==="completed")return r.status(409).json({error:"Conflict",message:"Generation job already completed; retrying would duplicate observations"}),null;let a=j$(o.payload)+1,c=o.payload&&typeof o.payload=="object"?o.payload:{},l={...c,retried_count:a,last_retried_by_actor:e.authContext?.apiKeyId??null,last_retried_request_id:e.requestId??null},u={...c,request_id:e.requestId??c.request_id??null},p=(await this.options.pool.query(`
UPDATE observation_generation_jobs
SET status = 'queued',
locked_at = NULL,
locked_by = NULL,
failed_at = NULL,
cancelled_at = NULL,
completed_at = NULL,
last_error = NULL,
attempts = LEAST(attempts, max_attempts - 1),
payload = $4::jsonb,
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[n,o.projectId,i,JSON.stringify(l)])).rows[0];if(!p)return r.status(404).json({error:"NotFound",message:"Generation job not found"}),null;await new Wt(this.options.pool).append({generationJobId:n,projectId:o.projectId,teamId:i,eventType:"queued",statusAfter:"queued",attempt:p.attempts,details:{source:"operator_retry",requestId:e.requestId??null,retriedCount:a}});let m=this.resolveEventQueueForRetry(p);if(m&&p)try{let b=p.bullmq_job_id;if(b){try{await m.remove(b)}catch{}await m.add(b,u)}}catch(b){x.warn("SYSTEM","failed to re-enqueue generation job on operator retry",{jobId:n,requestId:e.requestId??null,error:b instanceof Error?b.message:String(b)})}let y=await s.getByIdForScope({id:n,projectId:o.projectId,teamId:i});return y?(await this.auditWrite(e,"generation_job.retried_by_operator",y.id,y.projectId,{previousStatus:o.status,currentStatus:y.status,retriedCount:a,requestId:e.requestId??null}),{job:y,retriedCount:a,alreadyQueued:!1}):(r.status(404).json({error:"NotFound",message:"Generation job not found"}),null)}async cancelGenerationJob(e,r,n,i){if(!n)return r.status(400).json({error:"ValidationError",message:"job id required"}),null;let s=new dt(this.options.pool),o=await this.loadScopedById(e,r,{id:n,teamId:i,table:"observation_generation_jobs",notFound:"Generation job not found",scopeMismatch:"not-found",load:p=>s.getByIdForScope({id:n,projectId:p,teamId:i})});if(!o)return null;if(o.status==="cancelled")return await this.auditWrite(e,"generation_job.cancelled_by_operator",o.id,o.projectId,{outcome:"noop_already_cancelled",requestId:e.requestId??null}),{job:o,alreadyCancelled:!0};if(o.status==="completed")return r.status(409).json({error:"Conflict",message:"Generation job already completed; cannot cancel"}),null;let c=(await this.options.pool.query(`
UPDATE observation_generation_jobs
SET status = 'cancelled',
cancelled_at = now(),
updated_at = now()
WHERE id = $1 AND project_id = $2 AND team_id = $3
RETURNING *
`,[n,o.projectId,i])).rows[0];if(!c)return r.status(404).json({error:"NotFound",message:"Generation job not found"}),null;await new Wt(this.options.pool).append({generationJobId:n,projectId:o.projectId,teamId:i,eventType:"cancelled",statusAfter:"cancelled",attempt:c.attempts,details:{source:"operator_cancel",requestId:e.requestId??null}});let u=this.resolveEventQueueForRetry(c);if(u){let p=c.bullmq_job_id;if(p)try{await u.remove(p)}catch{}}let d=await s.getByIdForScope({id:n,projectId:o.projectId,teamId:i});return d?(await this.auditWrite(e,"generation_job.cancelled_by_operator",d.id,d.projectId,{previousStatus:o.status,currentStatus:d.status,requestId:e.requestId??null}),{job:d,alreadyCancelled:!1}):(r.status(404).json({error:"NotFound",message:"Generation job not found"}),null)}resolveEventQueueForRetry(e){let r=e.source_type==="session_summary"?"summary":"event",n=this.resolveQueue(r);return n||null}routeParam(e){return Array.isArray(e)?e[0]??"":e??""}handleCreate(e,r){return this.asyncHandler(async(n,i)=>{let s=e.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}await r(n,i,s.data)})}asyncHandler(e){return(r,n,i)=>{Promise.resolve(e(r,n)).catch(i)}}},nbe=new Set(["agent_event","session_summary","observation_reindex"]);M$=new Set(["queued","processing","completed","failed","cancelled"]),N$=50,L$=200});async function PI(t){let e=new zt(t.pool),r=t.platformSource?ps(t.platformSource):null,n=await e.findByExternalIdForScope({externalSessionId:t.contentSessionId,projectId:t.projectId,teamId:t.teamId,platformSource:r});if(n)return{id:n.id,projectId:n.projectId,teamId:n.teamId};let i={projectId:t.projectId,teamId:t.teamId,externalSessionId:t.contentSessionId,contentSessionId:t.contentSessionId,agentId:t.agentId,agentType:t.agentType,platformSource:r};try{let s=await e.create(i);return{id:s.id,projectId:s.projectId,teamId:s.teamId}}catch(s){if((s instanceof Error?s:new Error(String(s))).code==="23505"){let a=await e.findByExternalIdForScope({externalSessionId:t.contentSessionId,projectId:t.projectId,teamId:t.teamId,platformSource:r});if(a)return{id:a.id,projectId:a.projectId,teamId:a.teamId}}throw s}}var ln,F$,cbe,lbe,Rh,KI=R(()=>{"use strict";ln=require("zod");js();fe();Kf();So();F$="claude-code-compat",cbe="tool_use",lbe=ln.z.object({contentSessionId:ln.z.string().min(1),tool_name:ln.z.string().min(1),tool_input:ln.z.unknown().optional(),tool_response:ln.z.unknown().optional(),cwd:ln.z.string().optional(),agentId:ln.z.string().optional(),agentType:ln.z.string().optional(),platformSource:ln.z.string().optional(),tool_use_id:ln.z.string().optional(),toolUseId:ln.z.string().optional()}).passthrough(),Rh=class{constructor(e){this.options=e}options;setupRoutes(e){let r=wo(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]});e.post("/api/sessions/observations",r,this.asyncHandler(async(n,i)=>{let s=lbe.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}let o=n.authContext?.teamId??null,a=n.authContext?.projectId??null;if(!o){i.status(403).json({error:"Forbidden",message:"API key is not bound to a team"});return}if(!a){i.status(400).json({error:"BadRequest",message:"Legacy /api/sessions/observations requires a project-scoped API key"});return}try{await this.ingestCompatObservation(n,i,s.data,o,a)}catch(c){x.error("SYSTEM","compat observations adapter failed",{error:c instanceof Error?c.message:String(c),contentSessionId:s.data.contentSessionId}),i.status(500).json({stored:!1,reason:"internal_error"})}}))}async ingestCompatObservation(e,r,n,i,s){let o=ps(typeof n.platformSource=="string"?n.platformSource:Ya),a=await PI({pool:this.options.pool,teamId:i,projectId:s,contentSessionId:n.contentSessionId,platformSource:o,agentId:typeof n.agentId=="string"?n.agentId:null,agentType:typeof n.agentType=="string"?n.agentType:null}),c=typeof n.tool_use_id=="string"?n.tool_use_id:typeof n.toolUseId=="string"?n.toolUseId:null,l={projectId:s,teamId:i,serverSessionId:a.id,sourceAdapter:F$,sourceEventId:c,eventType:cbe,platformSource:o,payload:{contentSessionId:n.contentSessionId,tool_name:n.tool_name,tool_input:n.tool_input??null,tool_response:n.tool_response??null,cwd:n.cwd??null,platformSource:o,agentId:n.agentId??null,agentType:n.agentType??null,toolUseId:c},metadata:{compat:"sessions/observations"},occurredAt:new Date},u=await this.options.ingestEvents.ingestOne(l,{source:"http_post_api_sessions_observations",apiKeyId:e.authContext?.apiKeyId??null,actorId:null,sourceAdapter:F$});r.json({status:"queued",observationCount:1,sessionId:a.id,serverSessionId:a.id,eventId:u.event.id,generationJobId:u.outbox?.id??null,transport:u.enqueueState})}asyncHandler(e){return(r,n,i)=>{Promise.resolve(e(r,n)).catch(i)}}}});var qc,ube,Oh,$$=R(()=>{"use strict";qc=require("zod");js();fe();Kf();KI();So();ube=qc.z.object({contentSessionId:qc.z.string().min(1),last_assistant_message:qc.z.string().optional(),agentId:qc.z.string().optional(),platformSource:qc.z.string().optional()}).passthrough(),Oh=class{constructor(e){this.options=e}options;setupRoutes(e){let r=wo(this.options.pool,{authMode:this.options.authMode,allowLocalDevBypass:this.options.allowLocalDevBypass,requiredScopes:["memories:write"]});e.post("/api/sessions/summarize",r,this.asyncHandler(async(n,i)=>{let s=ube.safeParse(n.body);if(!s.success){i.status(400).json({error:"ValidationError",issues:s.error.issues});return}let o=n.authContext?.teamId??null,a=n.authContext?.projectId??null;if(!o){i.status(403).json({error:"Forbidden",message:"API key is not bound to a team"});return}if(!a){i.status(400).json({error:"BadRequest",message:"Legacy /api/sessions/summarize requires a project-scoped API key"});return}if(s.data.agentId){i.json({status:"skipped",reason:"subagent_context"});return}try{await this.summarizeSession(n,i,s.data,o,a)}catch(c){x.error("SYSTEM","compat summarize adapter failed",{error:c instanceof Error?c.message:String(c),contentSessionId:s.data.contentSessionId}),i.status(500).json({status:"error",reason:"internal_error"})}}))}async summarizeSession(e,r,n,i,s){let o=ps(typeof n.platformSource=="string"?n.platformSource:Ya),a=await PI({pool:this.options.pool,teamId:i,projectId:s,contentSessionId:n.contentSessionId,platformSource:o,agentId:null,agentType:null}),c=await this.options.endSession.end({sessionId:a.id,projectId:s,teamId:i,source:"http_post_api_sessions_summarize",apiKeyId:e.authContext?.apiKeyId??null,actorId:null,sourceAdapter:"claude-code-compat"});if(!c.session){r.status(404).json({status:"not_found",reason:"session_not_found"});return}r.json({status:"queued",sessionId:a.id,serverSessionId:a.id,generationJobId:c.outbox?.id??null,transport:c.enqueueState})}asyncHandler(e){return(r,n,i)=>{Promise.resolve(e(r,n)).catch(i)}}}});var rr={};io(rr,{__addDisposableResource:()=>p8,__assign:()=>Ch,__asyncDelegator:()=>i8,__asyncGenerator:()=>n8,__asyncValues:()=>s8,__await:()=>Fc,__awaiter:()=>Q$,__classPrivateFieldGet:()=>l8,__classPrivateFieldIn:()=>d8,__classPrivateFieldSet:()=>u8,__createBinding:()=>Ph,__decorate:()=>z$,__disposeResources:()=>f8,__esDecorate:()=>B$,__exportStar:()=>Z$,__extends:()=>U$,__generator:()=>X$,__importDefault:()=>c8,__importStar:()=>a8,__makeTemplateObject:()=>o8,__metadata:()=>Y$,__param:()=>G$,__propKey:()=>V$,__read:()=>NI,__rest:()=>J$,__rewriteRelativeImportExtension:()=>m8,__runInitializers:()=>H$,__setFunctionName:()=>W$,__spread:()=>e8,__spreadArray:()=>r8,__spreadArrays:()=>t8,__values:()=>jh,default:()=>fbe});function U$(t,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");DI(t,e);function r(){this.constructor=t}t.prototype=e===null?Object.create(e):(r.prototype=e.prototype,new r)}function J$(t,e){var r={};for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&e.indexOf(n)<0&&(r[n]=t[n]);if(t!=null&&typeof Object.getOwnPropertySymbols=="function")for(var i=0,n=Object.getOwnPropertySymbols(t);i<n.length;i++)e.indexOf(n[i])<0&&Object.prototype.propertyIsEnumerable.call(t,n[i])&&(r[n[i]]=t[n[i]]);return r}function z$(t,e,r,n){var i=arguments.length,s=i<3?e:n===null?n=Object.getOwnPropertyDescriptor(e,r):n,o;if(typeof Reflect=="object"&&typeof Reflect.decorate=="function")s=Reflect.decorate(t,e,r,n);else for(var a=t.length-1;a>=0;a--)(o=t[a])&&(s=(i<3?o(s):i>3?o(e,r,s):o(e,r))||s);return i>3&&s&&Object.defineProperty(e,r,s),s}function G$(t,e){return function(r,n){e(r,n,t)}}function B$(t,e,r,n,i,s){function o(v){if(v!==void 0&&typeof v!="function")throw new TypeError("Function expected");return v}for(var a=n.kind,c=a==="getter"?"get":a==="setter"?"set":"value",l=!e&&t?n.static?t:t.prototype:null,u=e||(l?Object.getOwnPropertyDescriptor(l,n.name):{}),d,p=!1,f=r.length-1;f>=0;f--){var m={};for(var y in n)m[y]=y==="access"?{}:n[y];for(var y in n.access)m.access[y]=n.access[y];m.addInitializer=function(v){if(p)throw new TypeError("Cannot add initializers after decoration has completed");s.push(o(v||null))};var b=(0,r[f])(a==="accessor"?{get:u.get,set:u.set}:u[c],m);if(a==="accessor"){if(b===void 0)continue;if(b===null||typeof b!="object")throw new TypeError("Object expected");(d=o(b.get))&&(u.get=d),(d=o(b.set))&&(u.set=d),(d=o(b.init))&&i.unshift(d)}else(d=o(b))&&(a==="field"?i.unshift(d):u[c]=d)}l&&Object.defineProperty(l,n.name,u),p=!0}function H$(t,e,r){for(var n=arguments.length>2,i=0;i<e.length;i++)r=n?e[i].call(t,r):e[i].call(t);return n?r:void 0}function V$(t){return typeof t=="symbol"?t:"".concat(t)}function W$(t,e,r){return typeof e=="symbol"&&(e=e.description?"[".concat(e.description,"]"):""),Object.defineProperty(t,"name",{configurable:!0,value:r?"".concat(r," ",e):e})}function Y$(t,e){if(typeof Reflect=="object"&&typeof Reflect.metadata=="function")return Reflect.metadata(t,e)}function Q$(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(u){try{l(n.next(u))}catch(d){o(d)}}function c(u){try{l(n.throw(u))}catch(d){o(d)}}function l(u){u.done?s(u.value):i(u.value).then(a,c)}l((n=n.apply(t,e||[])).next())})}function X$(t,e){var r={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},n,i,s,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(l){return function(u){return c([l,u])}}function c(l){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,l[0]&&(r=0)),r;)try{if(n=1,i&&(s=l[0]&2?i.return:l[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,l[1])).done)return s;switch(i=0,s&&(l=[l[0]&2,s.value]),l[0]){case 0:case 1:s=l;break;case 4:return r.label++,{value:l[1],done:!1};case 5:r.label++,i=l[1],l=[0];continue;case 7:l=r.ops.pop(),r.trys.pop();continue;default:if(s=r.trys,!(s=s.length>0&&s[s.length-1])&&(l[0]===6||l[0]===2)){r=0;continue}if(l[0]===3&&(!s||l[1]>s[0]&&l[1]<s[3])){r.label=l[1];break}if(l[0]===6&&r.label<s[1]){r.label=s[1],s=l;break}if(s&&r.label<s[2]){r.label=s[2],r.ops.push(l);break}s[2]&&r.ops.pop(),r.trys.pop();continue}l=e.call(t,r)}catch(u){l=[6,u],i=0}finally{n=s=0}if(l[0]&5)throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}}function Z$(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Ph(e,t,r)}function jh(t){var e=typeof Symbol=="function"&&Symbol.iterator,r=e&&t[e],n=0;if(r)return r.call(t);if(t&&typeof t.length=="number")return{next:function(){return t&&n>=t.length&&(t=void 0),{value:t&&t[n++],done:!t}}};throw new TypeError(e?"Object is not iterable.":"Symbol.iterator is not defined.")}function NI(t,e){var r=typeof Symbol=="function"&&t[Symbol.iterator];if(!r)return t;var n=r.call(t),i,s=[],o;try{for(;(e===void 0||e-- >0)&&!(i=n.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(r=n.return)&&r.call(n)}finally{if(o)throw o.error}}return s}function e8(){for(var t=[],e=0;e<arguments.length;e++)t=t.concat(NI(arguments[e]));return t}function t8(){for(var t=0,e=0,r=arguments.length;e<r;e++)t+=arguments[e].length;for(var n=Array(t),i=0,e=0;e<r;e++)for(var s=arguments[e],o=0,a=s.length;o<a;o++,i++)n[i]=s[o];return n}function r8(t,e,r){if(r||arguments.length===2)for(var n=0,i=e.length,s;n<i;n++)(s||!(n in e))&&(s||(s=Array.prototype.slice.call(e,0,n)),s[n]=e[n]);return t.concat(s||Array.prototype.slice.call(e))}function Fc(t){return this instanceof Fc?(this.v=t,this):new Fc(t)}function n8(t,e,r){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var n=r.apply(t,e||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(f){return function(m){return Promise.resolve(m).then(f,d)}}function a(f,m){n[f]&&(i[f]=function(y){return new Promise(function(b,v){s.push([f,y,b,v])>1||c(f,y)})},m&&(i[f]=m(i[f])))}function c(f,m){try{l(n[f](m))}catch(y){p(s[0][3],y)}}function l(f){f.value instanceof Fc?Promise.resolve(f.value.v).then(u,d):p(s[0][2],f)}function u(f){c("next",f)}function d(f){c("throw",f)}function p(f,m){f(m),s.shift(),s.length&&c(s[0][0],s[0][1])}}function i8(t){var e,r;return e={},n("next"),n("throw",function(i){throw i}),n("return"),e[Symbol.iterator]=function(){return this},e;function n(i,s){e[i]=t[i]?function(o){return(r=!r)?{value:Fc(t[i](o)),done:!1}:s?s(o):o}:s}}function s8(t){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e=t[Symbol.asyncIterator],r;return e?e.call(t):(t=typeof jh=="function"?jh(t):t[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(s){r[s]=t[s]&&function(o){return new Promise(function(a,c){o=t[s](o),i(a,c,o.done,o.value)})}}function i(s,o,a,c){Promise.resolve(c).then(function(l){s({value:l,done:a})},o)}}function o8(t,e){return Object.defineProperty?Object.defineProperty(t,"raw",{value:e}):t.raw=e,t}function a8(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r=MI(t),n=0;n<r.length;n++)r[n]!=="default"&&Ph(e,t,r[n]);return dbe(e,t),e}function c8(t){return t&&t.__esModule?t:{default:t}}function l8(t,e,r,n){if(r==="a"&&!n)throw new TypeError("Private accessor was defined without a getter");if(typeof e=="function"?t!==e||!n:!e.has(t))throw new TypeError("Cannot read private member from an object whose class did not declare it");return r==="m"?n:r==="a"?n.call(t):n?n.value:e.get(t)}function u8(t,e,r,n,i){if(n==="m")throw new TypeError("Private method is not writable");if(n==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof e=="function"?t!==e||!i:!e.has(t))throw new TypeError("Cannot write private member to an object whose class did not declare it");return n==="a"?i.call(t,r):i?i.value=r:e.set(t,r),r}function d8(t,e){if(e===null||typeof e!="object"&&typeof e!="function")throw new TypeError("Cannot use 'in' operator on non-object");return typeof t=="function"?e===t:t.has(e)}function p8(t,e,r){if(e!=null){if(typeof e!="object"&&typeof e!="function")throw new TypeError("Object expected.");var n,i;if(r){if(!Symbol.asyncDispose)throw new TypeError("Symbol.asyncDispose is not defined.");n=e[Symbol.asyncDispose]}if(n===void 0){if(!Symbol.dispose)throw new TypeError("Symbol.dispose is not defined.");n=e[Symbol.dispose],r&&(i=n)}if(typeof n!="function")throw new TypeError("Object not disposable.");i&&(n=function(){try{i.call(this)}catch(s){return Promise.reject(s)}}),t.stack.push({value:e,dispose:n,async:r})}else r&&t.stack.push({async:!0});return e}function f8(t){function e(s){t.error=t.hasError?new pbe(s,t.error,"An error was suppressed during disposal."):s,t.hasError=!0}var r,n=0;function i(){for(;r=t.stack.pop();)try{if(!r.async&&n===1)return n=0,t.stack.push(r),Promise.resolve().then(i);if(r.dispose){var s=r.dispose.call(r.value);if(r.async)return n|=2,Promise.resolve(s).then(i,function(o){return e(o),i()})}else n|=1}catch(o){e(o)}if(n===1)return t.hasError?Promise.reject(t.error):Promise.resolve();if(t.hasError)throw t.error}return i()}function m8(t,e){return typeof t=="string"&&/^\.\.?\//.test(t)?t.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i,function(r,n,i,s,o){return n?e?".jsx":".js":i&&(!s||!o)?r:i+s+"."+o.toLowerCase()+"js"}):t}var DI,Ch,Ph,dbe,MI,pbe,fbe,nr=R(()=>{DI=function(t,e){return DI=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,n){r.__proto__=n}||function(r,n){for(var i in n)Object.prototype.hasOwnProperty.call(n,i)&&(r[i]=n[i])},DI(t,e)};Ch=function(){return Ch=Object.assign||function(e){for(var r,n=1,i=arguments.length;n<i;n++){r=arguments[n];for(var s in r)Object.prototype.hasOwnProperty.call(r,s)&&(e[s]=r[s])}return e},Ch.apply(this,arguments)};Ph=Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]});dbe=Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e},MI=function(t){return MI=Object.getOwnPropertyNames||function(e){var r=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[r.length]=n);return r},MI(t)};pbe=typeof SuppressedError=="function"?SuppressedError:function(t,e,r){var n=new Error(r);return n.name="SuppressedError",n.error=t,n.suppressed=e,n};fbe={__extends:U$,__assign:Ch,__rest:J$,__decorate:z$,__param:G$,__esDecorate:B$,__runInitializers:H$,__propKey:V$,__setFunctionName:W$,__metadata:Y$,__awaiter:Q$,__generator:X$,__createBinding:Ph,__exportStar:Z$,__values:jh,__read:NI,__spread:e8,__spreadArrays:t8,__spreadArray:r8,__await:Fc,__asyncGenerator:n8,__asyncDelegator:i8,__asyncValues:s8,__makeTemplateObject:o8,__importStar:a8,__importDefault:c8,__classPrivateFieldGet:l8,__classPrivateFieldSet:u8,__classPrivateFieldIn:d8,__addDisposableResource:p8,__disposeResources:f8,__rewriteRelativeImportExtension:m8}});var $I=h(Kh=>{"use strict";Object.defineProperty(Kh,"__esModule",{value:!0});Kh.AsyncFifoQueue=void 0;var LI=class{constructor(e){this.value=void 0,this.next=null,this.value=e}},qI=class{constructor(){this.length=0,this.head=null,this.tail=null}push(e){let r=new LI(e);return this.length?this.tail.next=r:this.head=r,this.tail=r,this.length+=1,r}shift(){if(this.length){let e=this.head;return this.head=this.head.next,this.length-=1,e}else return null}},FI=class{constructor(e=!1){this.ignoreErrors=e,this.queue=new qI,this.pending=new Set,this.newPromise()}add(e){this.pending.add(e),e.then(r=>{this.pending.delete(e),this.queue.length===0&&this.resolvePromise(r),this.queue.push(r)}).catch(r=>{this.ignoreErrors&&this.queue.push(void 0),this.pending.delete(e),this.rejectPromise(r)})}async waitAll(){await Promise.all(this.pending)}numTotal(){return this.pending.size+this.queue.length}numPending(){return this.pending.size}numQueued(){return this.queue.length}resolvePromise(e){this.resolve(e),this.newPromise()}rejectPromise(e){this.reject(e),this.newPromise()}newPromise(){this.nextPromise=new Promise((e,r)=>{this.resolve=e,this.reject=r})}async wait(){return this.nextPromise}async fetch(){var e;if(!(this.pending.size===0&&this.queue.length===0)){for(;this.queue.length===0;)try{await this.wait()}catch(r){this.ignoreErrors||console.error("Unexpected Error in AsyncFifoQueue",r)}return(e=this.queue.shift())===null||e===void 0?void 0:e.value}}};Kh.AsyncFifoQueue=FI});var UI=h(Dh=>{"use strict";Object.defineProperty(Dh,"__esModule",{value:!0});Dh.Backoffs=void 0;var $c=class{static normalize(e){if(Number.isFinite(e))return{type:"fixed",delay:e};if(e)return e}static calculate(e,r,n,i,s){if(e)return mbe(e,s)(r,e.type,n,i)}};Dh.Backoffs=$c;$c.builtinStrategies={fixed:function(t,e=0){return function(){if(e>0){let r=t*(1-e);return Math.floor(Math.random()*t*e+r)}else return t}},exponential:function(t,e=0){return function(r){if(e>0){let n=Math.round(Math.pow(2,r-1)*t),i=n*(1-e);return Math.floor(Math.random()*n*e+i)}else return Math.round(Math.pow(2,r-1)*t)}}};function mbe(t,e){if(t.type in $c.builtinStrategies)return $c.builtinStrategies[t.type](t.delay,t.jitter);if(e)return e;throw new Error(`Unknown backoff strategy ${t.type}.
If a custom backoff strategy is used, specify it when the queue is created.`)}});var y8=h(Mh=>{"use strict";Object.defineProperty(Mh,"__esModule",{value:!0});Mh.ChildCommand=void 0;var h8;(function(t){t[t.Init=0]="Init",t[t.Start=1]="Start",t[t.Stop=2]="Stop",t[t.GetChildrenValuesResponse=3]="GetChildrenValuesResponse",t[t.GetIgnoredChildrenFailuresResponse=4]="GetIgnoredChildrenFailuresResponse",t[t.GetDependenciesCountResponse=5]="GetDependenciesCountResponse",t[t.MoveToWaitingChildrenResponse=6]="MoveToWaitingChildrenResponse",t[t.Cancel=7]="Cancel",t[t.GetDependenciesResponse=8]="GetDependenciesResponse"})(h8||(Mh.ChildCommand=h8={}))});var b8=h(Nh=>{"use strict";Object.defineProperty(Nh,"__esModule",{value:!0});Nh.ErrorCode=void 0;var g8;(function(t){t[t.JobNotExist=-1]="JobNotExist",t[t.JobLockNotExist=-2]="JobLockNotExist",t[t.JobNotInState=-3]="JobNotInState",t[t.JobPendingChildren=-4]="JobPendingChildren",t[t.ParentJobNotExist=-5]="ParentJobNotExist",t[t.JobLockMismatch=-6]="JobLockMismatch",t[t.ParentJobCannotBeReplaced=-7]="ParentJobCannotBeReplaced",t[t.JobBelongsToJobScheduler=-8]="JobBelongsToJobScheduler",t[t.JobHasFailedChildren=-9]="JobHasFailedChildren",t[t.SchedulerJobIdCollision=-10]="SchedulerJobIdCollision",t[t.SchedulerJobSlotsBusy=-11]="SchedulerJobSlotsBusy"})(g8||(Nh.ErrorCode=g8={}))});var E8=h(Lh=>{"use strict";Object.defineProperty(Lh,"__esModule",{value:!0});Lh.ParentCommand=void 0;var v8;(function(t){t[t.Completed=0]="Completed",t[t.Error=1]="Error",t[t.Failed=2]="Failed",t[t.InitFailed=3]="InitFailed",t[t.InitCompleted=4]="InitCompleted",t[t.Log=5]="Log",t[t.MoveToDelayed=6]="MoveToDelayed",t[t.MoveToWait=7]="MoveToWait",t[t.Progress=8]="Progress",t[t.Update=9]="Update",t[t.GetChildrenValues=10]="GetChildrenValues",t[t.GetIgnoredChildrenFailures=11]="GetIgnoredChildrenFailures",t[t.GetDependenciesCount=12]="GetDependenciesCount",t[t.MoveToWaitingChildren=13]="MoveToWaitingChildren",t[t.GetDependencies=14]="GetDependencies"})(v8||(Lh.ParentCommand=v8={}))});var x8=h(qh=>{"use strict";Object.defineProperty(qh,"__esModule",{value:!0});qh.MetricsTime=void 0;var S8;(function(t){t[t.ONE_MINUTE=1]="ONE_MINUTE",t[t.FIVE_MINUTES=5]="FIVE_MINUTES",t[t.FIFTEEN_MINUTES=15]="FIFTEEN_MINUTES",t[t.THIRTY_MINUTES=30]="THIRTY_MINUTES",t[t.ONE_HOUR=60]="ONE_HOUR",t[t.ONE_WEEK=10080]="ONE_WEEK",t[t.TWO_WEEKS=20160]="TWO_WEEKS",t[t.ONE_MONTH=80640]="ONE_MONTH"})(S8||(qh.MetricsTime=S8={}))});var T8=h(Ps=>{"use strict";Object.defineProperty(Ps,"__esModule",{value:!0});Ps.SpanKind=Ps.MetricNames=Ps.TelemetryAttributes=void 0;var w8;(function(t){t.QueueName="bullmq.queue.name",t.QueueOperation="bullmq.queue.operation",t.BulkCount="bullmq.job.bulk.count",t.BulkNames="bullmq.job.bulk.names",t.JobName="bullmq.job.name",t.JobId="bullmq.job.id",t.JobKey="bullmq.job.key",t.JobIds="bullmq.job.ids",t.JobAttemptsMade="bullmq.job.attempts.made",t.DeduplicationKey="bullmq.job.deduplication.key",t.JobOptions="bullmq.job.options",t.JobProgress="bullmq.job.progress",t.QueueDrainDelay="bullmq.queue.drain.delay",t.QueueGrace="bullmq.queue.grace",t.QueueCleanLimit="bullmq.queue.clean.limit",t.QueueRateLimit="bullmq.queue.rate.limit",t.JobType="bullmq.job.type",t.QueueOptions="bullmq.queue.options",t.QueueEventMaxLength="bullmq.queue.event.max.length",t.QueueJobsState="bullmq.queue.jobs.state",t.WorkerOptions="bullmq.worker.options",t.WorkerName="bullmq.worker.name",t.WorkerId="bullmq.worker.id",t.WorkerRateLimit="bullmq.worker.rate.limit",t.WorkerDoNotWaitActive="bullmq.worker.do.not.wait.active",t.WorkerForceClose="bullmq.worker.force.close",t.WorkerStalledJobs="bullmq.worker.stalled.jobs",t.WorkerFailedJobs="bullmq.worker.failed.jobs",t.WorkerJobsToExtendLocks="bullmq.worker.jobs.to.extend.locks",t.JobFinishedTimestamp="bullmq.job.finished.timestamp",t.JobAttemptFinishedTimestamp="bullmq.job.attempt_finished_timestamp",t.JobProcessedTimestamp="bullmq.job.processed.timestamp",t.JobResult="bullmq.job.result",t.JobFailedReason="bullmq.job.failed.reason",t.FlowName="bullmq.flow.name",t.JobSchedulerId="bullmq.job.scheduler.id",t.JobStatus="bullmq.job.status",t.JobState="bullmq.job.state"})(w8||(Ps.TelemetryAttributes=w8={}));var _8;(function(t){t.QueueJobsCount="bullmq.queue.jobs",t.JobsCompleted="bullmq.jobs.completed",t.JobsFailed="bullmq.jobs.failed",t.JobsDelayed="bullmq.jobs.delayed",t.JobsRetried="bullmq.jobs.retried",t.JobsWaiting="bullmq.jobs.waiting",t.JobsWaitingChildren="bullmq.jobs.waiting_children",t.JobDuration="bullmq.job.duration"})(_8||(Ps.MetricNames=_8={}));var I8;(function(t){t[t.INTERNAL=0]="INTERNAL",t[t.SERVER=1]="SERVER",t[t.CLIENT=2]="CLIENT",t[t.PRODUCER=3]="PRODUCER",t[t.CONSUMER=4]="CONSUMER"})(I8||(Ps.SpanKind=I8={}))});var _r=h(Jo=>{"use strict";Object.defineProperty(Jo,"__esModule",{value:!0});var pd=(nr(),Pt(rr));pd.__exportStar(y8(),Jo);pd.__exportStar(b8(),Jo);pd.__exportStar(E8(),Jo);pd.__exportStar(x8(),Jo);pd.__exportStar(T8(),Jo)});var zI=h($h=>{"use strict";Object.defineProperty($h,"__esModule",{value:!0});$h.Child=void 0;var hbe=require("child_process"),ybe=require("net"),gbe=require("worker_threads"),Fh=_r(),bbe=require("events"),vbe={1:"Uncaught Fatal Exception",2:"Unused",3:"Internal JavaScript Parse Error",4:"Internal JavaScript Evaluation Failure",5:"Fatal Error",6:"Non-function Internal Exception Handler",7:"Internal Exception Handler Run-Time Failure",8:"Unused",9:"Invalid Argument",10:"Internal JavaScript Run-Time Failure",12:"Invalid Debug Argument",13:"Unfinished Top-Level Await"},JI=class extends bbe.EventEmitter{constructor(e,r,n={useWorkerThreads:!1}){super(),this.mainFile=e,this.processFile=r,this.opts=n,this._exitCode=null,this._signalCode=null,this._killed=!1}get pid(){if(this.childProcess)return this.childProcess.pid;if(this.worker)return Math.abs(this.worker.threadId);throw new Error("No child process or worker thread")}get exitCode(){return this._exitCode}get signalCode(){return this._signalCode}get killed(){return this.childProcess?this.childProcess.killed:this._killed}async init(){var e,r;let n=await xbe(process.execArgv),i;this.opts.useWorkerThreads?this.worker=i=new gbe.Worker(this.mainFile,Object.assign({execArgv:n,stdin:!0,stdout:!0,stderr:!0},this.opts.workerThreadsOptions?this.opts.workerThreadsOptions:{})):this.childProcess=i=(0,hbe.fork)(this.mainFile,[],Object.assign({execArgv:n,stdio:"pipe"},this.opts.workerForkOptions?this.opts.workerForkOptions:{})),i.on("exit",(s,o)=>{this._exitCode=s,o=typeof o>"u"?null:o,this._signalCode=o,this._killed=!0,this.emit("exit",s,o),i.removeAllListeners(),this.removeAllListeners()}),i.on("error",(...s)=>this.emit("error",...s)),i.on("message",(...s)=>this.emit("message",...s)),i.on("close",(...s)=>this.emit("close",...s)),(e=i.stdout)===null||e===void 0||e.pipe(process.stdout),(r=i.stderr)===null||r===void 0||r.pipe(process.stderr),await this.initChild()}async send(e){return new Promise((r,n)=>{this.childProcess?this.childProcess.send(e,i=>{i?n(i):r()}):this.worker?r(this.worker.postMessage(e)):r()})}killProcess(e="SIGKILL"){this.childProcess?this.childProcess.kill(e):this.worker&&this.worker.terminate()}async kill(e="SIGKILL",r){if(this.hasProcessExited())return;let n=Ebe(this.childProcess||this.worker);if(this.killProcess(e),r!==void 0&&(r===0||isFinite(r))){let i=setTimeout(()=>{this.hasProcessExited()||this.killProcess("SIGKILL")},r);await n,clearTimeout(i)}await n}async initChild(){let e=new Promise((r,n)=>{let i=o=>{if(Object.values(Fh.ParentCommand).includes(o.cmd)){if(o.cmd===Fh.ParentCommand.InitCompleted)r();else if(o.cmd===Fh.ParentCommand.InitFailed){let a=new Error;a.stack=o.err.stack,a.message=o.err.message,n(a)}this.off("message",i),this.off("close",s)}},s=(o,a)=>{o>128&&(o-=128);let c=vbe[o]||`Unknown exit code ${o}`;n(new Error(`Error initializing child: ${c} and signal ${a}`)),this.off("message",i),this.off("close",s)};this.on("message",i),this.on("close",s)});await this.send({cmd:Fh.ChildCommand.Init,value:this.processFile}),await e}hasProcessExited(){return!!(this.exitCode!==null||this.signalCode)}};$h.Child=JI;function Ebe(t){return new Promise(e=>{t.once("exit",()=>e())})}var Sbe=async()=>new Promise(t=>{let e=(0,ybe.createServer)();e.listen(0,()=>{let{port:r}=e.address();e.close(()=>t(r))})}),xbe=async t=>{let e=[],r=[];for(let n=0;n<t.length;n++){let i=t[n];if(i.indexOf("--inspect")===-1)e.push(i);else{let s=i.split("=")[0],o=await Sbe();r.push(`${s}=${o}`)}}return e.concat(r)}});var HI=h((Uh,BI)=>{"use strict";Object.defineProperty(Uh,"__esModule",{value:!0});Uh.ChildPool=void 0;var k8=require("path"),wbe=zI(),_be=3e4,Ibe=()=>typeof require=="function"&&typeof BI=="object"&&typeof BI.exports=="object",GI=class{constructor({mainFile:e=Ibe()?k8.join(process.cwd(),"dist/cjs/classes/main.js"):k8.join(process.cwd(),"dist/esm/classes/main.js"),useWorkerThreads:r,workerForkOptions:n,workerThreadsOptions:i}){this.retained={},this.free={},this.opts={mainFile:e,useWorkerThreads:r,workerForkOptions:n,workerThreadsOptions:i}}async retain(e){let r=this.getFree(e).pop();if(r)return this.retained[r.pid]=r,r;r=new wbe.Child(this.opts.mainFile,e,{useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),r.on("exit",this.remove.bind(this,r));try{if(await r.init(),r.exitCode!==null||r.signalCode!==null)throw new Error("Child exited before it could be retained");return this.retained[r.pid]=r,r}catch(n){if(console.error(n),r.childProcess||r.worker)try{this.kill(r,"SIGKILL").catch(i=>{console.error("Failed to kill child after init error:",i)})}catch(i){console.error("Failed to kill child after init error:",i)}throw n}}release(e){delete this.retained[e.pid],this.getFree(e.processFile).push(e)}remove(e){delete this.retained[e.pid];let r=this.getFree(e.processFile),n=r.indexOf(e);n>-1&&r.splice(n,1)}async kill(e,r="SIGKILL"){return this.remove(e),e.kill(r,_be)}async clean(){let e=Object.values(this.retained).concat(this.getAllFree());this.retained={},this.free={},await Promise.all(e.map(r=>this.kill(r,"SIGTERM")))}getFree(e){return this.free[e]=this.free[e]||[]}getAllFree(){return Object.values(this.free).reduce((e,r)=>e.concat(r),[])}};Uh.ChildPool=GI});var R8=h((AFe,A8)=>{var{EventEmitter:Tbe}=require("events"),Jh=class{constructor(){this.eventEmitter=new Tbe,this.onabort=null,this.aborted=!1,this.reason=void 0}toString(){return"[object AbortSignal]"}get[Symbol.toStringTag](){return"AbortSignal"}removeEventListener(e,r){this.eventEmitter.removeListener(e,r)}addEventListener(e,r){this.eventEmitter.on(e,r)}dispatchEvent(e){let r={type:e,target:this},n=`on${e}`;typeof this[n]=="function"&&this[n](r),this.eventEmitter.emit(e,r)}throwIfAborted(){if(this.aborted)throw this.reason}static abort(e){let r=new fd;return r.abort(),r.signal}static timeout(e){let r=new fd;return setTimeout(()=>r.abort(new Error("TimeoutError")),e),r.signal}},fd=class{constructor(){this.signal=new Jh}abort(e){this.signal.aborted||(this.signal.aborted=!0,e?this.signal.reason=e:this.signal.reason=new Error("AbortError"),this.signal.dispatchEvent("abort"))}toString(){return"[object AbortController]"}get[Symbol.toStringTag](){return"AbortController"}};A8.exports={AbortController:fd,AbortSignal:Jh}});var Gh=h(zh=>{"use strict";Object.defineProperty(zh,"__esModule",{value:!0});zh.AbortController=void 0;var kbe=R8(),VI;globalThis.AbortController?VI=globalThis.AbortController:VI=kbe.AbortController;var WI=class extends VI{};zh.AbortController=WI});var C8=h(Bh=>{"use strict";Object.defineProperty(Bh,"__esModule",{value:!0});Bh.defaults=void 0;var Abe=/^(?:0|[1-9]\d*)$/;function Rbe(t){return t==null}function O8(t,e){return t===e||Number.isNaN(t)&&Number.isNaN(e)}function Obe(t){return Number.isSafeInteger(t)&&t>=0}function Cbe(t){return t!=null&&typeof t!="function"&&Obe(t.length)}function jbe(t){return t!==null&&(typeof t=="object"||typeof t=="function")}function Pbe(t,e=Number.MAX_SAFE_INTEGER){switch(typeof t){case"number":return Number.isInteger(t)&&t>=0&&t<e;case"symbol":return!1;case"string":return Abe.test(t)}}function Kbe(t,e,r){return jbe(r)&&(typeof e=="number"&&Cbe(r)&&Pbe(e)&&e<r.length||typeof e=="string"&&e in r)?O8(r[e],t):!1}function Dbe(t,...e){t=Object(t);let r=Object.prototype,n=e.length,i=n>2?e[2]:void 0;i&&Kbe(e[0],e[1],i)&&(n=1);for(let s=0;s<n;s++){if(Rbe(e[s]))continue;let o=e[s];for(let a in o){let c=t[a];(c===void 0||!r.hasOwnProperty.call(t,a)&&O8(c,r[a]))&&(t[a]=o[a])}}return t}Bh.defaults=Dbe});var j8=h(Hh=>{"use strict";Object.defineProperty(Hh,"__esModule",{value:!0});Hh.isArguments=void 0;function Mbe(t){return t==null?t===void 0?"[object Undefined]":"[object Null]":Object.prototype.toString.call(t)}function Nbe(t){return t!==null&&typeof t=="object"&&Mbe(t)==="[object Arguments]"}Hh.isArguments=Nbe});var Vh=h(ni=>{"use strict";var Lbe=ni&&ni.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r),Object.defineProperty(t,n,{enumerable:!0,get:function(){return e[r]}})}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),P8=ni&&ni.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&Lbe(e,t,r)};Object.defineProperty(ni,"__esModule",{value:!0});ni.noop=void 0;function qbe(){}ni.noop=qbe;P8(C8(),ni);P8(j8(),ni)});var M8=h(Ui=>{"use strict";Object.defineProperty(Ui,"__esModule",{value:!0});Ui.genRedactedString=Ui.getStringValue=Ui.MAX_ARGUMENT_LENGTH=void 0;var Fbe=Tr(),YI=200;Ui.MAX_ARGUMENT_LENGTH=YI;var $be="ioredis";function K8(t){if(t!==null)switch(typeof t){case"boolean":return;case"number":return;case"object":if(Buffer.isBuffer(t))return t.toString("hex");if(Array.isArray(t))return t.join(",");try{return JSON.stringify(t)}catch{return}case"string":return t}}Ui.getStringValue=K8;function D8(t,e){let{length:r}=t;return r<=e?t:t.slice(0,e)+' ... <REDACTED full-length="'+r+'">'}Ui.genRedactedString=D8;function Ube(t){let e=(0,Fbe.default)(`${$be}:${t}`);function r(...n){if(e.enabled){for(let i=1;i<n.length;i++){let s=K8(n[i]);typeof s=="string"&&s.length>YI&&(n[i]=D8(s,YI))}return e.apply(null,n)}}return Object.defineProperties(r,{namespace:{get(){return e.namespace}},enabled:{get(){return e.enabled}},destroy:{get(){return e.destroy}},log:{get(){return e.log},set(n){e.log=n}}}),r}Ui.default=Ube});var L8=h(QI=>{"use strict";Object.defineProperty(QI,"__esModule",{value:!0});var N8=`-----BEGIN CERTIFICATE-----
MIIDTzCCAjegAwIBAgIJAKSVpiDswLcwMA0GCSqGSIb3DQEBBQUAMD4xFjAUBgNV
BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTAeFw0xMzEwMDExMjE0NTVaFw0yMzA5MjkxMjE0NTVaMD4xFjAUBgNV
BAoMDUdhcmFudGlhIERhdGExJDAiBgNVBAMMG1NTTCBDZXJ0aWZpY2F0aW9uIEF1
dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALZqkh/DczWP
JnxnHLQ7QL0T4B4CDKWBKCcisriGbA6ZePWVNo4hfKQC6JrzfR+081NeD6VcWUiz
rmd+jtPhIY4c+WVQYm5PKaN6DT1imYdxQw7aqO5j2KUCEh/cznpLxeSHoTxlR34E
QwF28Wl3eg2vc5ct8LjU3eozWVk3gb7alx9mSA2SgmuX5lEQawl++rSjsBStemY2
BDwOpAMXIrdEyP/cVn8mkvi/BDs5M5G+09j0gfhyCzRWMQ7Hn71u1eolRxwVxgi3
TMn+/vTaFSqxKjgck6zuAYjBRPaHe7qLxHNr1So/Mc9nPy+3wHebFwbIcnUojwbp
4nctkWbjb2cCAwEAAaNQME4wHQYDVR0OBBYEFP1whtcrydmW3ZJeuSoKZIKjze3w
MB8GA1UdIwQYMBaAFP1whtcrydmW3ZJeuSoKZIKjze3wMAwGA1UdEwQFMAMBAf8w
DQYJKoZIhvcNAQEFBQADggEBAG2erXhwRAa7+ZOBs0B6X57Hwyd1R4kfmXcs0rta
lbPpvgULSiB+TCbf3EbhJnHGyvdCY1tvlffLjdA7HJ0PCOn+YYLBA0pTU/dyvrN6
Su8NuS5yubnt9mb13nDGYo1rnt0YRfxN+8DM3fXIVr038A30UlPX2Ou1ExFJT0MZ
uFKY6ZvLdI6/1cbgmguMlAhM+DhKyV6Sr5699LM3zqeI816pZmlREETYkGr91q7k
BpXJu/dtHaGxg1ZGu6w/PCsYGUcECWENYD4VQPd8N32JjOfu6vEgoEAwfPP+3oGp
Z4m3ewACcWOAenqflb+cQYC4PsF7qbXDmRaWrbKntOlZ3n0=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIGMTCCBBmgAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwajELMAkGA1UEBhMCVVMx
CzAJBgNVBAgMAkNBMQswCQYDVQQHDAJDQTESMBAGA1UECgwJUmVkaXNMYWJzMS0w
KwYDVQQDDCRSZWRpc0xhYnMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN
MTgwMjI1MTUzNzM3WhcNMjgwMjIzMTUzNzM3WjBfMQswCQYDVQQGEwJVUzELMAkG
A1UECAwCQ0ExEjAQBgNVBAoMCVJlZGlzTGFiczEvMC0GA1UEAwwmUkNQIEludGVy
bWVkaWF0ZSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUA
A4ICDwAwggIKAoICAQDf9dqbxc8Bq7Ctq9rWcxrGNKKHivqLAFpPq02yLPx6fsOv
Tq7GsDChAYBBc4v7Y2Ap9RD5Vs3dIhEANcnolf27QwrG9RMnnvzk8pCvp1o6zSU4
VuOE1W66/O1/7e2rVxyrnTcP7UgK43zNIXu7+tiAqWsO92uSnuMoGPGpeaUm1jym
hjWKtkAwDFSqvHY+XL5qDVBEjeUe+WHkYUg40cAXjusAqgm2hZt29c2wnVrxW25W
P0meNlzHGFdA2AC5z54iRiqj57dTfBTkHoBczQxcyw6hhzxZQ4e5I5zOKjXXEhZN
r0tA3YC14CTabKRus/JmZieyZzRgEy2oti64tmLYTqSlAD78pRL40VNoaSYetXLw
hhNsXCHgWaY6d5bLOc/aIQMAV5oLvZQKvuXAF1IDmhPA+bZbpWipp0zagf1P1H3s
UzsMdn2KM0ejzgotbtNlj5TcrVwpmvE3ktvUAuA+hi3FkVx1US+2Gsp5x4YOzJ7u
P1WPk6ShF0JgnJH2ILdj6kttTWwFzH17keSFICWDfH/+kM+k7Y1v3EXMQXE7y0T9
MjvJskz6d/nv+sQhY04xt64xFMGTnZjlJMzfQNi7zWFLTZnDD0lPowq7l3YiPoTT
t5Xky83lu0KZsZBo0WlWaDG00gLVdtRgVbcuSWxpi5BdLb1kRab66JptWjxwXQID
AQABo4HrMIHoMDoGA1UdHwQzMDEwL6AtoCuGKWh0dHBzOi8vcmwtY2Etc2VydmVy
LnJlZGlzbGFicy5jb20vdjEvY3JsMEYGCCsGAQUFBwEBBDowODA2BggrBgEFBQcw
AYYqaHR0cHM6Ly9ybC1jYS1zZXJ2ZXIucmVkaXNsYWJzLmNvbS92MS9vY3NwMB0G
A1UdDgQWBBQHar5OKvQUpP2qWt6mckzToeCOHDAfBgNVHSMEGDAWgBQi42wH6hM4
L2sujEvLM0/u8lRXTzASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIB
hjANBgkqhkiG9w0BAQsFAAOCAgEAirEn/iTsAKyhd+pu2W3Z5NjCko4NPU0EYUbr
AP7+POK2rzjIrJO3nFYQ/LLuC7KCXG+2qwan2SAOGmqWst13Y+WHp44Kae0kaChW
vcYLXXSoGQGC8QuFSNUdaeg3RbMDYFT04dOkqufeWVccoHVxyTSg9eD8LZuHn5jw
7QDLiEECBmIJHk5Eeo2TAZrx4Yx6ufSUX5HeVjlAzqwtAqdt99uCJ/EL8bgpWbe+
XoSpvUv0SEC1I1dCAhCKAvRlIOA6VBcmzg5Am12KzkqTul12/VEFIgzqu0Zy2Jbc
AUPrYVu/+tOGXQaijy7YgwH8P8n3s7ZeUa1VABJHcxrxYduDDJBLZi+MjheUDaZ1
jQRHYevI2tlqeSBqdPKG4zBY5lS0GiAlmuze5oENt0P3XboHoZPHiqcK3VECgTVh
/BkJcuudETSJcZDmQ8YfoKfBzRQNg2sv/hwvUv73Ss51Sco8GEt2lD8uEdib1Q6z
zDT5lXJowSzOD5ZA9OGDjnSRL+2riNtKWKEqvtEG3VBJoBzu9GoxbAc7wIZLxmli
iF5a/Zf5X+UXD3s4TMmy6C4QZJpAA2egsSQCnraWO2ULhh7iXMysSkF/nzVfZn43
iqpaB8++9a37hWq14ZmOv0TJIDz//b2+KC4VFXWQ5W5QC6whsjT+OlG4p5ZYG0jo
616pxqo=
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFujCCA6KgAwIBAgIJAJ1aTT1lu2ScMA0GCSqGSIb3DQEBCwUAMGoxCzAJBgNV
BAYTAlVTMQswCQYDVQQIDAJDQTELMAkGA1UEBwwCQ0ExEjAQBgNVBAoMCVJlZGlz
TGFiczEtMCsGA1UEAwwkUmVkaXNMYWJzIFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9y
aXR5MB4XDTE4MDIyNTE1MjA0MloXDTM4MDIyMDE1MjA0MlowajELMAkGA1UEBhMC
VVMxCzAJBgNVBAgMAkNBMQswCQYDVQQHDAJDQTESMBAGA1UECgwJUmVkaXNMYWJz
MS0wKwYDVQQDDCRSZWRpc0xhYnMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkw
ggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDLEjXy7YrbN5Waau5cd6g1
G5C2tMmeTpZ0duFAPxNU4oE3RHS5gGiok346fUXuUxbZ6QkuzeN2/2Z+RmRcJhQY
Dm0ZgdG4x59An1TJfnzKKoWj8ISmoHS/TGNBdFzXV7FYNLBuqZouqePI6ReC6Qhl
pp45huV32Q3a6IDrrvx7Wo5ZczEQeFNbCeCOQYNDdTmCyEkHqc2AGo8eoIlSTutT
ULOC7R5gzJVTS0e1hesQ7jmqHjbO+VQS1NAL4/5K6cuTEqUl+XhVhPdLWBXJQ5ag
54qhX4v+ojLzeU1R/Vc6NjMvVtptWY6JihpgplprN0Yh2556ewcXMeturcKgXfGJ
xeYzsjzXerEjrVocX5V8BNrg64NlifzTMKNOOv4fVZszq1SIHR8F9ROrqiOdh8iC
JpUbLpXH9hWCSEO6VRMB2xJoKu3cgl63kF30s77x7wLFMEHiwsQRKxooE1UhgS9K
2sO4TlQ1eWUvFvHSTVDQDlGQ6zu4qjbOpb3Q8bQwoK+ai2alkXVR4Ltxe9QlgYK3
StsnPhruzZGA0wbXdpw0bnM+YdlEm5ffSTpNIfgHeaa7Dtb801FtA71ZlH7A6TaI
SIQuUST9EKmv7xrJyx0W1pGoPOLw5T029aTjnICSLdtV9bLwysrLhIYG5bnPq78B
cS+jZHFGzD7PUVGQD01nOQIDAQABo2MwYTAdBgNVHQ4EFgQUIuNsB+oTOC9rLoxL
yzNP7vJUV08wHwYDVR0jBBgwFoAUIuNsB+oTOC9rLoxLyzNP7vJUV08wDwYDVR0T
AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcNAQELBQADggIBAHfg
z5pMNUAKdMzK1aS1EDdK9yKz4qicILz5czSLj1mC7HKDRy8cVADUxEICis++CsCu
rYOvyCVergHQLREcxPq4rc5Nq1uj6J6649NEeh4WazOOjL4ZfQ1jVznMbGy+fJm3
3Hoelv6jWRG9iqeJZja7/1s6YC6bWymI/OY1e4wUKeNHAo+Vger7MlHV+RuabaX+
hSJ8bJAM59NCM7AgMTQpJCncrcdLeceYniGy5Q/qt2b5mJkQVkIdy4TPGGB+AXDJ
D0q3I/JDRkDUFNFdeW0js7fHdsvCR7O3tJy5zIgEV/o/BCkmJVtuwPYOrw/yOlKj
TY/U7ATAx9VFF6/vYEOMYSmrZlFX+98L6nJtwDqfLB5VTltqZ4H/KBxGE3IRSt9l
FXy40U+LnXzhhW+7VBAvyYX8GEXhHkKU8Gqk1xitrqfBXY74xKgyUSTolFSfFVgj
mcM/X4K45bka+qpkj7Kfv/8D4j6aZekwhN2ly6hhC1SmQ8qjMjpG/mrWOSSHZFmf
ybu9iD2AYHeIOkshIl6xYIa++Q/00/vs46IzAbQyriOi0XxlSMMVtPx0Q3isp+ji
n8Mq9eOuxYOEQ4of8twUkUDd528iwGtEdwf0Q01UyT84S62N8AySl1ZBKXJz6W4F
UhWfa/HQYOAPDdEjNgnVwLI23b8t0TozyCWw7q8h
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIEjzCCA3egAwIBAgIQe55B/ALCKJDZtdNT8kD6hTANBgkqhkiG9w0BAQsFADBM
MSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xv
YmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjAeFw0yMjAxMjYxMjAwMDBaFw0y
NTAxMjYwMDAwMDBaMFgxCzAJBgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWdu
IG52LXNhMS4wLAYDVQQDEyVHbG9iYWxTaWduIEF0bGFzIFIzIE9WIFRMUyBDQSAy
MDIyIFEyMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmGmg1LW9b7Lf
8zDD83yBDTEkt+FOxKJZqF4veWc5KZsQj9HfnUS2e5nj/E+JImlGPsQuoiosLuXD
BVBNAMcUFa11buFMGMeEMwiTmCXoXRrXQmH0qjpOfKgYc5gHG3BsRGaRrf7VR4eg
ofNMG9wUBw4/g/TT7+bQJdA4NfE7Y4d5gEryZiBGB/swaX6Jp/8MF4TgUmOWmalK
dZCKyb4sPGQFRTtElk67F7vU+wdGcrcOx1tDcIB0ncjLPMnaFicagl+daWGsKqTh
counQb6QJtYHa91KvCfKWocMxQ7OIbB5UARLPmC4CJ1/f8YFm35ebfzAeULYdGXu
jE9CLor0OwIDAQABo4IBXzCCAVswDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQG
CCsGAQUFBwMBBggrBgEFBQcDAjASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW
BBSH5Zq7a7B/t95GfJWkDBpA8HHqdjAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpj
move4t0bvDB7BggrBgEFBQcBAQRvMG0wLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
Mi5nbG9iYWxzaWduLmNvbS9yb290cjMwOwYIKwYBBQUHMAKGL2h0dHA6Ly9zZWN1
cmUuZ2xvYmFsc2lnbi5jb20vY2FjZXJ0L3Jvb3QtcjMuY3J0MDYGA1UdHwQvMC0w
K6ApoCeGJWh0dHA6Ly9jcmwuZ2xvYmFsc2lnbi5jb20vcm9vdC1yMy5jcmwwIQYD
VR0gBBowGDAIBgZngQwBAgIwDAYKKwYBBAGgMgoBAjANBgkqhkiG9w0BAQsFAAOC
AQEAKRic9/f+nmhQU/wz04APZLjgG5OgsuUOyUEZjKVhNGDwxGTvKhyXGGAMW2B/
3bRi+aElpXwoxu3pL6fkElbX3B0BeS5LoDtxkyiVEBMZ8m+sXbocwlPyxrPbX6mY
0rVIvnuUeBH8X0L5IwfpNVvKnBIilTbcebfHyXkPezGwz7E1yhUULjJFm2bt0SdX
y+4X/WeiiYIv+fTVgZZgl+/2MKIsu/qdBJc3f3TvJ8nz+Eax1zgZmww+RSQWeOj3
15Iw6Z5FX+NwzY/Ab+9PosR5UosSeq+9HhtaxZttXG1nVh+avYPGYddWmiMT90J5
ZgKnO/Fx2hBgTxhOTMYaD312kg==
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
WD9f
-----END CERTIFICATE-----`,Jbe={RedisCloudFixed:{ca:N8},RedisCloudFlexible:{ca:N8}};QI.default=Jbe});var gt=h(ae=>{"use strict";Object.defineProperty(ae,"__esModule",{value:!0});ae.noop=ae.isArguments=ae.defaults=ae.Debug=ae.getPackageMeta=ae.zipMap=ae.CONNECTION_CLOSED_ERROR_MSG=ae.shuffle=ae.sample=ae.resolveTLSProfile=ae.parseURL=ae.optimizeErrorStack=ae.toArg=ae.convertMapToArray=ae.convertObjectToArray=ae.timeout=ae.packObject=ae.isInt=ae.wrapMultiResult=ae.convertBufferToString=void 0;var zbe=require("fs"),Gbe=require("path"),md=Vh();Object.defineProperty(ae,"defaults",{enumerable:!0,get:function(){return md.defaults}});Object.defineProperty(ae,"isArguments",{enumerable:!0,get:function(){return md.isArguments}});Object.defineProperty(ae,"noop",{enumerable:!0,get:function(){return md.noop}});var Bbe=M8();ae.Debug=Bbe.default;var Hbe=L8();function F8(t,e){if(t instanceof Buffer)return t.toString(e);if(Array.isArray(t)){let r=t.length,n=Array(r);for(let i=0;i<r;++i)n[i]=t[i]instanceof Buffer&&e==="utf8"?t[i].toString():F8(t[i],e);return n}return t}ae.convertBufferToString=F8;function Vbe(t){if(!t)return null;let e=[],r=t.length;for(let n=0;n<r;++n){let i=t[n];i instanceof Error?e.push([i]):e.push([null,i])}return e}ae.wrapMultiResult=Vbe;function $8(t){let e=parseFloat(t);return!isNaN(t)&&(e|0)===e}ae.isInt=$8;function Wbe(t){let e={},r=t.length;for(let n=1;n<r;n+=2)e[t[n-1]]=t[n];return e}ae.packObject=Wbe;function Ybe(t,e){let r=null,n=function(){r&&(clearTimeout(r),r=null,t.apply(this,arguments))};return r=setTimeout(n,e,new Error("timeout")),n}ae.timeout=Ybe;function Qbe(t){let e=[],r=Object.keys(t);for(let n=0,i=r.length;n<i;n++)e.push(r[n],t[r[n]]);return e}ae.convertObjectToArray=Qbe;function Xbe(t){let e=[],r=0;return t.forEach(function(n,i){e[r]=i,e[r+1]=n,r+=2}),e}ae.convertMapToArray=Xbe;function Zbe(t){return t===null||typeof t>"u"?"":String(t)}ae.toArg=Zbe;function eve(t,e,r){let n=e.split(`
`),i="",s;for(s=1;s<n.length&&n[s].indexOf(r)!==-1;++s);for(let o=s;o<n.length;++o)i+=`
`+n[o];if(t.stack){let o=t.stack.indexOf(`
`);t.stack=t.stack.slice(0,o)+i}return t}ae.optimizeErrorStack=eve;function tve(t){if($8(t))return{port:t};let e=t,r=/^rediss?:\/\//i.test(e),n=e.startsWith("//");if(e[0]==="/"&&!n){let a=e.indexOf("?"),c={path:a===-1?e:e.slice(0,a)};if(a!==-1){let l={};new URLSearchParams(e.slice(a+1)).forEach((d,p)=>{l[p]=q8(p,d)}),(0,md.defaults)(c,l)}return c}let i;r?i=new URL(e):n?i=new URL("redis:"+e):i=new URL("redis://"+e);let s={};i.searchParams.forEach((a,c)=>{s[c]=q8(c,a)});let o={};return(i.username||i.password)&&(o.username=decodeURIComponent(i.username),o.password=decodeURIComponent(i.password)),i.pathname&&i.pathname!=="/"&&(r||n?i.pathname.length>1&&(o.db=i.pathname.slice(1)):o.path=i.pathname),i.hostname&&(o.host=i.hostname.replace(/^\[|\]$/g,"")),i.port&&(o.port=i.port),(0,md.defaults)(o,s),o}ae.parseURL=tve;function q8(t,e){if(t==="family"){let r=Number.parseInt(e,10);if(!Number.isNaN(r))return r}return e}function rve(t){let e=t?.tls;typeof e=="string"&&(e={profile:e});let r=Hbe.default[e?.profile];return r&&(e=Object.assign({},r,e),delete e.profile,t=Object.assign({},t,{tls:e})),t}ae.resolveTLSProfile=rve;function nve(t,e=0){let r=t.length;return e>=r?null:t[e+Math.floor(Math.random()*(r-e))]}ae.sample=nve;function ive(t){let e=t.length;for(;e>0;){let r=Math.floor(Math.random()*e);e--,[t[e],t[r]]=[t[r],t[e]]}return t}ae.shuffle=ive;ae.CONNECTION_CLOSED_ERROR_MSG="Connection is closed.";function sve(t,e){let r=new Map;return t.forEach((n,i)=>{r.set(n,e[i])}),r}ae.zipMap=sve;var Uc=null;async function ove(){if(Uc)return Uc;try{let t=(0,Gbe.resolve)(__CM_DIRNAME__,"..","..","package.json"),e=await zbe.promises.readFile(t,"utf8");return Uc={version:JSON.parse(e).version},Uc}catch{return Uc={version:"error-fetching-version"},Uc}}ae.getPackageMeta=ove});var zo=h(Wh=>{"use strict";Object.defineProperty(Wh,"__esModule",{value:!0});Wh.ConnectionClosedError=void 0;var XI=class extends Error{constructor(e,r){super(e??"Connection is closed"),this.cause=r,this.name="ConnectionClosedError",Object.setPrototypeOf(this,new.target.prototype)}};Wh.ConnectionClosedError=XI});var Jc=h((NFe,U8)=>{"use strict";var ave="2.0.0",cve=Number.MAX_SAFE_INTEGER||9007199254740991,lve=16,uve=250,dve=["major","premajor","minor","preminor","patch","prepatch","prerelease"];U8.exports={MAX_LENGTH:256,MAX_SAFE_COMPONENT_LENGTH:lve,MAX_SAFE_BUILD_LENGTH:uve,MAX_SAFE_INTEGER:cve,RELEASE_TYPES:dve,SEMVER_SPEC_VERSION:ave,FLAG_INCLUDE_PRERELEASE:1,FLAG_LOOSE:2}});var hd=h((LFe,J8)=>{"use strict";var pve=typeof process=="object"&&process.env&&process.env.NODE_DEBUG&&/\bsemver\b/i.test(process.env.NODE_DEBUG)?(...t)=>console.error("SEMVER",...t):()=>{};J8.exports=pve});var zc=h((ii,z8)=>{"use strict";var{MAX_SAFE_COMPONENT_LENGTH:ZI,MAX_SAFE_BUILD_LENGTH:fve,MAX_LENGTH:mve}=Jc(),hve=hd();ii=z8.exports={};var yve=ii.re=[],gve=ii.safeRe=[],F=ii.src=[],bve=ii.safeSrc=[],$=ii.t={},vve=0,e1="[a-zA-Z0-9-]",Eve=[["\\s",1],["\\d",mve],[e1,fve]],Sve=t=>{for(let[e,r]of Eve)t=t.split(`${e}*`).join(`${e}{0,${r}}`).split(`${e}+`).join(`${e}{1,${r}}`);return t},ie=(t,e,r)=>{let n=Sve(e),i=vve++;hve(t,i,e),$[t]=i,F[i]=e,bve[i]=n,yve[i]=new RegExp(e,r?"g":void 0),gve[i]=new RegExp(n,r?"g":void 0)};ie("NUMERICIDENTIFIER","0|[1-9]\\d*");ie("NUMERICIDENTIFIERLOOSE","\\d+");ie("NONNUMERICIDENTIFIER",`\\d*[a-zA-Z-]${e1}*`);ie("MAINVERSION",`(${F[$.NUMERICIDENTIFIER]})\\.(${F[$.NUMERICIDENTIFIER]})\\.(${F[$.NUMERICIDENTIFIER]})`);ie("MAINVERSIONLOOSE",`(${F[$.NUMERICIDENTIFIERLOOSE]})\\.(${F[$.NUMERICIDENTIFIERLOOSE]})\\.(${F[$.NUMERICIDENTIFIERLOOSE]})`);ie("PRERELEASEIDENTIFIER",`(?:${F[$.NONNUMERICIDENTIFIER]}|${F[$.NUMERICIDENTIFIER]})`);ie("PRERELEASEIDENTIFIERLOOSE",`(?:${F[$.NONNUMERICIDENTIFIER]}|${F[$.NUMERICIDENTIFIERLOOSE]})`);ie("PRERELEASE",`(?:-(${F[$.PRERELEASEIDENTIFIER]}(?:\\.${F[$.PRERELEASEIDENTIFIER]})*))`);ie("PRERELEASELOOSE",`(?:-?(${F[$.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${F[$.PRERELEASEIDENTIFIERLOOSE]})*))`);ie("BUILDIDENTIFIER",`${e1}+`);ie("BUILD",`(?:\\+(${F[$.BUILDIDENTIFIER]}(?:\\.${F[$.BUILDIDENTIFIER]})*))`);ie("FULLPLAIN",`v?${F[$.MAINVERSION]}${F[$.PRERELEASE]}?${F[$.BUILD]}?`);ie("FULL",`^${F[$.FULLPLAIN]}$`);ie("LOOSEPLAIN",`[v=\\s]*${F[$.MAINVERSIONLOOSE]}${F[$.PRERELEASELOOSE]}?${F[$.BUILD]}?`);ie("LOOSE",`^${F[$.LOOSEPLAIN]}$`);ie("GTLT","((?:<|>)?=?)");ie("XRANGEIDENTIFIERLOOSE",`${F[$.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`);ie("XRANGEIDENTIFIER",`${F[$.NUMERICIDENTIFIER]}|x|X|\\*`);ie("XRANGEPLAIN",`[v=\\s]*(${F[$.XRANGEIDENTIFIER]})(?:\\.(${F[$.XRANGEIDENTIFIER]})(?:\\.(${F[$.XRANGEIDENTIFIER]})(?:${F[$.PRERELEASE]})?${F[$.BUILD]}?)?)?`);ie("XRANGEPLAINLOOSE",`[v=\\s]*(${F[$.XRANGEIDENTIFIERLOOSE]})(?:\\.(${F[$.XRANGEIDENTIFIERLOOSE]})(?:\\.(${F[$.XRANGEIDENTIFIERLOOSE]})(?:${F[$.PRERELEASELOOSE]})?${F[$.BUILD]}?)?)?`);ie("XRANGE",`^${F[$.GTLT]}\\s*${F[$.XRANGEPLAIN]}$`);ie("XRANGELOOSE",`^${F[$.GTLT]}\\s*${F[$.XRANGEPLAINLOOSE]}$`);ie("COERCEPLAIN",`(^|[^\\d])(\\d{1,${ZI}})(?:\\.(\\d{1,${ZI}}))?(?:\\.(\\d{1,${ZI}}))?`);ie("COERCE",`${F[$.COERCEPLAIN]}(?:$|[^\\d])`);ie("COERCEFULL",F[$.COERCEPLAIN]+`(?:${F[$.PRERELEASE]})?(?:${F[$.BUILD]})?(?:$|[^\\d])`);ie("COERCERTL",F[$.COERCE],!0);ie("COERCERTLFULL",F[$.COERCEFULL],!0);ie("LONETILDE","(?:~>?)");ie("TILDETRIM",`(\\s*)${F[$.LONETILDE]}\\s+`,!0);ii.tildeTrimReplace="$1~";ie("TILDE",`^${F[$.LONETILDE]}${F[$.XRANGEPLAIN]}$`);ie("TILDELOOSE",`^${F[$.LONETILDE]}${F[$.XRANGEPLAINLOOSE]}$`);ie("LONECARET","(?:\\^)");ie("CARETTRIM",`(\\s*)${F[$.LONECARET]}\\s+`,!0);ii.caretTrimReplace="$1^";ie("CARET",`^${F[$.LONECARET]}${F[$.XRANGEPLAIN]}$`);ie("CARETLOOSE",`^${F[$.LONECARET]}${F[$.XRANGEPLAINLOOSE]}$`);ie("COMPARATORLOOSE",`^${F[$.GTLT]}\\s*(${F[$.LOOSEPLAIN]})$|^$`);ie("COMPARATOR",`^${F[$.GTLT]}\\s*(${F[$.FULLPLAIN]})$|^$`);ie("COMPARATORTRIM",`(\\s*)${F[$.GTLT]}\\s*(${F[$.LOOSEPLAIN]}|${F[$.XRANGEPLAIN]})`,!0);ii.comparatorTrimReplace="$1$2$3";ie("HYPHENRANGE",`^\\s*(${F[$.XRANGEPLAIN]})\\s+-\\s+(${F[$.XRANGEPLAIN]})\\s*$`);ie("HYPHENRANGELOOSE",`^\\s*(${F[$.XRANGEPLAINLOOSE]})\\s+-\\s+(${F[$.XRANGEPLAINLOOSE]})\\s*$`);ie("STAR","(<|>)?=?\\s*\\*");ie("GTE0","^\\s*>=\\s*0\\.0\\.0\\s*$");ie("GTE0PRE","^\\s*>=\\s*0\\.0\\.0-0\\s*$")});var Yh=h((qFe,G8)=>{"use strict";var xve=Object.freeze({loose:!0}),wve=Object.freeze({}),_ve=t=>t?typeof t!="object"?xve:t:wve;G8.exports=_ve});var t1=h((FFe,V8)=>{"use strict";var B8=/^[0-9]+$/,H8=(t,e)=>{if(typeof t=="number"&&typeof e=="number")return t===e?0:t<e?-1:1;let r=B8.test(t),n=B8.test(e);return r&&n&&(t=+t,e=+e),t===e?0:r&&!n?-1:n&&!r?1:t<e?-1:1},Ive=(t,e)=>H8(e,t);V8.exports={compareIdentifiers:H8,rcompareIdentifiers:Ive}});var Gt=h(($Fe,Y8)=>{"use strict";var Qh=hd(),{MAX_LENGTH:W8,MAX_SAFE_INTEGER:Xh}=Jc(),{safeRe:Zh,t:ey}=zc(),Tve=Yh(),{compareIdentifiers:r1}=t1(),kve=(t,e)=>{let r=e.split(".");if(r.length>t.length)return!1;for(let n=0;n<r.length;n++)if(r1(t[n],r[n])!==0)return!1;return!0},n1=class t{constructor(e,r){if(r=Tve(r),e instanceof t){if(e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease)return e;e=e.version}else if(typeof e!="string")throw new TypeError(`Invalid version. Must be a string. Got type "${typeof e}".`);if(e.length>W8)throw new TypeError(`version is longer than ${W8} characters`);Qh("SemVer",e,r),this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease;let n=e.trim().match(r.loose?Zh[ey.LOOSE]:Zh[ey.FULL]);if(!n)throw new TypeError(`Invalid Version: ${e}`);if(this.raw=e,this.major=+n[1],this.minor=+n[2],this.patch=+n[3],this.major>Xh||this.major<0)throw new TypeError("Invalid major version");if(this.minor>Xh||this.minor<0)throw new TypeError("Invalid minor version");if(this.patch>Xh||this.patch<0)throw new TypeError("Invalid patch version");n[4]?this.prerelease=n[4].split(".").map(i=>{if(/^[0-9]+$/.test(i)){let s=+i;if(s>=0&&s<Xh)return s}return i}):this.prerelease=[],this.build=n[5]?n[5].split("."):[],this.format()}format(){return this.version=`${this.major}.${this.minor}.${this.patch}`,this.prerelease.length&&(this.version+=`-${this.prerelease.join(".")}`),this.version}toString(){return this.version}compare(e){if(Qh("SemVer.compare",this.version,this.options,e),!(e instanceof t)){if(typeof e=="string"&&e===this.version)return 0;e=new t(e,this.options)}return e.version===this.version?0:this.compareMain(e)||this.comparePre(e)}compareMain(e){return e instanceof t||(e=new t(e,this.options)),this.major<e.major?-1:this.major>e.major?1:this.minor<e.minor?-1:this.minor>e.minor?1:this.patch<e.patch?-1:this.patch>e.patch?1:0}comparePre(e){if(e instanceof t||(e=new t(e,this.options)),this.prerelease.length&&!e.prerelease.length)return-1;if(!this.prerelease.length&&e.prerelease.length)return 1;if(!this.prerelease.length&&!e.prerelease.length)return 0;let r=0;do{let n=this.prerelease[r],i=e.prerelease[r];if(Qh("prerelease compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return r1(n,i)}while(++r)}compareBuild(e){e instanceof t||(e=new t(e,this.options));let r=0;do{let n=this.build[r],i=e.build[r];if(Qh("build compare",r,n,i),n===void 0&&i===void 0)return 0;if(i===void 0)return 1;if(n===void 0)return-1;if(n===i)continue;return r1(n,i)}while(++r)}inc(e,r,n){if(e.startsWith("pre")){if(!r&&n===!1)throw new Error("invalid increment argument: identifier is empty");if(r){let i=`-${r}`.match(this.options.loose?Zh[ey.PRERELEASELOOSE]:Zh[ey.PRERELEASE]);if(!i||i[1]!==r)throw new Error(`invalid identifier: ${r}`)}}switch(e){case"premajor":this.prerelease.length=0,this.patch=0,this.minor=0,this.major++,this.inc("pre",r,n);break;case"preminor":this.prerelease.length=0,this.patch=0,this.minor++,this.inc("pre",r,n);break;case"prepatch":this.prerelease.length=0,this.inc("patch",r,n),this.inc("pre",r,n);break;case"prerelease":this.prerelease.length===0&&this.inc("patch",r,n),this.inc("pre",r,n);break;case"release":if(this.prerelease.length===0)throw new Error(`version ${this.raw} is not a prerelease`);this.prerelease.length=0;break;case"major":(this.minor!==0||this.patch!==0||this.prerelease.length===0)&&this.major++,this.minor=0,this.patch=0,this.prerelease=[];break;case"minor":(this.patch!==0||this.prerelease.length===0)&&this.minor++,this.patch=0,this.prerelease=[];break;case"patch":this.prerelease.length===0&&this.patch++,this.prerelease=[];break;case"pre":{let i=Number(n)?1:0;if(this.prerelease.length===0)this.prerelease=[i];else{let s=this.prerelease.length;for(;--s>=0;)typeof this.prerelease[s]=="number"&&(this.prerelease[s]++,s=-2);if(s===-1){if(r===this.prerelease.join(".")&&n===!1)throw new Error("invalid increment argument: identifier already exists");this.prerelease.push(i)}}if(r){let s=[r,i];if(n===!1&&(s=[r]),kve(this.prerelease,r)){let o=this.prerelease[r.split(".").length];isNaN(o)&&(this.prerelease=s)}else this.prerelease=s}break}default:throw new Error(`invalid increment argument: ${e}`)}return this.raw=this.format(),this.build.length&&(this.raw+=`+${this.build.join(".")}`),this}};Y8.exports=n1});var Ks=h((UFe,X8)=>{"use strict";var Q8=Gt(),Ave=(t,e,r=!1)=>{if(t instanceof Q8)return t;try{return new Q8(t,e)}catch(n){if(!r)return null;throw n}};X8.exports=Ave});var eU=h((JFe,Z8)=>{"use strict";var Rve=Ks(),Ove=(t,e)=>{let r=Rve(t,e);return r?r.version:null};Z8.exports=Ove});var rU=h((zFe,tU)=>{"use strict";var Cve=Ks(),jve=(t,e)=>{let r=Cve(t.trim().replace(/^[=v]+/,""),e);return r?r.version:null};tU.exports=jve});var sU=h((GFe,iU)=>{"use strict";var nU=Gt(),Pve=(t,e,r,n,i)=>{typeof r=="string"&&(i=n,n=r,r=void 0);try{return new nU(t instanceof nU?t.version:t,r).inc(e,n,i).version}catch{return null}};iU.exports=Pve});var cU=h((BFe,aU)=>{"use strict";var oU=Ks(),Kve=(t,e)=>{let r=oU(t,null,!0),n=oU(e,null,!0),i=r.compare(n);if(i===0)return null;let s=i>0,o=s?r:n,a=s?n:r,c=!!o.prerelease.length;if(!!a.prerelease.length&&!c){if(!a.patch&&!a.minor)return"major";if(a.compareMain(o)===0)return a.minor&&!a.patch?"minor":"patch"}let u=c?"pre":"";return r.major!==n.major?u+"major":r.minor!==n.minor?u+"minor":r.patch!==n.patch?u+"patch":"prerelease"};aU.exports=Kve});var uU=h((HFe,lU)=>{"use strict";var Dve=Gt(),Mve=(t,e)=>new Dve(t,e).major;lU.exports=Mve});var pU=h((VFe,dU)=>{"use strict";var Nve=Gt(),Lve=(t,e)=>new Nve(t,e).minor;dU.exports=Lve});var mU=h((WFe,fU)=>{"use strict";var qve=Gt(),Fve=(t,e)=>new qve(t,e).patch;fU.exports=Fve});var yU=h((YFe,hU)=>{"use strict";var $ve=Ks(),Uve=(t,e)=>{let r=$ve(t,e);return r&&r.prerelease.length?r.prerelease:null};hU.exports=Uve});var un=h((QFe,bU)=>{"use strict";var gU=Gt(),Jve=(t,e,r)=>new gU(t,r).compare(new gU(e,r));bU.exports=Jve});var EU=h((XFe,vU)=>{"use strict";var zve=un(),Gve=(t,e,r)=>zve(e,t,r);vU.exports=Gve});var xU=h((ZFe,SU)=>{"use strict";var Bve=un(),Hve=(t,e)=>Bve(t,e,!0);SU.exports=Hve});var ty=h((e$e,_U)=>{"use strict";var wU=Gt(),Vve=(t,e,r)=>{let n=new wU(t,r),i=new wU(e,r);return n.compare(i)||n.compareBuild(i)};_U.exports=Vve});var TU=h((t$e,IU)=>{"use strict";var Wve=ty(),Yve=(t,e)=>t.sort((r,n)=>Wve(r,n,e));IU.exports=Yve});var AU=h((r$e,kU)=>{"use strict";var Qve=ty(),Xve=(t,e)=>t.sort((r,n)=>Qve(n,r,e));kU.exports=Xve});var yd=h((n$e,RU)=>{"use strict";var Zve=un(),e0e=(t,e,r)=>Zve(t,e,r)>0;RU.exports=e0e});var ry=h((i$e,OU)=>{"use strict";var t0e=un(),r0e=(t,e,r)=>t0e(t,e,r)<0;OU.exports=r0e});var i1=h((s$e,CU)=>{"use strict";var n0e=un(),i0e=(t,e,r)=>n0e(t,e,r)===0;CU.exports=i0e});var s1=h((o$e,jU)=>{"use strict";var s0e=un(),o0e=(t,e,r)=>s0e(t,e,r)!==0;jU.exports=o0e});var ny=h((a$e,PU)=>{"use strict";var a0e=un(),c0e=(t,e,r)=>a0e(t,e,r)>=0;PU.exports=c0e});var iy=h((c$e,KU)=>{"use strict";var l0e=un(),u0e=(t,e,r)=>l0e(t,e,r)<=0;KU.exports=u0e});var o1=h((l$e,DU)=>{"use strict";var d0e=i1(),p0e=s1(),f0e=yd(),m0e=ny(),h0e=ry(),y0e=iy(),g0e=(t,e,r,n)=>{switch(e){case"===":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t===r;case"!==":return typeof t=="object"&&(t=t.version),typeof r=="object"&&(r=r.version),t!==r;case"":case"=":case"==":return d0e(t,r,n);case"!=":return p0e(t,r,n);case">":return f0e(t,r,n);case">=":return m0e(t,r,n);case"<":return h0e(t,r,n);case"<=":return y0e(t,r,n);default:throw new TypeError(`Invalid operator: ${e}`)}};DU.exports=g0e});var NU=h((u$e,MU)=>{"use strict";var b0e=Gt(),v0e=Ks(),{safeRe:sy,t:oy}=zc(),E0e=(t,e)=>{if(t instanceof b0e)return t;if(typeof t=="number"&&(t=String(t)),typeof t!="string")return null;e=e||{};let r=null;if(!e.rtl)r=t.match(e.includePrerelease?sy[oy.COERCEFULL]:sy[oy.COERCE]);else{let c=e.includePrerelease?sy[oy.COERCERTLFULL]:sy[oy.COERCERTL],l;for(;(l=c.exec(t))&&(!r||r.index+r[0].length!==t.length);)(!r||l.index+l[0].length!==r.index+r[0].length)&&(r=l),c.lastIndex=l.index+l[1].length+l[2].length;c.lastIndex=-1}if(r===null)return null;let n=r[2],i=r[3]||"0",s=r[4]||"0",o=e.includePrerelease&&r[5]?`-${r[5]}`:"",a=e.includePrerelease&&r[6]?`+${r[6]}`:"";return v0e(`${n}.${i}.${s}${o}${a}`,e)};MU.exports=E0e});var qU=h((d$e,LU)=>{"use strict";var S0e=Ks(),x0e=Jc(),w0e=Gt(),_0e=(t,e,r)=>{if(!x0e.RELEASE_TYPES.includes(e))return null;let n=I0e(t,r);return n&&T0e(n,e)},I0e=(t,e)=>{let r=t instanceof w0e?t.version:t;return S0e(r,e)},T0e=(t,e)=>{if(k0e(e))return t.version;switch(t.prerelease=[],e){case"major":t.minor=0,t.patch=0;break;case"minor":t.patch=0;break}return t.format()},k0e=t=>t.startsWith("pre");LU.exports=_0e});var $U=h((p$e,FU)=>{"use strict";var a1=class{constructor(){this.max=1e3,this.map=new Map}get(e){let r=this.map.get(e);if(r!==void 0)return this.map.delete(e),this.map.set(e,r),r}delete(e){return this.map.delete(e)}set(e,r){if(!this.delete(e)&&r!==void 0){if(this.map.size>=this.max){let i=this.map.keys().next().value;this.delete(i)}this.map.set(e,r)}return this}};FU.exports=a1});var dn=h((f$e,GU)=>{"use strict";var A0e=/\s+/g,c1=class t{constructor(e,r){if(r=O0e(r),e instanceof t)return e.loose===!!r.loose&&e.includePrerelease===!!r.includePrerelease?e:new t(e.raw,r);if(e instanceof l1)return this.raw=e.value,this.set=[[e]],this.formatted=void 0,this;if(this.options=r,this.loose=!!r.loose,this.includePrerelease=!!r.includePrerelease,this.raw=e.trim().replace(A0e," "),this.set=this.raw.split("||").map(n=>this.parseRange(n.trim())).filter(n=>n.length),!this.set.length)throw new TypeError(`Invalid SemVer Range: ${this.raw}`);if(this.set.length>1){let n=this.set[0];if(this.set=this.set.filter(i=>!JU(i[0])),this.set.length===0)this.set=[n];else if(this.set.length>1){for(let i of this.set)if(i.length===1&&q0e(i[0])){this.set=[i];break}}}this.formatted=void 0}get range(){if(this.formatted===void 0){this.formatted="";for(let e=0;e<this.set.length;e++){e>0&&(this.formatted+="||");let r=this.set[e];for(let n=0;n<r.length;n++)n>0&&(this.formatted+=" "),this.formatted+=r[n].toString().trim()}}return this.formatted}format(){return this.range}toString(){return this.range}parseRange(e){e=e.replace(L0e,"");let n=((this.options.includePrerelease&&M0e)|(this.options.loose&&N0e))+":"+e,i=UU.get(n);if(i)return i;let s=this.options.loose,o=s?dr[Bt.HYPHENRANGELOOSE]:dr[Bt.HYPHENRANGE];e=e.replace(o,Y0e(this.options.includePrerelease)),We("hyphen replace",e),e=e.replace(dr[Bt.COMPARATORTRIM],P0e),We("comparator trim",e),e=e.replace(dr[Bt.TILDETRIM],K0e),We("tilde trim",e),e=e.replace(dr[Bt.CARETTRIM],D0e),We("caret trim",e);let a=e.split(" ").map(d=>F0e(d,this.options)).join(" ").split(/\s+/).map(d=>W0e(d,this.options));s&&(a=a.filter(d=>(We("loose invalid filter",d,this.options),!!d.match(dr[Bt.COMPARATORLOOSE])))),We("range list",a);let c=new Map,l=a.map(d=>new l1(d,this.options));for(let d of l){if(JU(d))return[d];c.set(d.value,d)}c.size>1&&c.has("")&&c.delete("");let u=[...c.values()];return UU.set(n,u),u}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Range is required");return this.set.some(n=>zU(n,r)&&e.set.some(i=>zU(i,r)&&n.every(s=>i.every(o=>s.intersects(o,r)))))}test(e){if(!e)return!1;if(typeof e=="string")try{e=new C0e(e,this.options)}catch{return!1}for(let r=0;r<this.set.length;r++)if(Q0e(this.set[r],e,this.options))return!0;return!1}};GU.exports=c1;var R0e=$U(),UU=new R0e,O0e=Yh(),l1=gd(),We=hd(),C0e=Gt(),{safeRe:dr,src:j0e,t:Bt,comparatorTrimReplace:P0e,tildeTrimReplace:K0e,caretTrimReplace:D0e}=zc(),{FLAG_INCLUDE_PRERELEASE:M0e,FLAG_LOOSE:N0e}=Jc(),L0e=new RegExp(j0e[Bt.BUILD],"g"),JU=t=>t.value==="<0.0.0-0",q0e=t=>t.value==="",zU=(t,e)=>{let r=!0,n=t.slice(),i=n.pop();for(;r&&n.length;)r=n.every(s=>i.intersects(s,e)),i=n.pop();return r},F0e=(t,e)=>(t=t.replace(dr[Bt.BUILD],""),We("comp",t,e),t=z0e(t,e),We("caret",t),t=U0e(t,e),We("tildes",t),t=B0e(t,e),We("xrange",t),t=V0e(t,e),We("stars",t),t),St=t=>!t||t.toLowerCase()==="x"||t==="*",$0e=(t,e,r)=>St(t)&&!St(e)||St(e)&&r&&!St(r),U0e=(t,e)=>t.trim().split(/\s+/).map(r=>J0e(r,e)).join(" "),J0e=(t,e)=>{let r=e.loose?dr[Bt.TILDELOOSE]:dr[Bt.TILDE],n=e.includePrerelease?"-0":"";return t.replace(r,(i,s,o,a,c)=>{We("tilde",t,i,s,o,a,c);let l;return St(s)?l="":St(o)?l=`>=${s}.0.0${n} <${+s+1}.0.0-0`:St(a)?l=`>=${s}.${o}.0${n} <${s}.${+o+1}.0-0`:c?(We("replaceTilde pr",c),l=`>=${s}.${o}.${a}-${c} <${s}.${+o+1}.0-0`):l=`>=${s}.${o}.${a} <${s}.${+o+1}.0-0`,We("tilde return",l),l})},z0e=(t,e)=>t.trim().split(/\s+/).map(r=>G0e(r,e)).join(" "),G0e=(t,e)=>{We("caret",t,e);let r=e.loose?dr[Bt.CARETLOOSE]:dr[Bt.CARET],n=e.includePrerelease?"-0":"";return t.replace(r,(i,s,o,a,c)=>{We("caret",t,i,s,o,a,c);let l;return St(s)?l="":St(o)?l=`>=${s}.0.0${n} <${+s+1}.0.0-0`:St(a)?s==="0"?l=`>=${s}.${o}.0${n} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.0${n} <${+s+1}.0.0-0`:c?(We("replaceCaret pr",c),s==="0"?o==="0"?l=`>=${s}.${o}.${a}-${c} <${s}.${o}.${+a+1}-0`:l=`>=${s}.${o}.${a}-${c} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.${a}-${c} <${+s+1}.0.0-0`):(We("no pr"),s==="0"?o==="0"?l=`>=${s}.${o}.${a} <${s}.${o}.${+a+1}-0`:l=`>=${s}.${o}.${a} <${s}.${+o+1}.0-0`:l=`>=${s}.${o}.${a} <${+s+1}.0.0-0`),We("caret return",l),l})},B0e=(t,e)=>(We("replaceXRanges",t,e),t.split(/\s+/).map(r=>H0e(r,e)).join(" ")),H0e=(t,e)=>{t=t.trim();let r=e.loose?dr[Bt.XRANGELOOSE]:dr[Bt.XRANGE];return t.replace(r,(n,i,s,o,a,c)=>{if(We("xRange",t,n,i,s,o,a,c),$0e(s,o,a))return t;let l=St(s),u=l||St(o),d=u||St(a),p=d;return i==="="&&p&&(i=""),c=e.includePrerelease?"-0":"",l?i===">"||i==="<"?n="<0.0.0-0":n="*":i&&p?(u&&(o=0),a=0,i===">"?(i=">=",u?(s=+s+1,o=0,a=0):(o=+o+1,a=0)):i==="<="&&(i="<",u?s=+s+1:o=+o+1),i==="<"&&(c="-0"),n=`${i+s}.${o}.${a}${c}`):u?n=`>=${s}.0.0${c} <${+s+1}.0.0-0`:d&&(n=`>=${s}.${o}.0${c} <${s}.${+o+1}.0-0`),We("xRange return",n),n})},V0e=(t,e)=>(We("replaceStars",t,e),t.trim().replace(dr[Bt.STAR],"")),W0e=(t,e)=>(We("replaceGTE0",t,e),t.trim().replace(dr[e.includePrerelease?Bt.GTE0PRE:Bt.GTE0],"")),Y0e=t=>(e,r,n,i,s,o,a,c,l,u,d,p)=>(St(n)?r="":St(i)?r=`>=${n}.0.0${t?"-0":""}`:St(s)?r=`>=${n}.${i}.0${t?"-0":""}`:o?r=`>=${r}`:r=`>=${r}${t?"-0":""}`,St(l)?c="":St(u)?c=`<${+l+1}.0.0-0`:St(d)?c=`<${l}.${+u+1}.0-0`:p?c=`<=${l}.${u}.${d}-${p}`:t?c=`<${l}.${u}.${+d+1}-0`:c=`<=${c}`,`${r} ${c}`.trim()),Q0e=(t,e,r)=>{for(let n=0;n<t.length;n++)if(!t[n].test(e))return!1;if(e.prerelease.length&&!r.includePrerelease){for(let n=0;n<t.length;n++)if(We(t[n].semver),t[n].semver!==l1.ANY&&t[n].semver.prerelease.length>0){let i=t[n].semver;if(i.major===e.major&&i.minor===e.minor&&i.patch===e.patch)return!0}return!1}return!0}});var gd=h((m$e,QU)=>{"use strict";var bd=Symbol("SemVer ANY"),p1=class t{static get ANY(){return bd}constructor(e,r){if(r=BU(r),e instanceof t){if(e.loose===!!r.loose)return e;e=e.value}e=e.trim().split(/\s+/).join(" "),d1("comparator",e,r),this.options=r,this.loose=!!r.loose,this.parse(e),this.semver===bd?this.value="":this.value=this.operator+this.semver.version,d1("comp",this)}parse(e){let r=this.options.loose?HU[VU.COMPARATORLOOSE]:HU[VU.COMPARATOR],n=e.match(r);if(!n)throw new TypeError(`Invalid comparator: ${e}`);this.operator=n[1]!==void 0?n[1]:"",this.operator==="="&&(this.operator=""),n[2]?this.semver=new WU(n[2],this.options.loose):this.semver=bd}toString(){return this.value}test(e){if(d1("Comparator.test",e,this.options.loose),this.semver===bd||e===bd)return!0;if(typeof e=="string")try{e=new WU(e,this.options)}catch{return!1}return u1(e,this.operator,this.semver,this.options)}intersects(e,r){if(!(e instanceof t))throw new TypeError("a Comparator is required");return this.operator===""?this.value===""?!0:new YU(e.value,r).test(this.value):e.operator===""?e.value===""?!0:new YU(this.value,r).test(e.semver):(r=BU(r),r.includePrerelease&&(this.value==="<0.0.0-0"||e.value==="<0.0.0-0")||!r.includePrerelease&&(this.value.startsWith("<0.0.0")||e.value.startsWith("<0.0.0"))?!1:!!(this.operator.startsWith(">")&&e.operator.startsWith(">")||this.operator.startsWith("<")&&e.operator.startsWith("<")||this.semver.version===e.semver.version&&this.operator.includes("=")&&e.operator.includes("=")||u1(this.semver,"<",e.semver,r)&&this.operator.startsWith(">")&&e.operator.startsWith("<")||u1(this.semver,">",e.semver,r)&&this.operator.startsWith("<")&&e.operator.startsWith(">")))}};QU.exports=p1;var BU=Yh(),{safeRe:HU,t:VU}=zc(),u1=o1(),d1=hd(),WU=Gt(),YU=dn()});var vd=h((h$e,XU)=>{"use strict";var X0e=dn(),Z0e=(t,e,r)=>{try{e=new X0e(e,r)}catch{return!1}return e.test(t)};XU.exports=Z0e});var e3=h((y$e,ZU)=>{"use strict";var eEe=dn(),tEe=(t,e)=>new eEe(t,e).set.map(r=>r.map(n=>n.value).join(" ").trim().split(" "));ZU.exports=tEe});var r3=h((g$e,t3)=>{"use strict";var rEe=Gt(),nEe=dn(),iEe=(t,e,r)=>{let n=null,i=null,s=null;try{s=new nEe(e,r)}catch{return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===-1)&&(n=o,i=new rEe(n,r))}),n};t3.exports=iEe});var i3=h((b$e,n3)=>{"use strict";var sEe=Gt(),oEe=dn(),aEe=(t,e,r)=>{let n=null,i=null,s=null;try{s=new oEe(e,r)}catch{return null}return t.forEach(o=>{s.test(o)&&(!n||i.compare(o)===1)&&(n=o,i=new sEe(n,r))}),n};n3.exports=aEe});var a3=h((v$e,o3)=>{"use strict";var f1=Gt(),cEe=dn(),s3=yd(),lEe=(t,e)=>{t=new cEe(t,e);let r=new f1("0.0.0");if(t.test(r)||(r=new f1("0.0.0-0"),t.test(r)))return r;r=null;for(let n=0;n<t.set.length;++n){let i=t.set[n],s=null;i.forEach(o=>{let a=new f1(o.semver.version);switch(o.operator){case">":a.prerelease.length===0?a.patch++:a.prerelease.push(0),a.raw=a.format();case"":case">=":(!s||s3(a,s))&&(s=a);break;case"<":case"<=":break;default:throw new Error(`Unexpected operation: ${o.operator}`)}}),s&&(!r||s3(r,s))&&(r=s)}return r&&t.test(r)?r:null};o3.exports=lEe});var l3=h((E$e,c3)=>{"use strict";var uEe=dn(),dEe=(t,e)=>{try{return new uEe(t,e).range||"*"}catch{return null}};c3.exports=dEe});var ay=h((S$e,f3)=>{"use strict";var pEe=Gt(),p3=gd(),{ANY:fEe}=p3,mEe=dn(),hEe=vd(),u3=yd(),d3=ry(),yEe=iy(),gEe=ny(),bEe=(t,e,r,n)=>{t=new pEe(t,n),e=new mEe(e,n);let i,s,o,a,c;switch(r){case">":i=u3,s=yEe,o=d3,a=">",c=">=";break;case"<":i=d3,s=gEe,o=u3,a="<",c="<=";break;default:throw new TypeError('Must provide a hilo val of "<" or ">"')}if(hEe(t,e,n))return!1;for(let l=0;l<e.set.length;++l){let u=e.set[l],d=null,p=null;if(u.forEach(f=>{f.semver===fEe&&(f=new p3(">=0.0.0")),d=d||f,p=p||f,i(f.semver,d.semver,n)?d=f:o(f.semver,p.semver,n)&&(p=f)}),d.operator===a||d.operator===c||(!p.operator||p.operator===a)&&s(t,p.semver))return!1;if(p.operator===c&&o(t,p.semver))return!1}return!0};f3.exports=bEe});var h3=h((x$e,m3)=>{"use strict";var vEe=ay(),EEe=(t,e,r)=>vEe(t,e,">",r);m3.exports=EEe});var g3=h((w$e,y3)=>{"use strict";var SEe=ay(),xEe=(t,e,r)=>SEe(t,e,"<",r);y3.exports=xEe});var E3=h((_$e,v3)=>{"use strict";var b3=dn(),wEe=(t,e,r)=>(t=new b3(t,r),e=new b3(e,r),t.intersects(e,r));v3.exports=wEe});var x3=h((I$e,S3)=>{"use strict";var _Ee=vd(),IEe=un();S3.exports=(t,e,r)=>{let n=[],i=null,s=null,o=t.sort((u,d)=>IEe(u,d,r));for(let u of o)_Ee(u,e,r)?(s=u,i||(i=u)):(s&&n.push([i,s]),s=null,i=null);i&&n.push([i,null]);let a=[];for(let[u,d]of n)u===d?a.push(u):!d&&u===o[0]?a.push("*"):d?u===o[0]?a.push(`<=${d}`):a.push(`${u} - ${d}`):a.push(`>=${u}`);let c=a.join(" || "),l=typeof e.raw=="string"?e.raw:String(e);return c.length<l.length?c:e}});var A3=h((T$e,k3)=>{"use strict";var w3=dn(),y1=gd(),{ANY:m1}=y1,h1=vd(),g1=un(),TEe=(t,e,r={})=>{if(t===e)return!0;t=new w3(t,r),e=new w3(e,r);let n=!1;e:for(let i of t.set){for(let s of e.set){let o=AEe(i,s,r);if(n=n||o!==null,o)continue e}if(n)return!1}return!0},kEe=[new y1(">=0.0.0-0")],_3=[new y1(">=0.0.0")],AEe=(t,e,r)=>{if(t===e)return!0;if(t.length===1&&t[0].semver===m1){if(e.length===1&&e[0].semver===m1)return!0;r.includePrerelease?t=kEe:t=_3}if(e.length===1&&e[0].semver===m1){if(r.includePrerelease)return!0;e=_3}let n=new Set,i,s;for(let f of t)f.operator===">"||f.operator===">="?i=I3(i,f,r):f.operator==="<"||f.operator==="<="?s=T3(s,f,r):n.add(f.semver);if(n.size>1)return null;let o;if(i&&s){if(o=g1(i.semver,s.semver,r),o>0)return null;if(o===0&&(i.operator!==">="||s.operator!=="<="))return null}for(let f of n){if(i&&!h1(f,String(i),r)||s&&!h1(f,String(s),r))return null;for(let m of e)if(!h1(f,String(m),r))return!1;return!0}let a,c,l,u,d=s&&!r.includePrerelease&&s.semver.prerelease.length?s.semver:!1,p=i&&!r.includePrerelease&&i.semver.prerelease.length?i.semver:!1;d&&d.prerelease.length===1&&s.operator==="<"&&d.prerelease[0]===0&&(d=!1);for(let f of e){if(u=u||f.operator===">"||f.operator===">=",l=l||f.operator==="<"||f.operator==="<=",i){if(p&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===p.major&&f.semver.minor===p.minor&&f.semver.patch===p.patch&&(p=!1),f.operator===">"||f.operator===">="){if(a=I3(i,f,r),a===f&&a!==i)return!1}else if(i.operator===">="&&!f.test(i.semver))return!1}if(s){if(d&&f.semver.prerelease&&f.semver.prerelease.length&&f.semver.major===d.major&&f.semver.minor===d.minor&&f.semver.patch===d.patch&&(d=!1),f.operator==="<"||f.operator==="<="){if(c=T3(s,f,r),c===f&&c!==s)return!1}else if(s.operator==="<="&&!f.test(s.semver))return!1}if(!f.operator&&(s||i)&&o!==0)return!1}return!(i&&l&&!s&&o!==0||s&&u&&!i&&o!==0||p||d)},I3=(t,e,r)=>{if(!t)return e;let n=g1(t.semver,e.semver,r);return n>0?t:n<0||e.operator===">"&&t.operator===">="?e:t},T3=(t,e,r)=>{if(!t)return e;let n=g1(t.semver,e.semver,r);return n<0?t:n>0||e.operator==="<"&&t.operator==="<="?e:t};k3.exports=TEe});var j3=h((k$e,C3)=>{"use strict";var b1=zc(),R3=Jc(),REe=Gt(),O3=t1(),OEe=Ks(),CEe=eU(),jEe=rU(),PEe=sU(),KEe=cU(),DEe=uU(),MEe=pU(),NEe=mU(),LEe=yU(),qEe=un(),FEe=EU(),$Ee=xU(),UEe=ty(),JEe=TU(),zEe=AU(),GEe=yd(),BEe=ry(),HEe=i1(),VEe=s1(),WEe=ny(),YEe=iy(),QEe=o1(),XEe=NU(),ZEe=qU(),eSe=gd(),tSe=dn(),rSe=vd(),nSe=e3(),iSe=r3(),sSe=i3(),oSe=a3(),aSe=l3(),cSe=ay(),lSe=h3(),uSe=g3(),dSe=E3(),pSe=x3(),fSe=A3();C3.exports={parse:OEe,valid:CEe,clean:jEe,inc:PEe,diff:KEe,major:DEe,minor:MEe,patch:NEe,prerelease:LEe,compare:qEe,rcompare:FEe,compareLoose:$Ee,compareBuild:UEe,sort:JEe,rsort:zEe,gt:GEe,lt:BEe,eq:HEe,neq:VEe,gte:WEe,lte:YEe,cmp:QEe,coerce:XEe,truncate:ZEe,Comparator:eSe,Range:tSe,satisfies:rSe,toComparators:nSe,maxSatisfying:iSe,minSatisfying:sSe,minVersion:oSe,validRange:aSe,outside:cSe,gtr:lSe,ltr:uSe,intersects:dSe,simplifyRange:pSe,subset:fSe,SemVer:REe,re:b1.re,src:b1.src,tokens:b1.t,SEMVER_SPEC_VERSION:R3.SEMVER_SPEC_VERSION,RELEASE_TYPES:R3.RELEASE_TYPES,compareIdentifiers:O3.compareIdentifiers,rcompareIdentifiers:O3.rcompareIdentifiers}});var Dr=h(V=>{"use strict";Object.defineProperty(V,"__esModule",{value:!0});V.QUEUE_EVENT_SUFFIX=V.toString=V.errorToJSON=V.parseObjectValues=V.isRedisVersionLowerThan=V.childSend=V.asyncSend=V.DELAY_TIME_1=V.DELAY_TIME_5=V.clientCommandMessageReg=V.optsEncodeMap=V.optsDecodeMap=V.errorObject=void 0;V.tryCatch=ySe;V.lengthInUtf8Bytes=gSe;V.isEmpty=bSe;V.array2obj=vSe;V.objectToFlatArray=ESe;V.delay=SSe;V.forwardConnectionError=xSe;V.increaseMaxListeners=P3;V.invertObject=K3;V.isRedisInstance=D3;V.isRedisCluster=wSe;V.decreaseMaxListeners=_Se;V.removeAllQueueData=ISe;V.getParentKey=TSe;V.isNotConnectionError=M3;V.removeUndefinedFields=DSe;V.trace=MSe;V.randomUUID=NSe;var v1=require("crypto"),mSe=gt(),hSe=zo(),E1=j3(),S1=_r();V.errorObject={value:null};function ySe(t,e,r){try{return t.apply(e,r)}catch(n){return V.errorObject.value=n,V.errorObject}}function gSe(t){return Buffer.byteLength(t,"utf8")}function bSe(t){for(let e in t)if(Object.prototype.hasOwnProperty.call(t,e))return!1;return!0}function vSe(t){let e={};for(let r=0;r<t.length;r+=2)e[t[r]]=t[r+1];return e}function ESe(t){let e=[];for(let r in t)Object.prototype.hasOwnProperty.call(t,r)&&t[r]!==void 0&&(e[e.length]=r,e[e.length]=t[r]);return e}function SSe(t,e){return new Promise(r=>{let n,i=()=>{e?.signal.removeEventListener("abort",i),clearTimeout(n),r()};n=setTimeout(i,t),e?.signal.addEventListener("abort",i)})}function xSe(t,e){e.on("error",r=>{t.listenerCount("error")>0&&t.emit("error",r)})}function P3(t,e){let r=t.getMaxListeners();t.setMaxListeners(r+e)}function K3(t){return Object.entries(t).reduce((e,[r,n])=>(e[n]=r,e),{})}V.optsDecodeMap={de:"deduplication",fpof:"failParentOnFailure",cpof:"continueParentOnFailure",idof:"ignoreDependencyOnFailure",kl:"keepLogs",rdof:"removeDependencyOnFailure"};V.optsEncodeMap=Object.assign(Object.assign({},K3(V.optsDecodeMap)),{debounce:"de"});function D3(t){return t?["connect","disconnect","duplicate"].every(r=>typeof t[r]=="function"):!1}function wSe(t){return D3(t)&&!!t.isCluster}function _Se(t,e){P3(t,-e)}async function ISe(t,e,r=process.env.BULLMQ_TEST_PREFIX||"bull"){if(t.isCluster)return!1;let n=`${r}:${e}:*`,i=[];await new Promise((s,o)=>{let a=t.scanStream({match:n});a.on("data",c=>{if(c.length){let l=t.pipeline();c.forEach(d=>{l.del(d)});let u=l.exec().catch(d=>{throw o(d),d});i.push(u)}}),a.on("end",()=>s()),a.on("error",c=>o(c))}),await Promise.all(i);try{await t.quit()}catch(s){if(M3(s))throw s}}function TSe(t){if(t)return`${t.queue}:${t.id}`}V.clientCommandMessageReg=/ERR unknown command ['`]\s*client\s*['`]/;V.DELAY_TIME_5=5e3;V.DELAY_TIME_1=100;function M3(t){if(t instanceof hSe.ConnectionClosedError)return!1;let{code:e,message:r}=t;return r!==mSe.CONNECTION_CLOSED_ERROR_MSG&&!r.includes("ECONNREFUSED")&&e!=="ECONNREFUSED"}var kSe=(t,e)=>new Promise((r,n)=>{typeof t.send=="function"?t.send(e,i=>{i?n(i):r()}):typeof t.postMessage=="function"?r(t.postMessage(e)):r()});V.asyncSend=kSe;var ASe=(t,e)=>(0,V.asyncSend)(t,e);V.childSend=ASe;var RSe=(t,e,r,n="redis")=>{if(r===n){let i=E1.valid(E1.coerce(t));return E1.lt(i,e)}return!1};V.isRedisVersionLowerThan=RSe;var OSe=t=>{let e={};for(let r of Object.entries(t))e[r[0]]=JSON.parse(r[1]);return e};V.parseObjectValues=OSe;var CSe=t=>{let e=new WeakSet;return e.add(t),(r,n)=>{if(typeof n=="object"&&n!==null){if(e.has(n))return"[Circular]";e.add(n)}return n}},jSe=t=>{let e={};return Object.getOwnPropertyNames(t).forEach(function(r){e[r]=t[r]}),JSON.parse(JSON.stringify(e,CSe(t)))};V.errorToJSON=jSe;var PSe=1/0,KSe=t=>{if(t==null)return"";if(typeof t=="string")return t;if(Array.isArray(t))return`${t.map(r=>r==null?r:(0,V.toString)(r))}`;if(typeof t=="symbol"||Object.prototype.toString.call(t)=="[object Symbol]")return t.toString();let e=`${t}`;return e==="0"&&1/t===-PSe?"-0":e};V.toString=KSe;V.QUEUE_EVENT_SUFFIX=":qe";function DSe(t){let e={};for(let r in t)t[r]!==void 0&&(e[r]=t[r]);return e}async function MSe(t,e,r,n,i,s,o){if(t){let{tracer:a,contextManager:c}=t,l=c.active(),u;o&&(u=c.fromMetadata(l,o));let d=i?`${n} ${i}`:n,p=a.startSpan(d,{kind:e},u);try{p.setAttributes({[S1.TelemetryAttributes.QueueName]:r,[S1.TelemetryAttributes.QueueOperation]:n});let f,m;return e===S1.SpanKind.CONSUMER&&u?f=p.setSpanOnContext(u):f=p.setSpanOnContext(l),s.length==2&&(m=c.getMetadata(f)),await c.with(f,()=>s(p,m))}catch(f){throw p.recordException(f),f}finally{p.end()}}else return s()}function NSe(){if(typeof v1.randomUUID=="function")return(0,v1.randomUUID)();let t=(0,v1.randomBytes)(16);return t[6]=t[6]&15|64,t[8]=t[8]&63|128,[t.toString("hex",0,4),t.toString("hex",4,6),t.toString("hex",6,8),t.toString("hex",8,10),t.toString("hex",10,16)].join("-")}});var N3=h(cy=>{"use strict";Object.defineProperty(cy,"__esModule",{value:!0});cy.ChildProcessor=void 0;var LSe=Gh(),pr=_r(),x1=Dr(),Ds;(function(t){t[t.Idle=0]="Idle",t[t.Started=1]="Started",t[t.Terminating=2]="Terminating",t[t.Errored=3]="Errored"})(Ds||(Ds={}));var Ed=process.env.NODE_ENV==="test"?500:5e3,w1=class{constructor(e,r){this.send=e,this.receiver=r}async init(e){var r;let n;try{let{default:s}=await import(e);if(n=s,n.default&&(n=n.default),typeof n!="function")throw new Error("No function is exported in processor file")}catch(s){this.status=Ds.Errored;try{await this.send({cmd:pr.ParentCommand.InitFailed,err:(0,x1.errorToJSON)(s)})}finally{process.exit((r=process.exitCode)!==null&&r!==void 0?r:1)}}let i=n;n=function(s,o,a){try{return Promise.resolve(i(s,o,a))}catch(c){return Promise.reject(c)}},this.processor=n,this.status=Ds.Idle,await this.send({cmd:pr.ParentCommand.InitCompleted})}async start(e,r){if(this.status!==Ds.Idle)return this.send({cmd:pr.ParentCommand.Error,err:(0,x1.errorToJSON)(new Error("cannot start a not idling child process"))});this.status=Ds.Started,this.abortController=new LSe.AbortController,this.currentJobPromise=(async()=>{try{let n=this.wrapJob(e,this.send),i=await this.processor(n,r,this.abortController.signal);await this.send({cmd:pr.ParentCommand.Completed,value:typeof i>"u"?null:i})}catch(n){await this.send({cmd:pr.ParentCommand.Failed,value:(0,x1.errorToJSON)(n.message?n:new Error(n))})}finally{this.status=Ds.Idle,this.currentJobPromise=void 0,this.abortController=void 0}})()}cancel(e){this.abortController&&this.abortController.abort(e)}async stop(){}async waitForCurrentJobAndExit(){this.status=Ds.Terminating;try{await this.currentJobPromise}finally{process.exit(process.exitCode||0)}}wrapJob(e,r){let n=Object.assign(Object.assign({},e),{queueQualifiedName:e.queueQualifiedName,data:JSON.parse(e.data||"{}"),opts:e.opts,returnValue:JSON.parse(e.returnvalue||"{}"),async updateProgress(i){this.progress=i,await r({cmd:pr.ParentCommand.Progress,value:i})},log:async i=>{await r({cmd:pr.ParentCommand.Log,value:i})},moveToDelayed:async(i,s)=>{await r({cmd:pr.ParentCommand.MoveToDelayed,value:{timestamp:i,token:s}})},moveToWait:async i=>{await r({cmd:pr.ParentCommand.MoveToWait,value:{token:i}})},moveToWaitingChildren:async(i,s)=>{let o=Math.random().toString(36).substring(2,15);return await r({requestId:o,cmd:pr.ParentCommand.MoveToWaitingChildren,value:{token:i,opts:s}}),Sd(o,this.receiver,Ed,"moveToWaitingChildren")},updateData:async i=>{await r({cmd:pr.ParentCommand.Update,value:i}),n.data=i},getChildrenValues:async()=>{let i=Math.random().toString(36).substring(2,15);return await r({requestId:i,cmd:pr.ParentCommand.GetChildrenValues}),Sd(i,this.receiver,Ed,"getChildrenValues")},getIgnoredChildrenFailures:async()=>{let i=Math.random().toString(36).substring(2,15);return await r({requestId:i,cmd:pr.ParentCommand.GetIgnoredChildrenFailures}),Sd(i,this.receiver,Ed,"getIgnoredChildrenFailures")},getDependenciesCount:async i=>{let s=Math.random().toString(36).substring(2,15);return await r({requestId:s,cmd:pr.ParentCommand.GetDependenciesCount,value:i}),Sd(s,this.receiver,Ed,"getDependenciesCount")},getDependencies:async i=>{let s=Math.random().toString(36).substring(2,15);return await r({requestId:s,cmd:pr.ParentCommand.GetDependencies,value:i}),Sd(s,this.receiver,Ed,"getDependencies")}});return n}};cy.ChildProcessor=w1;var Sd=async(t,e,r,n)=>new Promise((i,s)=>{let o=a=>{a.requestId===t&&(i(a.value),e.off("message",o))};e.on("message",o),setTimeout(()=>{e.off("message",o),s(new Error(`TimeoutError: ${n} timed out in (${r}ms)`))},r)})});var L3=h(Go=>{"use strict";Object.defineProperty(Go,"__esModule",{value:!0});Go.DelayedError=Go.DELAYED_ERROR=void 0;Go.DELAYED_ERROR="bullmq:movedToDelayed";var _1=class extends Error{constructor(e=Go.DELAYED_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Go.DelayedError=_1});var q3=h(Bo=>{"use strict";Object.defineProperty(Bo,"__esModule",{value:!0});Bo.RateLimitError=Bo.RATE_LIMIT_ERROR=void 0;Bo.RATE_LIMIT_ERROR="bullmq:rateLimitExceeded";var I1=class extends Error{constructor(e=Bo.RATE_LIMIT_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Bo.RateLimitError=I1});var k1=h(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.UnrecoverableError=Ho.UNRECOVERABLE_ERROR=void 0;Ho.UNRECOVERABLE_ERROR="bullmq:unrecoverable";var T1=class extends Error{constructor(e=Ho.UNRECOVERABLE_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Ho.UnrecoverableError=T1});var F3=h(Vo=>{"use strict";Object.defineProperty(Vo,"__esModule",{value:!0});Vo.WaitingChildrenError=Vo.WAITING_CHILDREN_ERROR=void 0;Vo.WAITING_CHILDREN_ERROR="bullmq:movedToWaitingChildren";var A1=class extends Error{constructor(e=Vo.WAITING_CHILDREN_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Vo.WaitingChildrenError=A1});var $3=h(Wo=>{"use strict";Object.defineProperty(Wo,"__esModule",{value:!0});Wo.WaitingError=Wo.WAITING_ERROR=void 0;Wo.WAITING_ERROR="bullmq:movedToWait";var R1=class extends Error{constructor(e=Wo.WAITING_ERROR){super(e),this.name=this.constructor.name,Object.setPrototypeOf(this,new.target.prototype)}};Wo.WaitingError=R1});var ly=h(Ms=>{"use strict";Object.defineProperty(Ms,"__esModule",{value:!0});var Gc=(nr(),Pt(rr));Gc.__exportStar(zo(),Ms);Gc.__exportStar(L3(),Ms);Gc.__exportStar(q3(),Ms);Gc.__exportStar(k1(),Ms);Gc.__exportStar(F3(),Ms);Gc.__exportStar($3(),Ms)});var z3=h((M$e,J3)=>{"use strict";var U3=()=>process.platform==="linux",uy=null,qSe=()=>{if(!uy)if(U3()&&process.report){let t=process.report.excludeNetwork;process.report.excludeNetwork=!0,uy=process.report.getReport(),process.report.excludeNetwork=t}else uy={};return uy};J3.exports={isLinux:U3,getReport:qSe}});var B3=h((N$e,G3)=>{"use strict";var Bc=require("fs"),FSe="/usr/bin/ldd",$Se="/proc/self/exe",dy=2048,USe=t=>{let e=Bc.openSync(t,"r"),r=Buffer.alloc(dy),n=Bc.readSync(e,r,0,dy,0);return Bc.close(e,()=>{}),r.subarray(0,n)},JSe=t=>new Promise((e,r)=>{Bc.open(t,"r",(n,i)=>{if(n)r(n);else{let s=Buffer.alloc(dy);Bc.read(i,s,0,dy,0,(o,a)=>{e(s.subarray(0,a)),Bc.close(i,()=>{})})}})});G3.exports={LDD_PATH:FSe,SELF_PATH:$Se,readFileSync:USe,readFile:JSe}});var V3=h((L$e,H3)=>{"use strict";var zSe=t=>{if(t.length<64||t.readUInt32BE(0)!==2135247942||t.readUInt8(4)!==2||t.readUInt8(5)!==1)return null;let e=t.readUInt32LE(32),r=t.readUInt16LE(54),n=t.readUInt16LE(56);for(let i=0;i<n;i++){let s=e+i*r;if(t.readUInt32LE(s)===3){let a=t.readUInt32LE(s+8),c=t.readUInt32LE(s+32);return t.subarray(a,a+c).toString().replace(/\0.*$/g,"")}}return null};H3.exports={interpreterPath:zSe}});var fJ=h((q$e,pJ)=>{"use strict";var Y3=require("child_process"),{isLinux:Hc,getReport:Q3}=z3(),{LDD_PATH:py,SELF_PATH:X3,readFile:O1,readFileSync:C1}=B3(),{interpreterPath:Z3}=V3(),si,oi,ai,eJ="getconf GNU_LIBC_VERSION 2>&1 || true; ldd --version 2>&1 || true",Ns="",tJ=()=>Ns||new Promise(t=>{Y3.exec(eJ,(e,r)=>{Ns=e?" ":r,t(Ns)})}),rJ=()=>{if(!Ns)try{Ns=Y3.execSync(eJ,{encoding:"utf8"})}catch{Ns=" "}return Ns},Ji="glibc",nJ=/LIBC[a-z0-9 \-).]*?(\d+\.\d+)/i,Yo="musl",GSe=t=>t.includes("libc.musl-")||t.includes("ld-musl-"),iJ=()=>{let t=Q3();return t.header&&t.header.glibcVersionRuntime?Ji:Array.isArray(t.sharedObjects)&&t.sharedObjects.some(GSe)?Yo:null},sJ=t=>{let[e,r]=t.split(/[\r\n]+/);return e&&e.includes(Ji)?Ji:r&&r.includes(Yo)?Yo:null},oJ=t=>{if(t){if(t.includes("/ld-musl-"))return Yo;if(t.includes("/ld-linux-"))return Ji}return null},aJ=t=>(t=t.toString(),t.includes("musl")?Yo:t.includes("GNU C Library")?Ji:null),BSe=async()=>{if(oi!==void 0)return oi;oi=null;try{let t=await O1(py);oi=aJ(t)}catch{}return oi},HSe=()=>{if(oi!==void 0)return oi;oi=null;try{let t=C1(py);oi=aJ(t)}catch{}return oi},VSe=async()=>{if(si!==void 0)return si;si=null;try{let t=await O1(X3),e=Z3(t);si=oJ(e)}catch{}return si},WSe=()=>{if(si!==void 0)return si;si=null;try{let t=C1(X3),e=Z3(t);si=oJ(e)}catch{}return si},cJ=async()=>{let t=null;if(Hc()&&(t=await VSe(),!t&&(t=await BSe(),t||(t=iJ()),!t))){let e=await tJ();t=sJ(e)}return t},lJ=()=>{let t=null;if(Hc()&&(t=WSe(),!t&&(t=HSe(),t||(t=iJ()),!t))){let e=rJ();t=sJ(e)}return t},YSe=async()=>Hc()&&await cJ()!==Ji,QSe=()=>Hc()&&lJ()!==Ji,XSe=async()=>{if(ai!==void 0)return ai;ai=null;try{let e=(await O1(py)).match(nJ);e&&(ai=e[1])}catch{}return ai},ZSe=()=>{if(ai!==void 0)return ai;ai=null;try{let e=C1(py).match(nJ);e&&(ai=e[1])}catch{}return ai},uJ=()=>{let t=Q3();return t.header&&t.header.glibcVersionRuntime?t.header.glibcVersionRuntime:null},W3=t=>t.trim().split(/\s+/)[1],dJ=t=>{let[e,r,n]=t.split(/[\r\n]+/);return e&&e.includes(Ji)?W3(e):r&&n&&r.includes(Yo)?W3(n):null},exe=async()=>{let t=null;if(Hc()&&(t=await XSe(),t||(t=uJ()),!t)){let e=await tJ();t=dJ(e)}return t},txe=()=>{let t=null;if(Hc()&&(t=ZSe(),t||(t=uJ()),!t)){let e=rJ();t=dJ(e)}return t};pJ.exports={GLIBC:Ji,MUSL:Yo,family:cJ,familySync:lJ,isNonGlibcLinux:YSe,isNonGlibcLinuxSync:QSe,version:exe,versionSync:txe}});var kJ=h((F$e,TJ)=>{var rxe=require("fs"),jn=require("path"),nxe=require("url"),yJ=require("os"),gJ=typeof __webpack_require__=="function"?__non_webpack_require__:require,ixe=process.config&&process.config.variables||{},sxe=!!process.env.PREBUILDS_ONLY,M1=process.versions,P1=M1.modules;(M1.deno||process.isBun)&&(P1="unsupported");var j1=cxe()?"electron":axe()?"node-webkit":"node",fy=process.env.npm_config_arch||yJ.arch(),my=process.env.npm_config_platform||yJ.platform(),bJ=process.env.LIBC||(lxe(my)?"musl":"glibc"),K1=process.env.ARM_VERSION||(fy==="arm64"?"8":ixe.arm_version)||"",vJ=(M1.uv||"").split(".")[0];TJ.exports=ci;function ci(t){return gJ(ci.resolve(t))}ci.resolve=ci.path=function(t){t=jn.resolve(t||".");var e="",r;try{e=gJ(jn.join(t,"package.json")).name;var n=e.toUpperCase().replace(/-/g,"_");process.env[n+"_PREBUILD"]&&(t=process.env[n+"_PREBUILD"])}catch(y){r=y}if(!sxe){var i=mJ(jn.join(t,"build/Release"),hJ);if(i)return i;var s=mJ(jn.join(t,"build/Debug"),hJ);if(s)return s}var o=f(t);if(o)return o;var a=f(jn.dirname(process.execPath));if(a)return a;var c=(e[0]=="@"?"":"@"+e+"/")+e+"-"+my+"-"+fy,l;try{var u=jn.dirname(require("module").createRequire(nxe.pathToFileURL(jn.join(t,"package.json"))).resolve(c));return m(u)}catch(y){l=y}var d=["platform="+my,"arch="+fy,"runtime="+j1,"abi="+P1,"uv="+vJ,K1?"armv="+K1:"","libc="+bJ,"node="+process.versions.node,process.versions.electron?"electron="+process.versions.electron:"",typeof __webpack_require__=="function"?"webpack=true":""].filter(Boolean).join(" ");let p="No native build was found for "+d+`
attempted loading from: `+t+" and package: "+c+`
`;throw r&&(p+="Error finding package.json: "+r.message+`
`),l&&(p+="Error resolving package: "+l.message+`
`),new Error(p);function f(y){var b=D1(jn.join(y,"prebuilds")).map(EJ),v=b.filter(SJ(my,fy)).sort(xJ)[0];if(v)return m(jn.join(y,"prebuilds",v.name))}function m(y){var b=D1(y).map(wJ),v=b.filter(_J(j1,P1)),E=v.sort(IJ(j1))[0];if(E)return jn.join(y,E.file)}};function D1(t){try{return rxe.readdirSync(t)}catch{return[]}}function mJ(t,e){var r=D1(t).filter(e);return r[0]&&jn.join(t,r[0])}function hJ(t){return/\.node$/.test(t)}function EJ(t){var e=t.split("-");if(e.length===2){var r=e[0],n=e[1].split("+");if(r&&n.length&&n.every(Boolean))return{name:t,platform:r,architectures:n}}}function SJ(t,e){return function(r){return r==null||r.platform!==t?!1:r.architectures.includes(e)}}function xJ(t,e){return t.architectures.length-e.architectures.length}function wJ(t){var e=t.split("."),r=e.pop(),n={file:t,specificity:0};if(r==="node"){for(var i=0;i<e.length;i++){var s=e[i];if(s==="node"||s==="electron"||s==="node-webkit")n.runtime=s;else if(s==="napi")n.napi=!0;else if(s.slice(0,3)==="abi")n.abi=s.slice(3);else if(s.slice(0,2)==="uv")n.uv=s.slice(2);else if(s.slice(0,4)==="armv")n.armv=s.slice(4);else if(s==="glibc"||s==="musl")n.libc=s;else continue;n.specificity++}return n}}function _J(t,e){return function(r){return!(r==null||r.runtime!==t&&!oxe(r)||r.abi!==e&&!r.napi||r.uv&&r.uv!==vJ||r.armv&&r.armv!==K1||r.libc&&r.libc!==bJ)}}function oxe(t){return t.runtime==="node"&&t.napi}function IJ(t){return function(e,r){return e.runtime!==r.runtime?e.runtime===t?-1:1:e.abi!==r.abi?e.abi?-1:1:e.specificity!==r.specificity?e.specificity>r.specificity?-1:1:0}}function axe(){return!!(process.versions&&process.versions.nw)}function cxe(){return process.versions&&process.versions.electron||process.env.ELECTRON_RUN_AS_NODE?!0:typeof window<"u"&&window.process&&window.process.type==="renderer"}function lxe(t){if(t!=="linux")return!1;let{familySync:e,MUSL:r}=fJ();return e()===r}ci.parseTags=wJ;ci.matchTags=_J;ci.compareTags=IJ;ci.parseTuple=EJ;ci.matchTuple=SJ;ci.compareTuples=xJ});var AJ=h(($$e,L1)=>{var N1=typeof __webpack_require__=="function"?__non_webpack_require__:require;typeof N1.addon=="function"?L1.exports=N1.addon.bind(N1):L1.exports=kJ()});var OJ=h((U$e,RJ)=>{RJ.exports=AJ()(__CM_DIRNAME__)});var c6=h(ke=>{"use strict";var GJ=require("stream"),uxe=require("module"),q1=typeof document<"u"?document.currentScript:null,J1;try{J1=new TextDecoder}catch{}var D,Nr,w=0,z1=[],Xo=z1,wd=0,je={},xe,zi,Mr=0,pn=0,xt,Gi,sr=[],ve,CJ={useRecords:!1,mapsAsObjects:!0},by=class{},G1=new by;G1.name="MessagePack 0xC1";var Ls=!1,jJ=2,Bi=class t{constructor(e){e&&(e.useRecords===!1&&e.mapsAsObjects===void 0&&(e.mapsAsObjects=!0),e.sequential&&e.trusted!==!1&&(e.trusted=!0,!e.structures&&e.useRecords!=!1&&(e.structures=[],e.maxSharedStructures||(e.maxSharedStructures=0))),e.structures?e.structures.sharedLength=e.structures.length:e.getStructures&&((e.structures=[]).uninitialized=!0,e.structures.sharedLength=0),e.int64AsNumber&&(e.int64AsType="number")),Object.assign(this,e)}unpack(e,r){if(D)return e6(()=>(Ey(),this?this.unpack(e,r):t.prototype.unpack.call(CJ,e,r)));!e.buffer&&e.constructor===ArrayBuffer&&(e=typeof Buffer<"u"?Buffer.from(e):new Uint8Array(e)),typeof r=="object"?(Nr=r.end||e.length,w=r.start||0):(w=0,Nr=r>-1?r:e.length),wd=0,pn=0,zi=null,Xo=z1,xt=null,D=e;try{ve=e.dataView||(e.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength))}catch(n){throw D=null,e instanceof Uint8Array?n:new Error("Source must be a Uint8Array or Buffer but was a "+(e&&typeof e=="object"?e.constructor.name:typeof e))}if(this instanceof t){if(je=this,this.structures)return xe=this.structures,hy(r);(!xe||xe.length>0)&&(xe=[])}else je=CJ,(!xe||xe.length>0)&&(xe=[]);return hy(r)}unpackMultiple(e,r){let n,i=0;try{Ls=!0;let s=e.length,o=this?this.unpack(e,s):Ty.unpack(e,s);if(r){if(r(o,i,w)===!1)return;for(;w<s;)if(i=w,r(hy(),i,w)===!1)return}else{for(n=[o];w<s;)i=w,n.push(hy());return n}}catch(s){throw s.lastPosition=i,s.values=n,s}finally{Ls=!1,Ey()}}_mergeStructures(e,r){this._onLoadedStructures&&(e=this._onLoadedStructures(e)),e=e||[],Object.isFrozen(e)&&(e=e.map(n=>n.slice(0)));for(let n=0,i=e.length;n<i;n++){let s=e[n];s&&(s.isShared=!0,n>=32&&(s.highByte=n-32>>5))}e.sharedLength=e.length;for(let n in r||[])if(n>=0){let i=e[n],s=r[n];s&&(i&&((e.restoreStructures||(e.restoreStructures=[]))[n]=i),e[n]=s)}return this.structures=e}decode(e,r){return this.unpack(e,r)}};function hy(t){try{if(!je.trusted&&!Ls){let r=xe.sharedLength||0;r<xe.length&&(xe.length=r)}let e;if(je._readStruct&&D[w]<64&&D[w]>=32?(e=je._readStruct(D,w,Nr),D=null,!(t&&t.lazy)&&e&&(e=e.toJSON()),w=Nr):e=ft(),xt&&(w=xt.postBundlePosition,xt=null),Ls&&(xe.restoreStructures=null),w==Nr)xe&&xe.restoreStructures&&PJ(),xe=null,D=null,Gi&&(Gi=null);else{if(w>Nr)throw new Error("Unexpected end of MessagePack data");if(!Ls){let r;try{r=JSON.stringify(e,(n,i)=>typeof i=="bigint"?`${i}n`:i).slice(0,100)}catch(n){r="(JSON view not available "+n+")"}throw new Error("Data read, but end of buffer not reached "+r)}}return e}catch(e){throw xe&&xe.restoreStructures&&PJ(),Ey(),(e instanceof RangeError||e.message.startsWith("Unexpected end of buffer")||w>Nr)&&(e.incomplete=!0),e}}function PJ(){for(let t in xe.restoreStructures)xe[t]=xe.restoreStructures[t];xe.restoreStructures=null}function ft(){let t=D[w++];if(t<160)if(t<128){if(t<64)return t;{let e=xe[t&63]||je.getStructures&&BJ()[t&63];return e?(e.read||(e.read=B1(e,t&63)),e.read()):t}}else if(t<144)if(t-=128,je.mapsAsObjects){let e={};for(let r=0;r<t;r++){let n=QJ();n==="__proto__"&&(n="__proto_"),e[n]=ft()}return e}else{let e=new Map;for(let r=0;r<t;r++)e.set(ft(),ft());return e}else{t-=144;let e=new Array(t);for(let r=0;r<t;r++)e[r]=ft();return je.freezeData?Object.freeze(e):e}else if(t<192){let e=t-160;if(pn>=w)return zi.slice(w-Mr,(w+=e)-Mr);if(pn==0&&Nr<140){let r=e<16?H1(e):YJ(e);if(r!=null)return r}return vy(e)}else{let e;switch(t){case 192:return null;case 193:return xt?(e=ft(),e>0?xt[1].slice(xt.position1,xt.position1+=e):xt[0].slice(xt.position0,xt.position0-=e)):G1;case 194:return!1;case 195:return!0;case 196:if(e=D[w++],e===void 0)throw new Error("Unexpected end of buffer");return F1(e);case 197:return e=ve.getUint16(w),w+=2,F1(e);case 198:return e=ve.getUint32(w),w+=4,F1(e);case 199:return Qo(D[w++]);case 200:return e=ve.getUint16(w),w+=2,Qo(e);case 201:return e=ve.getUint32(w),w+=4,Qo(e);case 202:if(e=ve.getFloat32(w),je.useFloat32>2){let r=Iy[(D[w]&127)<<1|D[w+1]>>7];return w+=4,(r*e+(e>0?.5:-.5)>>0)/r}return w+=4,e;case 203:return e=ve.getFloat64(w),w+=8,e;case 204:return D[w++];case 205:return e=ve.getUint16(w),w+=2,e;case 206:return e=ve.getUint32(w),w+=4,e;case 207:return je.int64AsType==="number"?(e=ve.getUint32(w)*4294967296,e+=ve.getUint32(w+4)):je.int64AsType==="string"?e=ve.getBigUint64(w).toString():je.int64AsType==="auto"?(e=ve.getBigUint64(w),e<=BigInt(2)<<BigInt(52)&&(e=Number(e))):e=ve.getBigUint64(w),w+=8,e;case 208:return ve.getInt8(w++);case 209:return e=ve.getInt16(w),w+=2,e;case 210:return e=ve.getInt32(w),w+=4,e;case 211:return je.int64AsType==="number"?(e=ve.getInt32(w)*4294967296,e+=ve.getUint32(w+4)):je.int64AsType==="string"?e=ve.getBigInt64(w).toString():je.int64AsType==="auto"?(e=ve.getBigInt64(w),e>=BigInt(-2)<<BigInt(52)&&e<=BigInt(2)<<BigInt(52)&&(e=Number(e))):e=ve.getBigInt64(w),w+=8,e;case 212:if(e=D[w++],e==114)return qJ(D[w++]&63);{let r=sr[e];if(r)return r.read?(w++,r.read(ft())):r.noBuffer?(w++,r()):r(D.subarray(w,++w));throw new Error("Unknown extension "+e)}case 213:return e=D[w],e==114?(w++,qJ(D[w++]&63,D[w++])):Qo(2);case 214:return Qo(4);case 215:return Qo(8);case 216:return Qo(16);case 217:return e=D[w++],pn>=w?zi.slice(w-Mr,(w+=e)-Mr):HJ(e);case 218:return e=ve.getUint16(w),w+=2,pn>=w?zi.slice(w-Mr,(w+=e)-Mr):VJ(e);case 219:return e=ve.getUint32(w),w+=4,pn>=w?zi.slice(w-Mr,(w+=e)-Mr):WJ(e);case 220:return e=ve.getUint16(w),w+=2,DJ(e);case 221:return e=ve.getUint32(w),w+=4,DJ(e);case 222:return e=ve.getUint16(w),w+=2,MJ(e);case 223:return e=ve.getUint32(w),w+=4,MJ(e);default:if(t>=224)return t-256;if(t===void 0){let r=new Error("Unexpected end of MessagePack data");throw r.incomplete=!0,r}throw new Error("Unknown MessagePack token "+t)}}}var dxe=/^[a-zA-Z_$][a-zA-Z\d_$]*$/;function B1(t,e){function r(){if(r.count++>jJ){let i;try{i=t.read=new Function("r","return function(){return "+(je.freezeData?"Object.freeze":"")+"({"+t.map(s=>s==="__proto__"?"__proto_:r()":dxe.test(s)?s+":r()":"["+JSON.stringify(s)+"]:r()").join(",")+"})}")(ft)}catch{return jJ=1/0,r()}return t.read0=i,t.highByte===0&&(t.read=KJ(e,t.read)),i()}let n={};for(let i=0,s=t.length;i<s;i++){let o=t[i];o==="__proto__"&&(o="__proto_"),n[o]=ft()}return je.freezeData?Object.freeze(n):n}return r.count=0,t.read0=r,t.highByte===0?KJ(e,r):r}var KJ=(t,e)=>function(){let r=D[w++];if(r===0)return e();let n=t<32?-(t+(r<<5)):t+(r<<5),i=xe[n]||BJ()[n];if(!i)throw new Error("Record id is not defined for "+n);return i.read||(i.read=B1(i,t)),i.read()};function BJ(){let t=e6(()=>(D=null,je.getStructures()));return xe=je._mergeStructures(t,xe)}var vy=Yc,HJ=Yc,VJ=Yc,WJ=Yc;ke.isNativeAccelerationEnabled=!1;function pxe(t){ke.isNativeAccelerationEnabled=!0,vy=e(1),HJ=e(2),VJ=e(3),WJ=e(5);function e(r){return function(i){let s=Xo[wd++];if(s==null){if(xt)return Yc(i);let a=D.byteOffset,c=t(w-r+a,Nr+a,D.buffer);if(typeof c=="string")s=c,Xo=z1;else if(Xo=c,wd=1,pn=1,s=Xo[0],s===void 0)throw new Error("Unexpected end of buffer")}let o=s.length;return o<=i?(w+=i,s):(zi=s,Mr=w,pn=w+o,w+=i,s.slice(0,i))}}}function Yc(t){let e;if(t<16&&(e=H1(t)))return e;if(t>64&&J1)return J1.decode(D.subarray(w,w+=t));let r=w+t,n=[];for(e="";w<r;){let i=D[w++];if((i&128)===0)n.push(i);else if((i&224)===192)if(i<194||w>=r||(D[w]&192)!==128)n.push(65533);else{let s=D[w++]&63;n.push((i&31)<<6|s)}else if((i&240)===224){let s=w<r?D[w]:0;if(w>=r||(s&192)!==128||i===224&&s<160||i===237&&s>=160)n.push(65533);else if(w++,w>=r||(D[w]&192)!==128)n.push(65533);else{let o=D[w++]&63;n.push((i&31)<<12|(s&63)<<6|o)}}else if((i&248)===240){let s=w<r?D[w]:0;if(i>244||w>=r||(s&192)!==128||i===240&&s<144||i===244&&s>=144)n.push(65533);else if(w++,w>=r||(D[w]&192)!==128)n.push(65533);else{let o=D[w++]&63;if(w>=r||(D[w]&192)!==128)n.push(65533);else{let a=D[w++]&63,c=(i&7)<<18|(s&63)<<12|o<<6|a;c-=65536,n.push(c>>>10&1023|55296),n.push(56320|c&1023)}}}else n.push(65533);n.length>=4096&&(e+=Ct.apply(String,n),n.length=0)}return n.length>0&&(e+=Ct.apply(String,n)),e}function DJ(t){let e=new Array(t);for(let r=0;r<t;r++)e[r]=ft();return je.freezeData?Object.freeze(e):e}function MJ(t){if(je.mapsAsObjects){let e={};for(let r=0;r<t;r++){let n=QJ();n==="__proto__"&&(n="__proto_"),e[n]=ft()}return e}else{let e=new Map;for(let r=0;r<t;r++)e.set(ft(),ft());return e}}var Ct=String.fromCharCode;function YJ(t){let e=w,r=new Array(t);for(let n=0;n<t;n++){let i=D[w++];if((i&128)>0){w=e;return}r[n]=i}return Ct.apply(String,r)}function H1(t){if(t<4)if(t<2){if(t===0)return"";{let e=D[w++];if((e&128)>1){w-=1;return}return Ct(e)}}else{let e=D[w++],r=D[w++];if((e&128)>0||(r&128)>0){w-=2;return}if(t<3)return Ct(e,r);let n=D[w++];if((n&128)>0){w-=3;return}return Ct(e,r,n)}else{let e=D[w++],r=D[w++],n=D[w++],i=D[w++];if((e&128)>0||(r&128)>0||(n&128)>0||(i&128)>0){w-=4;return}if(t<6){if(t===4)return Ct(e,r,n,i);{let s=D[w++];if((s&128)>0){w-=5;return}return Ct(e,r,n,i,s)}}else if(t<8){let s=D[w++],o=D[w++];if((s&128)>0||(o&128)>0){w-=6;return}if(t<7)return Ct(e,r,n,i,s,o);let a=D[w++];if((a&128)>0){w-=7;return}return Ct(e,r,n,i,s,o,a)}else{let s=D[w++],o=D[w++],a=D[w++],c=D[w++];if((s&128)>0||(o&128)>0||(a&128)>0||(c&128)>0){w-=8;return}if(t<10){if(t===8)return Ct(e,r,n,i,s,o,a,c);{let l=D[w++];if((l&128)>0){w-=9;return}return Ct(e,r,n,i,s,o,a,c,l)}}else if(t<12){let l=D[w++],u=D[w++];if((l&128)>0||(u&128)>0){w-=10;return}if(t<11)return Ct(e,r,n,i,s,o,a,c,l,u);let d=D[w++];if((d&128)>0){w-=11;return}return Ct(e,r,n,i,s,o,a,c,l,u,d)}else{let l=D[w++],u=D[w++],d=D[w++],p=D[w++];if((l&128)>0||(u&128)>0||(d&128)>0||(p&128)>0){w-=12;return}if(t<14){if(t===12)return Ct(e,r,n,i,s,o,a,c,l,u,d,p);{let f=D[w++];if((f&128)>0){w-=13;return}return Ct(e,r,n,i,s,o,a,c,l,u,d,p,f)}}else{let f=D[w++],m=D[w++];if((f&128)>0||(m&128)>0){w-=14;return}if(t<15)return Ct(e,r,n,i,s,o,a,c,l,u,d,p,f,m);let y=D[w++];if((y&128)>0){w-=15;return}return Ct(e,r,n,i,s,o,a,c,l,u,d,p,f,m,y)}}}}}function NJ(){let t=D[w++],e;if(t<192)e=t-160;else switch(t){case 217:e=D[w++];break;case 218:e=ve.getUint16(w),w+=2;break;case 219:e=ve.getUint32(w),w+=4;break;default:throw new Error("Expected string")}return Yc(e)}function F1(t){return je.copyBuffers?Uint8Array.prototype.slice.call(D,w,w+=t):D.subarray(w,w+=t)}function Qo(t){let e=D[w++];if(sr[e]){let r;return sr[e](D.subarray(w,r=w+=t),n=>{w=n;try{return ft()}finally{w=r}})}else throw new Error("Unknown extension type "+e)}var LJ=new Array(4096);function QJ(){let t=D[w++];if(t>=160&&t<192){if(t=t-160,pn>=w)return zi.slice(w-Mr,(w+=t)-Mr);if(!(pn==0&&Nr<180))return vy(t)}else return w--,XJ(ft());let e=(t<<5^(t>1?ve.getUint16(w):t>0?D[w]:0))&4095,r=LJ[e],n=w,i=w+t-3,s,o=0;if(r&&r.bytes==t){for(;n<i;){if(s=ve.getUint32(n),s!=r[o++]){n=1879048192;break}n+=4}for(i+=3;n<i;)if(s=D[n++],s!=r[o++]){n=1879048192;break}if(n===i)return w=n,r.string;i-=3,n=w}for(r=[],LJ[e]=r,r.bytes=t;n<i;)s=ve.getUint32(n),r.push(s),n+=4;for(i+=3;n<i;)s=D[n++],r.push(s);let a=t<16?H1(t):YJ(t);return a!=null?r.string=a:r.string=vy(t)}function XJ(t){if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean"||typeof t=="bigint")return t.toString();if(t==null)return t+"";if(je.allowArraysInMapKeys&&Array.isArray(t)&&t.flat().every(e=>["string","number","boolean","bigint"].includes(typeof e)))return t.flat().toString();throw new Error(`Invalid property type for record: ${typeof t}`)}var qJ=(t,e)=>{let r=ft().map(XJ),n=t;e!==void 0&&(t=t<32?-((e<<5)+t):(e<<5)+t,r.highByte=e);let i=xe[t];return i&&(i.isShared||Ls)&&((xe.restoreStructures||(xe.restoreStructures=[]))[t]=i),xe[t]=r,r.read=B1(r,n),(r.read0||r.read)()};sr[0]=()=>{};sr[0].noBuffer=!0;sr[66]=t=>{let e=t.byteLength%8||8,r=BigInt(t[0]&128?t[0]-256:t[0]);for(let n=1;n<e;n++)r<<=BigInt(8),r+=BigInt(t[n]);if(t.byteLength!==e){let n=new DataView(t.buffer,t.byteOffset,t.byteLength),i=(s,o)=>{let a=o-s;if(a<=40){let d=n.getBigUint64(s);for(let p=s+8;p<o;p+=8)d<<=BigInt(64),d|=n.getBigUint64(p);return d}let c=s+(a>>4<<3),l=i(s,c),u=i(c,o);return l<<BigInt((o-c)*8)|u};r=r<<BigInt((n.byteLength-e)*8)|i(e,n.byteLength)}return r};var FJ={Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError,URIError,AggregateError:typeof AggregateError=="function"?AggregateError:null};sr[101]=()=>{let t=ft();if(!FJ[t[0]]){let e=Error(t[1],{cause:t[2]});return e.name=t[0],e}return FJ[t[0]](t[1],{cause:t[2]})};sr[105]=t=>{if(je.structuredClone===!1)throw new Error("Structured clone extension is disabled");let e=ve.getUint32(w-4);Gi||(Gi=new Map);let r=D[w],n;r>=144&&r<160||r==220||r==221?n=[]:r>=128&&r<144||r==222||r==223?n=new Map:(r>=199&&r<=201||r>=212&&r<=216)&&D[w+1]===115?n=new Set:n={};let i={target:n};Gi.set(e,i);let s=ft();if(i.used)Object.assign(n,s);else return i.target=s;if(n instanceof Map)for(let[o,a]of s.entries())n.set(o,a);if(n instanceof Set)for(let o of Array.from(s))n.add(o);return n};sr[112]=t=>{if(je.structuredClone===!1)throw new Error("Structured clone extension is disabled");let e=ve.getUint32(w-4),r=Gi.get(e);return r.used=!0,r.target};sr[115]=()=>new Set(ft());var ZJ=["Int8","Uint8","Uint8Clamped","Int16","Uint16","Int32","Uint32","Float32","Float64","BigInt64","BigUint64"].map(t=>t+"Array"),fxe=typeof globalThis=="object"?globalThis:window;sr[116]=t=>{let e=t[0],r=Uint8Array.prototype.slice.call(t,1).buffer,n=ZJ[e];if(!n){if(e===16)return r;if(e===17)return new DataView(r);throw new Error("Could not find typed array for code "+e)}return new fxe[n](r)};sr[120]=()=>{let t=ft();return new RegExp(t[0],t[1])};var mxe=[];sr[98]=t=>{let e=(t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3],r=w;return w+=e-t.length,xt=mxe,xt=[NJ(),NJ()],xt.position0=0,xt.position1=0,xt.postBundlePosition=w,w=r,ft()};sr[255]=t=>t.length==4?new Date((t[0]*16777216+(t[1]<<16)+(t[2]<<8)+t[3])*1e3):t.length==8?new Date(((t[0]<<22)+(t[1]<<14)+(t[2]<<6)+(t[3]>>2))/1e6+((t[3]&3)*4294967296+t[4]*16777216+(t[5]<<16)+(t[6]<<8)+t[7])*1e3):t.length==12?new Date(((t[0]<<24)+(t[1]<<16)+(t[2]<<8)+t[3])/1e6+((t[4]&128?-281474976710656:0)+t[6]*1099511627776+t[7]*4294967296+t[8]*16777216+(t[9]<<16)+(t[10]<<8)+t[11])*1e3):new Date("invalid");function e6(t){je&&je._onSaveState&&je._onSaveState();let e=Nr,r=w,n=wd,i=Mr,s=pn,o=zi,a=Xo,c=Gi,l=xt,u=new Uint8Array(D.slice(0,Nr)),d=xe,p=xe.slice(0,xe.length),f=je,m=Ls,y=t();return Nr=e,w=r,wd=n,Mr=i,pn=s,zi=o,Xo=a,Gi=c,xt=l,D=u,Ls=m,xe=d,xe.splice(0,xe.length,...p),je=f,ve=new DataView(D.buffer,D.byteOffset,D.byteLength),y}function Ey(){D=null,Gi=null,xe=null}function hxe(t){t.unpack?sr[t.type]=t.unpack:sr[t.type]=t}var Iy=new Array(147);for(let t=0;t<256;t++)Iy[t]=+("1e"+Math.floor(45.15-t*.30103));var yxe=Bi,Ty=new Bi({useRecords:!1}),gxe=Ty.unpack,bxe=Ty.unpackMultiple,vxe=Ty.unpack,t6={NEVER:0,ALWAYS:1,DECIMAL_ROUND:3,DECIMAL_FIT:4},r6=new Float32Array(1),$J=new Uint8Array(r6.buffer,0,4);function Exe(t){r6[0]=t;let e=Iy[($J[3]&127)<<1|$J[2]>>7];return(e*t+(t>0?.5:-.5)>>0)/e}Bi.SUPPORTS_STRUCT_HOOKS=!0;var gy;try{gy=new TextEncoder}catch{}var Sy,xy,Wc=typeof Buffer<"u",yy=Wc?function(t){return Buffer.allocUnsafeSlow(t)}:Uint8Array,n6=Wc?Buffer:Uint8Array,UJ=Wc?4294967296:2144337920,A,xd,Fe,I=0,ir,ot=null,Sxe=21760,xxe=/[\u0080-\uFFFF]/,Vc=Symbol("record-id"),Hi=class extends Bi{constructor(e){super(e),this.offset=0;let r,n,i,s,o=n6.prototype.utf8Write?function(T,K){return A.utf8Write(T,K,A.byteLength-K)}:gy&&gy.encodeInto?function(T,K){return gy.encodeInto(T,A.subarray(K)).written}:!1,a=this;e||(e={});let c=e&&e.sequential,l=e.structures||e.saveStructures,u=e.maxSharedStructures;if(u==null&&(u=l?32:0),u>8160)throw new Error("Maximum maxSharedStructure is 8160");e.structuredClone&&e.moreTypes==null&&(this.moreTypes=!0);let d=e.maxOwnStructures;d==null&&(d=l?32:64),!this.structures&&e.useRecords!=!1&&(this.structures=[]);let p=u>32||d+u>64,f=u+64,m=u+d+64;if(m>8256)throw new Error("Maximum maxSharedStructure + maxOwnStructure is 8192");let y=[],b=0,v=0;this.pack=this.encode=function(T,K){if(A||(A=new yy(8192),Fe=A.dataView||(A.dataView=new DataView(A.buffer,0,8192)),I=0),ir=A.length-10,ir-I<2048?(A=new yy(A.length),Fe=A.dataView||(A.dataView=new DataView(A.buffer,0,A.length)),ir=A.length-10,I=0):I=I+7&2147483640,r=I,K&a6&&(I+=K&255),s=a.structuredClone?new Map:null,a.bundleStrings&&typeof T!="string"?(ot=[],ot.size=1/0):ot=null,i=a.structures,i){i.uninitialized&&(i=a._mergeStructures(a.getStructures()));let C=i.sharedLength||0;if(C>u)throw new Error("Shared structures is larger than maximum shared structures, try increasing maxSharedStructures to "+i.sharedLength);if(!i.transitions){i.transitions=Object.create(null);for(let j=0;j<C;j++){let Y=i[j];if(!Y)continue;let W,G=i.transitions;for(let Ae=0,ge=Y.length;Ae<ge;Ae++){let qn=Y[Ae];W=G[qn],W||(W=G[qn]=Object.create(null)),G=W}G[Vc]=j+64}this.lastNamedStructuresLength=C}c||(i.nextId=C+64)}n&&(n=!1);let P;try{a._writeStruct&&T&&typeof T=="object"?T.constructor===Object?q(T):T.constructor!==Map&&!Array.isArray(T)&&!xy.some(j=>T instanceof j)?q(T.toJSON?T.toJSON():T):k(T):k(T);let C=ot;if(ot&&zJ(r,k,0),s&&s.idsToInsert){let j=s.idsToInsert.sort((Ae,ge)=>Ae.offset>ge.offset?1:-1),Y=j.length,W=-1;for(;C&&Y>0;){let Ae=j[--Y].offset+r;Ae<C.stringsPosition+r&&W===-1&&(W=0),Ae>C.position+r?W>=0&&(W+=6):(W>=0&&(Fe.setUint32(C.position+r,Fe.getUint32(C.position+r)+W),W=-1),C=C.previous,Y++)}W>=0&&C&&Fe.setUint32(C.position+r,Fe.getUint32(C.position+r)+W),I+=j.length*6,I>ir&&U(I),a.offset=I;let G=wxe(A.subarray(r,I),j);return s=null,G}return a.offset=I,K&s6?(A.start=r,A.end=I,A):A.subarray(r,I)}catch(C){throw P=C,C}finally{if(i&&(E(),n&&a.saveStructures)){let C=i.sharedLength||0,j=A.subarray(r,I),Y=(a._prepareStructures||Ixe)(i,a);if(!P)return a.saveStructures(Y,Y.isCompatible)===!1?(i.uninitialized=!0,a.pack(T,K)):(a.lastNamedStructuresLength=C,A.length>1073741824&&(A=null),j)}A.length>1073741824&&(A=null),K&o6&&(I=r)}};let E=()=>{v<10&&v++;let T=i.sharedLength||0;if(i.length>T&&!c&&(i.length=T),b>1e4)i.transitions=null,v=0,b=0,y.length>0&&(y=[]);else if(y.length>0&&!c){for(let K=0,P=y.length;K<P;K++)y[K][Vc]=0;y=[]}},S=T=>{var K=T.length;K<16?A[I++]=144|K:K<65536?(A[I++]=220,A[I++]=K>>8,A[I++]=K&255):(A[I++]=221,Fe.setUint32(I,K),I+=4);for(let P=0;P<K;P++)k(T[P])},k=T=>{I>ir&&(A=U(I));var K=typeof T,P;if(K==="string"){let C=T.length;if(ot&&C>=4&&C<4096){if((ot.size+=C)>Sxe){let G,Ae=(ot[0]?ot[0].length*3+ot[1].length:0)+10;I+Ae>ir&&(A=U(I+Ae));let ge;ot.position?(ge=ot,A[I]=200,I+=3,A[I++]=98,G=I-r,I+=4,zJ(r,k,0),Fe.setUint16(G+r-3,I-r-G)):(A[I++]=214,A[I++]=98,G=I-r,I+=4),ot=["",""],ot.previous=ge,ot.size=0,ot.position=G}let W=xxe.test(T);ot[W?0:1]+=T,A[I++]=193,k(W?-C:C);return}let j;C<32?j=1:C<256?j=2:C<65536?j=3:j=5;let Y=C*3;if(I+Y>ir&&(A=U(I+Y)),C<64||!o){let W,G,Ae,ge=I+j;for(W=0;W<C;W++)G=T.charCodeAt(W),G<128?A[ge++]=G:G<2048?(A[ge++]=G>>6|192,A[ge++]=G&63|128):(G&64512)===55296&&((Ae=T.charCodeAt(W+1))&64512)===56320?(G=65536+((G&1023)<<10)+(Ae&1023),W++,A[ge++]=G>>18|240,A[ge++]=G>>12&63|128,A[ge++]=G>>6&63|128,A[ge++]=G&63|128):(A[ge++]=G>>12|224,A[ge++]=G>>6&63|128,A[ge++]=G&63|128);P=ge-I-j}else P=o(T,I+j);P<32?A[I++]=160|P:P<256?(j<2&&A.copyWithin(I+2,I+1,I+1+P),A[I++]=217,A[I++]=P):P<65536?(j<3&&A.copyWithin(I+3,I+2,I+2+P),A[I++]=218,A[I++]=P>>8,A[I++]=P&255):(j<5&&A.copyWithin(I+5,I+3,I+3+P),A[I++]=219,Fe.setUint32(I,P),I+=4),I+=P}else if(K==="number")if(T>>>0===T)T<32||T<128&&this.useRecords===!1||T<64&&!this._writeStruct?A[I++]=T:T<256?(A[I++]=204,A[I++]=T):T<65536?(A[I++]=205,A[I++]=T>>8,A[I++]=T&255):(A[I++]=206,Fe.setUint32(I,T),I+=4);else if(T>>0===T)T>=-32?A[I++]=256+T:T>=-128?(A[I++]=208,A[I++]=T+256):T>=-32768?(A[I++]=209,Fe.setInt16(I,T),I+=2):(A[I++]=210,Fe.setInt32(I,T),I+=4);else{let C;if((C=this.useFloat32)>0&&T<4294967296&&T>=-2147483648){A[I++]=202,Fe.setFloat32(I,T);let j;if(C<4||(j=T*Iy[(A[I]&127)<<1|A[I+1]>>7])>>0===j){I+=4;return}else I--}A[I++]=203,Fe.setFloat64(I,T),I+=8}else if(K==="object"||K==="function")if(!T)A[I++]=192;else{if(s){let j=s.get(T);if(j){if(!j.id){let Y=s.idsToInsert||(s.idsToInsert=[]);j.id=Y.push(j)}A[I++]=214,A[I++]=112,Fe.setUint32(I,j.id),I+=4;return}else s.set(T,{offset:I-r})}let C=T.constructor;if(C===Object)ee(T);else if(C===Array)S(T);else if(C===Map)if(this.mapAsEmptyObject)A[I++]=128;else{P=T.size,P<16?A[I++]=128|P:P<65536?(A[I++]=222,A[I++]=P>>8,A[I++]=P&255):(A[I++]=223,Fe.setUint32(I,P),I+=4);for(let[j,Y]of T)k(j),k(Y)}else{for(let j=0,Y=Sy.length;j<Y;j++){let W=xy[j];if(T instanceof W){let G=Sy[j];if(G.write){G.type&&(A[I++]=212,A[I++]=G.type,A[I++]=0);let Tl=G.write.call(this,T);Tl===T?Array.isArray(T)?S(T):ee(T):k(Tl);return}let Ae=A,ge=Fe,qn=I;A=null;let ns;try{ns=G.pack.call(this,T,Tl=>(A=Ae,Ae=null,I+=Tl,I>ir&&U(I),{target:A,targetView:Fe,position:I-Tl}),k)}finally{Ae&&(A=Ae,Fe=ge,I=qn,ir=A.length-10)}ns&&(ns.length+I>ir&&U(ns.length+I),I=JJ(ns,A,I,G.type));return}}if(Array.isArray(T))S(T);else{if(T.toJSON){let j=T.toJSON();if(j!==T)return k(j)}if(K==="function")return k(this.writeFunction&&this.writeFunction(T));ee(T)}}}else if(K==="boolean")A[I++]=T?195:194;else if(K==="bigint"){if(T<9223372036854776e3&&T>=-9223372036854776e3)A[I++]=211,Fe.setBigInt64(I,T);else if(T<18446744073709552e3&&T>0)A[I++]=207,Fe.setBigUint64(I,T);else if(this.largeBigIntToFloat)A[I++]=203,Fe.setFloat64(I,Number(T));else{if(this.largeBigIntToString)return k(T.toString());if(this.useBigIntExtension||this.moreTypes){let C=T<0?BigInt(-1):BigInt(0),j;if(T>>BigInt(65536)===C){let Y=BigInt(18446744073709552e3)-BigInt(1),W=[];for(;W.push(T&Y),T>>BigInt(63)!==C;)T>>=BigInt(64);j=new Uint8Array(new BigUint64Array(W).buffer),j.reverse()}else{let Y=T<0,W=(Y?~T:T).toString(16);if(W.length%2?W="0"+W:parseInt(W.charAt(0),16)>=8&&(W="00"+W),Wc)j=Buffer.from(W,"hex");else{j=new Uint8Array(W.length/2);for(let G=0;G<j.length;G++)j[G]=parseInt(W.slice(G*2,G*2+2),16)}if(Y)for(let G=0;G<j.length;G++)j[G]=~j[G]}j.length+I>ir&&U(j.length+I),I=JJ(j,A,I,66);return}else throw new RangeError(T+" was too large to fit in MessagePack 64-bit integer format, use useBigIntExtension, or set largeBigIntToFloat to convert to float-64, or set largeBigIntToString to convert to string")}I+=8}else if(K==="undefined")this.encodeUndefinedAsNil?A[I++]=192:(A[I++]=212,A[I++]=0,A[I++]=0);else throw new Error("Unknown type: "+K)},_=this.variableMapSize||this.coercibleKeyAsNumber||this.skipValues?T=>{let K;if(this.skipValues){K=[];for(let j in T)(typeof T.hasOwnProperty!="function"||T.hasOwnProperty(j))&&!this.skipValues.includes(T[j])&&K.push(j)}else K=Object.keys(T);let P=K.length;P<16?A[I++]=128|P:P<65536?(A[I++]=222,A[I++]=P>>8,A[I++]=P&255):(A[I++]=223,Fe.setUint32(I,P),I+=4);let C;if(this.coercibleKeyAsNumber)for(let j=0;j<P;j++){C=K[j];let Y=Number(C);k(isNaN(Y)?C:Y),k(T[C])}else for(let j=0;j<P;j++)k(C=K[j]),k(T[C])}:T=>{A[I++]=222;let K=I-r;I+=2;let P=0;for(let C in T)(typeof T.hasOwnProperty!="function"||T.hasOwnProperty(C))&&(k(C),k(T[C]),P++);if(P>65535)throw new Error('Object is too large to serialize with fast 16-bit map size, use the "variableMapSize" option to serialize this object');A[K+++r]=P>>8,A[K+r]=P&255},O=this.useRecords===!1?_:e.progressiveRecords&&!p?T=>{let K,P=i.transitions||(i.transitions=Object.create(null)),C=I++-r,j;for(let Y in T)if(typeof T.hasOwnProperty!="function"||T.hasOwnProperty(Y)){if(K=P[Y],K)P=K;else{let W=Object.keys(T),G=P;P=i.transitions;let Ae=0;for(let ge=0,qn=W.length;ge<qn;ge++){let ns=W[ge];K=P[ns],K||(K=P[ns]=Object.create(null),Ae++),P=K}C+r+1==I?(I--,te(P,W,Ae)):Ge(P,W,C,Ae),j=!0,P=G[Y]}k(T[Y])}if(!j){let Y=P[Vc];Y?A[C+r]=Y:Ge(P,Object.keys(T),C,0)}}:T=>{let K,P=i.transitions||(i.transitions=Object.create(null)),C=0;for(let Y in T)(typeof T.hasOwnProperty!="function"||T.hasOwnProperty(Y))&&(K=P[Y],K||(K=P[Y]=Object.create(null),C++),P=K);let j=P[Vc];j?j>=96&&p?(A[I++]=((j-=96)&31)+96,A[I++]=j>>5):A[I++]=j:te(P,P.__keys__||Object.keys(T),C);for(let Y in T)(typeof T.hasOwnProperty!="function"||T.hasOwnProperty(Y))&&k(T[Y])},N=typeof this.useRecords=="function"&&this.useRecords,ee=N?T=>{N(T)?O(T):_(T)}:O,q=T=>{let K=a._writeStruct(T,A,r,I,i,U,(P,C,j)=>{if(j)return n=!0;I=C;let Y=A;return k(P),E(),Y!==A?{position:I,targetView:Fe,target:A}:I});if(K===0)return ee(T);I=K},U=T=>{let K;if(T>16777216){if(T-r>UJ)throw new Error("Packed buffer would be larger than maximum buffer size");K=Math.min(UJ,Math.round(Math.max((T-r)*(T>67108864?1.25:2),4194304)/4096)*4096)}else K=(Math.max(T-r<<2,A.length-1)>>12)+1<<12;let P=new yy(K);return Fe=P.dataView||(P.dataView=new DataView(P.buffer,0,K)),T=Math.min(T,A.length),A.copy?A.copy(P,0,r,T):P.set(A.slice(r,T)),I-=r,r=0,ir=P.length-10,A=P},te=(T,K,P)=>{let C=i.nextId;C||(C=64),C<f&&this.shouldShareStructure&&!this.shouldShareStructure(K)?(C=i.nextOwnId,C<m||(C=f),i.nextOwnId=C+1):(C>=m&&(C=f),i.nextId=C+1);let j=K.highByte=C>=96&&p?C-96>>5:-1;T[Vc]=C,T.__keys__=K,i[C-64]=K,C<f?(K.isShared=!0,i.sharedLength=C-63,n=!0,j>=0?(A[I++]=(C&31)+96,A[I++]=j):A[I++]=C):(j>=0?(A[I++]=213,A[I++]=114,A[I++]=(C&31)+96,A[I++]=j):(A[I++]=212,A[I++]=114,A[I++]=C),P&&(b+=v*P),y.length>=d&&(y.shift()[Vc]=0),y.push(T),k(K))},Ge=(T,K,P,C)=>{let j=A,Y=I,W=ir,G=r;A=xd,I=0,r=0,A||(xd=A=new yy(8192)),ir=A.length-10,te(T,K,C),xd=A;let Ae=I;if(A=j,I=Y,ir=W,r=G,Ae>1){let ge=I+Ae-1;ge>ir&&U(ge);let qn=P+r;A.copyWithin(qn+Ae,qn+1,I),A.set(xd.slice(0,Ae),qn),I=ge}else A[P+r]=xd[0]}}useBuffer(e){A=e,A.dataView||(A.dataView=new DataView(A.buffer,A.byteOffset,A.byteLength)),Fe=A.dataView,I=0}set position(e){I=e}get position(){return I}clearSharedData(){this.structures&&(this.structures=[]),this.typedStructs&&(this.typedStructs=[])}};xy=[Date,Set,Error,RegExp,ArrayBuffer,Object.getPrototypeOf(Uint8Array.prototype).constructor,DataView,by];Sy=[{pack(t,e,r){let n=t.getTime()/1e3;if((this.useTimestamp32||t.getMilliseconds()===0)&&n>=0&&n<4294967296){let{target:i,targetView:s,position:o}=e(6);i[o++]=214,i[o++]=255,s.setUint32(o,n)}else if(n>0&&n<4294967296){let{target:i,targetView:s,position:o}=e(10);i[o++]=215,i[o++]=255,s.setUint32(o,t.getMilliseconds()*4e6+(n/1e3/4294967296>>0)),s.setUint32(o+4,n)}else if(isNaN(n)){if(this.onInvalidDate)return e(0),r(this.onInvalidDate());let{target:i,targetView:s,position:o}=e(3);i[o++]=212,i[o++]=255,i[o++]=255}else{let{target:i,targetView:s,position:o}=e(15);i[o++]=199,i[o++]=12,i[o++]=255,s.setUint32(o,t.getMilliseconds()*1e6),s.setBigInt64(o+4,BigInt(Math.floor(n)))}}},{pack(t,e,r){if(this.setAsEmptyObject)return e(0),r({});let n=Array.from(t),{target:i,position:s}=e(this.moreTypes?3:0);this.moreTypes&&(i[s++]=212,i[s++]=115,i[s++]=0),r(n)}},{pack(t,e,r){let{target:n,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(n[i++]=212,n[i++]=101,n[i++]=0),r([t.name,t.message,t.cause])}},{pack(t,e,r){let{target:n,position:i}=e(this.moreTypes?3:0);this.moreTypes&&(n[i++]=212,n[i++]=120,n[i++]=0),r([t.source,t.flags])}},{pack(t,e){this.moreTypes?$1(t,16,e):U1(Wc?Buffer.from(t):new Uint8Array(t),e)}},{pack(t,e){let r=t.constructor;r!==n6&&this.moreTypes?$1(t,ZJ.indexOf(r.name),e):U1(t,e)}},{pack(t,e){this.moreTypes?$1(t,17,e):U1(Wc?Buffer.from(t):new Uint8Array(t),e)}},{pack(t,e){let{target:r,position:n}=e(1);r[n]=193}}];function $1(t,e,r,n){let i=t.byteLength;if(i+1<256){var{target:s,position:o}=r(4+i);s[o++]=199,s[o++]=i+1}else if(i+1<65536){var{target:s,position:o}=r(5+i);s[o++]=200,s[o++]=i+1>>8,s[o++]=i+1&255}else{var{target:s,position:o,targetView:a}=r(7+i);s[o++]=201,a.setUint32(o,i+1),o+=4}s[o++]=116,s[o++]=e,t.buffer||(t=new Uint8Array(t)),s.set(new Uint8Array(t.buffer,t.byteOffset,t.byteLength),o)}function U1(t,e){let r=t.byteLength;var n,i;if(r<256){var{target:n,position:i}=e(r+2);n[i++]=196,n[i++]=r}else if(r<65536){var{target:n,position:i}=e(r+3);n[i++]=197,n[i++]=r>>8,n[i++]=r&255}else{var{target:n,position:i,targetView:s}=e(r+5);n[i++]=198,s.setUint32(i,r),i+=4}n.set(t,i)}function JJ(t,e,r,n){let i=t.length;switch(i){case 1:e[r++]=212;break;case 2:e[r++]=213;break;case 4:e[r++]=214;break;case 8:e[r++]=215;break;case 16:e[r++]=216;break;default:i<256?(e[r++]=199,e[r++]=i):i<65536?(e[r++]=200,e[r++]=i>>8,e[r++]=i&255):(e[r++]=201,e[r++]=i>>24,e[r++]=i>>16&255,e[r++]=i>>8&255,e[r++]=i&255)}return e[r++]=n,e.set(t,r),r+=i,r}function wxe(t,e){let r,n=e.length*6,i=t.length-n;for(;r=e.pop();){let s=r.offset,o=r.id;t.copyWithin(s+n,s,i),n-=6;let a=s+n;t[a++]=214,t[a++]=105,t[a++]=o>>24,t[a++]=o>>16&255,t[a++]=o>>8&255,t[a++]=o&255,i=s}return t}function zJ(t,e,r){if(ot.length>0){Fe.setUint32(ot.position+t,I+r-ot.position-t),ot.stringsPosition=I-t;let n=ot;ot=null,e(n[0]),e(n[1])}}function _xe(t){if(t.Class){if(!t.pack&&!t.write)throw new Error("Extension has no pack or write function");if(t.pack&&!t.type)throw new Error("Extension has no type (numeric code to identify the extension)");xy.unshift(t.Class),Sy.unshift(t)}hxe(t)}function Ixe(t,e){return t.isCompatible=r=>{let n=!r||(e.lastNamedStructuresLength||0)===r.length;return n||e._mergeStructures(r),n},t}Hi.SUPPORTS_STRUCT_HOOKS=!0;var i6=new Hi({useRecords:!1}),Txe=i6.pack,kxe=i6.pack,Axe=Hi,{NEVER:Rxe,ALWAYS:Oxe,DECIMAL_ROUND:Cxe,DECIMAL_FIT:jxe}=t6,s6=512,o6=1024,a6=2048,wy=class extends GJ.Transform{constructor(e){e||(e={}),e.writableObjectMode=!0,super(e),e.sequential=!0,this.packr=e.packr||new Hi(e)}_transform(e,r,n){this.push(this.packr.pack(e)),n()}},_y=class extends GJ.Transform{constructor(e){e||(e={}),e.objectMode=!0,super(e),e.structures=[],this.maxIncompleteBufferSize=e.maxIncompleteBufferSize!==void 0?e.maxIncompleteBufferSize:67108864,this.unpackr=e.unpackr||new Bi(e)}_transform(e,r,n){this.incompleteBuffer&&(e=Buffer.concat([this.incompleteBuffer,e]),this.incompleteBuffer=null);let i;try{i=this.unpackr.unpackMultiple(e)}catch(s){if(s.incomplete){let o=e.slice(s.lastPosition);if(o.length>this.maxIncompleteBufferSize)return this.incompleteBuffer=null,n(new Error("Maximum incomplete buffer size exceeded"));this.incompleteBuffer=o,i=s.values}else return n(s)}for(let s of i||[])s===null&&(s=this.getNullValue()),this.push(s);n()}getNullValue(){return Symbol.for(null)}};function Pxe(t,e={}){if(!t||typeof t!="object")throw new Error("first argument must be an Iterable, Async Iterable, or a Promise for an Async Iterable");if(typeof t[Symbol.iterator]=="function")return Kxe(t,e);if(typeof t.then=="function"||typeof t[Symbol.asyncIterator]=="function")return Dxe(t,e);throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a Promise")}function*Kxe(t,e){let r=new Hi(e);for(let n of t)yield r.pack(n)}async function*Dxe(t,e){let r=new Hi(e);for await(let n of t)yield r.pack(n)}function Mxe(t,e={}){if(!t||typeof t!="object")throw new Error("first argument must be an Iterable, Async Iterable, Iterator, Async Iterator, or a promise");let r=new Bi(e),n,i=s=>{let o;n&&(s=Buffer.concat([n,s]),n=void 0);try{o=r.unpackMultiple(s)}catch(a){if(a.incomplete)n=s.slice(a.lastPosition),o=a.values;else throw a}return o};if(typeof t[Symbol.iterator]=="function")return(function*(){for(let o of t)yield*i(o)})();if(typeof t[Symbol.asyncIterator]=="function")return(async function*(){for await(let o of t)yield*i(o)})()}var Nxe=Mxe,Lxe=Pxe,qxe=!1,Fxe=!0,$xe=process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED!==void 0&&process.env.MSGPACKR_NATIVE_ACCELERATION_DISABLED.toLowerCase()==="true";if(!$xe){let t;try{typeof require=="function"?t=OJ():t=uxe.createRequire(typeof document>"u"?require("url").pathToFileURL(__CM_FILENAME__).href:q1&&q1.tagName.toUpperCase()==="SCRIPT"&&q1.src||new URL("node.cjs",document.baseURI).href)("msgpackr-extract"),t&&pxe(t.extractStrings)}catch{}}ke.ALWAYS=Oxe;ke.C1=G1;ke.DECIMAL_FIT=jxe;ke.DECIMAL_ROUND=Cxe;ke.Decoder=yxe;ke.DecoderStream=_y;ke.Encoder=Axe;ke.EncoderStream=wy;ke.FLOAT32_OPTIONS=t6;ke.NEVER=Rxe;ke.Packr=Hi;ke.PackrStream=wy;ke.RESERVE_START_SPACE=a6;ke.RESET_BUFFER_MODE=o6;ke.REUSE_BUFFER_MODE=s6;ke.Unpackr=Bi;ke.UnpackrStream=_y;ke.addExtension=_xe;ke.clearSource=Ey;ke.decode=vxe;ke.decodeIter=Nxe;ke.encode=kxe;ke.encodeIter=Lxe;ke.mapsAsObjects=Fxe;ke.pack=Txe;ke.roundFloat32=Exe;ke.unpack=gxe;ke.unpackMultiple=bxe;ke.useRecords=qxe});var Ay=h(ky=>{"use strict";Object.defineProperty(ky,"__esModule",{value:!0});ky.version=void 0;ky.version="5.81.5"});var W1=h(_d=>{"use strict";Object.defineProperty(_d,"__esModule",{value:!0});_d.Scripts=void 0;_d.raw2NextJobData=Ry;var Uxe=c6(),Jxe=new Uxe.Packr({useRecords:!1,encodeUndefinedAsNil:!0}),wt=Jxe.pack,Pn=_r(),qs=Dr(),zxe=Ay(),Gxe=ly(),Bxe=5,V1=class{constructor(e){this.queue=e,this.version=zxe.version;let r=this.queue.keys;this.moveToFinishedKeys=[r.wait,r.active,r.prioritized,r.events,r.stalled,r.limiter,r.delayed,r.paused,r.meta,r.pc,void 0,void 0,void 0,void 0]}execCommand(e,r,n){let i=`${r}:${this.version}`;return e.runCommand(i,n)}async isJobInList(e,r){let n=await this.queue.client,i;return(0,qs.isRedisVersionLowerThan)(this.queue.redisVersion,"6.0.6",this.queue.databaseType)?i=await this.execCommand(n,"isJobInList",[e,r]):i=await n.lpos(e,r),Number.isInteger(i)}addDelayedJobArgs(e,r,n){let i=this.queue.keys,s=[i.marker,i.meta,i.id,i.delayed,i.completed,i.events];return s.push(wt(n),e.data,r),s}addDelayedJob(e,r,n,i){let s=this.addDelayedJobArgs(r,n,i);return this.execCommand(e,"addDelayedJob",s)}addPrioritizedJobArgs(e,r,n){let i=this.queue.keys,s=[i.marker,i.meta,i.id,i.prioritized,i.delayed,i.completed,i.active,i.events,i.pc];return s.push(wt(n),e.data,r),s}addPrioritizedJob(e,r,n,i){let s=this.addPrioritizedJobArgs(r,n,i);return this.execCommand(e,"addPrioritizedJob",s)}addParentJobArgs(e,r,n){let i=this.queue.keys,s=[i.meta,i.id,i.delayed,i["waiting-children"],i.completed,i.events];return s.push(wt(n),e.data,r),s}addParentJob(e,r,n,i){let s=this.addParentJobArgs(r,n,i);return this.execCommand(e,"addParentJob",s)}addStandardJobArgs(e,r,n){let i=this.queue.keys,s=[i.wait,i.paused,i.meta,i.id,i.completed,i.delayed,i.active,i.events,i.marker];return s.push(wt(n),e.data,r),s}addStandardJob(e,r,n,i){let s=this.addStandardJobArgs(r,n,i);return this.execCommand(e,"addStandardJob",s)}async addJob(e,r,n,i,s={}){let o=this.queue.keys,a=r.parent,c=[o[""],typeof i<"u"?i:"",r.name,r.timestamp,r.parentKey||null,s.parentDependenciesKey||null,a,r.repeatJobKey,r.deduplicationId?`${o.de}:${r.deduplicationId}`:null],l;if(n.repeat){let d=Object.assign({},n.repeat);d.startDate&&(d.startDate=+new Date(d.startDate)),d.endDate&&(d.endDate=+new Date(d.endDate)),l=wt(Object.assign(Object.assign({},n),{repeat:d}))}else l=wt(n);let u;if(s.addToWaitingChildren?u=await this.addParentJob(e,r,l,c):typeof n.delay=="number"&&n.delay>0?u=await this.addDelayedJob(e,r,l,c):n.priority?u=await this.addPrioritizedJob(e,r,l,c):u=await this.addStandardJob(e,r,l,c),u<0)throw this.finishedErrors({code:u,parentKey:s.parentKey,command:"addJob"});return u}pauseArgs(e){let r="wait",n="paused";e||(r="paused",n="wait");let i=[r,n,"meta","prioritized"].map(o=>this.queue.toKey(o));i.push(this.queue.keys.events,this.queue.keys.delayed,this.queue.keys.marker);let s=[e?"paused":"resumed"];return i.concat(s)}async pause(e){let r=await this.queue.client,n=this.pauseArgs(e);return this.execCommand(r,"pause",n)}addRepeatableJobArgs(e,r,n,i){let s=this.queue.keys,o=[s.repeat,s.delayed],a=[r,wt(n),i,e,s[""]];return o.concat(a)}async addRepeatableJob(e,r,n,i){let s=await this.queue.client,o=this.addRepeatableJobArgs(e,r,n,i);return this.execCommand(s,"addRepeatableJob",o)}async removeDeduplicationKey(e,r){let n=await this.queue.client,s=[`${this.queue.keys.de}:${e}`],o=[r];return this.execCommand(n,"removeDeduplicationKey",s.concat(o))}async addJobScheduler(e,r,n,i,s,o,a){let c=await this.queue.client,l=this.queue.keys,u=[l.repeat,l.delayed,l.wait,l.paused,l.meta,l.prioritized,l.marker,l.id,l.events,l.pc,l.active],d=[r,wt(s),e,n,wt(i),wt(o),Date.now(),l[""],a?this.queue.toKey(a):""],p=await this.execCommand(c,"addJobScheduler",u.concat(d));if(typeof p=="number"&&p<0)throw this.finishedErrors({code:p,command:"addJobScheduler"});return p}async updateRepeatableJobMillis(e,r,n,i){let s=[this.queue.keys.repeat,n,r,i];return this.execCommand(e,"updateRepeatableJobMillis",s)}async updateJobSchedulerNextMillis(e,r,n,i,s){let o=await this.queue.client,a=this.queue.keys,c=[a.repeat,a.delayed,a.wait,a.paused,a.meta,a.prioritized,a.marker,a.id,a.events,a.pc,s?this.queue.toKey(s):"",a.active],l=[r,e,n,wt(i),Date.now(),a[""],s];return this.execCommand(o,"updateJobScheduler",c.concat(l))}removeRepeatableArgs(e,r,n){let i=this.queue.keys,s=[i.repeat,i.delayed,i.events],o=[e,this.getRepeatConcatOptions(r,n),n,i[""]];return s.concat(o)}getRepeatConcatOptions(e,r){return r&&r.split(":").length>2?r:e}async removeRepeatable(e,r,n){let i=await this.queue.client,s=this.removeRepeatableArgs(e,r,n);return this.execCommand(i,"removeRepeatable",s)}async removeJobScheduler(e){let r=await this.queue.client,n=this.queue.keys,i=[n.repeat,n.delayed,n.events],s=[e,n[""]];return this.execCommand(r,"removeJobScheduler",i.concat(s))}removeArgs(e,r){let n=[e,"repeat"].map(s=>this.queue.toKey(s)),i=[e,r?1:0,this.queue.toKey("")];return n.concat(i)}async remove(e,r){let n=await this.queue.client,i=this.removeArgs(e,r),s=await this.execCommand(n,"removeJob",i);if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"removeJob"});return s}async removeUnprocessedChildren(e){let r=await this.queue.client,n=[this.queue.toKey(e),this.queue.keys.meta,this.queue.toKey(""),e];await this.execCommand(r,"removeUnprocessedChildren",n)}async extendLock(e,r,n,i){i=i||await this.queue.client;let s=[this.queue.toKey(e)+":lock",this.queue.keys.stalled,r,n,e];return this.execCommand(i,"extendLock",s)}async extendLocks(e,r,n){let i=await this.queue.client,s=[this.queue.keys.stalled,this.queue.toKey(""),wt(r),wt(e),n];return this.execCommand(i,"extendLocks",s)}async updateData(e,r){let n=await this.queue.client,i=[this.queue.toKey(e.id)],s=JSON.stringify(r),o=await this.execCommand(n,"updateData",i.concat([s]));if(o<0)throw this.finishedErrors({code:o,jobId:e.id,command:"updateData"})}async updateProgress(e,r){let n=await this.queue.client,i=[this.queue.toKey(e),this.queue.keys.events,this.queue.keys.meta],s=JSON.stringify(r),o=await this.execCommand(n,"updateProgress",i.concat([e,s]));if(o<0)throw this.finishedErrors({code:o,jobId:e,command:"updateProgress"})}async addLog(e,r,n){let i=await this.queue.client,s=[this.queue.toKey(e),this.queue.toKey(e)+":logs"],o=await this.execCommand(i,"addLog",s.concat([e,r,n||""]));if(o<0)throw this.finishedErrors({code:o,jobId:e,command:"addLog"});return o}moveToFinishedArgs(e,r,n,i,s,o,a,c=!0,l){var u,d,p,f,m,y,b;let v=this.queue.keys,E=this.queue.opts,S=s==="completed"?E.removeOnComplete:E.removeOnFail,k=this.queue.toKey(`metrics:${s}`),_=this.moveToFinishedKeys;_[10]=v[s],_[11]=this.queue.toKey((u=e.id)!==null&&u!==void 0?u:""),_[12]=k,_[13]=this.queue.keys.marker;let O=this.getKeepJobs(i,S),N=[e.id,a,n,typeof r>"u"?"null":r,s,!c||this.queue.closing?0:1,v[""],wt({token:o,name:E.name,keepJobs:O,limiter:E.limiter,lockDuration:E.lockDuration,attempts:e.opts.attempts,maxMetricsSize:!((d=E.metrics)===null||d===void 0)&&d.maxDataPoints?(p=E.metrics)===null||p===void 0?void 0:p.maxDataPoints:"",fpof:!!(!((f=e.opts)===null||f===void 0)&&f.failParentOnFailure),cpof:!!(!((m=e.opts)===null||m===void 0)&&m.continueParentOnFailure),idof:!!(!((y=e.opts)===null||y===void 0)&&y.ignoreDependencyOnFailure),rdof:!!(!((b=e.opts)===null||b===void 0)&&b.removeDependencyOnFailure)}),l?wt((0,qs.objectToFlatArray)(l)):void 0];return _.concat(N)}getKeepJobs(e,r){return typeof e>"u"?r||{count:e?0:-1}:typeof e=="object"?e:typeof e=="number"?{count:e}:{count:e?0:-1}}async moveToFinished(e,r){let n=await this.queue.client,i=await this.execCommand(n,"moveToFinished",r);if(i<0)throw this.finishedErrors({code:i,jobId:e,command:"moveToFinished",state:"active"});if(typeof i<"u")return Ry(i)}drainArgs(e){let r=this.queue.keys,n=[r.wait,r.paused,r.delayed,r.prioritized,r.repeat],i=[r[""],e?"1":"0"];return n.concat(i)}async drain(e){let r=await this.queue.client,n=this.drainArgs(e);return this.execCommand(r,"drain",n)}removeChildDependencyArgs(e,r){let i=[this.queue.keys[""]],s=[this.queue.toKey(e),r];return i.concat(s)}async removeChildDependency(e,r){let n=await this.queue.client,i=this.removeChildDependencyArgs(e,r),s=await this.execCommand(n,"removeChildDependency",i);switch(s){case 0:return!0;case 1:return!1;default:throw this.finishedErrors({code:s,jobId:e,parentKey:r,command:"removeChildDependency"})}}getRangesArgs(e,r,n,i){let s=this.queue.keys,o=e.map(l=>l==="waiting"?"wait":l),a=[s[""]],c=[r,n,i?"1":"0",...o];return a.concat(c)}async getRanges(e,r=0,n=1,i=!1){let s=await this.queue.client,o=this.getRangesArgs(e,r,n,i);return await this.execCommand(s,"getRanges",o)}getJobsArgs(e,r,n,i){let s=this.queue.keys,o=[...new Set(e.map(l=>l==="waiting"?"wait":l))],a=[s[""]],c=[r,n,i?"1":"0",Bxe,...o];return a.concat(c)}async getJobs(e,r=0,n=-1,i=!1){let s=await this.queue.client,o=this.getJobsArgs(e,r,n,i);return await this.execCommand(s,"getJobs",o)}getCountsArgs(e){let r=this.queue.keys,n=e.map(o=>o==="waiting"?"wait":o),i=[r[""]],s=[...n];return i.concat(s)}async getCounts(e){let r=await this.queue.client,n=this.getCountsArgs(e);return await this.execCommand(r,"getCounts",n)}getCountsPerPriorityArgs(e){let r=[this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized],n=e;return r.concat(n)}async getCountsPerPriority(e){let r=await this.queue.client,n=this.getCountsPerPriorityArgs(e);return await this.execCommand(r,"getCountsPerPriority",n)}getDependencyCountsArgs(e,r){let n=[`${e}:processed`,`${e}:dependencies`,`${e}:failed`,`${e}:unsuccessful`].map(s=>this.queue.toKey(s)),i=r;return n.concat(i)}async getDependencyCounts(e,r){let n=await this.queue.client,i=this.getDependencyCountsArgs(e,r);return await this.execCommand(n,"getDependencyCounts",i)}moveToCompletedArgs(e,r,n,i,s=!1){let o=Date.now();return this.moveToFinishedArgs(e,r,"returnvalue",n,"completed",i,o,s)}moveToFailedArgs(e,r,n,i,s=!1,o){let a=Date.now();return this.moveToFinishedArgs(e,r,"failedReason",n,"failed",i,a,s,o)}async isFinished(e,r=!1){let n=await this.queue.client,i=["completed","failed",e].map(s=>this.queue.toKey(s));return this.execCommand(n,"isFinished",i.concat([e,r?"1":""]))}async getState(e){let r=await this.queue.client,n=["completed","failed","delayed","active","wait","paused","waiting-children","prioritized"].map(i=>this.queue.toKey(i));return(0,qs.isRedisVersionLowerThan)(this.queue.redisVersion,"6.0.6",this.queue.databaseType)?this.execCommand(r,"getState",n.concat([e])):this.execCommand(r,"getStateV2",n.concat([e]))}async changeDelay(e,r){let n=await this.queue.client,i=this.changeDelayArgs(e,r),s=await this.execCommand(n,"changeDelay",i);if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"changeDelay",state:"delayed"})}changeDelayArgs(e,r){let n=Date.now();return[this.queue.keys.delayed,this.queue.keys.meta,this.queue.keys.marker,this.queue.keys.events].concat([r,JSON.stringify(n),e,this.queue.toKey(e)])}async changePriority(e,r=0,n=!1){let i=await this.queue.client,s=this.changePriorityArgs(e,r,n),o=await this.execCommand(i,"changePriority",s);if(o<0)throw this.finishedErrors({code:o,jobId:e,command:"changePriority"})}changePriorityArgs(e,r=0,n=!1){return[this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized,this.queue.keys.active,this.queue.keys.pc,this.queue.keys.marker].concat([r,this.queue.toKey(""),e,n?1:0])}moveToDelayedArgs(e,r,n,i,s={}){let o=this.queue.keys,a=this.queue.opts,c=[o.marker,o.active,o.prioritized,o.delayed,this.queue.toKey(e),o.events,o.meta,o.stalled,o.wait,o.limiter,o.paused,o.pc],l=s.fetchNext&&!this.queue.closing?1:0;return c.concat([this.queue.keys[""],r,e,n,i,s.skipAttempt?"1":"0",s.fieldsToUpdate?wt((0,qs.objectToFlatArray)(s.fieldsToUpdate)):void 0,l,l?wt({token:n,lockDuration:a.lockDuration,limiter:a.limiter,name:a.name}):void 0])}moveToWaitingChildrenArgs(e,r,n){let i=Date.now(),s=(0,qs.getParentKey)(n.child);return["active","waiting-children",e,`${e}:dependencies`,`${e}:unsuccessful`,"stalled","events"].map(a=>this.queue.toKey(a)).concat([r,s??"",JSON.stringify(i),e,this.queue.toKey("")])}isMaxedArgs(){let e=this.queue.keys;return[e.meta,e.active]}async isMaxed(){let e=await this.queue.client,r=this.isMaxedArgs();return!!await this.execCommand(e,"isMaxed",r)}async moveToDelayed(e,r,n,i="0",s={}){let o=await this.queue.client,a=this.moveToDelayedArgs(e,r,i,n,s),c=await this.execCommand(o,"moveToDelayed",a);if(c<0)throw this.finishedErrors({code:c,jobId:e,command:"moveToDelayed",state:"active"});if(typeof c<"u")return Ry(c)}async moveToWaitingChildren(e,r,n={}){let i=await this.queue.client,s=this.moveToWaitingChildrenArgs(e,r,n),o=await this.execCommand(i,"moveToWaitingChildren",s);switch(o){case 0:return!0;case 1:return!1;default:throw this.finishedErrors({code:o,jobId:e,command:"moveToWaitingChildren",state:"active"})}}getRateLimitTtlArgs(e){return[this.queue.keys.limiter,this.queue.keys.meta].concat([e??"0"])}async getRateLimitTtl(e){let r=await this.queue.client,n=this.getRateLimitTtlArgs(e);return this.execCommand(r,"getRateLimitTtl",n)}async cleanJobsInSet(e,r,n=0){let i=await this.queue.client;return this.execCommand(i,"cleanJobsInSet",[this.queue.toKey(e),this.queue.toKey("events"),this.queue.toKey("repeat"),this.queue.toKey(""),r,n,e])}getJobSchedulerArgs(e){return[this.queue.keys.repeat].concat([e])}async getJobScheduler(e){let r=await this.queue.client,n=this.getJobSchedulerArgs(e);return this.execCommand(r,"getJobScheduler",n)}retryJobArgs(e,r,n,i={}){let s=[this.queue.keys.active,this.queue.keys.wait,this.queue.keys.paused,this.queue.toKey(e),this.queue.keys.meta,this.queue.keys.events,this.queue.keys.delayed,this.queue.keys.prioritized,this.queue.keys.pc,this.queue.keys.marker,this.queue.keys.stalled],o=(r?"R":"L")+"PUSH";return s.concat([this.queue.toKey(""),Date.now(),o,e,n,i.fieldsToUpdate?wt((0,qs.objectToFlatArray)(i.fieldsToUpdate)):void 0])}async retryJob(e,r,n="0",i={}){let s=await this.queue.client,o=this.retryJobArgs(e,r,n,i),a=await this.execCommand(s,"retryJob",o);if(a<0)throw this.finishedErrors({code:a,jobId:e,command:"retryJob",state:"active"})}moveJobsToWaitArgs(e,r,n){let i=[this.queue.toKey(""),this.queue.keys.events,this.queue.toKey(e),this.queue.toKey("wait"),this.queue.toKey("paused"),this.queue.keys.meta,this.queue.keys.active,this.queue.keys.marker],s=[r,n,e];return i.concat(s)}async retryJobs(e="failed",r=1e3,n=new Date().getTime()){let i=await this.queue.client,s=this.moveJobsToWaitArgs(e,r,n);return this.execCommand(i,"moveJobsToWait",s)}async promoteJobs(e=1e3){let r=await this.queue.client,n=this.moveJobsToWaitArgs("delayed",e,Number.MAX_VALUE);return this.execCommand(r,"moveJobsToWait",n)}async reprocessJob(e,r,n={}){let i=await this.queue.client,s=[this.queue.toKey(e.id),this.queue.keys.events,this.queue.toKey(r),this.queue.keys.wait,this.queue.keys.meta,this.queue.keys.paused,this.queue.keys.active,this.queue.keys.marker],o=[e.id,(e.opts.lifo?"R":"L")+"PUSH",r==="failed"?"failedReason":"returnvalue",r,n.resetAttemptsMade?"1":"0",n.resetAttemptsStarted?"1":"0"],a=await this.execCommand(i,"reprocessJob",s.concat(o));if(a!==1)throw this.finishedErrors({code:a,jobId:e.id,command:"reprocessJob",state:r})}async getMetrics(e,r=0,n=-1){let i=await this.queue.client,s=[this.queue.toKey(`metrics:${e}`),this.queue.toKey(`metrics:${e}:data`)],o=[r,n];return await this.execCommand(i,"getMetrics",s.concat(o))}async moveToActive(e,r,n){let i=this.queue.opts,s=this.queue.keys,o=[s.wait,s.active,s.prioritized,s.events,s.stalled,s.limiter,s.delayed,s.paused,s.meta,s.pc,s.marker],a=[s[""],Date.now(),wt({token:r,lockDuration:i.lockDuration,limiter:i.limiter,name:n})],c=await this.execCommand(e,"moveToActive",o.concat(a));return Ry(c)}async promote(e){let r=await this.queue.client,n=[this.queue.keys.delayed,this.queue.keys.wait,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.prioritized,this.queue.keys.active,this.queue.keys.pc,this.queue.keys.events,this.queue.keys.marker],i=[this.queue.toKey(""),e],s=await this.execCommand(r,"promote",n.concat(i));if(s<0)throw this.finishedErrors({code:s,jobId:e,command:"promote",state:"delayed"})}moveStalledJobsToWaitArgs(){let e=this.queue.opts,r=[this.queue.keys.stalled,this.queue.keys.wait,this.queue.keys.active,this.queue.keys["stalled-check"],this.queue.keys.meta,this.queue.keys.paused,this.queue.keys.marker,this.queue.keys.events,this.queue.keys.repeat],n=[e.maxStalledCount,this.queue.toKey(""),Date.now(),e.stalledInterval];return r.concat(n)}async moveStalledJobsToWait(){let e=await this.queue.client,r=this.moveStalledJobsToWaitArgs();return this.execCommand(e,"moveStalledJobsToWait",r)}async moveJobFromActiveToWait(e,r="0"){let n=await this.queue.client,i=[this.queue.keys.active,this.queue.keys.wait,this.queue.keys.stalled,this.queue.keys.paused,this.queue.keys.meta,this.queue.keys.limiter,this.queue.keys.prioritized,this.queue.keys.marker,this.queue.keys.events],s=[e,r,this.queue.toKey(e)],o=await this.execCommand(n,"moveJobFromActiveToWait",i.concat(s));if(o<0)throw this.finishedErrors({code:o,jobId:e,command:"moveJobFromActiveToWait",state:"active"});return o}async obliterate(e){let r=await this.queue.client,n=[this.queue.keys.meta,this.queue.toKey("")],i=[e.count,e.force?"force":null],s=await this.execCommand(r,"obliterate",n.concat(i));if(s<0)switch(s){case-1:throw new Error("Cannot obliterate non-paused queue");case-2:throw new Error("Cannot obliterate queue with active jobs")}return s}async paginate(e,r){let n=await this.queue.client,i=[e],s=5,o=r.end>=0?r.end-r.start+1:1/0,a="0",c=0,l,u,d,p=[],f=[];do{let m=[r.start+p.length,r.end,a,c,s];r.fetchJobs&&m.push(1),[a,c,l,u,d]=await this.execCommand(n,"paginate",i.concat(m)),p=p.concat(l),d&&d.length&&(f=f.concat(d.map(qs.array2obj)))}while(a!="0"&&p.length<o);if(p.length&&Array.isArray(p[0])){let m=[];for(let y=0;y<p.length;y++){let[b,v]=p[y];try{m.push({id:b,v:JSON.parse(v)})}catch(E){m.push({id:b,err:E.message})}}return{cursor:a,items:m,total:u,jobs:f}}else return{cursor:a,items:p.map(m=>({id:m})),total:u,jobs:f}}finishedErrors({code:e,jobId:r,parentKey:n,command:i,state:s}){let o;switch(e){case Pn.ErrorCode.JobNotExist:o=new Error(`Missing key for job ${r}. ${i}`);break;case Pn.ErrorCode.JobLockNotExist:o=new Error(`Missing lock for job ${r}. ${i}`);break;case Pn.ErrorCode.JobNotInState:o=new Error(`Job ${r} is not in the ${s} state. ${i}`);break;case Pn.ErrorCode.JobPendingChildren:o=new Error(`Job ${r} has pending dependencies. ${i}`);break;case Pn.ErrorCode.ParentJobNotExist:o=new Error(`Missing key for parent job ${n}. ${i}`);break;case Pn.ErrorCode.JobLockMismatch:o=new Error(`Lock mismatch for job ${r}. Cmd ${i} from ${s}`);break;case Pn.ErrorCode.ParentJobCannotBeReplaced:o=new Error(`The parent job ${n} cannot be replaced. ${i}`);break;case Pn.ErrorCode.JobBelongsToJobScheduler:o=new Error(`Job ${r} belongs to a job scheduler and cannot be removed directly. ${i}`);break;case Pn.ErrorCode.JobHasFailedChildren:o=new Gxe.UnrecoverableError(`Cannot complete job ${r} because it has at least one failed child. ${i}`);break;case Pn.ErrorCode.SchedulerJobIdCollision:o=new Error(`Cannot create job scheduler iteration - job ID already exists. ${i}`);break;case Pn.ErrorCode.SchedulerJobSlotsBusy:o=new Error(`Cannot create job scheduler iteration - current and next time slots already have jobs. ${i}`);break;default:o=new Error(`Unknown code ${e} error for ${r}. ${i}`)}return o.code=e,o}async removeOrphanedJobs(e,r,n){let i=await this.queue.client,s=[this.queue.toKey(""),r.length,...r,n.length,...n,...e];return this.execCommand(i,"removeOrphanedJobs",s)}};_d.Scripts=V1;function Ry(t){if(t){let e=[null,t[1],t[2],t[3]];return t[0]&&(e[0]=(0,qs.array2obj)(t[0])),e}return[]}});var Id=h(Oy=>{"use strict";Object.defineProperty(Oy,"__esModule",{value:!0});Oy.createScripts=void 0;var Hxe=W1(),Vxe=t=>new Hxe.Scripts({keys:t.keys,client:t.client,get redisVersion(){return t.redisVersion},toKey:t.toKey,opts:t.opts,closing:t.closing,databaseType:t.databaseType});Oy.createScripts=Vxe});var Qc=h(Fs=>{"use strict";Object.defineProperty(Fs,"__esModule",{value:!0});Fs.Job=Fs.PRIORITY_LIMIT=void 0;var l6=(nr(),Pt(rr)),Wxe=require("util"),mr=Dr(),u6=Id(),d6=UI(),Yxe=k1(),fr=_r(),Qxe=(0,Wxe.debuglog)("bull");Fs.PRIORITY_LIMIT=2**21-1;var Y1=class t{constructor(e,r,n,i={},s){this.queue=e,this.name=r,this.data=n,this.opts=i,this.id=s,this.progress=0,this.returnvalue=null,this.stacktrace=null,this.delay=0,this.priority=0,this.attemptsStarted=0,this.attemptsMade=0,this.stalledCounter=0;let o=this.opts,{repeatJobKey:a}=o,c=l6.__rest(o,["repeatJobKey"]);this.opts=Object.assign({attempts:0},c),this.delay=this.opts.delay,this.priority=this.opts.priority||0,this.repeatJobKey=a,this.timestamp=i.timestamp?i.timestamp:Date.now(),this.opts.backoff=d6.Backoffs.normalize(i.backoff),this.parentKey=(0,mr.getParentKey)(i.parent),i.parent&&(this.parent={id:i.parent.id,queueKey:i.parent.queue},i.failParentOnFailure&&(this.parent.fpof=!0),i.removeDependencyOnFailure&&(this.parent.rdof=!0),i.ignoreDependencyOnFailure&&(this.parent.idof=!0),i.continueParentOnFailure&&(this.parent.cpof=!0)),this.debounceId=i.debounce?i.debounce.id:void 0,this.deduplicationId=i.deduplication?i.deduplication.id:this.debounceId,this.toKey=e.toKey.bind(e),this.createScripts(),this.queueQualifiedName=e.qualifiedName}static async create(e,r,n,i){let s=await e.client,o=new this(e,r,n,i,i&&i.jobId);return o.id=await o.addJob(s,{parentKey:o.parentKey,parentDependenciesKey:o.parentKey?`${o.parentKey}:dependencies`:""}),o}static async createBulk(e,r){let n=await e.client,i=r.map(a=>{var c;return new this(e,a.name,a.data,a.opts,(c=a.opts)===null||c===void 0?void 0:c.jobId)}),s=n.pipeline();for(let a of i)a.addJob(s,{parentKey:a.parentKey,parentDependenciesKey:a.parentKey?`${a.parentKey}:dependencies`:""});let o=await s.exec();for(let a=0;a<o.length;++a){let[c,l]=o[a];if(c)throw c;i[a].id=l}return i}static fromJSON(e,r,n){let i=JSON.parse(r.data||"{}"),s=t.optsFromJSON(r.opts),o=new this(e,r.name,i,s,r.id||n);return o.progress=JSON.parse(r.progress||"0"),o.delay=parseInt(r.delay),o.priority=parseInt(r.priority),o.timestamp=parseInt(r.timestamp),r.finishedOn&&(o.finishedOn=parseInt(r.finishedOn)),r.processedOn&&(o.processedOn=parseInt(r.processedOn)),r.rjk&&(o.repeatJobKey=r.rjk),r.deid&&(o.debounceId=r.deid,o.deduplicationId=r.deid),r.failedReason&&(o.failedReason=r.failedReason),o.attemptsStarted=parseInt(r.ats||"0"),o.attemptsMade=parseInt(r.attemptsMade||r.atm||"0"),o.stalledCounter=parseInt(r.stc||"0"),r.defa&&(o.deferredFailure=r.defa),o.stacktrace=Xxe(r.stacktrace),typeof r.returnvalue=="string"&&(o.returnvalue=p6(r.returnvalue)),r.parentKey?o.parentKey=r.parentKey:o.parentKey=void 0,r.parent?o.parent=JSON.parse(r.parent):o.parent=void 0,r.pb&&(o.processedBy=r.pb),r.nrjid&&(o.nextRepeatableJobId=r.nrjid),o}createScripts(){var e;this.scripts=(e=this.queue.scripts)!==null&&e!==void 0?e:(0,u6.createScripts)(this.queue)}static optsFromJSON(e,r=mr.optsDecodeMap){let n=JSON.parse(e||"{}"),i=Object.entries(n),s={};for(let o of i){let[a,c]=o;r[a]?s[r[a]]=c:a==="tm"?s.telemetry=Object.assign(Object.assign({},s.telemetry),{metadata:c}):a==="omc"?s.telemetry=Object.assign(Object.assign({},s.telemetry),{omitContext:c}):s[a]=c}return s}static async fromId(e,r){if(r){let i=await(await e.client).hgetall(e.toKey(r));return(0,mr.isEmpty)(i)?void 0:this.fromJSON(e,i,r)}}static addJobLog(e,r,n,i){var s;return((s=e.scripts)!==null&&s!==void 0?s:(0,u6.createScripts)(e)).addLog(r,n,i)}toJSON(){let e=this,{queue:r,scripts:n}=e;return l6.__rest(e,["queue","scripts"])}asJSON(){return(0,mr.removeUndefinedFields)({id:this.id,name:this.name,data:JSON.stringify(typeof this.data>"u"?{}:this.data),opts:t.optsAsJSON(this.opts),parent:this.parent?Object.assign({},this.parent):void 0,parentKey:this.parentKey,progress:this.progress,attemptsMade:this.attemptsMade,attemptsStarted:this.attemptsStarted,stalledCounter:this.stalledCounter,finishedOn:this.finishedOn,processedOn:this.processedOn,timestamp:this.timestamp,failedReason:JSON.stringify(this.failedReason),stacktrace:JSON.stringify(this.stacktrace),debounceId:this.debounceId,deduplicationId:this.deduplicationId,repeatJobKey:this.repeatJobKey,returnvalue:JSON.stringify(this.returnvalue),nrjid:this.nextRepeatableJobId})}static optsAsJSON(e={},r=mr.optsEncodeMap){let n=Object.entries(e),i={};for(let[s,o]of n)if(!(typeof o>"u"))if(s in r){let c=r[s];i[c]=o}else s==="telemetry"?(o.metadata!==void 0&&(i.tm=o.metadata),o.omitContext!==void 0&&(i.omc=o.omitContext)):i[s]=o;return i}asJSONSandbox(){return Object.assign(Object.assign({},this.asJSON()),{queueName:this.queueName,queueQualifiedName:this.queueQualifiedName,prefix:this.prefix})}updateData(e){return this.data=e,this.scripts.updateData(this,e)}async updateProgress(e){this.progress=e,await this.scripts.updateProgress(this.id,e),this.queue.emit("progress",this,e)}async log(e){return t.addJobLog(this.queue,this.id,e,this.opts.keepLogs)}async removeChildDependency(){return await this.scripts.removeChildDependency(this.id,this.parentKey)?(this.parent=void 0,this.parentKey=void 0,!0):!1}async clearLogs(e){let r=await this.queue.client,n=this.toKey(this.id)+":logs";e?await r.ltrim(n,-e,-1):await r.del(n)}async remove({removeChildren:e=!0}={}){await this.queue.waitUntilReady();let r=this.queue,n=this;if(await this.scripts.remove(n.id,e))r.emit("removed",n);else throw new Error(`Job ${this.id} could not be removed because it is locked by another worker`)}async removeUnprocessedChildren(){let e=this.id;await this.scripts.removeUnprocessedChildren(e)}extendLock(e,r){return this.scripts.extendLock(this.id,e,r)}async moveToCompleted(e,r,n=!0){return this.queue.trace(fr.SpanKind.INTERNAL,"complete",this.queue.name,async i=>{this.setSpanJobAttributes(i),await this.queue.waitUntilReady(),this.returnvalue=e||void 0;let s=(0,mr.tryCatch)(JSON.stringify,JSON,[e]);if(s===mr.errorObject)throw mr.errorObject.value;let o=this.scripts.moveToCompletedArgs(this,s,this.opts.removeOnComplete,r,n),a=await this.scripts.moveToFinished(this.id,o);return this.finishedOn=o[this.scripts.moveToFinishedKeys.length+1],this.attemptsMade+=1,this.recordJobMetrics("completed"),a})}async moveToWait(e){let r=await this.scripts.moveJobFromActiveToWait(this.id,e);return this.recordJobMetrics("waiting"),r}async shouldRetryJob(e){if(this.attemptsMade+1<this.opts.attempts&&!this.discarded&&!(e instanceof Yxe.UnrecoverableError||e.name=="UnrecoverableError")){let r=this.queue.opts,n=await d6.Backoffs.calculate(this.opts.backoff,this.attemptsMade+1,e,this,r.settings&&r.settings.backoffStrategy);return[n!=-1,n==-1?0:n]}else return[!1,0]}async moveToFailed(e,r,n=!1){this.failedReason=e?.message;let[i,s]=await this.shouldRetryJob(e);return this.queue.trace(fr.SpanKind.INTERNAL,this.getSpanOperation(i,s),this.queue.name,async(o,a)=>{var c,l;this.setSpanJobAttributes(o);let u;!(!((l=(c=this.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0)&&l.omitContext)&&a&&(u=a);let d;this.updateStacktrace(e);let p={failedReason:this.failedReason,stacktrace:JSON.stringify(this.stacktrace),tm:u},f;if(i)s?(d=await this.scripts.moveToDelayed(this.id,Date.now(),s,r,{fieldsToUpdate:p,fetchNext:n}),this.recordJobMetrics("delayed")):(d=await this.scripts.retryJob(this.id,this.opts.lifo,r,{fieldsToUpdate:p}),this.recordJobMetrics("retried"));else{let m=this.scripts.moveToFailedArgs(this,this.failedReason,this.opts.removeOnFail,r,n,p);d=await this.scripts.moveToFinished(this.id,m),f=m[this.scripts.moveToFinishedKeys.length+1],this.recordJobMetrics("failed")}return f&&typeof f=="number"&&(this.finishedOn=f),s&&typeof s=="number"&&(this.delay=s),this.attemptsMade+=1,d})}getSpanOperation(e,r){return e?r?"delay":"retry":"fail"}recordJobMetrics(e){var r,n;let i=(n=(r=this.queue.opts)===null||r===void 0?void 0:r.telemetry)===null||n===void 0?void 0:n.meter;if(!i)return;let s={[fr.TelemetryAttributes.QueueName]:this.queue.name,[fr.TelemetryAttributes.JobName]:this.name,[fr.TelemetryAttributes.JobStatus]:e,[fr.TelemetryAttributes.JobState]:e},a={completed:fr.MetricNames.JobsCompleted,failed:fr.MetricNames.JobsFailed,delayed:fr.MetricNames.JobsDelayed,retried:fr.MetricNames.JobsRetried,waiting:fr.MetricNames.JobsWaiting,"waiting-children":fr.MetricNames.JobsWaitingChildren}[e];if(i.createCounter(a,{description:`Number of jobs ${e}`,unit:"1"}).add(1,s),this.processedOn){let l=Date.now()-this.processedOn;i.createHistogram(fr.MetricNames.JobDuration,{description:"Job processing duration",unit:"ms"}).record(l,s)}}isCompleted(){return this.isInZSet("completed")}isFailed(){return this.isInZSet("failed")}isDelayed(){return this.isInZSet("delayed")}isWaitingChildren(){return this.isInZSet("waiting-children")}isActive(){return this.isInList("active")}async isWaiting(){return await this.isInList("wait")||await this.isInList("paused")}get queueName(){return this.queue.name}get prefix(){return this.queue.opts.prefix}getState(){return this.scripts.getState(this.id)}async changeDelay(e){await this.scripts.changeDelay(this.id,e),this.delay=e}async changePriority(e){await this.scripts.changePriority(this.id,e.priority,e.lifo),this.priority=e.priority||0}async getChildrenValues(){let r=await(await this.queue.client).hgetall(this.toKey(`${this.id}:processed`));if(r)return(0,mr.parseObjectValues)(r)}async getIgnoredChildrenFailures(){return(await this.queue.client).hgetall(this.toKey(`${this.id}:failed`))}async getFailedChildrenValues(){return(await this.queue.client).hgetall(this.toKey(`${this.id}:failed`))}async getDependencies(e={}){let n=(await this.queue.client).pipeline();if(!e.processed&&!e.unprocessed&&!e.ignored&&!e.failed){n.hgetall(this.toKey(`${this.id}:processed`)),n.smembers(this.toKey(`${this.id}:dependencies`)),n.hgetall(this.toKey(`${this.id}:failed`)),n.zrange(this.toKey(`${this.id}:unsuccessful`),0,-1);let[[i,s],[o,a],[c,l],[u,d]]=await n.exec();return{processed:(0,mr.parseObjectValues)(s),unprocessed:a,failed:d,ignored:l}}else{let i={cursor:0,count:20},s=[];if(e.processed){s.push("processed");let y=Object.assign(Object.assign({},i),e.processed);n.hscan(this.toKey(`${this.id}:processed`),y.cursor,{COUNT:y.count})}if(e.unprocessed){s.push("unprocessed");let y=Object.assign(Object.assign({},i),e.unprocessed);n.sscan(this.toKey(`${this.id}:dependencies`),y.cursor,{COUNT:y.count})}if(e.ignored){s.push("ignored");let y=Object.assign(Object.assign({},i),e.ignored);n.hscan(this.toKey(`${this.id}:failed`),y.cursor,{COUNT:y.count})}let o;if(e.failed){s.push("failed");let y=Object.assign(Object.assign({},i),e.failed);o=y.cursor+y.count,n.zrange(this.toKey(`${this.id}:unsuccessful`),y.cursor,y.count-1)}let a=await n.exec(),c,l,u,d,p,f,m;return s.forEach((y,b)=>{switch(y){case"processed":{c=a[b][1][0];let v=a[b][1][1],E={};for(let S=0;S<v.length;++S)S%2&&(E[v[S-1]]=JSON.parse(v[S]));l=E;break}case"failed":{p=a[b][1];break}case"ignored":{f=a[b][1][0];let v=a[b][1][1],E={};for(let S=0;S<v.length;++S)S%2&&(E[v[S-1]]=v[S]);m=E;break}case"unprocessed":{u=a[b][1][0],d=a[b][1][1];break}}}),Object.assign(Object.assign(Object.assign(Object.assign({},c?{processed:l,nextProcessedCursor:Number(c)}:{}),f?{ignored:m,nextIgnoredCursor:Number(f)}:{}),o?{failed:p,nextFailedCursor:o}:{}),u?{unprocessed:d,nextUnprocessedCursor:Number(u)}:{})}}async getDependenciesCount(e={}){let r=[];Object.entries(e).forEach(([o,a])=>{a&&r.push(o)});let n=r.length?r:["processed","unprocessed","ignored","failed"],i=await this.scripts.getDependencyCounts(this.id,n),s={};return i.forEach((o,a)=>{s[`${n[a]}`]=o||0}),s}async waitUntilFinished(e,r){await this.queue.waitUntilReady();let n=this.id;return new Promise(async(i,s)=>{let o;r&&(o=setTimeout(()=>c(`Job wait ${this.name} timed out before finishing, no finish notification arrived after ${r}ms (id=${n})`),r));function a(y){d(),i(y.returnvalue)}function c(y){d(),s(new Error(y.failedReason||y))}let l=`completed:${n}`,u=`failed:${n}`;e.on(l,a),e.on(u,c),this.queue.on("closing",c);let d=()=>{clearInterval(o),e.removeListener(l,a),e.removeListener(u,c),this.queue.removeListener("closing",c)};await e.waitUntilReady();let[p,f]=await this.scripts.isFinished(n,!0);p!=0&&(p==-1||p==2?c({failedReason:f}):a({returnvalue:p6(f)}))})}async moveToDelayed(e,r){let n=Date.now(),i=e-n,s=i>0?i:0;await this.scripts.moveToDelayed(this.id,n,s,r,{skipAttempt:!0}),this.delay=s,this.recordJobMetrics("delayed")}async moveToWaitingChildren(e,r={}){let n=await this.scripts.moveToWaitingChildren(this.id,e,r);return n&&this.recordJobMetrics("waiting-children"),n}async promote(){let e=this.id;await this.scripts.promote(e),this.delay=0}async retry(e="failed",r={}){await this.scripts.reprocessJob(this,e,r),this.failedReason=null,this.finishedOn=null,this.processedOn=null,this.returnvalue=null,r.resetAttemptsMade&&(this.attemptsMade=0),r.resetAttemptsStarted&&(this.attemptsStarted=0)}discard(){this.discarded=!0}async isInZSet(e){return await(await this.queue.client).zscore(this.queue.toKey(e),this.id)!==null}async isInList(e){return this.scripts.isJobInList(this.queue.toKey(e),this.id)}addJob(e,r){let n=this.asJSON();return this.validateOptions(n),this.scripts.addJob(e,n,n.opts,this.id,r)}async removeDeduplicationKey(){return this.deduplicationId?await this.scripts.removeDeduplicationKey(this.deduplicationId,this.id)>0:!1}validateOptions(e){var r,n,i,s,o,a,c,l;let u=["removeDependencyOnFailure","failParentOnFailure","continueParentOnFailure","ignoreDependencyOnFailure"];if(this.opts.sizeLimit&&(0,mr.lengthInUtf8Bytes)(e.data)>this.opts.sizeLimit)throw new Error(`The size of job ${this.name} exceeds the limit ${this.opts.sizeLimit} bytes`);if(this.opts.delay&&this.opts.repeat&&!(!((r=this.opts.repeat)===null||r===void 0)&&r.count))throw new Error("Delay and repeat options cannot be used together");let p=u.filter(f=>this.opts[f]);if(p.length>1){let f=p.join(", ");throw new Error(`The following options cannot be used together: ${f}`)}if(!((n=this.opts)===null||n===void 0)&&n.jobId){if(`${parseInt(this.opts.jobId,10)}`===((i=this.opts)===null||i===void 0?void 0:i.jobId))throw new Error("Custom Id cannot be integers");if(!((s=this.opts)===null||s===void 0)&&s.jobId.includes(":")&&((a=(o=this.opts)===null||o===void 0?void 0:o.jobId)===null||a===void 0?void 0:a.split(":").length)!==3)throw new Error("Custom Id cannot contain :")}if(this.opts.priority){if(Math.trunc(this.opts.priority)!==this.opts.priority)throw new Error("Priority should not be float");if(this.opts.priority>Fs.PRIORITY_LIMIT)throw new Error(`Priority should be between 0 and ${Fs.PRIORITY_LIMIT}`)}if(this.opts.deduplication){if(!(!((c=this.opts.deduplication)===null||c===void 0)&&c.id))throw new Error("Deduplication id must be provided");if(this.parentKey)throw new Error("Deduplication and parent options cannot be used together")}if(this.opts.debounce){if(!(!((l=this.opts.debounce)===null||l===void 0)&&l.id))throw new Error("Debounce id must be provided");if(this.parentKey)throw new Error("Debounce and parent options cannot be used together")}if(typeof this.opts.backoff=="object"&&typeof this.opts.backoff.jitter=="number"&&(this.opts.backoff.jitter<0||this.opts.backoff.jitter>1))throw new Error("Jitter should be between 0 and 1")}updateStacktrace(e){this.stacktrace=this.stacktrace||[],e?.stack&&(this.stacktrace.push(e.stack),this.opts.stackTraceLimit===0?this.stacktrace=[]:this.opts.stackTraceLimit&&(this.stacktrace=this.stacktrace.slice(-this.opts.stackTraceLimit)))}setSpanJobAttributes(e){e?.setAttributes({[fr.TelemetryAttributes.JobName]:this.name,[fr.TelemetryAttributes.JobId]:this.id})}};Fs.Job=Y1;function Xxe(t){if(!t)return[];let e=(0,mr.tryCatch)(JSON.parse,JSON,[t]);return e===mr.errorObject||!(e instanceof Array)?[]:e}function p6(t){let e=(0,mr.tryCatch)(JSON.parse,JSON,[t]);if(e!==mr.errorObject)return e;Qxe("corrupted returnvalue: "+t,e)}});var jy=h(Cy=>{"use strict";Object.defineProperty(Cy,"__esModule",{value:!0});Cy.QueueKeys=void 0;var Q1=class{constructor(e="bull"){this.prefix=e}getKeys(e){let r={};return["","active","wait","waiting-children","paused","id","delayed","prioritized","stalled-check","completed","failed","stalled","repeat","limiter","meta","events","pc","marker","de"].forEach(n=>{r[n]=this.toKey(e,n)}),r}toKey(e,r){return`${this.getQueueQualifiedName(e)}:${r}`}getQueueQualifiedName(e){return`${this.prefix}:${e}`}};Cy.QueueKeys=Q1});var f6=h((W$e,Zxe)=>{Zxe.exports={vadd:{arity:-5,flags:["write","denyoom","module"],keyStart:1,keyStop:1,step:1},vcard:{arity:2,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vdim:{arity:2,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vemb:{arity:-3,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vgetattr:{arity:3,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vinfo:{arity:2,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vismember:{arity:3,flags:["readonly","module"],keyStart:1,keyStop:1,step:1},vlinks:{arity:-3,flags:["readonly","module","fast"],keyStart:1,keyStop:1,step:1},vrandmember:{arity:-2,flags:["readonly","module"],keyStart:1,keyStop:1,step:1},vrange:{arity:-4,flags:["readonly","module"],keyStart:1,keyStop:1,step:1},vrem:{arity:3,flags:["write","module"],keyStart:1,keyStop:1,step:1},vsetattr:{arity:4,flags:["write","module","fast"],keyStart:1,keyStop:1,step:1},vsim:{arity:-4,flags:["readonly","module"],keyStart:1,keyStop:1,step:1},acl:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},append:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},arcount:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},ardel:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},ardelrange:{arity:-4,flags:["write"],keyStart:1,keyStop:1,step:1},arget:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},argetrange:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},argrep:{arity:-6,flags:["readonly"],keyStart:1,keyStop:1,step:1},arinfo:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},arinsert:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},arlastitems:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},arlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},armget:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},armset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},arnext:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},arop:{arity:-5,flags:["readonly"],keyStart:1,keyStop:1,step:1},arring:{arity:-4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},arscan:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},arseek:{arity:3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},arset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},asking:{arity:1,flags:["fast"],keyStart:0,keyStop:0,step:0},auth:{arity:-2,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},bgrewriteaof:{arity:1,flags:["admin","noscript","no_async_loading"],keyStart:0,keyStop:0,step:0},bgsave:{arity:-1,flags:["admin","noscript","no_async_loading"],keyStart:0,keyStop:0,step:0},bitcount:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},bitfield:{arity:-2,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},bitfield_ro:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},bitop:{arity:-4,flags:["write","denyoom"],keyStart:2,keyStop:-1,step:1},bitpos:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},blmove:{arity:6,flags:["write","denyoom","noscript","blocking"],keyStart:1,keyStop:2,step:1},blmpop:{arity:-5,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},blpop:{arity:-3,flags:["write","noscript","blocking"],keyStart:1,keyStop:-2,step:1},brpop:{arity:-3,flags:["write","noscript","blocking"],keyStart:1,keyStop:-2,step:1},brpoplpush:{arity:4,flags:["write","denyoom","noscript","blocking"],keyStart:1,keyStop:2,step:1},bzmpop:{arity:-5,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},bzpopmax:{arity:-3,flags:["write","noscript","blocking","fast"],keyStart:1,keyStop:-2,step:1},bzpopmin:{arity:-3,flags:["write","noscript","blocking","fast"],keyStart:1,keyStop:-2,step:1},client:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},cluster:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},command:{arity:-1,flags:["loading","stale"],keyStart:0,keyStop:0,step:0},config:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},copy:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},dbsize:{arity:1,flags:["readonly","fast"],keyStart:0,keyStop:0,step:0},debug:{arity:-2,flags:["admin","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},decr:{arity:2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},decrby:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},del:{arity:-2,flags:["write"],keyStart:1,keyStop:-1,step:1},discard:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},dump:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},echo:{arity:2,flags:["fast"],keyStart:0,keyStop:0,step:0},eval:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},eval_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},evalsha:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},evalsha_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},exec:{arity:1,flags:["noscript","loading","stale","skip_slowlog"],keyStart:0,keyStop:0,step:0},exists:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},expire:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},expireat:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},expiretime:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},failover:{arity:-1,flags:["admin","noscript","stale"],keyStart:0,keyStop:0,step:0},fcall:{arity:-3,flags:["noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},fcall_ro:{arity:-3,flags:["readonly","noscript","stale","skip_monitor","no_mandatory_keys","movablekeys"],keyStart:0,keyStop:0,step:0},flushall:{arity:-1,flags:["write"],keyStart:0,keyStop:0,step:0},flushdb:{arity:-1,flags:["write"],keyStart:0,keyStop:0,step:0},function:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},geoadd:{arity:-5,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},geodist:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},geohash:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},geopos:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},georadius:{arity:-6,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},georadius_ro:{arity:-6,flags:["readonly"],keyStart:1,keyStop:1,step:1},georadiusbymember:{arity:-5,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},georadiusbymember_ro:{arity:-5,flags:["readonly"],keyStart:1,keyStop:1,step:1},geosearch:{arity:-7,flags:["readonly"],keyStart:1,keyStop:1,step:1},geosearchstore:{arity:-8,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},get:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},getbit:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},getdel:{arity:2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},getex:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},getrange:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},getset:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hdel:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hello:{arity:-1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},hexists:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hexpire:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hexpireat:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hexpiretime:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hget:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hgetall:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hgetdel:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hgetex:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hincrby:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hincrbyfloat:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hkeys:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hmget:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hmset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hpersist:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpire:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpireat:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},hpexpiretime:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hpttl:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hrandfield:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},hscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},hset:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hsetex:{arity:-6,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hsetnx:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},hstrlen:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},httl:{arity:-5,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},hvals:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},incr:{arity:2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},incrby:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},incrbyfloat:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},increx:{arity:-2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},info:{arity:-1,flags:["loading","stale"],keyStart:0,keyStop:0,step:0},keys:{arity:2,flags:["readonly"],keyStart:0,keyStop:0,step:0},lastsave:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},latency:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},lcs:{arity:-3,flags:["readonly"],keyStart:1,keyStop:2,step:1},lindex:{arity:3,flags:["readonly"],keyStart:1,keyStop:1,step:1},linsert:{arity:5,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},llen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},lmove:{arity:5,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},lmpop:{arity:-4,flags:["write","movablekeys"],keyStart:0,keyStop:0,step:0},lolwut:{arity:-1,flags:["readonly","fast"],keyStart:0,keyStop:0,step:0},lpop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},lpos:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},lpush:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},lpushx:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},lrange:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},lrem:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},lset:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},ltrim:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},memory:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},mget:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},migrate:{arity:-6,flags:["write","movablekeys"],keyStart:3,keyStop:3,step:1},module:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},monitor:{arity:1,flags:["admin","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},move:{arity:3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},mset:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:2},msetex:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:0,keyStop:0,step:0},msetnx:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:2},multi:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},object:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},persist:{arity:2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpire:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpireat:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},pexpiretime:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},pfadd:{arity:-2,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},pfcount:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},pfdebug:{arity:3,flags:["write","denyoom","admin"],keyStart:2,keyStop:2,step:1},pfmerge:{arity:-2,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},pfselftest:{arity:1,flags:["admin"],keyStart:0,keyStop:0,step:0},ping:{arity:-1,flags:["fast"],keyStart:0,keyStop:0,step:0},psetex:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},psubscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},psync:{arity:-3,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},pttl:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},publish:{arity:3,flags:["pubsub","loading","stale","fast"],keyStart:0,keyStop:0,step:0},pubsub:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},punsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},quit:{arity:-1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},randomkey:{arity:1,flags:["readonly"],keyStart:0,keyStop:0,step:0},readonly:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},readwrite:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},rename:{arity:3,flags:["write"],keyStart:1,keyStop:2,step:1},renamenx:{arity:3,flags:["write","fast"],keyStart:1,keyStop:2,step:1},replconf:{arity:-1,flags:["admin","noscript","loading","stale","allow_busy"],keyStart:0,keyStop:0,step:0},replicaof:{arity:3,flags:["admin","noscript","stale","no_async_loading"],keyStart:0,keyStop:0,step:0},reset:{arity:1,flags:["noscript","loading","stale","fast","no_auth","allow_busy"],keyStart:0,keyStop:0,step:0},restore:{arity:-4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},"restore-asking":{arity:-4,flags:["write","denyoom","asking"],keyStart:1,keyStop:1,step:1},role:{arity:1,flags:["noscript","loading","stale","fast"],keyStart:0,keyStop:0,step:0},rpop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},rpoplpush:{arity:3,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},rpush:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},rpushx:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},sadd:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},save:{arity:1,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},scan:{arity:-2,flags:["readonly"],keyStart:0,keyStop:0,step:0},scard:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},script:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},sdiff:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sdiffstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},select:{arity:2,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},set:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setbit:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setex:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},setnx:{arity:3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},setrange:{arity:4,flags:["write","denyoom"],keyStart:1,keyStop:1,step:1},shutdown:{arity:-1,flags:["admin","noscript","loading","stale","no_multi","allow_busy"],keyStart:0,keyStop:0,step:0},sinter:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sintercard:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},sinterstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},sismember:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},slaveof:{arity:3,flags:["admin","noscript","stale","no_async_loading"],keyStart:0,keyStop:0,step:0},slowlog:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},smembers:{arity:2,flags:["readonly"],keyStart:1,keyStop:1,step:1},smismember:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},smove:{arity:4,flags:["write","fast"],keyStart:1,keyStop:2,step:1},sort:{arity:-2,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},sort_ro:{arity:-2,flags:["readonly","movablekeys"],keyStart:1,keyStop:1,step:1},spop:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},spublish:{arity:3,flags:["pubsub","loading","stale","fast"],keyStart:1,keyStop:1,step:1},srandmember:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},srem:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},sscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},ssubscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:1,keyStop:-1,step:1},strlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},subscribe:{arity:-2,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},substr:{arity:4,flags:["readonly"],keyStart:1,keyStop:1,step:1},sunion:{arity:-2,flags:["readonly"],keyStart:1,keyStop:-1,step:1},sunionstore:{arity:-3,flags:["write","denyoom"],keyStart:1,keyStop:-1,step:1},sunsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:1,keyStop:-1,step:1},swapdb:{arity:3,flags:["write","fast"],keyStart:0,keyStop:0,step:0},sync:{arity:1,flags:["admin","noscript","no_async_loading","no_multi"],keyStart:0,keyStop:0,step:0},time:{arity:1,flags:["loading","stale","fast"],keyStart:0,keyStop:0,step:0},touch:{arity:-2,flags:["readonly","fast"],keyStart:1,keyStop:-1,step:1},ttl:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},type:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},unlink:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:-1,step:1},unsubscribe:{arity:-1,flags:["pubsub","noscript","loading","stale"],keyStart:0,keyStop:0,step:0},unwatch:{arity:1,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:0,keyStop:0,step:0},wait:{arity:3,flags:["noscript"],keyStart:0,keyStop:0,step:0},watch:{arity:-2,flags:["noscript","loading","stale","fast","allow_busy"],keyStart:1,keyStop:-1,step:1},xack:{arity:-4,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xadd:{arity:-5,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},xautoclaim:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xclaim:{arity:-6,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xdel:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xdelex:{arity:-5,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xgroup:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},xinfo:{arity:-2,flags:[],keyStart:0,keyStop:0,step:0},xlen:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},xnack:{arity:-7,flags:["write","fast"],keyStart:1,keyStop:1,step:1},xpending:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},xrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},xread:{arity:-4,flags:["readonly","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},xreadgroup:{arity:-7,flags:["write","blocking","movablekeys"],keyStart:0,keyStop:0,step:0},xrevrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},xsetid:{arity:-3,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},xtrim:{arity:-4,flags:["write"],keyStart:1,keyStop:1,step:1},zadd:{arity:-4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},zcard:{arity:2,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zcount:{arity:4,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zdiff:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zdiffstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},zincrby:{arity:4,flags:["write","denyoom","fast"],keyStart:1,keyStop:1,step:1},zinter:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zintercard:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zinterstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1},zlexcount:{arity:4,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zmpop:{arity:-4,flags:["write","movablekeys"],keyStart:0,keyStop:0,step:0},zmscore:{arity:-3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zpopmax:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zpopmin:{arity:-2,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zrandmember:{arity:-2,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangebylex:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangebyscore:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrangestore:{arity:-5,flags:["write","denyoom"],keyStart:1,keyStop:2,step:1},zrank:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zrem:{arity:-3,flags:["write","fast"],keyStart:1,keyStop:1,step:1},zremrangebylex:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zremrangebyrank:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zremrangebyscore:{arity:4,flags:["write"],keyStart:1,keyStop:1,step:1},zrevrange:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrangebylex:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrangebyscore:{arity:-4,flags:["readonly"],keyStart:1,keyStop:1,step:1},zrevrank:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zscan:{arity:-3,flags:["readonly"],keyStart:1,keyStop:1,step:1},zscore:{arity:3,flags:["readonly","fast"],keyStart:1,keyStop:1,step:1},zunion:{arity:-3,flags:["readonly","movablekeys"],keyStart:0,keyStop:0,step:0},zunionstore:{arity:-4,flags:["write","denyoom","movablekeys"],keyStart:1,keyStop:1,step:1}}});var Zo=h(Lr=>{"use strict";var ewe=Lr&&Lr.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(Lr,"__esModule",{value:!0});Lr.getKeyIndexes=Lr.hasFlag=Lr.exists=Lr.list=void 0;var Py=ewe(f6());Lr.list=Object.keys(Py.default);var X1={};Lr.list.forEach(t=>{X1[t]=Py.default[t].flags.reduce(function(e,r){return e[r]=!0,e},{})});function twe(t,e){return t=e?.caseInsensitive?String(t).toLowerCase():t,!!Py.default[t]}Lr.exists=twe;function rwe(t,e,r){if(t=r?.nameCaseInsensitive?String(t).toLowerCase():t,!X1[t])throw new Error("Unknown command "+t);return!!X1[t][e]}Lr.hasFlag=rwe;function nwe(t,e,r){t=r?.nameCaseInsensitive?String(t).toLowerCase():t;let n=Py.default[t];if(!n)throw new Error("Unknown command "+t);if(!Array.isArray(e))throw new Error("Expect args to be an array");let i=[],s=!!(r&&r.parseExternalKey),o=(c,l)=>{let u=[],d=Number(c[l]);for(let p=0;p<d;p++)u.push(p+l+1);return u},a=(c,l,u)=>{for(let d=l;d<c.length-1;d+=1)if(String(c[d]).toLowerCase()===u.toLowerCase())return d+1;return null};switch(t){case"zunionstore":case"zinterstore":case"zdiffstore":i.push(0,...o(e,1));break;case"eval":case"evalsha":case"eval_ro":case"evalsha_ro":case"fcall":case"fcall_ro":case"blmpop":case"bzmpop":i.push(...o(e,1));break;case"sintercard":case"lmpop":case"zunion":case"zinter":case"zmpop":case"zintercard":case"zdiff":{i.push(...o(e,0));break}case"msetex":{let c=Number(e[0]);for(let l=0;l<c;l++)i.push(1+l*2);break}case"georadius":{i.push(0);let c=a(e,5,"STORE");c&&i.push(c);let l=a(e,5,"STOREDIST");l&&i.push(l);break}case"georadiusbymember":{i.push(0);let c=a(e,4,"STORE");c&&i.push(c);let l=a(e,4,"STOREDIST");l&&i.push(l);break}case"sort":case"sort_ro":i.push(0);for(let c=1;c<e.length-1;c++){let l=e[c];if(typeof l!="string")continue;let u=l.toUpperCase();u==="GET"?(c+=1,l=e[c],l!=="#"&&(s?i.push([c,m6(l)]):i.push(c))):u==="BY"?(c+=1,s?i.push([c,m6(e[c])]):i.push(c)):u==="STORE"&&(c+=1,i.push(c))}break;case"migrate":if(e[2]==="")for(let c=5;c<e.length-1;c++){let l=e[c];if(typeof l=="string"&&l.toUpperCase()==="KEYS"){for(let u=c+1;u<e.length;u++)i.push(u);break}}else i.push(2);break;case"xreadgroup":case"xread":for(let c=t==="xread"?0:3;c<e.length-1;c++)if(String(e[c]).toUpperCase()==="STREAMS"){for(let l=c+1;l<=c+(e.length-1-c)/2;l++)i.push(l);break}break;default:if(n.step>0){let c=n.keyStart-1,l=n.keyStop>0?n.keyStop:e.length+n.keyStop+1;for(let u=c;u<l;u+=n.step)i.push(u)}break}return i}Lr.getKeyIndexes=nwe;function m6(t){typeof t!="string"&&(t=String(t));let e=t.indexOf("->");return e===-1?t.length:e}});var h6=h($s=>{"use strict";Object.defineProperty($s,"__esModule",{value:!0});$s.tryCatch=$s.errorObj=void 0;$s.errorObj={e:{}};var Z1;function iwe(t,e){try{let r=Z1;return Z1=null,r.apply(this,arguments)}catch(r){return $s.errorObj.e=r,$s.errorObj}}function swe(t){return Z1=t,iwe}$s.tryCatch=swe});var Us=h(eT=>{"use strict";Object.defineProperty(eT,"__esModule",{value:!0});var Xc=h6();function y6(t){setTimeout(function(){throw t},0)}function owe(t,e,r){return typeof e=="function"&&t.then(n=>{let i;r!==void 0&&Object(r).spread&&Array.isArray(n)?i=Xc.tryCatch(e).apply(void 0,[null].concat(n)):i=n===void 0?Xc.tryCatch(e)(null):Xc.tryCatch(e)(null,n),i===Xc.errorObj&&y6(i.e)},n=>{if(!n){let s=new Error(n+"");Object.assign(s,{cause:n}),n=s}let i=Xc.tryCatch(e)(n);i===Xc.errorObj&&y6(i.e)}),t}eT.default=owe});var v6=h((Z$e,b6)=>{"use strict";var g6=require("assert"),Td=require("util");function Zc(t){Object.defineProperty(this,"message",{value:t||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Td.inherits(Zc,Error);Object.defineProperty(Zc.prototype,"name",{value:"RedisError",configurable:!0,writable:!0});function tT(t,e,r){g6(e),g6.strictEqual(typeof r,"number"),Object.defineProperty(this,"message",{value:t||"",configurable:!0,writable:!0});let n=Error.stackTraceLimit;Error.stackTraceLimit=2,Error.captureStackTrace(this,this.constructor),Error.stackTraceLimit=n,this.offset=r,this.buffer=e}Td.inherits(tT,Zc);Object.defineProperty(tT.prototype,"name",{value:"ParserError",configurable:!0,writable:!0});function rT(t){Object.defineProperty(this,"message",{value:t||"",configurable:!0,writable:!0});let e=Error.stackTraceLimit;Error.stackTraceLimit=2,Error.captureStackTrace(this,this.constructor),Error.stackTraceLimit=e}Td.inherits(rT,Zc);Object.defineProperty(rT.prototype,"name",{value:"ReplyError",configurable:!0,writable:!0});function Ky(t){Object.defineProperty(this,"message",{value:t||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Td.inherits(Ky,Zc);Object.defineProperty(Ky.prototype,"name",{value:"AbortError",configurable:!0,writable:!0});function nT(t){Object.defineProperty(this,"message",{value:t||"",configurable:!0,writable:!0}),Error.captureStackTrace(this,this.constructor)}Td.inherits(nT,Ky);Object.defineProperty(nT.prototype,"name",{value:"InterruptError",configurable:!0,writable:!0});b6.exports={RedisError:Zc,ParserError:tT,ReplyError:rT,AbortError:Ky,InterruptError:nT}});var x6=h((e8e,S6)=>{"use strict";var E6=require("assert"),el=class extends Error{get name(){return this.constructor.name}},iT=class extends el{constructor(e,r,n){E6(r),E6.strictEqual(typeof n,"number");let i=Error.stackTraceLimit;Error.stackTraceLimit=2,super(e),Error.stackTraceLimit=i,this.offset=n,this.buffer=r}get name(){return this.constructor.name}},sT=class extends el{constructor(e){let r=Error.stackTraceLimit;Error.stackTraceLimit=2,super(e),Error.stackTraceLimit=r}get name(){return this.constructor.name}},Dy=class extends el{get name(){return this.constructor.name}},oT=class extends Dy{get name(){return this.constructor.name}};S6.exports={RedisError:el,ParserError:iT,ReplyError:sT,AbortError:Dy,InterruptError:oT}});var ea=h((t8e,w6)=>{"use strict";var awe=process.version.charCodeAt(1)<55&&process.version.charCodeAt(2)===46?v6():x6();w6.exports=awe});var kd=h((r8e,aT)=>{var _6=[0,4129,8258,12387,16516,20645,24774,28903,33032,37161,41290,45419,49548,53677,57806,61935,4657,528,12915,8786,21173,17044,29431,25302,37689,33560,45947,41818,54205,50076,62463,58334,9314,13379,1056,5121,25830,29895,17572,21637,42346,46411,34088,38153,58862,62927,50604,54669,13907,9842,5649,1584,30423,26358,22165,18100,46939,42874,38681,34616,63455,59390,55197,51132,18628,22757,26758,30887,2112,6241,10242,14371,51660,55789,59790,63919,35144,39273,43274,47403,23285,19156,31415,27286,6769,2640,14899,10770,56317,52188,64447,60318,39801,35672,47931,43802,27814,31879,19684,23749,11298,15363,3168,7233,60846,64911,52716,56781,44330,48395,36200,40265,32407,28342,24277,20212,15891,11826,7761,3696,65439,61374,57309,53244,48923,44858,40793,36728,37256,33193,45514,41451,53516,49453,61774,57711,4224,161,12482,8419,20484,16421,28742,24679,33721,37784,41979,46042,49981,54044,58239,62302,689,4752,8947,13010,16949,21012,25207,29270,46570,42443,38312,34185,62830,58703,54572,50445,13538,9411,5280,1153,29798,25671,21540,17413,42971,47098,34713,38840,59231,63358,50973,55100,9939,14066,1681,5808,26199,30326,17941,22068,55628,51565,63758,59695,39368,35305,47498,43435,22596,18533,30726,26663,6336,2273,14466,10403,52093,56156,60223,64286,35833,39896,43963,48026,19061,23124,27191,31254,2801,6864,10931,14994,64814,60687,56684,52557,48554,44427,40424,36297,31782,27655,23652,19525,15522,11395,7392,3265,61215,65342,53085,57212,44955,49082,36825,40952,28183,32310,20053,24180,11923,16050,3793,7920],cwe=function(e){for(var r,n=0,i=0,s=[],o=e.length;n<o;n++)r=e.charCodeAt(n),r<128?s[i++]=r:r<2048?(s[i++]=r>>6|192,s[i++]=r&63|128):(r&64512)===55296&&n+1<e.length&&(e.charCodeAt(n+1)&64512)===56320?(r=65536+((r&1023)<<10)+(e.charCodeAt(++n)&1023),s[i++]=r>>18|240,s[i++]=r>>12&63|128,s[i++]=r>>6&63|128,s[i++]=r&63|128):(s[i++]=r>>12|224,s[i++]=r>>6&63|128,s[i++]=r&63|128);return s},I6=aT.exports=function(e){for(var r,n=0,i=-1,s=0,o=0,a=typeof e=="string"?cwe(e):e,c=a.length;n<c;){if(r=a[n++],i===-1)r===123&&(i=n);else if(r!==125)o=_6[(r^o>>8)&255]^o<<8;else if(n-1!==i)return o&16383;s=_6[(r^s>>8)&255]^s<<8}return s&16383};aT.exports.generateMulti=function(e){for(var r=1,n=e.length,i=I6(e[0]);r<n;)if(I6(e[r++])!==i)return-1;return i}});var T6=h(tl=>{"use strict";Object.defineProperty(tl,"__esModule",{value:!0});tl.parseBlockOption=tl.parseSecondsArgument=void 0;var cT=t=>{if(typeof t=="number")return t;if(Buffer.isBuffer(t))return cT(t.toString());if(typeof t=="string"){let e=Number(t);return Number.isFinite(e)?e:void 0}},lwe=t=>{if(typeof t=="string")return t;if(Buffer.isBuffer(t))return t.toString()},uwe=t=>{let e=cT(t);if(e!==void 0)return e<=0?0:e*1e3};tl.parseSecondsArgument=uwe;var dwe=t=>{for(let e=0;e<t.length;e++){let r=lwe(t[e]);if(r&&r.toLowerCase()==="block"){let n=cT(t[e+1]);return n===void 0?void 0:n<=0?0:n}}return null};tl.parseBlockOption=dwe});var Vi=h(dT=>{"use strict";Object.defineProperty(dT,"__esModule",{value:!0});var k6=Zo(),pwe=kd(),fwe=Us(),ta=gt(),lT=T6(),li=class t{constructor(e,r=[],n={},i){if(this.name=e,this.inTransaction=!1,this.isTraced=!1,this.isResolved=!1,this.transformed=!1,this.replyEncoding=n.replyEncoding,this.errorStack=n.errorStack,this.args=r.flat(),this.callback=i,this.initPromise(),n.keyPrefix){let s=n.keyPrefix instanceof Buffer,o=s?n.keyPrefix:null;this._iterateKeys(a=>a instanceof Buffer?(o===null&&(o=Buffer.from(n.keyPrefix)),Buffer.concat([o,a])):s?Buffer.concat([n.keyPrefix,Buffer.from(String(a))]):n.keyPrefix+a)}n.readOnly&&(this.isReadOnly=!0)}static checkFlag(e,r){return r=r.toLowerCase(),!!this.getFlagMap()[e][r]}static setArgumentTransformer(e,r){this._transformer.argument[e]=r}static setReplyTransformer(e,r){this._transformer.reply[e]=r}static getFlagMap(){return this.flagMap||(this.flagMap=Object.keys(t.FLAGS).reduce((e,r)=>(e[r]={},t.FLAGS[r].forEach(n=>{e[r][n]=!0}),e),{})),this.flagMap}getSlot(){if(typeof this.slot>"u"){let e=this.getKeys()[0];this.slot=e==null?null:pwe(e)}return this.slot}getKeys(){return this._iterateKeys()}toWritable(e){let r,n="*"+(this.args.length+1)+`\r
$`+Buffer.byteLength(this.name)+`\r
`+this.name+`\r
`;if(this.bufferMode){let i=new uT;i.push(n);for(let s=0;s<this.args.length;++s){let o=this.args[s];o instanceof Buffer?o.length===0?i.push(`$0\r
\r
`):(i.push("$"+o.length+`\r
`),i.push(o),i.push(`\r
`)):i.push("$"+Buffer.byteLength(o)+`\r
`+o+`\r
`)}r=i.toBuffer()}else{r=n;for(let i=0;i<this.args.length;++i){let s=this.args[i];r+="$"+Buffer.byteLength(s)+`\r
`+s+`\r
`}}return r}stringifyArguments(){for(let e=0;e<this.args.length;++e){let r=this.args[e];typeof r=="string"||(r instanceof Buffer?this.bufferMode=!0:this.args[e]=(0,ta.toArg)(r))}}transformReply(e){this.replyEncoding&&(e=(0,ta.convertBufferToString)(e,this.replyEncoding));let r=t._transformer.reply[this.name];return r&&(e=r(e)),e}setTimeout(e){this._commandTimeoutTimer||(this._commandTimeoutTimer=setTimeout(()=>{this.isResolved||this.reject(new Error("Command timed out"))},e))}setBlockingTimeout(e){if(e<=0)return;this._blockingTimeoutTimer&&(clearTimeout(this._blockingTimeoutTimer),this._blockingTimeoutTimer=void 0);let r=Date.now();this._blockingDeadline===void 0&&(this._blockingDeadline=r+e);let n=this._blockingDeadline-r;if(n<=0){this.resolve(null);return}this._blockingTimeoutTimer=setTimeout(()=>{if(this.isResolved){this._blockingTimeoutTimer=void 0;return}this._blockingTimeoutTimer=void 0,this.resolve(null)},n)}extractBlockingTimeout(){let e=this.args;if(!e||e.length===0)return;let r=this.name.toLowerCase();if(t.checkFlag("LAST_ARG_TIMEOUT_COMMANDS",r))return(0,lT.parseSecondsArgument)(e[e.length-1]);if(t.checkFlag("FIRST_ARG_TIMEOUT_COMMANDS",r))return(0,lT.parseSecondsArgument)(e[0]);if(t.checkFlag("BLOCK_OPTION_COMMANDS",r))return(0,lT.parseBlockOption)(e)}_clearTimers(){let e=this._commandTimeoutTimer;e&&(clearTimeout(e),delete this._commandTimeoutTimer);let r=this._blockingTimeoutTimer;r&&(clearTimeout(r),delete this._blockingTimeoutTimer)}initPromise(){let e=new Promise((r,n)=>{if(!this.transformed){this.transformed=!0;let i=t._transformer.argument[this.name];i&&(this.args=i(this.args)),this.stringifyArguments()}this.resolve=this._convertValue(r),this.reject=i=>{this._clearTimers(),this.errorStack?n((0,ta.optimizeErrorStack)(i,this.errorStack.stack,__CM_DIRNAME__)):n(i)}});this.promise=(0,fwe.default)(e,this.callback)}_iterateKeys(e=r=>r){if(typeof this.keys>"u"&&(this.keys=[],(0,k6.exists)(this.name,{caseInsensitive:!0}))){let r=(0,k6.getKeyIndexes)(this.name,this.args,{nameCaseInsensitive:!0});for(let n of r)this.args[n]=e(this.args[n]),this.keys.push(this.args[n])}return this.keys}_convertValue(e){return r=>{try{this._clearTimers(),e(this.transformReply(r)),this.isResolved=!0}catch(n){this.reject(n)}return this.promise}}};dT.default=li;li.FLAGS={VALID_IN_SUBSCRIBER_MODE:["subscribe","psubscribe","unsubscribe","punsubscribe","ssubscribe","sunsubscribe","ping","quit"],VALID_IN_MONITOR_MODE:["monitor","auth"],ENTER_SUBSCRIBER_MODE:["subscribe","psubscribe","ssubscribe"],EXIT_SUBSCRIBER_MODE:["unsubscribe","punsubscribe","sunsubscribe"],WILL_DISCONNECT:["quit"],HANDSHAKE_COMMANDS:["auth","select","client","readonly","info"],IGNORE_RECONNECT_ON_ERROR:["client"],BLOCKING_COMMANDS:["blpop","brpop","brpoplpush","blmove","bzpopmin","bzpopmax","bzmpop","blmpop","xread","xreadgroup"],LAST_ARG_TIMEOUT_COMMANDS:["blpop","brpop","brpoplpush","blmove","bzpopmin","bzpopmax"],FIRST_ARG_TIMEOUT_COMMANDS:["bzmpop","blmpop"],BLOCK_OPTION_COMMANDS:["xread","xreadgroup"]};li._transformer={argument:{},reply:{}};var A6=function(t){if(t.length===1){if(t[0]instanceof Map)return(0,ta.convertMapToArray)(t[0]);if(typeof t[0]=="object"&&t[0]!==null)return(0,ta.convertObjectToArray)(t[0])}return t},R6=function(t){if(t.length===2){if(t[1]instanceof Map)return[t[0]].concat((0,ta.convertMapToArray)(t[1]));if(typeof t[1]=="object"&&t[1]!==null)return[t[0]].concat((0,ta.convertObjectToArray)(t[1]))}return t};li.setArgumentTransformer("mset",A6);li.setArgumentTransformer("msetnx",A6);li.setArgumentTransformer("hset",R6);li.setArgumentTransformer("hmset",R6);li.setReplyTransformer("hgetall",function(t){if(Array.isArray(t)){let e={};for(let r=0;r<t.length;r+=2){let n=t[r],i=t[r+1];n in e?Object.defineProperty(e,n,{value:i,configurable:!0,enumerable:!0,writable:!0}):e[n]=i}return e}return t});var uT=class{constructor(){this.length=0,this.items=[]}push(e){this.length+=Buffer.byteLength(e),this.items.push(e)}toBuffer(){let e=Buffer.allocUnsafe(this.length),r=0;for(let n of this.items){let i=Buffer.byteLength(n);Buffer.isBuffer(n)?n.copy(e,r):e.write(n,r,i),r+=i}return e}}});var O6=h(pT=>{"use strict";Object.defineProperty(pT,"__esModule",{value:!0});var mwe=ea(),My=class extends mwe.RedisError{constructor(e,r){super(e),this.lastNodeError=r,Error.captureStackTrace(this,this.constructor)}get name(){return this.constructor.name}};pT.default=My;My.defaultMessage="Failed to refresh slots cache."});var Ny=h(mT=>{"use strict";Object.defineProperty(mT,"__esModule",{value:!0});var hwe=require("stream"),fT=class extends hwe.Readable{constructor(e){super(e),this.opt=e,this._redisCursor="0",this._redisDrained=!1}_read(){if(this._redisDrained){this.push(null);return}let e=[this._redisCursor];this.opt.key&&e.unshift(this.opt.key),this.opt.match&&e.push("MATCH",this.opt.match),this.opt.type&&e.push("TYPE",this.opt.type),this.opt.count&&e.push("COUNT",String(this.opt.count)),this.opt.noValues&&e.push("NOVALUES"),this.opt.redis[this.opt.command](e,(r,n)=>{if(r){this.emit("error",r);return}this._redisCursor=n[0]instanceof Buffer?n[0].toString():n[0],this._redisCursor==="0"&&(this._redisDrained=!0),this.push(n[1])})}close(){this._redisDrained=!0}};mT.default=fT});var M6=h(ct=>{"use strict";Object.defineProperty(ct,"__esModule",{value:!0});ct.executeWithAutoPipelining=ct.getFirstValueInFlattenedArray=ct.shouldUseAutoPipelining=ct.notAllowedAutoPipelineCommands=ct.kCallbacks=ct.kExec=void 0;var j6=Vh(),ywe=kd(),C6=Us(),Ly=Zo();ct.kExec=Symbol("exec");ct.kCallbacks=Symbol("callbacks");ct.notAllowedAutoPipelineCommands=["auth","info","script","quit","cluster","pipeline","multi","subscribe","psubscribe","unsubscribe","unpsubscribe","select","client"];function P6(t,e){if(t._runningAutoPipelines.has(e)||!t._autoPipelines.has(e))return;t._runningAutoPipelines.add(e);let r=t._autoPipelines.get(e);t._autoPipelines.delete(e);let n=r[ct.kCallbacks];r[ct.kCallbacks]=null,r.exec(function(i,s){if(t._runningAutoPipelines.delete(e),i)for(let o=0;o<n.length;o++)process.nextTick(n[o],i);else for(let o=0;o<n.length;o++)process.nextTick(n[o],...s[o]);t._autoPipelines.has(e)&&P6(t,e)})}function gwe(t,e,r){return e&&t.options.enableAutoPipelining&&!t.isPipeline&&!ct.notAllowedAutoPipelineCommands.includes(r)&&!t.options.autoPipeliningIgnoredCommands.includes(r)}ct.shouldUseAutoPipelining=gwe;function K6(t){for(let e=0;e<t.length;e++){let r=t[e];if(typeof r=="string")return r;if(Array.isArray(r)||(0,j6.isArguments)(r)){if(r.length===0)continue;return r[0]}let n=[r].flat();if(n.length>0)return n[0]}}ct.getFirstValueInFlattenedArray=K6;function bwe(t,e){if((0,Ly.exists)(t,{caseInsensitive:!0})){let r=e.flat(),n=(0,Ly.getKeyIndexes)(t,r,{nameCaseInsensitive:!0});if(n.length)return r[n[0]]}return K6(e)}function D6(t,e,r,n,i){if(t.isCluster&&!t.slots.length)return t.status==="wait"&&t.connect().catch(j6.noop),(0,C6.default)(new Promise(function(l,u){t.delayUntilReady(d=>{if(d){u(d);return}D6(t,e,r,n,null).then(l,u)})}),i);let s=t.options.keyPrefix||"",o=t.isCluster?t.slots[ywe(`${s}${bwe(r,n)}`)].join(","):"main";if(t.isCluster&&t.options.scaleReads!=="master"){let l=(0,Ly.exists)(r)&&(0,Ly.hasFlag)(r,"readonly");o+=l?":read":":write"}if(!t._autoPipelines.has(o)){let l=t.pipeline();l[ct.kExec]=!1,l[ct.kCallbacks]=[],t._autoPipelines.set(o,l)}let a=t._autoPipelines.get(o);a[ct.kExec]||(a[ct.kExec]=!0,setImmediate(P6,t,o));let c=new Promise(function(l,u){a[ct.kCallbacks].push(function(d,p){if(d){u(d);return}l(p)}),e==="call"&&n.unshift(r),a[e](...n)});return(0,C6.default)(c,i)}ct.executeWithAutoPipelining=D6});var N6=h(yT=>{"use strict";Object.defineProperty(yT,"__esModule",{value:!0});var vwe=require("crypto"),Ewe=Vi(),Swe=Us(),hT=class{constructor(e,r=null,n="",i=!1){this.lua=e,this.numberOfKeys=r,this.keyPrefix=n,this.readOnly=i,this.sha=(0,vwe.createHash)("sha1").update(e).digest("hex");let s=this.sha,o=new WeakSet;this.Command=class extends Ewe.default{toWritable(c){let l=this.reject;return this.reject=u=>{u.message.indexOf("NOSCRIPT")!==-1&&o.delete(c),l.call(this,u)},o.has(c)?this.name==="eval"&&(this.name="evalsha",this.args[0]=s):(o.add(c),this.name="eval",this.args[0]=e),super.toWritable(c)}}}execute(e,r,n,i){typeof this.numberOfKeys=="number"&&r.unshift(this.numberOfKeys),this.keyPrefix&&(n.keyPrefix=this.keyPrefix),this.readOnly&&(n.readOnly=!0);let s=new this.Command("evalsha",[this.sha,...r],n);return s.promise=s.promise.catch(o=>{if(o.message.indexOf("NOSCRIPT")===-1)throw o;let a=new this.Command("evalsha",[this.sha,...r],n);return(e.isPipeline?e.redis:e).sendCommand(a)}),(0,Swe.default)(s.promise,i),e.sendCommand(s)}};yT.default=hT});var Fy=h(bT=>{"use strict";Object.defineProperty(bT,"__esModule",{value:!0});var xwe=Zo(),qy=M6(),wwe=Vi(),_we=N6(),Wi=class{constructor(){this.options={},this.scriptsSet={},this.addedBuiltinSet=new Set}getBuiltinCommands(){return gT.slice(0)}createBuiltinCommand(e){return{string:Js(null,e,"utf8"),buffer:Js(null,e,null)}}addBuiltinCommand(e){this.addedBuiltinSet.add(e),this[e]=Js(e,e,"utf8"),this[e+"Buffer"]=Js(e+"Buffer",e,null)}defineCommand(e,r){let n=new _we.default(r.lua,r.numberOfKeys,this.options.keyPrefix,r.readOnly);this.scriptsSet[e]=n,this[e]=L6(e,e,n,"utf8"),this[e+"Buffer"]=L6(e+"Buffer",e,n,null)}sendCommand(e,r,n){throw new Error('"sendCommand" is not implemented')}},gT=xwe.list.filter(t=>t!=="monitor");gT.push("sentinel");gT.forEach(function(t){Wi.prototype[t]=Js(t,t,"utf8"),Wi.prototype[t+"Buffer"]=Js(t+"Buffer",t,null)});Wi.prototype.call=Js("call","utf8");Wi.prototype.callBuffer=Js("callBuffer",null);Wi.prototype.send_command=Wi.prototype.call;function Js(t,e,r){return typeof r>"u"&&(r=e,e=null),function(...n){let i=e||n.shift(),s=n[n.length-1];typeof s=="function"?n.pop():s=void 0;let o={errorStack:this.options.showFriendlyErrorStack?new Error:void 0,keyPrefix:this.options.keyPrefix,replyEncoding:r};return(0,qy.shouldUseAutoPipelining)(this,t,i)?(0,qy.executeWithAutoPipelining)(this,t,i,n,s):this.sendCommand(new wwe.default(i,n,o,s))}}function L6(t,e,r,n){return function(...i){let s=typeof i[i.length-1]=="function"?i.pop():void 0,o={replyEncoding:n};return this.options.showFriendlyErrorStack&&(o.errorStack=new Error),(0,qy.shouldUseAutoPipelining)(this,t,e)?(0,qy.executeWithAutoPipelining)(this,t,e,i,s):r.execute(this,i,o,s)}}bT.default=Wi});var ST=h(ET=>{"use strict";Object.defineProperty(ET,"__esModule",{value:!0});var vT=kd(),q6=Zo(),F6=Us(),Iwe=require("util"),Twe=Vi(),kwe=require("buffer"),Awe=gt(),Rwe=Fy();function Owe(t,e){let r=vT(e[0]),n=t._groupsBySlot[r];for(let i=1;i<e.length;i++)if(t._groupsBySlot[vT(e[i])]!==n)return-1;return r}var zs=class extends Rwe.default{constructor(e){super(),this.redis=e,this.isPipeline=!0,this.replyPending=0,this._queue=[],this._result=[],this._transactions=0,this._shaToScript={},this.isCluster=this.redis.constructor.name==="Cluster"||this.redis.isCluster,this.options=e.options,Object.keys(e.scriptsSet).forEach(n=>{let i=e.scriptsSet[n];this._shaToScript[i.sha]=i,this[n]=e[n],this[n+"Buffer"]=e[n+"Buffer"]}),e.addedBuiltinSet.forEach(n=>{this[n]=e[n],this[n+"Buffer"]=e[n+"Buffer"]}),this.promise=new Promise((n,i)=>{this.resolve=n,this.reject=i});let r=this;Object.defineProperty(this,"length",{get:function(){return r._queue.length}})}fillResult(e,r){if(this._queue[r].name==="exec"&&Array.isArray(e[1])){let i=e[1].length;for(let s=0;s<i;s++){if(e[1][s]instanceof Error)continue;let o=this._queue[r-(i-s)];try{e[1][s]=o.transformReply(e[1][s])}catch(a){e[1][s]=a}}}if(this._result[r]=e,--this.replyPending)return;if(this.isCluster){let i=!0,s;for(let o=0;o<this._result.length;++o){let a=this._result[o][0],c=this._queue[o];if(a){if(c.name==="exec"&&a.message==="EXECABORT Transaction discarded because of previous errors.")continue;if(!s)s={name:a.name,message:a.message};else if(s.name!==a.name||s.message!==a.message){i=!1;break}}else if(!c.inTransaction&&!((0,q6.exists)(c.name,{caseInsensitive:!0})&&(0,q6.hasFlag)(c.name,"readonly",{nameCaseInsensitive:!0}))){i=!1;break}}if(s&&i){let o=this,a=s.message.split(" "),c=this._queue,l=!1;this._queue=[];for(let f=0;f<c.length;++f){if(a[0]==="ASK"&&!l&&c[f].name!=="asking"&&(!c[f-1]||c[f-1].name!=="asking")){let m=new Twe.default("asking");m.ignore=!0,this.sendCommand(m)}c[f].initPromise(),this.sendCommand(c[f]),l=c[f].inTransaction}let u=!0;typeof this.leftRedirections>"u"&&(this.leftRedirections={});let d=function(){o.exec()},p=this.redis;if(p.handleError(s,this.leftRedirections,{moved:function(f,m){o.preferKey=m,p.slots[a[1]]?p.slots[a[1]][0]!==m&&(p.slots[a[1]]=[m]):p.slots[a[1]]=[m],p._groupsBySlot[a[1]]=p._groupsIds[p.slots[a[1]].join(";")],p.refreshSlotsCache(),o.exec()},ask:function(f,m){o.preferKey=m,o.exec()},tryagain:d,clusterDown:d,connectionClosed:d,maxRedirections:()=>{u=!1},defaults:()=>{u=!1}}),u)return}}let n=0;for(let i=0;i<this._queue.length-n;++i)this._queue[i+n].ignore&&(n+=1),this._result[i]=this._result[i+n];this.resolve(this._result.slice(0,this._result.length-n))}sendCommand(e){this._transactions>0&&(e.inTransaction=!0);let r=this._queue.length;return e.pipelineIndex=r,e.promise.then(n=>{this.fillResult([null,n],r)}).catch(n=>{this.fillResult([n],r)}),this._queue.push(e),this}addBatch(e){let r,n,i;for(let s=0;s<e.length;++s)r=e[s],n=r[0],i=r.slice(1),this[n].apply(this,i);return this}};ET.default=zs;var Cwe=zs.prototype.multi;zs.prototype.multi=function(){return this._transactions+=1,Cwe.apply(this,arguments)};var $6=zs.prototype.execBuffer;zs.prototype.execBuffer=(0,Iwe.deprecate)(function(){return this._transactions>0&&(this._transactions-=1),$6.apply(this,arguments)},"Pipeline#execBuffer: Use Pipeline#exec instead");zs.prototype.exec=function(t){if(this.isCluster&&!this.redis.slots.length)return this.redis.status==="wait"&&this.redis.connect().catch(Awe.noop),t&&!this.nodeifiedPromise&&(this.nodeifiedPromise=!0,(0,F6.default)(this.promise,t)),this.redis.delayUntilReady(i=>{if(i){this.reject(i);return}this.exec(t)}),this.promise;if(this._transactions>0)return this._transactions-=1,$6.apply(this,arguments);this.nodeifiedPromise||(this.nodeifiedPromise=!0,(0,F6.default)(this.promise,t)),this._queue.length||this.resolve([]);let e;if(this.isCluster){let i=[];for(let s=0;s<this._queue.length;s++){let o=this._queue[s].getKeys();if(o.length&&i.push(o[0]),o.length&&vT.generateMulti(o)<0)return this.reject(new Error("All the keys in a pipeline command should belong to the same slot")),this.promise}if(i.length){if(e=Owe(this.redis,i),e<0)return this.reject(new Error("All keys in the pipeline should belong to the same slots allocation group")),this.promise}else e=Math.random()*16384|0}let r=this;return n(),this.promise;function n(){let i=r.replyPending=r._queue.length,s;r.isCluster&&(s={slot:e,redis:r.redis.connectionPool.nodes.all[r.preferKey]});let o="",a,c={isPipeline:!0,destination:r.isCluster?s:{redis:r.redis},write(l){typeof l!="string"?(a||(a=[]),o&&(a.push(Buffer.from(o,"utf8")),o=""),a.push(l)):(o.length+l.length>=kwe.constants.MAX_STRING_LENGTH&&(a||(a=[]),o&&(a.push(Buffer.from(o,"utf8")),o="")),o+=l),--i||(a?(o&&a.push(Buffer.from(o,"utf8")),c.destination.redis.stream.write(Buffer.concat(a))):c.destination.redis.stream.write(o),i=r._queue.length,o="",a=void 0)}};for(let l=0;l<r._queue.length;++l)r.redis.sendCommand(r._queue[l],c,s);return r.promise}}});var _T=h(ui=>{"use strict";Object.defineProperty(ui,"__esModule",{value:!0});ui.traceConnect=ui.traceBatch=ui.traceCommand=ui.sanitizeArgs=void 0;var jwe=[{regex:/^ECHO/i,args:0},{regex:/^(LPUSH|MSET|PFA|PUBLISH|RPUSH|SADD|SET|SPUBLISH|XADD|ZADD)/i,args:1},{regex:/^(HSET|HMSET|LSET|LINSERT)/i,args:2},{regex:/^(ACL|BIT|B[LRZ]|CLIENT|CLUSTER|CONFIG|COMMAND|DECR|DEL|EVAL|EX|FUNCTION|GEO|GET|HINCR|HMGET|HSCAN|INCR|L[TRLM]|MEMORY|P[EFISTU]|RPOP|S[CDIMORSU]|XACK|X[CDGILPRT]|Z[CDILMPRS])/i,args:-1}];function Pwe(t,e){let r=0;for(let i of jwe)if(i.regex.test(t)){r=i.args;break}if(r===-1)return e.map(i=>String(i));let n=[];for(let i=0;i<e.length;i++)i<r?n.push(String(e[i])):n.push("?");return n}ui.sanitizeArgs=Pwe;var Ad=(()=>{try{return"getBuiltinModule"in process?process.getBuiltinModule("node:diagnostics_channel"):require("node:diagnostics_channel")}catch{return}})(),xT=Ad&&typeof Ad.tracingChannel=="function",U6=xT?Ad.tracingChannel("ioredis:command"):void 0,J6=xT?Ad.tracingChannel("ioredis:batch"):void 0,z6=xT?Ad.tracingChannel("ioredis:connect"):void 0;function wT(t){return!!t&&t.hasSubscribers!==!1}var G6=()=>{};function Kwe(t,e){if(!wT(U6))return t();let r=U6.tracePromise(t,e());return r.catch(G6),r}ui.traceCommand=Kwe;function Dwe(t,e){if(!wT(J6))return t();let r=J6.tracePromise(t,e());return r.catch(G6),r}ui.traceBatch=Dwe;function Mwe(t,e){return wT(z6)?z6.tracePromise(t,e()):t()}ui.traceConnect=Mwe});var kT=h($y=>{"use strict";Object.defineProperty($y,"__esModule",{value:!0});$y.addTransactionSupport=void 0;var IT=gt(),TT=Us(),B6=ST(),Nwe=_T();function Lwe(t){t.pipeline=function(n){let i=new B6.default(this);return Array.isArray(n)&&i.addBatch(n),i};let{multi:e}=t;t.multi=function(n,i){if(typeof i>"u"&&!Array.isArray(n)&&(i=n,n=null),i&&i.pipeline===!1)return e.call(this);let s=new B6.default(this);s.multi(),Array.isArray(n)&&s.addBatch(n);let o=s.exec;s.exec=function(c){if(this.isCluster&&!this.redis.slots.length)return this.redis.status==="wait"&&this.redis.connect().catch(IT.noop),(0,TT.default)(new Promise((p,f)=>{this.redis.delayUntilReady(m=>{if(m){f(m);return}this.exec(s).then(p,f)})}),c);if(this._transactions>0&&o.call(s),this.nodeifiedPromise)return o.call(s);let l=Math.max(s.length-2,0),u=()=>o.call(s).then(function(p){let f=p[p.length-1];if(typeof f>"u")throw new Error("Pipeline cannot be used to send any commands when the `exec()` has been called on it.");if(f[0]){f[0].previousErrors=[];for(let m=0;m<p.length-1;++m)p[m][0]&&f[0].previousErrors.push(p[m][0]);throw f[0]}return(0,IT.wrapMultiResult)(f[1])}),d="_buildBatchContext"in this.redis?(0,Nwe.traceBatch)(u,()=>this.redis._buildBatchContext(l)):u();return(0,TT.default)(d,c)};let{execBuffer:a}=s;return s.execBuffer=function(c){return this._transactions>0&&a.call(s),s.exec(c)},s};let{exec:r}=t;t.exec=function(n){return(0,TT.default)(r.call(this).then(function(i){return Array.isArray(i)&&(i=(0,IT.wrapMultiResult)(i)),i}),n)}}$y.addTransactionSupport=Lwe});var RT=h(AT=>{"use strict";Object.defineProperty(AT,"__esModule",{value:!0});function qwe(t,e){Object.getOwnPropertyNames(e.prototype).forEach(r=>{Object.defineProperty(t.prototype,r,Object.getOwnPropertyDescriptor(e.prototype,r))})}AT.default=qwe});var V6=h(Uy=>{"use strict";Object.defineProperty(Uy,"__esModule",{value:!0});Uy.DEFAULT_CLUSTER_OPTIONS=void 0;var H6=require("dns");Uy.DEFAULT_CLUSTER_OPTIONS={clusterRetryStrategy:t=>Math.min(100+t*2,2e3),clusterNodeRetryStrategy:null,enableOfflineQueue:!0,enableReadyCheck:!0,scaleReads:"master",maxRedirections:16,retryDelayOnMoved:0,retryDelayOnFailover:100,retryDelayOnClusterDown:100,retryDelayOnTryAgain:100,slotsRefreshTimeout:1e3,useSRVRecords:!1,resolveSrv:H6.resolveSrv,dnsLookup:H6.lookup,enableAutoPipelining:!1,autoPipeliningIgnoredCommands:[],shardedSubscribers:!1}});var rl=h(or=>{"use strict";Object.defineProperty(or,"__esModule",{value:!0});or.getConnectionName=or.weightSrvRecords=or.groupSrvRecords=or.getUniqueHostnamesFromOptions=or.normalizeNodeOptions=or.nodeKeyToRedisOptions=or.getNodeKey=void 0;var W6=gt(),Fwe=require("net");function $we(t){return t.port=t.port||6379,t.host=t.host||"127.0.0.1",t.host+":"+t.port}or.getNodeKey=$we;function Uwe(t){let e=t.lastIndexOf(":");if(e===-1)throw new Error(`Invalid node key ${t}`);return{host:t.slice(0,e),port:Number(t.slice(e+1))}}or.nodeKeyToRedisOptions=Uwe;function Jwe(t){return t.map(e=>{let r={};if(typeof e=="object")Object.assign(r,e);else if(typeof e=="string")Object.assign(r,(0,W6.parseURL)(e));else if(typeof e=="number")r.port=e;else throw new Error("Invalid argument "+e);return typeof r.port=="string"&&(r.port=parseInt(r.port,10)),delete r.db,r.port||(r.port=6379),r.host||(r.host="127.0.0.1"),(0,W6.resolveTLSProfile)(r)})}or.normalizeNodeOptions=Jwe;function zwe(t){let e={};return t.forEach(r=>{e[r.host]=!0}),Object.keys(e).filter(r=>!(0,Fwe.isIP)(r))}or.getUniqueHostnamesFromOptions=zwe;function Gwe(t){let e={};for(let r of t)e.hasOwnProperty(r.priority)?(e[r.priority].totalWeight+=r.weight,e[r.priority].records.push(r)):e[r.priority]={totalWeight:r.weight,records:[r]};return e}or.groupSrvRecords=Gwe;function Bwe(t){if(t.records.length===1)return t.totalWeight=0,t.records.shift();let e=Math.floor(Math.random()*(t.totalWeight+t.records.length)),r=0;for(let[n,i]of t.records.entries())if(r+=1+i.weight,r>e)return t.totalWeight-=i.weight,t.records.splice(n,1),i}or.weightSrvRecords=Bwe;function Hwe(t,e){let r=`ioredis-cluster(${t})`;return e?`${r}:${e}`:r}or.getConnectionName=Hwe});var Q6=h(jT=>{"use strict";Object.defineProperty(jT,"__esModule",{value:!0});var Y6=rl(),OT=gt(),Vwe=Yi(),di=(0,OT.Debug)("cluster:subscriber"),CT=class{constructor(e,r,n=!1){this.connectionPool=e,this.emitter=r,this.isSharded=n,this.started=!1,this.subscriber=null,this.slotRange=[],this.onSubscriberEnd=()=>{if(!this.started){di("subscriber has disconnected, but ClusterSubscriber is not started, so not reconnecting.");return}di("subscriber has disconnected, selecting a new one..."),this.selectSubscriber()},this.connectionPool.on("-node",(i,s)=>{!this.started||!this.subscriber||(0,Y6.getNodeKey)(this.subscriber.options)===s&&(di("subscriber has left, selecting a new one..."),this.selectSubscriber())}),this.connectionPool.on("+node",()=>{!this.started||this.subscriber||(di("a new node is discovered and there is no subscriber, selecting a new one..."),this.selectSubscriber())})}getInstance(){return this.subscriber}associateSlotRange(e){return this.isSharded&&(this.slotRange=e),this.slotRange}start(){this.started=!0,this.selectSubscriber(),di("started")}stop(){this.started=!1,this.subscriber&&(this.subscriber.disconnect(),this.subscriber=null)}isStarted(){return this.started}selectSubscriber(){let e=this.lastActiveSubscriber;e&&(e.off("end",this.onSubscriberEnd),e.disconnect()),this.subscriber&&(this.subscriber.off("end",this.onSubscriberEnd),this.subscriber.disconnect());let r=(0,OT.sample)(this.connectionPool.getNodes());if(!r){di("selecting subscriber failed since there is no node discovered in the cluster yet"),this.subscriber=null;return}let{options:n}=r;di("selected a subscriber %s:%s",n.host,n.port);let i="subscriber";this.isSharded&&(i="ssubscriber"),this.subscriber=new Vwe.default({port:n.port,host:n.host,username:n.username,password:n.password,enableReadyCheck:!0,connectionName:(0,Y6.getConnectionName)(i,n.connectionName),lazyConnect:!0,tls:n.tls,retryStrategy:null}),this.subscriber.on("error",OT.noop),this.subscriber.on("moved",()=>{this.emitter.emit("forceRefresh")}),this.subscriber.once("end",this.onSubscriberEnd);let s={subscribe:[],psubscribe:[],ssubscribe:[]};if(e){let o=e.condition||e.prevCondition;o&&o.subscriber&&(s.subscribe=o.subscriber.channels("subscribe"),s.psubscribe=o.subscriber.channels("psubscribe"),s.ssubscribe=o.subscriber.channels("ssubscribe"))}if(s.subscribe.length||s.psubscribe.length||s.ssubscribe.length){let o=0;for(let a of["subscribe","psubscribe","ssubscribe"]){let c=s[a];if(c.length!=0)if(di("%s %d channels",a,c.length),a==="ssubscribe")for(let l of c)o+=1,this.subscriber[a](l).then(()=>{--o||(this.lastActiveSubscriber=this.subscriber)}).catch(()=>{di("failed to ssubscribe to channel: %s",l)});else o+=1,this.subscriber[a](c).then(()=>{--o||(this.lastActiveSubscriber=this.subscriber)}).catch(()=>{di("failed to %s %d channels",a,c.length)})}}else this.lastActiveSubscriber=this.subscriber;for(let o of["message","messageBuffer"])this.subscriber.on(o,(a,c)=>{this.emitter.emit(o,a,c)});for(let o of["pmessage","pmessageBuffer"])this.subscriber.on(o,(a,c,l)=>{this.emitter.emit(o,a,c,l)});if(this.isSharded==!0)for(let o of["smessage","smessageBuffer"])this.subscriber.on(o,(a,c)=>{this.emitter.emit(o,a,c)})}};jT.default=CT});var X6=h(DT=>{"use strict";Object.defineProperty(DT,"__esModule",{value:!0});var Wwe=require("events"),Jy=gt(),PT=rl(),Ywe=Yi(),Rd=(0,Jy.Debug)("cluster:connectionPool"),KT=class extends Wwe.EventEmitter{constructor(e,r=null){super(),this.redisOptions=e,this.clusterNodeRetryStrategy=r,this.nodes={all:{},master:{},slave:{}},this.specifiedOptions={}}getNodes(e="all"){let r=this.nodes[e];return Object.keys(r).map(n=>r[n])}getInstanceByKey(e){return this.nodes.all[e]}getSampleInstance(e){let r=Object.keys(this.nodes[e]),n=(0,Jy.sample)(r);return this.nodes[e][n]}addMasterNode(e){let r=(0,PT.getNodeKey)(e.options),n=this.createRedisFromOptions(e,e.options.readOnly);return e.options.readOnly?!1:(this.nodes.all[r]=n,this.nodes.master[r]=n,!0)}createRedisFromOptions(e,r){return new Ywe.default((0,Jy.defaults)({retryStrategy:typeof this.clusterNodeRetryStrategy=="function"?this.clusterNodeRetryStrategy:null,enableOfflineQueue:!0,readOnly:r},e,this.redisOptions,{lazyConnect:!0}))}findOrCreate(e,r=!1){let n=(0,PT.getNodeKey)(e);r=!!r,this.specifiedOptions[n]?Object.assign(e,this.specifiedOptions[n]):this.specifiedOptions[n]=e;let i;return this.nodes.all[n]?(i=this.nodes.all[n],i.options.readOnly!==r&&(i.options.readOnly=r,Rd("Change role of %s to %s",n,r?"slave":"master"),i[r?"readonly":"readwrite"]().catch(Jy.noop),r?(delete this.nodes.master[n],this.nodes.slave[n]=i):(delete this.nodes.slave[n],this.nodes.master[n]=i))):(Rd("Connecting to %s as %s",n,r?"slave":"master"),i=this.createRedisFromOptions(e,r),this.nodes.all[n]=i,this.nodes[r?"slave":"master"][n]=i,i.once("end",()=>{this.removeNode(n),this.emit("-node",i,n),Object.keys(this.nodes.all).length||this.emit("drain")}),this.emit("+node",i,n),i.on("error",s=>{this.emit("nodeError",s,n)})),i}reset(e){Rd("Reset with %O",e);let r={};e.forEach(n=>{let i=(0,PT.getNodeKey)(n);n.readOnly&&r[i]||(r[i]=n)}),Object.keys(this.nodes.all).forEach(n=>{r[n]||(Rd("Disconnect %s because the node does not hold any slot",n),this.nodes.all[n].disconnect(),this.removeNode(n))}),Object.keys(r).forEach(n=>{let i=r[n];this.findOrCreate(i,i.readOnly)})}removeNode(e){let{nodes:r}=this;r.all[e]&&(Rd("Remove %s from the pool",e),delete r.all[e]),delete r.master[e],delete r.slave[e]}};DT.default=KT});var zy=h((v8e,Z6)=>{"use strict";function at(t,r){var r=r||{};this._capacity=r.capacity,this._head=0,this._tail=0,Array.isArray(t)?this._fromArray(t):(this._capacityMask=3,this._list=new Array(4))}at.prototype.peekAt=function(e){var r=e;if(r===(r|0)){var n=this.size();if(!(r>=n||r<-n))return r<0&&(r+=n),r=this._head+r&this._capacityMask,this._list[r]}};at.prototype.get=function(e){return this.peekAt(e)};at.prototype.peek=function(){if(this._head!==this._tail)return this._list[this._head]};at.prototype.peekFront=function(){return this.peek()};at.prototype.peekBack=function(){return this.peekAt(-1)};Object.defineProperty(at.prototype,"length",{get:function(){return this.size()}});at.prototype.size=function(){return this._head===this._tail?0:this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};at.prototype.unshift=function(e){if(arguments.length===0)return this.size();var r=this._list.length;return this._head=this._head-1+r&this._capacityMask,this._list[this._head]=e,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.pop(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};at.prototype.shift=function(){var e=this._head;if(e!==this._tail){var r=this._list[e];return this._list[e]=void 0,this._head=e+1&this._capacityMask,e<2&&this._tail>1e4&&this._tail<=this._list.length>>>2&&this._shrinkArray(),r}};at.prototype.push=function(e){if(arguments.length===0)return this.size();var r=this._tail;return this._list[r]=e,this._tail=r+1&this._capacityMask,this._tail===this._head&&this._growArray(),this._capacity&&this.size()>this._capacity&&this.shift(),this._head<this._tail?this._tail-this._head:this._capacityMask+1-(this._head-this._tail)};at.prototype.pop=function(){var e=this._tail;if(e!==this._head){var r=this._list.length;this._tail=e-1+r&this._capacityMask;var n=this._list[this._tail];return this._list[this._tail]=void 0,this._head<2&&e>1e4&&e<=r>>>2&&this._shrinkArray(),n}};at.prototype.removeOne=function(e){var r=e;if(r===(r|0)&&this._head!==this._tail){var n=this.size(),i=this._list.length;if(!(r>=n||r<-n)){r<0&&(r+=n),r=this._head+r&this._capacityMask;var s=this._list[r],o;if(e<n/2){for(o=e;o>0;o--)this._list[r]=this._list[r=r-1+i&this._capacityMask];this._list[r]=void 0,this._head=this._head+1+i&this._capacityMask}else{for(o=n-1-e;o>0;o--)this._list[r]=this._list[r=r+1+i&this._capacityMask];this._list[r]=void 0,this._tail=this._tail-1+i&this._capacityMask}return s}}};at.prototype.remove=function(e,r){var n=e,i,s=r;if(n===(n|0)&&this._head!==this._tail){var o=this.size(),a=this._list.length;if(!(n>=o||n<-o||r<1)){if(n<0&&(n+=o),r===1||!r)return i=new Array(1),i[0]=this.removeOne(n),i;if(n===0&&n+r>=o)return i=this.toArray(),this.clear(),i;n+r>o&&(r=o-n);var c;for(i=new Array(r),c=0;c<r;c++)i[c]=this._list[this._head+n+c&this._capacityMask];if(n=this._head+n&this._capacityMask,e+r===o){for(this._tail=this._tail-r+a&this._capacityMask,c=r;c>0;c--)this._list[n=n+1+a&this._capacityMask]=void 0;return i}if(e===0){for(this._head=this._head+r+a&this._capacityMask,c=r-1;c>0;c--)this._list[n=n+1+a&this._capacityMask]=void 0;return i}if(n<o/2){for(this._head=this._head+e+r+a&this._capacityMask,c=e;c>0;c--)this.unshift(this._list[n=n-1+a&this._capacityMask]);for(n=this._head-1+a&this._capacityMask;s>0;)this._list[n=n-1+a&this._capacityMask]=void 0,s--;e<0&&(this._tail=n)}else{for(this._tail=n,n=n+r+a&this._capacityMask,c=o-(r+e);c>0;c--)this.push(this._list[n++]);for(n=this._tail;s>0;)this._list[n=n+1+a&this._capacityMask]=void 0,s--}return this._head<2&&this._tail>1e4&&this._tail<=a>>>2&&this._shrinkArray(),i}}};at.prototype.splice=function(e,r){var n=e;if(n===(n|0)){var i=this.size();if(n<0&&(n+=i),!(n>i))if(arguments.length>2){var s,o,a,c=arguments.length,l=this._list.length,u=2;if(!i||n<i/2){for(o=new Array(n),s=0;s<n;s++)o[s]=this._list[this._head+s&this._capacityMask];for(r===0?(a=[],n>0&&(this._head=this._head+n+l&this._capacityMask)):(a=this.remove(n,r),this._head=this._head+n+l&this._capacityMask);c>u;)this.unshift(arguments[--c]);for(s=n;s>0;s--)this.unshift(o[s-1])}else{o=new Array(i-(n+r));var d=o.length;for(s=0;s<d;s++)o[s]=this._list[this._head+n+r+s&this._capacityMask];for(r===0?(a=[],n!=i&&(this._tail=this._head+n+l&this._capacityMask)):(a=this.remove(n,r),this._tail=this._tail-d+l&this._capacityMask);u<c;)this.push(arguments[u++]);for(s=0;s<d;s++)this.push(o[s])}return a}else return this.remove(n,r)}};at.prototype.clear=function(){this._list=new Array(this._list.length),this._head=0,this._tail=0};at.prototype.isEmpty=function(){return this._head===this._tail};at.prototype.toArray=function(){return this._copyArray(!1)};at.prototype._fromArray=function(e){var r=e.length,n=this._nextPowerOf2(r);this._list=new Array(n),this._capacityMask=n-1,this._tail=r;for(var i=0;i<r;i++)this._list[i]=e[i]};at.prototype._copyArray=function(e,r){var n=this._list,i=n.length,s=this.length;if(r=r|s,r==s&&this._head<this._tail)return this._list.slice(this._head,this._tail);var o=new Array(r),a=0,c;if(e||this._head>this._tail){for(c=this._head;c<i;c++)o[a++]=n[c];for(c=0;c<this._tail;c++)o[a++]=n[c]}else for(c=this._head;c<this._tail;c++)o[a++]=n[c];return o};at.prototype._growArray=function(){if(this._head!=0){var e=this._copyArray(!0,this._list.length<<1);this._tail=this._list.length,this._head=0,this._list=e}else this._tail=this._list.length,this._list.length<<=1;this._capacityMask=this._capacityMask<<1|1};at.prototype._shrinkArray=function(){this._list.length>>>=1,this._capacityMask>>>=1};at.prototype._nextPowerOf2=function(e){var r=Math.log(e)/Math.log(2),n=1<<r+1;return Math.max(n,4)};Z6.exports=at});var ez=h(NT=>{"use strict";Object.defineProperty(NT,"__esModule",{value:!0});var Qwe=gt(),Xwe=zy(),Zwe=(0,Qwe.Debug)("delayqueue"),MT=class{constructor(){this.queues={},this.timeouts={}}push(e,r,n){let i=n.callback||process.nextTick;this.queues[e]||(this.queues[e]=new Xwe),this.queues[e].push(r),this.timeouts[e]||(this.timeouts[e]=setTimeout(()=>{i(()=>{this.timeouts[e]=null,this.execute(e)})},n.timeout))}execute(e){let r=this.queues[e];if(!r)return;let{length:n}=r;if(n)for(Zwe("send %d commands in %s queue",n,e),this.queues[e]=null;r.length>0;)r.shift()()}};NT.default=MT});var iz=h(qT=>{"use strict";Object.defineProperty(qT,"__esModule",{value:!0});var tz=rl(),nz=gt(),e_e=Yi(),rz=(0,nz.Debug)("cluster:subscriberGroup:shardedSubscriber"),Pe={IDLE:"idle",STARTING:"starting",CONNECTED:"connected",STOPPING:"stopping",ENDED:"ended"},t_e={[Pe.IDLE]:[Pe.STARTING,Pe.STOPPING,Pe.ENDED],[Pe.STARTING]:[Pe.CONNECTED,Pe.STOPPING,Pe.ENDED],[Pe.CONNECTED]:[Pe.STOPPING,Pe.ENDED],[Pe.STOPPING]:[Pe.ENDED],[Pe.ENDED]:[]},LT=class{constructor(e,r,n){var i;this.emitter=e,this.status=Pe.IDLE,this.instance=null,this.connectPromise=null,this.messageListeners=new Map,this.onEnd=()=>{this.updateStatus(Pe.ENDED),this.emitter.emit("-node",this.instance,this.nodeKey)},this.onError=s=>{this.emitter.emit("nodeError",s,this.nodeKey)},this.onMoved=()=>{this.emitter.emit("moved")},this.instance=new e_e.default((0,nz.defaults)({enableReadyCheck:!1,enableOfflineQueue:!0,connectionName:(0,tz.getConnectionName)("ssubscriber",r.connectionName),retryStrategy:null,lazyConnect:!0},r,n)),this.lazyConnect=(i=n?.lazyConnect)!==null&&i!==void 0?i:!0,this.nodeKey=(0,tz.getNodeKey)(r),this.instance.on("end",this.onEnd),this.instance.on("error",this.onError),this.instance.on("moved",this.onMoved);for(let s of["smessage","smessageBuffer"]){let o=(...a)=>{this.emitter.emit(s,...a)};this.messageListeners.set(s,o),this.instance.on(s,o)}}async start(){if(this.connectPromise)return this.connectPromise;if(!(this.status===Pe.STARTING||this.status===Pe.CONNECTED)){if(this.status===Pe.ENDED||!this.instance)throw new Error(`Sharded subscriber ${this.nodeKey} cannot be restarted once ended.`);this.updateStatus(Pe.STARTING),this.connectPromise=this.instance.connect();try{await this.connectPromise,this.updateStatus(Pe.CONNECTED)}catch(e){throw this.updateStatus(Pe.ENDED),e}finally{this.connectPromise=null}}}stop(){this.updateStatus(Pe.STOPPING),this.instance&&(this.instance.disconnect(),this.instance.removeAllListeners(),this.messageListeners.clear(),this.instance=null),this.updateStatus(Pe.ENDED),rz("stopped %s",this.nodeKey)}isStarted(){return[Pe.CONNECTED,Pe.STARTING].includes(this.status)}get subscriberStatus(){return this.status}isHealthy(){return(this.status===Pe.IDLE||this.status===Pe.CONNECTED||this.status===Pe.STARTING)&&this.instance!==null}getInstance(){return this.instance}getNodeKey(){return this.nodeKey}isLazyConnect(){return this.lazyConnect}updateStatus(e){if(this.status!==e){if(!t_e[this.status].includes(e)){rz("Invalid status transition for %s: %s -> %s",this.nodeKey,this.status,e);return}this.status=e}}};qT.default=LT});var sz=h(FT=>{"use strict";Object.defineProperty(FT,"__esModule",{value:!0});var r_e=gt(),n_e=rl(),Gy=kd(),i_e=iz(),fn=(0,r_e.Debug)("cluster:subscriberGroup"),nl=class t{constructor(e,r){this.subscriberGroupEmitter=e,this.options=r,this.shardedSubscribers=new Map,this.clusterSlots=[],this.subscriberToSlotsIndex=new Map,this.channels=new Map,this.failedAttemptsByNode=new Map,this.isResetting=!1,this.pendingReset=null,this.handleSubscriberConnectFailed=(n,i)=>{let o=(this.failedAttemptsByNode.get(i)||0)+1;this.failedAttemptsByNode.set(i,o);let a=Math.min(o,t.MAX_RETRY_ATTEMPTS),c=Math.min(t.BASE_BACKOFF_MS*2**a,t.MAX_BACKOFF_MS),l=Math.floor((Math.random()-.5)*(c*.5)),u=Math.max(0,c+l);fn("Failed to connect subscriber for %s. Refreshing slots in %dms",i,u),this.subscriberGroupEmitter.emit("subscriberConnectFailed",{delay:u,error:n})},this.handleSubscriberConnectSucceeded=n=>{this.failedAttemptsByNode.delete(n)}}getResponsibleSubscriber(e){let r=this.clusterSlots[e][0],n=this.shardedSubscribers.get(r);return n&&n.subscriberStatus==="idle"&&n.start().then(()=>{this.handleSubscriberConnectSucceeded(n.getNodeKey())}).catch(i=>{this.handleSubscriberConnectFailed(i,n.getNodeKey())}),n}addChannels(e){let r=Gy(e[0]);for(let i of e)if(Gy(i)!==r)return-1;let n=this.channels.get(r);return n?this.channels.set(r,n.concat(e)):this.channels.set(r,e),Array.from(this.channels.values()).reduce((i,s)=>i+s.length,0)}removeChannels(e){let r=Gy(e[0]);for(let i of e)if(Gy(i)!==r)return-1;let n=this.channels.get(r);if(n){let i=n.filter(s=>!e.includes(s));this.channels.set(r,i)}return Array.from(this.channels.values()).reduce((i,s)=>i+s.length,0)}stop(){for(let e of this.shardedSubscribers.values())e.stop();this.pendingReset=null,this.shardedSubscribers.clear(),this.subscriberToSlotsIndex.clear()}start(){let e=[];for(let r of this.shardedSubscribers.values())this.shouldStartSubscriber(r)&&(e.push(r.start().then(()=>{this.handleSubscriberConnectSucceeded(r.getNodeKey())}).catch(n=>{this.handleSubscriberConnectFailed(n,r.getNodeKey())})),this.subscriberGroupEmitter.emit("+subscriber"));return Promise.all(e)}async reset(e,r){if(this.isResetting){this.pendingReset={slots:e,nodes:r};return}this.isResetting=!0;try{let n=this._refreshSlots(e),i=this.hasUnhealthySubscribers();if(!n&&!i){fn("No topology change detected or failed subscribers. Skipping reset.");return}for(let[o,a]of this.shardedSubscribers){if(this.subscriberToSlotsIndex.has(o)&&a.isHealthy()){fn("Skipping deleting subscriber for %s",o);continue}fn("Removing subscriber for %s",o),a.stop(),this.shardedSubscribers.delete(o),this.subscriberGroupEmitter.emit("-subscriber")}let s=[];for(let[o,a]of this.subscriberToSlotsIndex){let c=this.shardedSubscribers.get(o);if(c&&c.isHealthy()){fn("Skipping creating new subscriber for %s",o),!c.isStarted()&&this.shouldStartSubscriber(c)&&s.push(c.start().then(()=>{this.handleSubscriberConnectSucceeded(o)}).catch(d=>{this.handleSubscriberConnectFailed(d,o)}));continue}c&&!c.isHealthy()&&(fn("Replacing subscriber for %s",o),c.stop(),this.shardedSubscribers.delete(o),this.subscriberGroupEmitter.emit("-subscriber")),fn("Creating new subscriber for %s",o);let l=r.find(d=>(0,n_e.getNodeKey)(d.options)===o);if(!l){fn("Failed to find node for key %s",o);continue}let u=new i_e.default(this.subscriberGroupEmitter,l.options,this.options.redisOptions);this.shardedSubscribers.set(o,u),this.shouldStartSubscriber(u)&&s.push(u.start().then(()=>{this.handleSubscriberConnectSucceeded(o)}).catch(d=>{this.handleSubscriberConnectFailed(d,o)})),this.subscriberGroupEmitter.emit("+subscriber")}await Promise.all(s),this._resubscribe(),this.subscriberGroupEmitter.emit("subscribersReady")}finally{if(this.isResetting=!1,this.pendingReset){let{slots:n,nodes:i}=this.pendingReset;this.pendingReset=null,await this.reset(n,i)}}}_refreshSlots(e){if(this._slotsAreEqual(e)&&this.subscriberToSlotsIndex.size>0)return fn("Nothing to refresh because the new cluster map is equal to the previous one."),!1;fn("Refreshing the slots of the subscriber group."),this.subscriberToSlotsIndex=new Map;for(let r=0;r<e.length;r++){let n=e[r][0];this.subscriberToSlotsIndex.has(n)||this.subscriberToSlotsIndex.set(n,[]),this.subscriberToSlotsIndex.get(n).push(Number(r))}return this.clusterSlots=JSON.parse(JSON.stringify(e)),!0}_resubscribe(){this.shardedSubscribers&&this.shardedSubscribers.forEach((e,r)=>{let n=this.subscriberToSlotsIndex.get(r);n&&n.forEach(i=>{let s=e.getInstance(),o=this.channels.get(i);if(o&&o.length>0){if(!s||s.status==="end")return;s.status==="ready"?s.ssubscribe(...o).catch(a=>{fn("Failed to ssubscribe on node %s: %s",r,a)}):s.once("ready",()=>{s.ssubscribe(...o).catch(a=>{fn("Failed to ssubscribe on node %s: %s",r,a)})})}})})}_slotsAreEqual(e){return this.clusterSlots===void 0?!1:JSON.stringify(this.clusterSlots)===JSON.stringify(e)}hasUnhealthySubscribers(){let e=Array.from(this.shardedSubscribers.values()).some(n=>!n.isHealthy()),r=Array.from(this.subscriberToSlotsIndex.keys()).some(n=>!this.shardedSubscribers.has(n));return e||r}shouldStartSubscriber(e){if(e.isStarted())return!1;if(!e.isLazyConnect())return!0;let r=this.subscriberToSlotsIndex.get(e.getNodeKey());return r?r.some(n=>{let i=this.channels.get(n);return!!(i&&i.length>0)}):!1}};FT.default=nl;nl.MAX_RETRY_ATTEMPTS=10;nl.MAX_BACKOFF_MS=2e3;nl.BASE_BACKOFF_MS=100});var JT=h(UT=>{"use strict";Object.defineProperty(UT,"__esModule",{value:!0});var oz=Zo(),$T=require("events"),il=ea(),az=Us(),cz=Vi(),By=O6(),s_e=Yi(),o_e=Ny(),a_e=kT(),Ir=gt(),c_e=RT(),l_e=Fy(),u_e=V6(),d_e=Q6(),p_e=X6(),f_e=ez(),sl=rl(),lz=zy(),m_e=sz(),Je=(0,Ir.Debug)("cluster"),uz=new WeakSet,Od=class t extends l_e.default{constructor(e,r={}){var n;if(super(),this.slots=[],this._groupsIds={},this._groupsBySlot=Array(16384),this.isCluster=!0,this.retryAttempts=0,this.delayQueue=new f_e.default,this.offlineQueue=new lz,this.isRefreshing=!1,this._refreshSlotsCacheCallbacks=[],this._autoPipelines=new Map,this._runningAutoPipelines=new Set,this._readyDelayedCallbacks=[],this.connectionEpoch=0,$T.EventEmitter.call(this),this.startupNodes=e,this.options=(0,Ir.defaults)({},r,u_e.DEFAULT_CLUSTER_OPTIONS,this.options),this.options.shardedSubscribers&&this.createShardedSubscriberGroup(),this.options.redisOptions&&this.options.redisOptions.keyPrefix&&!this.options.keyPrefix&&(this.options.keyPrefix=this.options.redisOptions.keyPrefix),typeof this.options.scaleReads!="function"&&["all","master","slave"].indexOf(this.options.scaleReads)===-1)throw new Error('Invalid option scaleReads "'+this.options.scaleReads+'". Expected "all", "master", "slave" or a custom function');this.connectionPool=new p_e.default((n=this.options.redisOptions)!==null&&n!==void 0?n:{},this.options.clusterNodeRetryStrategy),this.connectionPool.on("-node",(i,s)=>{this.emit("-node",i)}),this.connectionPool.on("+node",i=>{this.emit("+node",i)}),this.connectionPool.on("drain",()=>{this.setStatus("close")}),this.connectionPool.on("nodeError",(i,s)=>{this.emit("node error",i,s)}),this.subscriber=new d_e.default(this.connectionPool,this),this.options.scripts&&Object.entries(this.options.scripts).forEach(([i,s])=>{this.defineCommand(i,s)}),this.options.lazyConnect?this.setStatus("wait"):this.connect().catch(i=>{Je("connecting failed: %s",i)})}connect(){return new Promise((e,r)=>{if(this.status==="connecting"||this.status==="connect"||this.status==="ready"){r(new Error("Redis is already connecting/connected"));return}let n=++this.connectionEpoch;this.setStatus("connecting"),this.resolveStartupNodeHostnames().then(i=>{if(this.connectionEpoch!==n){Je("discard connecting after resolving startup nodes because epoch not match: %d != %d",n,this.connectionEpoch),r(new il.RedisError("Connection is discarded because a new connection is made"));return}if(this.status!=="connecting"){Je("discard connecting after resolving startup nodes because the status changed to %s",this.status),r(new il.RedisError("Connection is aborted"));return}this.connectionPool.reset(i),this.options.shardedSubscribers&&this.shardedSubscribers.reset(this.slots,this.connectionPool.getNodes("all")).catch(c=>{Je("Error while starting subscribers: %s",c)});let s=()=>{this.setStatus("ready"),this.retryAttempts=0,this.executeOfflineCommands(),this.resetNodesRefreshInterval(),e()},o,a=()=>{this.invokeReadyDelayedCallbacks(void 0),this.removeListener("close",o),this.manuallyClosing=!1,this.setStatus("connect"),this.options.enableReadyCheck?this.readyCheck((c,l)=>{c||l?(Je("Ready check failed (%s). Reconnecting...",c||l),this.status==="connect"&&this.disconnect(!0)):s()}):s()};o=()=>{let c=new Error("None of startup nodes is available");this.removeListener("refresh",a),this.invokeReadyDelayedCallbacks(c),r(c)},this.once("refresh",a),this.once("close",o),this.once("close",this.handleCloseEvent.bind(this)),this.refreshSlotsCache(c=>{c&&c.message===By.default.defaultMessage&&(s_e.default.prototype.silentEmit.call(this,"error",c),this.connectionPool.reset([]))}),this.subscriber.start(),this.options.shardedSubscribers&&this.shardedSubscribers.start().catch(c=>{Je("Error while starting subscribers: %s",c)})}).catch(i=>{this.setStatus("close"),this.handleCloseEvent(i),this.invokeReadyDelayedCallbacks(i),r(i)})})}disconnect(e=!1){let r=this.status;this.setStatus("disconnecting"),e||(this.manuallyClosing=!0),this.reconnectTimeout&&!e&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null,Je("Canceled reconnecting attempts")),this.clearNodesRefreshInterval(),this.subscriber.stop(),this.options.shardedSubscribers&&this.shardedSubscribers.stop(),r==="wait"?(this.setStatus("close"),this.handleCloseEvent()):this.connectionPool.reset([])}quit(e){let r=this.status;if(this.setStatus("disconnecting"),this.manuallyClosing=!0,this.reconnectTimeout&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.clearNodesRefreshInterval(),this.subscriber.stop(),this.options.shardedSubscribers&&this.shardedSubscribers.stop(),r==="wait"){let n=(0,az.default)(Promise.resolve("OK"),e);return setImmediate(function(){this.setStatus("close"),this.handleCloseEvent()}.bind(this)),n}return(0,az.default)(Promise.all(this.nodes().map(n=>n.quit().catch(i=>{if(i.message===Ir.CONNECTION_CLOSED_ERROR_MSG)return"OK";throw i}))).then(()=>"OK"),e)}duplicate(e=[],r={}){let n=e.length>0?e:this.startupNodes.slice(0),i=Object.assign({},this.options,r);return new t(n,i)}nodes(e="all"){if(e!=="all"&&e!=="master"&&e!=="slave")throw new Error('Invalid role "'+e+'". Expected "all", "master" or "slave"');return this.connectionPool.getNodes(e)}delayUntilReady(e){this._readyDelayedCallbacks.push(e)}get autoPipelineQueueSize(){let e=0;for(let r of this._autoPipelines.values())e+=r.length;return e}refreshSlotsCache(e){if(e&&this._refreshSlotsCacheCallbacks.push(e),this.isRefreshing)return;this.isRefreshing=!0;let r=this,n=a=>{this.isRefreshing=!1;for(let c of this._refreshSlotsCacheCallbacks)c(a);this._refreshSlotsCacheCallbacks=[]},i=(0,Ir.shuffle)(this.connectionPool.getNodes()),s=null;function o(a){if(a===i.length){let u=new By.default(By.default.defaultMessage,s);return n(u)}let c=i[a],l=`${c.options.host}:${c.options.port}`;Je("getting slot cache from %s",l),r.getInfoFromNode(c,function(u){switch(r.status){case"close":case"end":return n(new Error("Cluster is disconnected."));case"disconnecting":return n(new Error("Cluster is disconnecting."))}u?(r.emit("node error",u,l),s=u,o(a+1)):(r.emit("refresh"),n())})}o(0)}sendCommand(e,r,n){if(this.status==="wait"&&this.connect().catch(Ir.noop),this.status==="end")return e.reject(new Error(Ir.CONNECTION_CLOSED_ERROR_MSG)),e.promise;let i=this.options.scaleReads;i!=="master"&&(e.isReadOnly||(0,oz.exists)(e.name)&&(0,oz.hasFlag)(e.name,"readonly")||(i="master"));let s=n?n.slot:e.getSlot(),o={},a=this;if(!n&&!uz.has(e)){uz.add(e);let l=e.reject;e.reject=function(u){let d=c.bind(null,!0);a.handleError(u,o,{moved:function(p,f){Je("command %s is moved to %s",e.name,f),s=Number(p),a.slots[p]?a.slots[p][0]=f:a.slots[p]=[f],a._groupsBySlot[p]=a._groupsIds[a.slots[p].join(";")],a.connectionPool.findOrCreate(a.natMapper(f)),c(),Je("refreshing slot caches... (triggered by MOVED error)"),a.refreshSlotsCache()},ask:function(p,f){Je("command %s is required to ask %s:%s",e.name,f);let m=a.natMapper(f);a.connectionPool.findOrCreate(m),c(!1,`${m.host}:${m.port}`)},tryagain:d,clusterDown:d,connectionClosed:d,maxRedirections:function(p){l.call(e,p)},defaults:function(){l.call(e,u)}})}}c();function c(l,u){if(a.status==="end"){e.reject(new il.AbortError("Cluster is ended."));return}let d;if(a.status==="ready"||e.name==="cluster"){if(n&&n.redis)d=n.redis;else if(cz.default.checkFlag("ENTER_SUBSCRIBER_MODE",e.name)||cz.default.checkFlag("EXIT_SUBSCRIBER_MODE",e.name)){if(a.options.shardedSubscribers&&(e.name=="ssubscribe"||e.name=="sunsubscribe")){let p=a.shardedSubscribers.getResponsibleSubscriber(s);if(!p){e.reject(new il.AbortError(`No sharded subscriber for slot: ${s}`));return}let f=-1;e.name=="ssubscribe"&&(f=a.shardedSubscribers.addChannels(e.getKeys())),e.name=="sunsubscribe"&&(f=a.shardedSubscribers.removeChannels(e.getKeys())),f!==-1?d=p.getInstance():e.reject(new il.AbortError("Possible CROSSSLOT error: All channels must hash to the same slot"))}else d=a.subscriber.getInstance();if(!d){e.reject(new il.AbortError("No subscriber for the cluster"));return}}else{if(!l){if(typeof s=="number"&&a.slots[s]){let p=a.slots[s];if(typeof i=="function"){let f=p.map(function(m){return a.connectionPool.getInstanceByKey(m)});d=i(f,e),Array.isArray(d)&&(d=(0,Ir.sample)(d)),d||(d=f[0])}else{let f;i==="all"?f=(0,Ir.sample)(p):i==="slave"&&p.length>1?f=(0,Ir.sample)(p,1):f=p[0],d=a.connectionPool.getInstanceByKey(f)}}u&&(d=a.connectionPool.getInstanceByKey(u),d.asking())}if(d||(d=(typeof i=="function"?null:a.connectionPool.getSampleInstance(i))||a.connectionPool.getSampleInstance("all")),d&&!a.options.enableOfflineQueue&&d.status!=="ready"&&d.status!=="wait"){e.reject(new Error(Ir.CONNECTION_CLOSED_ERROR_MSG));return}}n&&!n.redis&&(n.redis=d)}if(!d&&a.options.enableOfflineQueue){a.offlineQueue.push({command:e,stream:r,node:n});return}if(!d){e.reject(new Error("Cluster isn't ready and enableOfflineQueue options is false"));return}d.sendCommand(e,r)}return e.promise}sscanStream(e,r){return this.createScanStream("sscan",{key:e,options:r})}sscanBufferStream(e,r){return this.createScanStream("sscanBuffer",{key:e,options:r})}hscanStream(e,r){return this.createScanStream("hscan",{key:e,options:r})}hscanBufferStream(e,r){return this.createScanStream("hscanBuffer",{key:e,options:r})}zscanStream(e,r){return this.createScanStream("zscan",{key:e,options:r})}zscanBufferStream(e,r){return this.createScanStream("zscanBuffer",{key:e,options:r})}handleError(e,r,n){if(typeof r.value>"u"?r.value=this.options.maxRedirections:r.value-=1,r.value<=0){n.maxRedirections(new Error("Too many Cluster redirections. Last error: "+e));return}let i=e.message.split(" ");if(i[0]==="MOVED"){let s=this.options.retryDelayOnMoved;s&&typeof s=="number"?this.delayQueue.push("moved",n.moved.bind(null,i[1],i[2]),{timeout:s}):n.moved(i[1],i[2])}else i[0]==="ASK"?n.ask(i[1],i[2]):i[0]==="TRYAGAIN"?this.delayQueue.push("tryagain",n.tryagain,{timeout:this.options.retryDelayOnTryAgain}):i[0]==="CLUSTERDOWN"&&this.options.retryDelayOnClusterDown>0?this.delayQueue.push("clusterdown",n.connectionClosed,{timeout:this.options.retryDelayOnClusterDown,callback:this.refreshSlotsCache.bind(this)}):e.message===Ir.CONNECTION_CLOSED_ERROR_MSG&&this.options.retryDelayOnFailover>0&&this.status==="ready"?this.delayQueue.push("failover",n.connectionClosed,{timeout:this.options.retryDelayOnFailover,callback:this.refreshSlotsCache.bind(this)}):n.defaults()}resetOfflineQueue(){this.offlineQueue=new lz}clearNodesRefreshInterval(){this.slotsTimer&&(clearTimeout(this.slotsTimer),this.slotsTimer=null)}resetNodesRefreshInterval(){if(this.slotsTimer||!this.options.slotsRefreshInterval)return;let e=()=>{this.slotsTimer=setTimeout(()=>{Je('refreshing slot caches... (triggered by "slotsRefreshInterval" option)'),this.refreshSlotsCache(()=>{e()})},this.options.slotsRefreshInterval)};e()}setStatus(e){Je("status: %s -> %s",this.status||"[empty]",e),this.status=e,process.nextTick(()=>{this.emit(e)})}handleCloseEvent(e){var r;e&&Je("closed because %s",e);let n;!this.manuallyClosing&&typeof this.options.clusterRetryStrategy=="function"&&(n=this.options.clusterRetryStrategy.call(this,++this.retryAttempts,e)),typeof n=="number"?(this.setStatus("reconnecting"),this.reconnectTimeout=setTimeout(()=>{this.reconnectTimeout=null,Je("Cluster is disconnected. Retrying after %dms",n),this.connect().catch(function(i){Je("Got error %s when reconnecting. Ignoring...",i)})},n)):(this.options.shardedSubscribers&&((r=this.subscriberGroupEmitter)===null||r===void 0||r.removeAllListeners()),this.setStatus("end"),this.flushQueue(new Error("None of startup nodes is available")))}flushQueue(e){let r;for(;r=this.offlineQueue.shift();)r.command.reject(e)}executeOfflineCommands(){if(this.offlineQueue.length){Je("send %d commands in offline queue",this.offlineQueue.length);let e=this.offlineQueue;this.resetOfflineQueue();let r;for(;r=e.shift();)this.sendCommand(r.command,r.stream,r.node)}}natMapper(e){let r=typeof e=="string"?e:`${e.host}:${e.port}`,n=null;return this.options.natMap&&typeof this.options.natMap=="function"?n=this.options.natMap(r):this.options.natMap&&typeof this.options.natMap=="object"&&(n=this.options.natMap[r]),n?(Je("NAT mapping %s -> %O",r,n),Object.assign({},n)):typeof e=="string"?(0,sl.nodeKeyToRedisOptions)(e):e}getInfoFromNode(e,r){if(!e)return r(new Error("Node is disconnected"));let n=e.duplicate({enableOfflineQueue:!0,enableReadyCheck:!1,retryStrategy:null,connectionName:(0,sl.getConnectionName)("refresher",this.options.redisOptions&&this.options.redisOptions.connectionName)});n.on("error",Ir.noop),n.cluster("SLOTS",(0,Ir.timeout)((i,s)=>{if(n.disconnect(),i)return Je("error encountered running CLUSTER.SLOTS: %s",i),r(i);if(this.status==="disconnecting"||this.status==="close"||this.status==="end"){Je("ignore CLUSTER.SLOTS results (count: %d) since cluster status is %s",s.length,this.status),r();return}let o=[];Je("cluster slots result count: %d",s.length);for(let c=0;c<s.length;++c){let l=s[c],u=l[0],d=l[1],p=[];for(let f=2;f<l.length;f++){if(!l[f][0])continue;let m=this.natMapper({host:l[f][0],port:l[f][1]});m.readOnly=f!==2,o.push(m),p.push(m.host+":"+m.port)}Je("cluster slots result [%d]: slots %d~%d served by %s",c,u,d,p);for(let f=u;f<=d;f++)this.slots[f]=p}this._groupsIds=Object.create(null);let a=0;for(let c=0;c<16384;c++){let l=(this.slots[c]||[]).join(";");if(!l.length){this._groupsBySlot[c]=void 0;continue}this._groupsIds[l]||(this._groupsIds[l]=++a),this._groupsBySlot[c]=this._groupsIds[l]}this.connectionPool.reset(o),this.options.shardedSubscribers&&this.shardedSubscribers.reset(this.slots,this.connectionPool.getNodes("all")).catch(c=>{Je("Error while starting subscribers: %s",c)}),r()},this.options.slotsRefreshTimeout))}invokeReadyDelayedCallbacks(e){for(let r of this._readyDelayedCallbacks)process.nextTick(r,e);this._readyDelayedCallbacks=[]}readyCheck(e){this.cluster("INFO",(r,n)=>{if(r)return e(r);if(typeof n!="string")return e();let i,s=n.split(`\r
`);for(let o=0;o<s.length;++o){let a=s[o].split(":");if(a[0]==="cluster_state"){i=a[1];break}}i==="fail"?(Je("cluster state not ok (%s)",i),e(null,i)):e()})}resolveSrv(e){return new Promise((r,n)=>{this.options.resolveSrv(e,(i,s)=>{if(i)return n(i);let o=this,a=(0,sl.groupSrvRecords)(s),c=Object.keys(a).sort((u,d)=>parseInt(u)-parseInt(d));function l(u){if(!c.length)return n(u);let d=c[0],p=a[d],f=(0,sl.weightSrvRecords)(p);p.records.length||c.shift(),o.dnsLookup(f.name).then(m=>r({host:m,port:f.port}),l)}l()})})}dnsLookup(e){return new Promise((r,n)=>{this.options.dnsLookup(e,(i,s)=>{i?(Je("failed to resolve hostname %s to IP: %s",e,i.message),n(i)):(Je("resolved hostname %s to IP %s",e,s),r(s))})})}async resolveStartupNodeHostnames(){if(!Array.isArray(this.startupNodes)||this.startupNodes.length===0)throw new Error("`startupNodes` should contain at least one node.");let e=(0,sl.normalizeNodeOptions)(this.startupNodes),r=(0,sl.getUniqueHostnamesFromOptions)(e);if(r.length===0)return e;let n=await Promise.all(r.map((this.options.useSRVRecords?this.resolveSrv:this.dnsLookup).bind(this))),i=(0,Ir.zipMap)(r,n);return e.map(s=>{let o=i.get(s.host);return o?this.options.useSRVRecords?Object.assign({},s,o):Object.assign({},s,{host:o}):s})}createScanStream(e,{key:r,options:n={}}){return new o_e.default({objectMode:!0,key:r,redis:this,command:e,...n})}createShardedSubscriberGroup(){this.subscriberGroupEmitter=new $T.EventEmitter,this.shardedSubscribers=new m_e.default(this.subscriberGroupEmitter,this.options);let e=r=>{r instanceof By.default&&this.disconnect(!0)};this.subscriberGroupEmitter.on("-node",(r,n)=>{this.emit("-node",r,n),this.refreshSlotsCache(e)}),this.subscriberGroupEmitter.on("subscriberConnectFailed",({delay:r,error:n})=>{this.emit("error",n),setTimeout(()=>{this.refreshSlotsCache(e)},r)}),this.subscriberGroupEmitter.on("moved",()=>{this.refreshSlotsCache(e)}),this.subscriberGroupEmitter.on("-subscriber",()=>{this.emit("-subscriber")}),this.subscriberGroupEmitter.on("+subscriber",()=>{this.emit("+subscriber")}),this.subscriberGroupEmitter.on("nodeError",(r,n)=>{this.emit("nodeError",r,n)}),this.subscriberGroupEmitter.on("subscribersReady",()=>{this.emit("subscribersReady")});for(let r of["smessage","smessageBuffer"])this.subscriberGroupEmitter.on(r,(n,i,s)=>{this.emit(r,n,i,s)})}};(0,c_e.default)(Od,$T.EventEmitter);(0,a_e.addTransactionSupport)(Od.prototype);UT.default=Od});var Hy=h(GT=>{"use strict";Object.defineProperty(GT,"__esModule",{value:!0});var h_e=gt(),y_e=(0,h_e.Debug)("AbstractConnector"),zT=class{constructor(e){this.connecting=!1,this.disconnectTimeout=e}check(e){return!0}disconnect(){if(this.connecting=!1,this.stream){let e=this.stream,r=setTimeout(()=>{y_e("stream %s:%s still open, destroying it",e.remoteAddress,e.remotePort),e.destroy()},this.disconnectTimeout);e.on("close",()=>clearTimeout(r)),e.end()}}};GT.default=zT});var dz=h(HT=>{"use strict";Object.defineProperty(HT,"__esModule",{value:!0});var g_e=require("net"),b_e=require("tls"),v_e=gt(),E_e=Hy(),BT=class extends E_e.default{constructor(e){super(e.disconnectTimeout),this.options=e}connect(e){let{options:r}=this;this.connecting=!0;let n;return"path"in r&&r.path?n={path:r.path}:(n={},"port"in r&&r.port!=null&&(n.port=r.port),"host"in r&&r.host!=null&&(n.host=r.host),"family"in r&&r.family!=null&&(n.family=r.family)),r.tls&&Object.assign(n,r.tls),new Promise((i,s)=>{process.nextTick(()=>{if(!this.connecting){s(new Error(v_e.CONNECTION_CLOSED_ERROR_MSG));return}try{r.tls?this.stream=(0,b_e.connect)(n):this.stream=(0,g_e.createConnection)(n)}catch(o){s(o);return}this.stream.once("error",o=>{this.firstError=o}),i(this.stream)})})}};HT.default=BT});var pz=h(WT=>{"use strict";Object.defineProperty(WT,"__esModule",{value:!0});function S_e(t,e){return(t.host||"127.0.0.1")===(e.host||"127.0.0.1")&&(t.port||26379)===(e.port||26379)}var VT=class{constructor(e){this.cursor=0,this.sentinels=e.slice(0)}next(){let e=this.cursor>=this.sentinels.length;return{done:e,value:e?void 0:this.sentinels[this.cursor++]}}reset(e){e&&this.sentinels.length>1&&this.cursor!==1&&this.sentinels.unshift(...this.sentinels.splice(this.cursor-1)),this.cursor=0}add(e){for(let r=0;r<this.sentinels.length;r++)if(S_e(e,this.sentinels[r]))return!1;return this.sentinels.push(e),!0}toString(){return`${JSON.stringify(this.sentinels)} @${this.cursor}`}};WT.default=VT});var mz=h(Vy=>{"use strict";Object.defineProperty(Vy,"__esModule",{value:!0});Vy.FailoverDetector=void 0;var x_e=gt(),YT=(0,x_e.Debug)("FailoverDetector"),fz="+switch-master",QT=class{constructor(e,r){this.isDisconnected=!1,this.connector=e,this.sentinels=r}cleanup(){this.isDisconnected=!0;for(let e of this.sentinels)e.client.disconnect()}async subscribe(){YT("Starting FailoverDetector");let e=[];for(let r of this.sentinels){let n=r.client.subscribe(fz).catch(i=>{YT("Failed to subscribe to failover messages on sentinel %s:%s (%s)",r.address.host||"127.0.0.1",r.address.port||26739,i.message)});e.push(n),r.client.on("message",i=>{!this.isDisconnected&&i===fz&&this.disconnect()})}await Promise.all(e)}disconnect(){this.isDisconnected=!0,YT("Failover detected, disconnecting"),this.connector.disconnect()}};Vy.FailoverDetector=QT});var Wy=h(jd=>{"use strict";Object.defineProperty(jd,"__esModule",{value:!0});jd.SentinelIterator=void 0;var w_e=require("net"),Cd=gt(),__e=require("tls"),hz=pz();jd.SentinelIterator=hz.default;var I_e=Hy(),T_e=Yi(),k_e=mz(),ol=(0,Cd.Debug)("SentinelConnector"),XT=class extends I_e.default{constructor(e){if(super(e.disconnectTimeout),this.options=e,this.emitter=null,this.failoverDetector=null,!this.options.sentinels.length)throw new Error("Requires at least one sentinel to connect to.");if(!this.options.name)throw new Error("Requires the name of master.");this.sentinelIterator=new hz.default(this.options.sentinels)}check(e){let r=!e.role||this.options.role===e.role;return r||(ol("role invalid, expected %s, but got %s",this.options.role,e.role),this.sentinelIterator.next(),this.sentinelIterator.next(),this.sentinelIterator.reset(!0)),r}disconnect(){super.disconnect(),this.failoverDetector&&this.failoverDetector.cleanup()}connect(e){this.connecting=!0,this.retryAttempts=0;let r,n=async()=>{let i=this.sentinelIterator.next();if(i.done){this.sentinelIterator.reset(!1);let c=typeof this.options.sentinelRetryStrategy=="function"?this.options.sentinelRetryStrategy(++this.retryAttempts):null,l=typeof c!="number"?"All sentinels are unreachable and retry is disabled.":`All sentinels are unreachable. Retrying from scratch after ${c}ms.`;r&&(l+=` Last error: ${r.message}`),ol(l);let u=new Error(l);if(typeof c=="number")return e("error",u),await new Promise(d=>setTimeout(d,c)),n();throw u}let s=null,o=null;try{s=await this.resolve(i.value)}catch(c){o=c}if(!this.connecting)throw new Error(Cd.CONNECTION_CLOSED_ERROR_MSG);let a=i.value.host+":"+i.value.port;if(s)return ol("resolved: %s:%s from sentinel %s",s.host,s.port,a),this.options.enableTLSForSentinelMode&&this.options.tls?(Object.assign(s,this.options.tls),this.stream=(0,__e.connect)(s),this.stream.once("secureConnect",this.initFailoverDetector.bind(this))):(this.stream=(0,w_e.createConnection)(s),this.stream.once("connect",this.initFailoverDetector.bind(this))),this.stream.once("error",c=>{this.firstError=c}),this.stream;{let c=o?"failed to connect to sentinel "+a+" because "+o.message:"connected to sentinel "+a+" successfully, but got an invalid reply: "+s;return ol(c),e("sentinelError",new Error(c)),o&&(r=o),n()}};return n()}async updateSentinels(e){if(!this.options.updateSentinels)return;let r=await e.sentinel("sentinels",this.options.name);Array.isArray(r)&&(r.map(Cd.packObject).forEach(n=>{if((n.flags?n.flags.split(","):[]).indexOf("disconnected")===-1&&n.ip&&n.port){let s=this.sentinelNatResolve(yz(n));this.sentinelIterator.add(s)&&ol("adding sentinel %s:%s",s.host,s.port)}}),ol("Updated internal sentinels: %s",this.sentinelIterator))}async resolveMaster(e){let r=await e.sentinel("get-master-addr-by-name",this.options.name);return await this.updateSentinels(e),this.sentinelNatResolve(Array.isArray(r)?{host:r[0],port:Number(r[1])}:null)}async resolveSlave(e){let r=await e.sentinel("slaves",this.options.name);if(!Array.isArray(r))return null;let n=r.map(Cd.packObject).filter(i=>i.flags&&!i.flags.match(/(disconnected|s_down|o_down)/));return this.sentinelNatResolve(A_e(n,this.options.preferredSlaves))}sentinelNatResolve(e){if(!e||!this.options.natMap)return e;let r=`${e.host}:${e.port}`,n=e;return typeof this.options.natMap=="function"?n=this.options.natMap(r)||e:typeof this.options.natMap=="object"&&(n=this.options.natMap[r]||e),n}connectToSentinel(e,r){return new T_e.default({port:e.port||26379,host:e.host,username:this.options.sentinelUsername||null,password:this.options.sentinelPassword||null,family:e.family||("path"in this.options&&this.options.path?void 0:this.options.family),tls:this.options.sentinelTLS,retryStrategy:null,enableReadyCheck:!1,connectTimeout:this.options.connectTimeout,commandTimeout:this.options.sentinelCommandTimeout,...r})}async resolve(e){let r=this.connectToSentinel(e);r.on("error",R_e);try{return this.options.role==="slave"?await this.resolveSlave(r):await this.resolveMaster(r)}finally{r.disconnect()}}async initFailoverDetector(){var e;if(!this.options.failoverDetector)return;this.sentinelIterator.reset(!0);let r=[];for(;r.length<this.options.sentinelMaxConnections;){let{done:n,value:i}=this.sentinelIterator.next();if(n)break;let s=this.connectToSentinel(i,{lazyConnect:!0,retryStrategy:this.options.sentinelReconnectStrategy});s.on("reconnecting",()=>{var o;(o=this.emitter)===null||o===void 0||o.emit("sentinelReconnecting")}),r.push({address:i,client:s})}this.sentinelIterator.reset(!1),this.failoverDetector&&this.failoverDetector.cleanup(),this.failoverDetector=new k_e.FailoverDetector(this,r),await this.failoverDetector.subscribe(),(e=this.emitter)===null||e===void 0||e.emit("failoverSubscribed")}};jd.default=XT;function A_e(t,e){if(t.length===0)return null;let r;if(typeof e=="function")r=e(t);else if(e!==null&&typeof e=="object"){let n=Array.isArray(e)?e:[e];n.sort((i,s)=>(i.prio||(i.prio=1),s.prio||(s.prio=1),i.prio<s.prio?-1:i.prio>s.prio?1:0));for(let i=0;i<n.length;i++){for(let s=0;s<t.length;s++){let o=t[s];if(o.ip===n[i].ip&&o.port===n[i].port){r=o;break}}if(r)break}}return r||(r=(0,Cd.sample)(t)),yz(r)}function yz(t){return{host:t.ip,port:Number(t.port)}}function R_e(){}});var gz=h(al=>{"use strict";Object.defineProperty(al,"__esModule",{value:!0});al.SentinelConnector=al.StandaloneConnector=void 0;var O_e=dz();al.StandaloneConnector=O_e.default;var C_e=Wy();al.SentinelConnector=C_e.default});var bz=h(ek=>{"use strict";Object.defineProperty(ek,"__esModule",{value:!0});var j_e=ea(),ZT=class extends j_e.AbortError{constructor(e){let r=`Reached the max retries per request limit (which is ${e}). Refer to "maxRetriesPerRequest" option for details.`;super(r),Error.captureStackTrace(this,this.constructor)}get name(){return this.constructor.name}};ek.default=ZT});var vz=h(Yy=>{"use strict";Object.defineProperty(Yy,"__esModule",{value:!0});Yy.MaxRetriesPerRequestError=void 0;var P_e=bz();Yy.MaxRetriesPerRequestError=P_e.default});var Tz=h((j8e,Iz)=>{"use strict";var ok=require("buffer").Buffer,K_e=require("string_decoder").StringDecoder,tk=new K_e,Ez=ea(),D_e=Ez.ReplyError,M_e=Ez.ParserError,Kn=ok.allocUnsafe(32*1024),hr=0,Qy=null,Pd=0,rk=0;function N_e(t){let e=t.buffer.length-1;var r=t.offset,n=0,i=1;for(t.buffer[r]===45&&(i=-1,r++);r<e;){let s=t.buffer[r++];if(s===13)return t.offset=r+1,i*n;n=n*10+(s-48)}}function L_e(t){let e=t.buffer.length-1;var r=t.offset,n=0,i="";for(t.buffer[r]===45&&(i+="-",r++);r<e;){var s=t.buffer[r++];if(s===13)return t.offset=r+1,n!==0&&(i+=n),i;n>429496728?(i+=n*10+(s-48),n=0):s===48&&n===0?i+=0:n=n*10+(s-48)}}function Sz(t){let e=t.offset,r=t.buffer,n=r.length-1;for(var i=e;i<n;)if(r[i++]===13)return t.offset=i+1,t.optionReturnBuffers===!0?t.buffer.slice(e,i-1):t.buffer.toString("utf8",e,i-1)}function xz(t){let e=t.buffer.length-1;for(var r=t.offset,n=0;r<e;){let i=t.buffer[r++];if(i===13)return t.offset=r+1,n;n=n*10+(i-48)}}function q_e(t){return t.optionStringNumbers===!0?L_e(t):N_e(t)}function F_e(t){let e=xz(t);if(e===void 0)return;if(e<0)return null;let r=t.offset+e;if(r+2>t.buffer.length){t.bigStrSize=r+2,t.totalChunkSize=t.buffer.length,t.bufferCache.push(t.buffer);return}let n=t.offset;return t.offset=r+2,t.optionReturnBuffers===!0?t.buffer.slice(n,r):t.buffer.toString("utf8",n,r)}function $_e(t){var e=Sz(t);if(e!==void 0)return t.optionReturnBuffers===!0&&(e=e.toString()),new D_e(e)}function U_e(t,e){let r=new M_e("Protocol error, got "+JSON.stringify(String.fromCharCode(e))+" as reply type byte",JSON.stringify(t.buffer),t.offset);t.buffer=null,t.returnFatalError(r)}function J_e(t){let e=xz(t);if(e===void 0)return;if(e<0)return null;let r=new Array(e);return wz(t,r,0)}function nk(t,e,r){t.arrayCache.push(e),t.arrayPos.push(r)}function ik(t){let e=t.arrayCache.pop();var r=t.arrayPos.pop();if(t.arrayCache.length){let n=ik(t);if(n===void 0){nk(t,e,r);return}e[r++]=n}return wz(t,e,r)}function wz(t,e,r){let n=t.buffer.length;for(;r<e.length;){let i=t.offset;if(t.offset>=n){nk(t,e,r);return}let s=_z(t,t.buffer[t.offset++]);if(s===void 0){t.arrayCache.length||t.bufferCache.length||(t.offset=i),nk(t,e,r);return}e[r]=s,r++}return e}function _z(t,e){switch(e){case 36:return F_e(t);case 43:return Sz(t);case 42:return J_e(t);case 58:return q_e(t);case 45:return $_e(t);default:return U_e(t,e)}}function z_e(){if(Kn.length>50*1024)if(Pd===1||rk>Pd*2){let t=Math.floor(Kn.length/10),e=t<hr?hr:t;hr=0,Kn=Kn.slice(e,Kn.length)}else rk++,Pd--;else clearInterval(Qy),Pd=0,rk=0,Qy=null}function G_e(t){if(Kn.length<t+hr){let e=t>78643200?2:3;hr>1024*1024*111&&(hr=1024*1024*50),Kn=ok.allocUnsafe(t*e+hr),hr=0,Pd++,Qy===null&&(Qy=setInterval(z_e,50))}}function B_e(t){let e=t.bufferCache,r=t.offset;var n=e.length,i=t.bigStrSize-t.totalChunkSize;if(t.offset=i,i<=2){if(n===2)return e[0].toString("utf8",r,e[0].length+i-2);n--,i=e[e.length-2].length+i}for(var s=tk.write(e[0].slice(r)),o=1;o<n-1;o++)s+=tk.write(e[o]);return s+=tk.end(e[o].slice(0,i-2)),s}function H_e(t){let e=t.bufferCache,r=t.offset,n=t.bigStrSize-r-2;var i=e.length,s=t.bigStrSize-t.totalChunkSize;if(t.offset=s,s<=2){if(i===2)return e[0].slice(r,e[0].length+s-2);i--,s=e[e.length-2].length+s}G_e(n);let o=hr;e[0].copy(Kn,o,r,e[0].length),hr+=e[0].length-r;for(var a=1;a<i-1;a++)e[a].copy(Kn,hr),hr+=e[a].length;return e[a].copy(Kn,hr,0,s-2),hr+=s-2,Kn.slice(o,hr)}var sk=class{constructor(e){if(!e)throw new TypeError("Options are mandatory.");if(typeof e.returnError!="function"||typeof e.returnReply!="function")throw new TypeError("The returnReply and returnError options have to be functions.");this.setReturnBuffers(!!e.returnBuffers),this.setStringNumbers(!!e.stringNumbers),this.returnError=e.returnError,this.returnFatalError=e.returnFatalError||e.returnError,this.returnReply=e.returnReply,this.reset()}reset(){this.offset=0,this.buffer=null,this.bigStrSize=0,this.totalChunkSize=0,this.bufferCache=[],this.arrayCache=[],this.arrayPos=[]}setReturnBuffers(e){if(typeof e!="boolean")throw new TypeError("The returnBuffers argument has to be a boolean");this.optionReturnBuffers=e}setStringNumbers(e){if(typeof e!="boolean")throw new TypeError("The stringNumbers argument has to be a boolean");this.optionStringNumbers=e}execute(e){if(this.buffer===null)this.buffer=e,this.offset=0;else if(this.bigStrSize===0){let n=this.buffer.length,i=n-this.offset,s=ok.allocUnsafe(i+e.length);if(this.buffer.copy(s,0,this.offset,n),e.copy(s,i,0,e.length),this.buffer=s,this.offset=0,this.arrayCache.length){let o=ik(this);if(o===void 0)return;this.returnReply(o)}}else if(this.totalChunkSize+e.length>=this.bigStrSize){this.bufferCache.push(e);var r=this.optionReturnBuffers?H_e(this):B_e(this);if(this.bigStrSize=0,this.bufferCache=[],this.buffer=e,this.arrayCache.length&&(this.arrayCache[0][this.arrayPos[0]++]=r,r=ik(this),r===void 0))return;this.returnReply(r)}else{this.bufferCache.push(e),this.totalChunkSize+=e.length;return}for(;this.offset<this.buffer.length;){let n=this.offset,i=this.buffer[this.offset++],s=_z(this,i);if(s===void 0){this.arrayCache.length||this.bufferCache.length||(this.offset=n);return}i===45?this.returnError(s):this.returnReply(s)}this.buffer=null}};Iz.exports=sk});var Az=h((P8e,kz)=>{"use strict";kz.exports=Tz()});var Rz=h(lk=>{"use strict";Object.defineProperty(lk,"__esModule",{value:!0});var ck=class{constructor(){this.set={subscribe:{},psubscribe:{},ssubscribe:{}}}add(e,r){this.set[ak(e)][r]=!0}del(e,r){delete this.set[ak(e)][r]}channels(e){return Object.keys(this.set[ak(e)])}isEmpty(){return this.channels("subscribe").length===0&&this.channels("psubscribe").length===0&&this.channels("ssubscribe").length===0}};lk.default=ck;function ak(t){return t==="unsubscribe"?"subscribe":t==="punsubscribe"?"psubscribe":t==="sunsubscribe"?"ssubscribe":t}});var Pz=h(dk=>{"use strict";Object.defineProperty(dk,"__esModule",{value:!0});var Oz=Vi(),V_e=gt(),W_e=Az(),Y_e=Rz(),Q_e=(0,V_e.Debug)("dataHandler"),uk=class{constructor(e,r){this.redis=e;let n=new W_e({stringNumbers:r.stringNumbers,returnBuffers:!0,returnError:i=>{this.returnError(i)},returnFatalError:i=>{this.returnFatalError(i)},returnReply:i=>{this.returnReply(i)}});e.stream.prependListener("data",i=>{n.execute(i)}),e.stream.resume()}returnFatalError(e){e.message+=". Please report this.",this.redis.recoverFromFatalError(e,e,{offlineQueue:!1})}returnError(e){let r=this.shiftCommand(e);if(r){if(e.command={name:r.command.name,args:r.command.args},r.command.name=="ssubscribe"&&e.message.includes("MOVED")){this.redis.emit("moved");return}this.redis.handleReconnection(e,r)}}returnReply(e){if(this.handleMonitorReply(e)||this.handleSubscriberReply(e))return;let r=this.shiftCommand(e);r&&(Oz.default.checkFlag("ENTER_SUBSCRIBER_MODE",r.command.name)?(this.redis.condition.subscriber=new Y_e.default,this.redis.condition.subscriber.add(r.command.name,e[1].toString()),Cz(r.command,e[2])||this.redis.commandQueue.unshift(r)):Oz.default.checkFlag("EXIT_SUBSCRIBER_MODE",r.command.name)?jz(r.command,e[2])||this.redis.commandQueue.unshift(r):r.command.resolve(e))}handleSubscriberReply(e){if(!this.redis.condition.subscriber)return!1;let r=Array.isArray(e)?e[0].toString():null;switch(Q_e('receive reply "%s" in subscriber mode',r),r){case"message":this.redis.listeners("message").length>0&&this.redis.emit("message",e[1].toString(),e[2]?e[2].toString():""),this.redis.emit("messageBuffer",e[1],e[2]);break;case"pmessage":{let n=e[1].toString();this.redis.listeners("pmessage").length>0&&this.redis.emit("pmessage",n,e[2].toString(),e[3].toString()),this.redis.emit("pmessageBuffer",n,e[2],e[3]);break}case"smessage":{this.redis.listeners("smessage").length>0&&this.redis.emit("smessage",e[1].toString(),e[2]?e[2].toString():""),this.redis.emit("smessageBuffer",e[1],e[2]);break}case"ssubscribe":case"subscribe":case"psubscribe":{let n=e[1].toString();this.redis.condition.subscriber.add(r,n);let i=this.shiftCommand(e);if(!i)return;Cz(i.command,e[2])||this.redis.commandQueue.unshift(i);break}case"sunsubscribe":case"unsubscribe":case"punsubscribe":{let n=e[1]?e[1].toString():null;n&&this.redis.condition.subscriber.del(r,n);let i=e[2];Number(i)===0&&(this.redis.condition.subscriber=!1);let s=this.shiftCommand(e);if(!s)return;jz(s.command,i)||this.redis.commandQueue.unshift(s);break}default:{let n=this.shiftCommand(e);if(!n)return;n.command.resolve(e)}}return!0}handleMonitorReply(e){if(this.redis.status!=="monitoring")return!1;let r=e.toString();if(r==="OK")return!1;let n=r.indexOf(" "),i=r.slice(0,n),s=r.indexOf('"'),o=r.slice(s+1,-1).split('" "').map(c=>c.replace(/\\"/g,'"')),a=r.slice(n+2,s-2).split(" ");return this.redis.emit("monitor",i,o,a[1],a[0]),!0}shiftCommand(e){let r=this.redis.commandQueue.shift();if(!r){let n="Command queue state error. If you can reproduce this, please report it.",i=new Error(n+(e instanceof Error?` Last error: ${e.message}`:` Last reply: ${e.toString()}`));return this.redis.emit("error",i),null}return r}};dk.default=uk;var Gs=new WeakMap;function Cz(t,e){let r=Gs.has(t)?Gs.get(t):t.args.length;return r-=1,r<=0?(t.resolve(e),Gs.delete(t),!0):(Gs.set(t,r),!1)}function jz(t,e){let r=Gs.has(t)?Gs.get(t):t.args.length;return r===0?Number(e)===0?(Gs.delete(t),t.resolve(e),!0):!1:(r-=1,r<=0?(t.resolve(e),!0):(Gs.set(t,r),!1))}});var Kz=h(mn=>{"use strict";Object.defineProperty(mn,"__esModule",{value:!0});mn.readyHandler=mn.errorHandler=mn.closeHandler=mn.connectHandler=void 0;var X_e=ea(),Z_e=Vi(),eIe=vz(),pi=gt(),tIe=Pz(),Ht=(0,pi.Debug)("connection");function rIe(t){return function(){var e;t.setStatus("connect"),t.resetCommandQueue();let r=!1,{connectionEpoch:n}=t;t.condition.auth&&t.auth(t.condition.auth,function(s){n===t.connectionEpoch&&s&&(s.message.indexOf("no password is set")!==-1?console.warn("[WARN] Redis server does not require a password, but a password was supplied."):s.message.indexOf("without any password configured for the default user")!==-1?console.warn("[WARN] This Redis server's `default` user does not require a password, but a password was supplied"):s.message.indexOf("wrong number of arguments for 'auth' command")!==-1?console.warn(`[ERROR] The server returned "wrong number of arguments for 'auth' command". You are probably passing both username and password to Redis version 5 or below. You should only pass the 'password' option for Redis version 5 and under.`):(r=!0,t.recoverFromFatalError(s,s)))}),t.condition.select&&t.select(t.condition.select).catch(s=>{t.silentEmit("error",s)}),new tIe.default(t,{stringNumbers:t.options.stringNumbers});let i=[];t.options.connectionName&&(Ht("set the connection name [%s]",t.options.connectionName),i.push(t.client("setname",t.options.connectionName).catch(pi.noop))),t.options.disableClientInfo||(Ht("set the client info"),i.push((0,pi.getPackageMeta)().then(s=>t.client("SETINFO","LIB-VER",s.version).catch(pi.noop)).catch(pi.noop)),i.push(t.client("SETINFO","LIB-NAME",!((e=t.options)===null||e===void 0)&&e.clientInfoTag?`ioredis(${t.options.clientInfoTag})`:"ioredis").catch(pi.noop))),Promise.all(i).catch(pi.noop).finally(()=>{t.options.enableReadyCheck||mn.readyHandler(t)(),t.options.enableReadyCheck&&t._readyCheck(function(s,o){n===t.connectionEpoch&&(s?r||t.recoverFromFatalError(new Error("Ready check failed: "+s.message),s):t.connector.check(o)?mn.readyHandler(t)():t.disconnect(!0))})})}}mn.connectHandler=rIe;function pk(t){let e=new X_e.AbortError("Command aborted due to connection close");return e.command={name:t.name,args:t.args},e}function nIe(t){var e;let r=0;for(let n=0;n<t.length;){let i=(e=t.peekAt(n))===null||e===void 0?void 0:e.command,s=i.pipelineIndex;if((s===void 0||s===0)&&(r=0),s!==void 0&&s!==r++){t.remove(n,1),i.reject(pk(i));continue}n++}}function iIe(t){var e;for(let r=0;r<t.length;){let n=(e=t.peekAt(r))===null||e===void 0?void 0:e.command;if(n.name==="multi")break;if(n.name==="exec"){t.remove(r,1),n.reject(pk(n));break}n.inTransaction?(t.remove(r,1),n.reject(pk(n))):r++}}function sIe(t){return function(){let r=t.status;if(t.setStatus("close"),t.commandQueue.length&&nIe(t.commandQueue),t.offlineQueue.length&&iIe(t.offlineQueue),r==="ready"&&(t.prevCondition||(t.prevCondition=t.condition),t.commandQueue.length&&(t.prevCommandQueue=t.commandQueue)),t.manuallyClosing)return t.manuallyClosing=!1,Ht("skip reconnecting since the connection is manually closed."),e();if(typeof t.options.retryStrategy!="function")return Ht("skip reconnecting because `retryStrategy` is not a function"),e();let n=t.options.retryStrategy(++t.retryAttempts);if(typeof n!="number")return Ht("skip reconnecting because `retryStrategy` doesn't return a number"),e();Ht("reconnect in %sms",n),t.setStatus("reconnecting",n),t.reconnectTimeout=setTimeout(function(){t.reconnectTimeout=null,t.connect().catch(pi.noop)},n);let{maxRetriesPerRequest:i}=t.options;typeof i=="number"&&(i<0?Ht("maxRetriesPerRequest is negative, ignoring..."):t.retryAttempts%(i+1)===0&&(Ht("reach maxRetriesPerRequest limitation, flushing command queue..."),t.flushQueue(new eIe.MaxRetriesPerRequestError(i))))};function e(){t.setStatus("end"),t.flushQueue(new Error(pi.CONNECTION_CLOSED_ERROR_MSG))}}mn.closeHandler=sIe;function oIe(t){return function(e){Ht("error: %s",e),t.silentEmit("error",e)}}mn.errorHandler=oIe;function aIe(t){return function(){if(t.setStatus("ready"),t.retryAttempts=0,t.options.monitor){t.call("monitor").then(()=>t.setStatus("monitoring"),n=>t.emit("error",n));let{sendCommand:r}=t;t.sendCommand=function(n){return Z_e.default.checkFlag("VALID_IN_MONITOR_MODE",n.name)?r.call(t,n):(n.reject(new Error("Connection is in monitoring mode, can't process commands.")),n.promise)},t.once("close",function(){delete t.sendCommand});return}let e=t.prevCondition?t.prevCondition.select:t.condition.select;if(t.options.readOnly&&(Ht("set the connection to readonly mode"),t.readonly().catch(pi.noop)),t.prevCondition){let r=t.prevCondition;if(t.prevCondition=null,r.subscriber&&t.options.autoResubscribe){t.condition.select!==e&&(Ht("connect to db [%d]",e),t.select(e));let n=r.subscriber.channels("subscribe");n.length&&(Ht("subscribe %d channels",n.length),t.subscribe(n));let i=r.subscriber.channels("psubscribe");i.length&&(Ht("psubscribe %d channels",i.length),t.psubscribe(i));let s=r.subscriber.channels("ssubscribe");if(s.length){Ht("ssubscribe %s",s.length);for(let o of s)t.ssubscribe(o)}}}if(t.prevCommandQueue)if(t.options.autoResendUnfulfilledCommands)for(Ht("resend %d unfulfilled commands",t.prevCommandQueue.length);t.prevCommandQueue.length>0;){let r=t.prevCommandQueue.shift();r.select!==t.condition.select&&r.command.name!=="select"&&t.select(r.select),t.sendCommand(r.command,r.stream)}else t.prevCommandQueue=null;if(t.offlineQueue.length){Ht("send %d commands in offline queue",t.offlineQueue.length);let r=t.offlineQueue;for(t.resetOfflineQueue();r.length>0;){let n=r.shift();n.select!==t.condition.select&&n.command.name!=="select"&&t.select(n.select),t.sendCommand(n.command,n.stream)}}t.condition.select!==e&&(Ht("connect to db [%d]",e),t.select(e))}}mn.readyHandler=aIe});var Dz=h(Xy=>{"use strict";Object.defineProperty(Xy,"__esModule",{value:!0});Xy.DEFAULT_REDIS_OPTIONS=void 0;Xy.DEFAULT_REDIS_OPTIONS={port:6379,host:"localhost",family:0,connectTimeout:1e4,disconnectTimeout:2e3,retryStrategy:function(t){return Math.min(t*50,2e3)},keepAlive:0,noDelay:!0,connectionName:null,disableClientInfo:!1,clientInfoTag:void 0,sentinels:null,name:null,role:"master",sentinelRetryStrategy:function(t){return Math.min(t*10,1e3)},sentinelReconnectStrategy:function(){return 6e4},natMap:null,enableTLSForSentinelMode:!1,updateSentinels:!0,failoverDetector:!1,username:null,password:null,db:0,enableOfflineQueue:!0,enableReadyCheck:!0,autoResubscribe:!0,autoResendUnfulfilledCommands:!0,lazyConnect:!1,keyPrefix:"",reconnectOnError:null,readOnly:!1,stringNumbers:!1,maxRetriesPerRequest:20,maxLoadingRetryTime:1e4,enableAutoPipelining:!1,autoPipeliningIgnoredCommands:[],sentinelMaxConnections:10,blockingTimeoutGrace:100}});var Yi=h(hk=>{"use strict";Object.defineProperty(hk,"__esModule",{value:!0});var Mz=Zo(),Lz=require("events"),fk=Us(),cIe=JT(),ra=Vi(),lIe=gz(),uIe=Wy(),Bs=Kz(),qz=Dz(),dIe=Ny(),pIe=kT(),na=gt(),mk=_T(),fIe=RT(),mIe=Fy(),Hs=Vh(),Nz=zy(),Vs=(0,na.Debug)("redis"),Ws=class t extends mIe.default{constructor(e,r,n){if(super(),this.status="wait",this.isCluster=!1,this.reconnectTimeout=null,this.connectionEpoch=0,this.retryAttempts=0,this.manuallyClosing=!1,this._autoPipelines=new Map,this._runningAutoPipelines=new Set,this.parseOptions(e,r,n),Lz.EventEmitter.call(this),this.resetCommandQueue(),this.resetOfflineQueue(),this.options.Connector)this.connector=new this.options.Connector(this.options);else if(this.options.sentinels){let i=new uIe.default(this.options);i.emitter=this,this.connector=i}else this.connector=new lIe.StandaloneConnector(this.options);this.options.scripts&&Object.entries(this.options.scripts).forEach(([i,s])=>{this.defineCommand(i,s)}),this.options.lazyConnect?this.setStatus("wait"):this.connect().catch(Hs.noop)}static createClient(...e){return new t(...e)}get autoPipelineQueueSize(){let e=0;for(let r of this._autoPipelines.values())e+=r.length;return e}connect(e){let r=(0,mk.traceConnect)(()=>this._connect(),()=>{let{address:n,port:i}=this._getServerAddress();return{serverAddress:n,serverPort:i,connectionEpoch:this.connectionEpoch}});return(0,fk.default)(r,e)}_connect(){return new Promise((e,r)=>{if(this.status==="connecting"||this.status==="connect"||this.status==="ready"){r(new Error("Redis is already connecting/connected"));return}this.connectionEpoch+=1,this.setStatus("connecting");let{options:n}=this;this.condition={select:n.db,auth:n.username?[n.username,n.password]:n.password,subscriber:!1};let i=this;(0,fk.default)(this.connector.connect(function(s,o){i.silentEmit(s,o)}),function(s,o){if(s){i.flushQueue(s),i.silentEmit("error",s),r(s),i.setStatus("end");return}let a=n.tls?"secureConnect":"connect";if("sentinels"in n&&n.sentinels&&!n.enableTLSForSentinelMode&&(a="connect"),i.stream=o,n.noDelay&&o.setNoDelay(!0),typeof n.keepAlive=="number"&&(o.connecting?o.once(a,()=>{o.setKeepAlive(!0,n.keepAlive)}):o.setKeepAlive(!0,n.keepAlive)),o.connecting){if(o.once(a,Bs.connectHandler(i)),n.connectTimeout){let u=!1;o.setTimeout(n.connectTimeout,function(){if(u)return;o.setTimeout(0),o.destroy();let d=new Error("connect ETIMEDOUT");d.errorno="ETIMEDOUT",d.code="ETIMEDOUT",d.syscall="connect",Bs.errorHandler(i)(d)}),o.once(a,function(){u=!0,o.setTimeout(0)})}}else if(o.destroyed){let u=i.connector.firstError;u&&process.nextTick(()=>{Bs.errorHandler(i)(u)}),process.nextTick(Bs.closeHandler(i))}else process.nextTick(Bs.connectHandler(i));o.destroyed||(o.once("error",Bs.errorHandler(i)),o.once("close",Bs.closeHandler(i)));let c=function(){i.removeListener("close",l),e()};var l=function(){i.removeListener("ready",c),r(new Error(na.CONNECTION_CLOSED_ERROR_MSG))};i.once("ready",c),i.once("close",l)})})}disconnect(e=!1){e||(this.manuallyClosing=!0),this.reconnectTimeout&&!e&&(clearTimeout(this.reconnectTimeout),this.reconnectTimeout=null),this.status==="wait"?Bs.closeHandler(this)():this.connector.disconnect()}end(){this.disconnect()}duplicate(e){return new t({...this.options,...e})}get mode(){var e;return this.options.monitor?"monitor":!((e=this.condition)===null||e===void 0)&&e.subscriber?"subscriber":"normal"}monitor(e){let r=this.duplicate({monitor:!0,lazyConnect:!1});return(0,fk.default)(new Promise(function(n,i){r.once("error",i),r.once("monitoring",function(){n(r)})}),e)}sendCommand(e,r){var n,i;if(this.status==="wait"&&this.connect().catch(Hs.noop),this.status==="end")return e.reject(new Error(na.CONNECTION_CLOSED_ERROR_MSG)),e.promise;if(!((n=this.condition)===null||n===void 0)&&n.subscriber&&!ra.default.checkFlag("VALID_IN_SUBSCRIBER_MODE",e.name))return e.reject(new Error("Connection in subscriber mode, only subscriber commands may be used")),e.promise;typeof this.options.commandTimeout=="number"&&e.setTimeout(this.options.commandTimeout);let s=this.getBlockingTimeoutInMs(e),o=this.status==="ready"||!r&&this.status==="connect"&&(0,Mz.exists)(e.name,{caseInsensitive:!0})&&((0,Mz.hasFlag)(e.name,"loading",{nameCaseInsensitive:!0})||ra.default.checkFlag("HANDSHAKE_COMMANDS",e.name));if(this.stream&&this.stream.writable?this.stream._writableState&&this.stream._writableState.ended&&(o=!1):o=!1,o)Vs.enabled&&Vs("write command[%s]: %d -> %s(%o)",this._getDescription(),(i=this.condition)===null||i===void 0?void 0:i.select,e.name,e.args),r?"isPipeline"in r&&r.isPipeline?r.write(e.toWritable(r.destination.redis.stream)):r.write(e.toWritable(r)):this.stream.write(e.toWritable(this.stream)),this.commandQueue.push({command:e,stream:r,select:this.condition.select}),s!==void 0&&e.setBlockingTimeout(s),ra.default.checkFlag("WILL_DISCONNECT",e.name)&&(this.manuallyClosing=!0),this.options.socketTimeout!==void 0&&this.socketTimeoutTimer===void 0&&this.setSocketTimeout();else{if(!this.options.enableOfflineQueue)return e.reject(new Error("Stream isn't writeable and enableOfflineQueue options is false")),e.promise;if(e.name==="quit"&&this.offlineQueue.length===0)return this.disconnect(),e.resolve(Buffer.from("OK")),e.promise;if(Vs.enabled&&Vs("queue command[%s]: %d -> %s(%o)",this._getDescription(),this.condition.select,e.name,e.args),this.offlineQueue.push({command:e,stream:r,select:this.condition.select}),ra.default.checkFlag("BLOCKING_COMMANDS",e.name)){let a=this.getConfiguredBlockingTimeout();a!==void 0&&e.setBlockingTimeout(a)}}if(e.name==="select"&&(0,na.isInt)(e.args[0])){let a=parseInt(e.args[0],10);this.condition.select!==a&&(this.condition.select=a,this.emit("select",a),Vs("switch to db [%d]",this.condition.select))}return!o||e.isTraced?e.promise:(e.isTraced=!0,(0,mk.traceCommand)(()=>e.promise,()=>this._buildCommandContext(e)))}getBlockingTimeoutInMs(e){var r;if(!ra.default.checkFlag("BLOCKING_COMMANDS",e.name))return;let n=this.getConfiguredBlockingTimeout();if(n===void 0)return;let i=e.extractBlockingTimeout();if(typeof i=="number")return i>0?i+((r=this.options.blockingTimeoutGrace)!==null&&r!==void 0?r:qz.DEFAULT_REDIS_OPTIONS.blockingTimeoutGrace):n;if(i===null)return n}getConfiguredBlockingTimeout(){if(typeof this.options.blockingTimeout=="number"&&this.options.blockingTimeout>0)return this.options.blockingTimeout}setSocketTimeout(){this.socketTimeoutTimer=setTimeout(()=>{this.stream.destroy(new Error(`Socket timeout. Expecting data, but didn't receive any in ${this.options.socketTimeout}ms.`)),this.socketTimeoutTimer=void 0},this.options.socketTimeout),this.stream.once("data",()=>{clearTimeout(this.socketTimeoutTimer),this.socketTimeoutTimer=void 0,this.commandQueue.length!==0&&this.setSocketTimeout()})}scanStream(e){return this.createScanStream("scan",{options:e})}scanBufferStream(e){return this.createScanStream("scanBuffer",{options:e})}sscanStream(e,r){return this.createScanStream("sscan",{key:e,options:r})}sscanBufferStream(e,r){return this.createScanStream("sscanBuffer",{key:e,options:r})}hscanStream(e,r){return this.createScanStream("hscan",{key:e,options:r})}hscanBufferStream(e,r){return this.createScanStream("hscanBuffer",{key:e,options:r})}zscanStream(e,r){return this.createScanStream("zscan",{key:e,options:r})}zscanBufferStream(e,r){return this.createScanStream("zscanBuffer",{key:e,options:r})}silentEmit(e,r){let n;if(!(e==="error"&&(n=r,this.status==="end"||this.manuallyClosing&&n instanceof Error&&(n.message===na.CONNECTION_CLOSED_ERROR_MSG||n.syscall==="connect"||n.syscall==="read"))))return this.listeners(e).length>0?this.emit.apply(this,arguments):(n&&n instanceof Error&&console.error("[ioredis] Unhandled error event:",n.stack),!1)}recoverFromFatalError(e,r,n){this.flushQueue(r,n),this.silentEmit("error",r),this.disconnect(!0)}handleReconnection(e,r){var n;let i=!1;switch(this.options.reconnectOnError&&!ra.default.checkFlag("IGNORE_RECONNECT_ON_ERROR",r.command.name)&&(i=this.options.reconnectOnError(e)),i){case 1:case!0:this.status!=="reconnecting"&&this.disconnect(!0),r.command.reject(e);break;case 2:this.status!=="reconnecting"&&this.disconnect(!0),((n=this.condition)===null||n===void 0?void 0:n.select)!==r.select&&r.command.name!=="select"&&this.select(r.select),this.sendCommand(r.command);break;default:r.command.reject(e)}}_getServerAddress(){return"path"in this.options&&this.options.path?{address:this.options.path,port:void 0}:{address:"host"in this.options&&this.options.host||"localhost",port:"port"in this.options&&this.options.port||6379}}_buildCommandContext(e){var r,n,i;let{address:s,port:o}=this._getServerAddress();return{command:e.name,args:(0,mk.sanitizeArgs)(e.name,e.args),database:(i=(n=(r=this.condition)===null||r===void 0?void 0:r.select)!==null&&n!==void 0?n:this.options.db)!==null&&i!==void 0?i:0,serverAddress:s,serverPort:o}}_buildBatchContext(e){var r,n,i;let{address:s,port:o}=this._getServerAddress();return{batchMode:"MULTI",batchSize:e,database:(i=(n=(r=this.condition)===null||r===void 0?void 0:r.select)!==null&&n!==void 0?n:this.options.db)!==null&&i!==void 0?i:0,serverAddress:s,serverPort:o}}_getDescription(){let e;return"path"in this.options&&this.options.path?e=this.options.path:this.stream&&this.stream.remoteAddress&&this.stream.remotePort?e=this.stream.remoteAddress+":"+this.stream.remotePort:"host"in this.options&&this.options.host?e=this.options.host+":"+this.options.port:e="",this.options.connectionName&&(e+=` (${this.options.connectionName})`),e}resetCommandQueue(){this.commandQueue=new Nz}resetOfflineQueue(){this.offlineQueue=new Nz}parseOptions(...e){let r={},n=!1;for(let i=0;i<e.length;++i){let s=e[i];if(!(s===null||typeof s>"u"))if(typeof s=="object")(0,Hs.defaults)(r,s);else if(typeof s=="string")(0,Hs.defaults)(r,(0,na.parseURL)(s)),s.startsWith("rediss://")&&(n=!0);else if(typeof s=="number")r.port=s;else throw new Error("Invalid argument "+s)}n&&(0,Hs.defaults)(r,{tls:!0}),(0,Hs.defaults)(r,t.defaultOptions),typeof r.port=="string"&&(r.port=parseInt(r.port,10)),typeof r.db=="string"&&(r.db=parseInt(r.db,10)),this.options=(0,na.resolveTLSProfile)(r)}setStatus(e,r){Vs.enabled&&Vs("status[%s]: %s -> %s",this._getDescription(),this.status||"[empty]",e),this.status=e,process.nextTick(this.emit.bind(this,e,r))}createScanStream(e,{key:r,options:n={}}){return new dIe.default({objectMode:!0,key:r,redis:this,command:e,...n})}flushQueue(e,r){r=(0,Hs.defaults)({},r,{offlineQueue:!0,commandQueue:!0});let n;if(r.offlineQueue)for(;n=this.offlineQueue.shift();)n.command.reject(e);if(r.commandQueue&&this.commandQueue.length>0)for(this.stream&&this.stream.removeAllListeners("data");n=this.commandQueue.shift();)n.command.reject(e)}_readyCheck(e){let r=this;this.info(function(n,i){if(n)return n.message&&n.message.includes("NOPERM")?(console.warn(`Skipping the ready check because INFO command fails: "${n.message}". You can disable ready check with "enableReadyCheck". More: https://github.com/luin/ioredis/wiki/Disable-ready-check.`),e(null,{})):e(n);if(typeof i!="string")return e(null,i);let s={},o=i.split(`\r
`);for(let a=0;a<o.length;++a){let[c,...l]=o[a].split(":"),u=l.join(":");u&&(s[c]=u)}if(!s.loading||s.loading==="0")e(null,s);else{let a=(s.loading_eta_seconds||1)*1e3,c=r.options.maxLoadingRetryTime&&r.options.maxLoadingRetryTime<a?r.options.maxLoadingRetryTime:a;Vs("Redis server still loading, trying again in "+c+"ms"),setTimeout(function(){r._readyCheck(e)},c)}}).catch(Hs.noop)}};Ws.Cluster=cIe.default;Ws.Command=ra.default;Ws.defaultOptions=qz.DEFAULT_REDIS_OPTIONS;(0,fIe.default)(Ws,Lz.EventEmitter);(0,pIe.addTransactionSupport)(Ws.prototype);hk.default=Ws});var Uz=h((ze,$z)=>{"use strict";Object.defineProperty(ze,"__esModule",{value:!0});ze.print=ze.ReplyError=ze.SentinelIterator=ze.SentinelConnector=ze.AbstractConnector=ze.Pipeline=ze.ScanStream=ze.Command=ze.Cluster=ze.Redis=ze.default=void 0;ze=$z.exports=Yi().default;var hIe=Yi();Object.defineProperty(ze,"default",{enumerable:!0,get:function(){return hIe.default}});var yIe=Yi();Object.defineProperty(ze,"Redis",{enumerable:!0,get:function(){return yIe.default}});var gIe=JT();Object.defineProperty(ze,"Cluster",{enumerable:!0,get:function(){return gIe.default}});var bIe=Vi();Object.defineProperty(ze,"Command",{enumerable:!0,get:function(){return bIe.default}});var vIe=Ny();Object.defineProperty(ze,"ScanStream",{enumerable:!0,get:function(){return vIe.default}});var EIe=ST();Object.defineProperty(ze,"Pipeline",{enumerable:!0,get:function(){return EIe.default}});var SIe=Hy();Object.defineProperty(ze,"AbstractConnector",{enumerable:!0,get:function(){return SIe.default}});var Fz=Wy();Object.defineProperty(ze,"SentinelConnector",{enumerable:!0,get:function(){return Fz.default}});Object.defineProperty(ze,"SentinelIterator",{enumerable:!0,get:function(){return Fz.SentinelIterator}});ze.ReplyError=ea().ReplyError;Object.defineProperty(ze,"Promise",{get(){return console.warn("ioredis v5 does not support plugging third-party Promise library anymore. Native Promise will be used."),Promise},set(t){console.warn("ioredis v5 does not support plugging third-party Promise library anymore. Native Promise will be used.")}});function xIe(t,e){console.log(t?"Error: "+t:"Reply: "+e)}ze.print=xIe});var Jz=h(Zy=>{"use strict";Object.defineProperty(Zy,"__esModule",{value:!0});Zy.addDelayedJob=void 0;var wIe=`--[[
Adds a delayed job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- computes timestamp.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
Input:
KEYS[1] 'marker',
KEYS[2] 'meta'
KEYS[3] 'id'
KEYS[4] 'delayed'
KEYS[5] 'completed'
KEYS[6] events stream key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (use custom instead of one generated automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[2]
local idKey = KEYS[3]
local delayedKey = KEYS[4]
local completedKey = KEYS[5]
local eventsKey = KEYS[6]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts),
'jid', jobId}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('DEL', deduplicationNextKey)
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local opts = cmsgpack.unpack(ARGV[3])
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter .. "" -- convert to string
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, delayedKey, deduplicationKey,
eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2],
opts, timestamp, parentKey, parentData, repeatJobKey)
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, KEYS[1], delay)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId
`;Zy.addDelayedJob={name:"addDelayedJob",content:wIe,keys:6}});var zz=h(eg=>{"use strict";Object.defineProperty(eg,"__esModule",{value:!0});eg.addJobScheduler=void 0;var _Ie=`--[[
Adds a job scheduler, i.e. a job factory that creates jobs based on a given schedule (repeat options).
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed' key
KEYS[3] 'wait' key
KEYS[4] 'paused' key
KEYS[5] 'meta' key
KEYS[6] 'prioritized' key
KEYS[7] 'marker' key
KEYS[8] 'id' key
KEYS[9] 'events' key
KEYS[10] 'pc' priority counter
KEYS[11] 'active' key
ARGV[1] next milliseconds
ARGV[2] msgpacked options
[1] name
[2] tz?
[3] pattern?
[4] endDate?
[5] every?
ARGV[3] jobs scheduler id
ARGV[4] Json stringified template data
ARGV[5] mspacked template opts
ARGV[6] msgpacked delayed opts
ARGV[7] timestamp
ARGV[8] prefix key
ARGV[9] producer key
Output:
repeatableKey - OK
]] local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local waitKey = KEYS[3]
local pausedKey = KEYS[4]
local metaKey = KEYS[5]
local prioritizedKey = KEYS[6]
local eventsKey = KEYS[9]
local nextMillis = ARGV[1]
local jobSchedulerId = ARGV[3]
local templateOpts = cmsgpack.unpack(ARGV[5])
local now = tonumber(ARGV[7])
local prefixKey = ARGV[8]
local jobOpts = cmsgpack.unpack(ARGV[6])
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function addJobFromScheduler(jobKey, jobId, opts, waitKey, pausedKey, activeKey, metaKey,
prioritizedKey, priorityCounter, delayedKey, markerKey, eventsKey, name, maxEvents, timestamp,
data, jobSchedulerId, repeatDelay)
opts['delay'] = repeatDelay
opts['jobId'] = jobId
storeAndEnqueueJob(eventsKey, jobKey, jobId, name, data, opts,
timestamp, nil, nil, jobSchedulerId, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounter, delayedKey, markerKey)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePaused(queueMetaKey)
return rcall("HEXISTS", queueMetaKey, "paused") == 1
end
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
--[[
Function to store a job scheduler
]]
local function storeJobScheduler(schedulerId, schedulerKey, repeatKey, nextMillis, opts,
templateData, templateOpts)
rcall("ZADD", repeatKey, nextMillis, schedulerId)
local optionalValues = {}
if opts['tz'] then
table.insert(optionalValues, "tz")
table.insert(optionalValues, opts['tz'])
end
if opts['limit'] then
table.insert(optionalValues, "limit")
table.insert(optionalValues, opts['limit'])
end
if opts['pattern'] then
table.insert(optionalValues, "pattern")
table.insert(optionalValues, opts['pattern'])
end
if opts['startDate'] then
table.insert(optionalValues, "startDate")
table.insert(optionalValues, opts['startDate'])
end
if opts['endDate'] then
table.insert(optionalValues, "endDate")
table.insert(optionalValues, opts['endDate'])
end
if opts['every'] then
table.insert(optionalValues, "every")
table.insert(optionalValues, opts['every'])
end
if opts['offset'] then
table.insert(optionalValues, "offset")
table.insert(optionalValues, opts['offset'])
else
local offset = rcall("HGET", schedulerKey, "offset")
if offset then
table.insert(optionalValues, "offset")
table.insert(optionalValues, tonumber(offset))
end
end
local jsonTemplateOpts = cjson.encode(templateOpts)
if jsonTemplateOpts and jsonTemplateOpts ~= '{}' then
table.insert(optionalValues, "opts")
table.insert(optionalValues, jsonTemplateOpts)
end
if templateData and templateData ~= '{}' then
table.insert(optionalValues, "data")
table.insert(optionalValues, templateData)
end
table.insert(optionalValues, "ic")
table.insert(optionalValues, rcall("HGET", schedulerKey, "ic") or 1)
rcall("DEL", schedulerKey) -- remove all attributes and then re-insert new ones
rcall("HMSET", schedulerKey, "name", opts['name'], unpack(optionalValues))
end
local function getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
offset = tonumber(offset)
local nextMillis
if not prevMillis then
if startDate then
-- Assuming startDate is passed as milliseconds from JavaScript
nextMillis = tonumber(startDate)
nextMillis = nextMillis > now and nextMillis or now
else
if offset and offset > 0 then
-- Align to the next slot that respects the offset
nextMillis = math.floor(now / every) * every + offset
if nextMillis <= now then
nextMillis = nextMillis + every
end
else
nextMillis = now
end
end
else
nextMillis = prevMillis + every
-- check if we may have missed some iterations
if nextMillis < now then
-- Use the same offset-aware alignment as the initial branch
-- above so a non-zero offset is preserved across catch-ups
-- instead of being flattened to (slot + every). When the
-- aligned slot is itself still in the past, advance by one
-- full interval; otherwise the aligned slot is the next
-- iteration.
local aligned = math.floor(now / every) * every + (offset or 0)
if aligned <= now then
nextMillis = aligned + every
else
nextMillis = aligned
end
end
end
if not offset or offset == 0 then
local timeSlot = math.floor(nextMillis / every) * every;
offset = nextMillis - timeSlot;
end
-- Return a tuple nextMillis, offset
return math.floor(nextMillis), math.floor(offset)
end
-- If we are overriding a repeatable job we must delete the delayed job for
-- the next iteration.
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
local maxEvents = getOrSetMaxEvents(metaKey)
local templateData = ARGV[4]
local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
if prevMillis then
prevMillis = tonumber(prevMillis)
end
local schedulerOpts = cmsgpack.unpack(ARGV[2])
local every = schedulerOpts['every']
-- For backwards compatibility we also check the offset from the job itself.
-- could be removed in future major versions.
local jobOffset = jobOpts['repeat'] and jobOpts['repeat']['offset'] or 0
local offset = schedulerOpts['offset'] or jobOffset or 0
local newOffset = offset
local updatedEvery = false
if every then
-- if we changed the 'every' value we need to reset millis to nil
local millis = prevMillis
if prevMillis then
local prevEvery = tonumber(rcall("HGET", schedulerKey, "every"))
if prevEvery ~= every then
millis = nil
updatedEvery = true
end
end
local startDate = schedulerOpts['startDate']
nextMillis, newOffset = getJobSchedulerEveryNextMillis(millis, every, now, offset, startDate)
end
local function removeJobFromScheduler(prefixKey, delayedKey, prioritizedKey, waitKey, pausedKey, jobId, metaKey,
eventsKey)
if rcall("ZSCORE", delayedKey, jobId) then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
rcall("ZREM", delayedKey, jobId)
return true
elseif rcall("ZSCORE", prioritizedKey, jobId) then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
rcall("ZREM", prioritizedKey, jobId)
return true
else
local pausedOrWaitKey = waitKey
if isQueuePaused(metaKey) then
pausedOrWaitKey = pausedKey
end
if rcall("LREM", pausedOrWaitKey, 1, jobId) > 0 then
removeJob(jobId, true, prefixKey, true --[[remove debounce key]] )
return true
end
end
return false
end
local removedPrevJob = false
if prevMillis then
local currentJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
local currentJobKey = schedulerKey .. ":" .. prevMillis
-- In theory it should always exist the currentJobKey if there is a prevMillis unless something has
-- gone really wrong.
if rcall("EXISTS", currentJobKey) == 1 then
removedPrevJob = removeJobFromScheduler(prefixKey, delayedKey, prioritizedKey, waitKey, pausedKey, currentJobId,
metaKey, eventsKey)
end
end
if removedPrevJob then
-- The jobs has been removed and we want to replace it, so lets use the same millis.
if every and not updatedEvery then
nextMillis = prevMillis
end
else
-- Special case where no job was removed, and we need to add the next iteration.
schedulerOpts['offset'] = newOffset
end
-- Check for job ID collision with existing jobs (in any state)
local jobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
local jobKey = prefixKey .. jobId
-- If there's already a job with this ID, in a state
-- that is not updatable (active, completed, failed) we must
-- handle the collision
local hasCollision = false
if rcall("EXISTS", jobKey) == 1 then
if every then
-- For 'every' case: walk forward through subsequent slots
-- until we find a free one. Stale completed/failed jobs from
-- a previous scheduler under the same id can occupy several
-- consecutive slots (issue #3063), so a single retry is not
-- enough. The scan is bounded so we don't spin if the
-- scheduler is genuinely contested.
local maxSlotScans = 32
local slotsScanned = 0
local jobExists
repeat
nextMillis = nextMillis + every
jobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
jobKey = prefixKey .. jobId
slotsScanned = slotsScanned + 1
jobExists = rcall("EXISTS", jobKey)
until jobExists == 0 or slotsScanned >= maxSlotScans
if jobExists == 1 then
-- Every scanned slot still has a job, return error code
return -11 -- SchedulerJobSlotsBusy
end
else
hasCollision = true
end
end
local delay = nextMillis - now
-- Fast Clamp delay to minimum of 0
if delay < 0 then
delay = 0
end
local nextJobKey = schedulerKey .. ":" .. nextMillis
if not hasCollision or removedPrevJob then
-- jobId already calculated above during collision check
storeJobScheduler(jobSchedulerId, schedulerKey, repeatKey, nextMillis, schedulerOpts, templateData, templateOpts)
rcall("INCR", KEYS[8])
addJobFromScheduler(nextJobKey, jobId, jobOpts, waitKey, pausedKey, KEYS[11], metaKey, prioritizedKey, KEYS[10],
delayedKey, KEYS[7], eventsKey, schedulerOpts['name'], maxEvents, now, templateData, jobSchedulerId, delay)
elseif hasCollision then
-- For 'pattern' case: return error code
return -10 -- SchedulerJobIdCollision
end
if ARGV[9] ~= "" then
rcall("HSET", ARGV[9], "nrjid", jobId)
end
return {jobId .. "", delay}
`;eg.addJobScheduler={name:"addJobScheduler",content:_Ie,keys:11}});var Gz=h(tg=>{"use strict";Object.defineProperty(tg,"__esModule",{value:!0});tg.addLog=void 0;var IIe=`--[[
Add job log
Input:
KEYS[1] job id key
KEYS[2] job logs key
ARGV[1] id
ARGV[2] log
ARGV[3] keepLogs
Output:
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
local logCount = rcall("RPUSH", KEYS[2], ARGV[2])
if ARGV[3] ~= '' then
local keepLogs = tonumber(ARGV[3])
rcall("LTRIM", KEYS[2], -keepLogs, -1)
return math.min(keepLogs, logCount)
end
return logCount
else
return -1
end
`;tg.addLog={name:"addLog",content:IIe,keys:2}});var Bz=h(rg=>{"use strict";Object.defineProperty(rg,"__esModule",{value:!0});rg.addParentJob=void 0;var TIe=`--[[
Adds a parent job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- adds the job to the waiting-children zset
Input:
KEYS[1] 'meta'
KEYS[2] 'id'
KEYS[3] 'delayed'
KEYS[4] 'waiting-children'
KEYS[5] 'completed'
KEYS[6] events stream key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[1]
local idKey = KEYS[2]
local delayedKey = KEYS[3]
local completedKey = KEYS[5]
local eventsKey = KEYS[6]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts),
'jid', jobId}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('DEL', deduplicationNextKey)
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter .. "" -- convert to string
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationId = opts['de'] and opts['de']['id']
if deduplicationId then
local deduplicationJobId = deduplicateJobWithoutReplace(deduplicationId, opts['de'],
jobId, deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
end
-- Store the job.
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
parentKey, parentData, repeatJobKey)
local waitChildrenKey = KEYS[4]
rcall("ZADD", waitChildrenKey, timestamp, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"waiting-children", "jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId
`;rg.addParentJob={name:"addParentJob",content:TIe,keys:6}});var Hz=h(ng=>{"use strict";Object.defineProperty(ng,"__esModule",{value:!0});ng.addPrioritizedJob=void 0;var kIe=`--[[
Adds a prioritized job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- Adds the job to the "added" list so that workers gets notified.
Input:
KEYS[1] 'marker',
KEYS[2] 'meta'
KEYS[3] 'id'
KEYS[4] 'prioritized'
KEYS[5] 'delayed'
KEYS[6] 'completed'
KEYS[7] 'active'
KEYS[8] events stream key
KEYS[9] 'pc' priority counter
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local metaKey = KEYS[2]
local idKey = KEYS[3]
local priorityKey = KEYS[4]
local completedKey = KEYS[6]
local activeKey = KEYS[7]
local eventsKey = KEYS[8]
local priorityCounterKey = KEYS[9]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts),
'jid', jobId}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('DEL', deduplicationNextKey)
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", idKey)
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter .. "" -- convert to string
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, completedKey, eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[5],
deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
-- Store the job.
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2],
opts, timestamp, parentKey, parentData,
repeatJobKey)
-- Add the job to the prioritized set
local isPausedOrMaxed = isQueuePausedOrMaxed(metaKey, activeKey)
addJobWithPriority( KEYS[1], priorityKey, priority, jobId, priorityCounterKey, isPausedOrMaxed)
-- Emit waiting event
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId
`;ng.addPrioritizedJob={name:"addPrioritizedJob",content:kIe,keys:9}});var Vz=h(ig=>{"use strict";Object.defineProperty(ig,"__esModule",{value:!0});ig.addRepeatableJob=void 0;var AIe=`--[[
Adds a repeatable job
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed' key
ARGV[1] next milliseconds
ARGV[2] msgpacked options
[1] name
[2] tz?
[3] pattern?
[4] endDate?
[5] every?
ARGV[3] legacy custom key TODO: remove this logic in next breaking change
ARGV[4] custom key
ARGV[5] prefix key
Output:
repeatableKey - OK
]]
local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local nextMillis = ARGV[1]
local legacyCustomKey = ARGV[3]
local customKey = ARGV[4]
local prefixKey = ARGV[5]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function storeRepeatableJob(repeatKey, customKey, nextMillis, rawOpts)
rcall("ZADD", repeatKey, nextMillis, customKey)
local opts = cmsgpack.unpack(rawOpts)
local optionalValues = {}
if opts['tz'] then
table.insert(optionalValues, "tz")
table.insert(optionalValues, opts['tz'])
end
if opts['pattern'] then
table.insert(optionalValues, "pattern")
table.insert(optionalValues, opts['pattern'])
end
if opts['endDate'] then
table.insert(optionalValues, "endDate")
table.insert(optionalValues, opts['endDate'])
end
if opts['every'] then
table.insert(optionalValues, "every")
table.insert(optionalValues, opts['every'])
end
rcall("HMSET", repeatKey .. ":" .. customKey, "name", opts['name'],
unpack(optionalValues))
return customKey
end
-- If we are overriding a repeatable job we must delete the delayed job for
-- the next iteration.
local prevMillis = rcall("ZSCORE", repeatKey, customKey)
if prevMillis then
local delayedJobId = "repeat:" .. customKey .. ":" .. prevMillis
local nextDelayedJobId = repeatKey .. ":" .. customKey .. ":" .. nextMillis
if rcall("ZSCORE", delayedKey, delayedJobId)
and rcall("EXISTS", nextDelayedJobId) ~= 1 then
removeJob(delayedJobId, true, prefixKey, true --[[remove debounce key]])
rcall("ZREM", delayedKey, delayedJobId)
end
end
-- Keep backwards compatibility with old repeatable jobs (<= 3.0.0)
if rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
return storeRepeatableJob(repeatKey, legacyCustomKey, nextMillis, ARGV[2])
end
return storeRepeatableJob(repeatKey, customKey, nextMillis, ARGV[2])
`;ig.addRepeatableJob={name:"addRepeatableJob",content:AIe,keys:2}});var Wz=h(sg=>{"use strict";Object.defineProperty(sg,"__esModule",{value:!0});sg.addStandardJob=void 0;var RIe=`--[[
Adds a job to the queue by doing the following:
- Increases the job counter if needed.
- Creates a new job key with the job data.
- if delayed:
- computes timestamp.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
- if not delayed
- Adds the jobId to the wait/paused list in one of three ways:
- LIFO
- FIFO
- prioritized.
- Adds the job to the "added" list so that workers gets notified.
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'meta'
KEYS[4] 'id'
KEYS[5] 'completed'
KEYS[6] 'delayed'
KEYS[7] 'active'
KEYS[8] events stream key
KEYS[9] marker key
ARGV[1] msgpacked arguments array
[1] key prefix,
[2] custom id (will not generate one automatically)
[3] name
[4] timestamp
[5] parentKey?
[6] parent dependencies key.
[7] parent? {id, queueKey}
[8] repeat job key
[9] deduplication key
ARGV[2] Json stringified job data
ARGV[3] msgpacked options
Output:
jobId - OK
-5 - Missing parent key
]]
local eventsKey = KEYS[8]
local jobId
local jobIdKey
local rcall = redis.call
local args = cmsgpack.unpack(ARGV[1])
local data = ARGV[2]
local opts = cmsgpack.unpack(ARGV[3])
local parentKey = args[5]
local parent = args[7]
local repeatJobKey = args[8]
local deduplicationKey = args[9]
local parentData
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to debounce a job.
]]
-- Includes
--[[
Function to deduplicate a job.
]]
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Function to store a deduplicated next job if the existing job is active
and keepLastIfActive is set. When the active job finishes, the stored
proto-job is used to create a real job in the queue.
Returns true if the proto-job was stored, false otherwise.
]]
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local function storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationOpts['keepLastIfActive'] and currentDebounceJobId then
local activeKey = prefix .. "active"
local activeItems = rcall('LRANGE', activeKey, 0, -1)
if checkItemInList(activeItems, currentDebounceJobId) then
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
local fields = {'name', jobName, 'data', jobData, 'opts', cjson.encode(fullOpts),
'jid', jobId}
if parentKey then
fields[#fields+1] = 'pk'
fields[#fields+1] = parentKey
end
if parentData then
fields[#fields+1] = 'pd'
fields[#fields+1] = parentData
end
if parentDependenciesKey then
fields[#fields+1] = 'pdk'
fields[#fields+1] = parentDependenciesKey
end
if repeatJobKey then
fields[#fields+1] = 'rjk'
fields[#fields+1] = repeatJobKey
end
rcall('DEL', deduplicationNextKey)
rcall('HSET', deduplicationNextKey, unpack(fields))
-- Ensure the dedup key does not expire while the job is active,
-- so subsequent adds always hit the dedup path and never bypass
-- the active-check because of a TTL expiry.
local deduplicationKey = prefix .. "de:" .. deduplicationId
rcall('PERSIST', deduplicationKey)
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return true
end
end
return false
end
local function deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts, jobId, deduplicationKey,
eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
local ttl = deduplicationOpts['ttl']
local deduplicationKeyExists
if ttl and ttl > 0 then
if deduplicationOpts['extend'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, currentDebounceJobId)
else
setDeduplicationKey(deduplicationKey, currentDebounceJobId, deduplicationOpts)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced",
"jobId", currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
if deduplicationOpts['keepLastIfActive'] then
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'PX', ttl, 'NX')
end
end
else
deduplicationKeyExists = not rcall('SET', deduplicationKey, jobId, 'NX')
end
if deduplicationKeyExists then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey) then
return currentDebounceJobId
end
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
currentDebounceJobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
currentDebounceJobId, "deduplicationId", deduplicationId, "deduplicatedJobId", jobId)
return currentDebounceJobId
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents, currentDeduplicatedJobId,
jobId, deduplicationId, prefix)
if rcall("ZREM", delayedKey, currentDeduplicatedJobId) > 0 then
removeJobKeys(prefix .. currentDeduplicatedJobId)
rcall("XADD", eventsKey, "*", "event", "removed", "jobId", currentDeduplicatedJobId,
"prev", "delayed")
-- TODO remove debounced event in next breaking change
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "debounced", "jobId",
jobId, "debounceId", deduplicationId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "deduplicated", "jobId",
jobId, "deduplicationId", deduplicationId, "deduplicatedJobId", currentDeduplicatedJobId)
return true
end
return false
end
local function deduplicateJob(deduplicationOpts, jobId, delayedKey, deduplicationKey, eventsKey, maxEvents,
prefix, jobName, jobData, fullOpts, parentKey, parentData, parentDependenciesKey, repeatJobKey)
local deduplicationId = deduplicationOpts and deduplicationOpts['id']
if deduplicationId then
if deduplicationOpts['replace'] then
local currentDebounceJobId = rcall('GET', deduplicationKey)
if currentDebounceJobId then
local isRemoved = removeDelayedJob(delayedKey, deduplicationKey, eventsKey, maxEvents,
currentDebounceJobId, jobId, deduplicationId, prefix)
if isRemoved then
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
local ttl = deduplicationOpts['ttl']
if not deduplicationOpts['extend'] and ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'KEEPTTL')
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
end
return
else
storeDeduplicatedNextJob(deduplicationOpts, currentDebounceJobId, prefix,
deduplicationId, jobName, jobData, fullOpts, eventsKey, maxEvents, jobId,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
return currentDebounceJobId
end
else
if deduplicationOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, jobId)
else
setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
end
return
end
else
return deduplicateJobWithoutReplace(deduplicationId, deduplicationOpts,
jobId, deduplicationKey, eventsKey, maxEvents, prefix, jobName, jobData, fullOpts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to handle the case when job is duplicated.
]]
-- Includes
--[[
This function is used to update the parent's dependencies if the job
is already completed and about to be ignored. The parent must get its
dependencies updated to avoid the parent job being stuck forever in
the waiting-children state.
]]
-- Includes
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
local function updateExistingJobsParent(parentKey, parent, parentData,
parentDependenciesKey, completedKey,
jobIdKey, jobId, timestamp)
if parentKey ~= nil then
if rcall("ZSCORE", completedKey, jobId) then
local returnvalue = rcall("HGET", jobIdKey, "returnvalue")
updateParentDepsIfNeeded(parentKey, parent['queueKey'],
parentDependenciesKey, parent['id'],
jobIdKey, returnvalue, timestamp)
else
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
end
rcall("HMSET", jobIdKey, "parentKey", parentKey, "parent", parentData)
end
end
local function handleDuplicatedJob(jobKey, jobId, currentParentKey, currentParent,
parentData, parentDependenciesKey, completedKey, eventsKey, maxEvents, timestamp)
local existedParentKey = rcall("HGET", jobKey, "parentKey")
if not existedParentKey or existedParentKey == currentParentKey then
updateExistingJobsParent(currentParentKey, currentParent, parentData,
parentDependenciesKey, completedKey, jobKey,
jobId, timestamp)
else
if currentParentKey ~= nil and currentParentKey ~= existedParentKey
and (rcall("EXISTS", existedParentKey) == 1) then
return -7
end
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event",
"duplicated", "jobId", jobId)
return jobId .. "" -- convert to string
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
if parentKey ~= nil then
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
parentData = cjson.encode(parent)
end
local jobCounter = rcall("INCR", KEYS[4])
local metaKey = KEYS[3]
local maxEvents = getOrSetMaxEvents(metaKey)
local parentDependenciesKey = args[6]
local timestamp = args[4]
if args[2] == "" then
jobId = jobCounter .. "" -- convert to string
jobIdKey = args[1] .. jobId
else
jobId = args[2]
jobIdKey = args[1] .. jobId
if rcall("EXISTS", jobIdKey) == 1 then
return handleDuplicatedJob(jobIdKey, jobId, parentKey, parent,
parentData, parentDependenciesKey, KEYS[5], eventsKey,
maxEvents, timestamp)
end
end
local deduplicationJobId = deduplicateJob(opts['de'], jobId, KEYS[6],
deduplicationKey, eventsKey, maxEvents, args[1], args[3], ARGV[2], opts,
parentKey, parentData, parentDependenciesKey, repeatJobKey)
if deduplicationJobId then
return deduplicationJobId
end
-- Store the job.
storeJob(eventsKey, jobIdKey, jobId, args[3], ARGV[2], opts, timestamp,
parentKey, parentData, repeatJobKey)
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[1], KEYS[2])
-- LIFO or FIFO
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, KEYS[9], pushCmd, isPausedOrMaxed, jobId)
-- Emit waiting event
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
-- Check if this job is a child of another job, if so add it to the parents dependencies
if parentDependenciesKey ~= nil then
rcall("SADD", parentDependenciesKey, jobIdKey)
end
return jobId
`;sg.addStandardJob={name:"addStandardJob",content:RIe,keys:9}});var Yz=h(og=>{"use strict";Object.defineProperty(og,"__esModule",{value:!0});og.changeDelay=void 0;var OIe=`--[[
Change job delay when it is in delayed set.
Input:
KEYS[1] delayed key
KEYS[2] meta key
KEYS[3] marker key
KEYS[4] events stream
ARGV[1] delay
ARGV[2] timestamp
ARGV[3] the id of the job
ARGV[4] job key
Output:
0 - OK
-1 - Missing job.
-3 - Job not in delayed set.
Events:
- delayed key.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
if rcall("EXISTS", ARGV[4]) == 1 then
local jobId = ARGV[3]
local delay = tonumber(ARGV[1])
local score, delayedTimestamp = getDelayedScore(KEYS[1], ARGV[2], delay)
local numRemovedElements = rcall("ZREM", KEYS[1], jobId)
if numRemovedElements < 1 then
return -3
end
rcall("HSET", ARGV[4], "delay", delay)
rcall("ZADD", KEYS[1], score, jobId)
local maxEvents = getOrSetMaxEvents(KEYS[2])
rcall("XADD", KEYS[4], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(KEYS[3], KEYS[1])
return 0
else
return -1
end`;og.changeDelay={name:"changeDelay",content:OIe,keys:4}});var Qz=h(ag=>{"use strict";Object.defineProperty(ag,"__esModule",{value:!0});ag.changePriority=void 0;var CIe=`--[[
Change job priority
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'meta'
KEYS[4] 'prioritized'
KEYS[5] 'active'
KEYS[6] 'pc' priority counter
KEYS[7] 'marker'
ARGV[1] priority value
ARGV[2] prefix key
ARGV[3] job id
ARGV[4] lifo
Output:
0 - OK
-1 - Missing job
]]
local jobId = ARGV[3]
local jobKey = ARGV[2] .. jobId
local priority = tonumber(ARGV[1])
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to push back job considering priority in front of same prioritized jobs.
]]
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
-- in order to put it at front of same prioritized jobs
-- we consider prioritized counter as 0
local score = priority * 0x100000000
rcall("ZADD", prioritizedKey, score, jobId)
end
local function reAddJobWithNewPriority( prioritizedKey, markerKey, targetKey,
priorityCounter, lifo, priority, jobId, isPausedOrMaxed)
if priority == 0 then
local pushCmd = lifo and 'RPUSH' or 'LPUSH'
addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
else
if lifo then
pushBackJobWithPriority(prioritizedKey, priority, jobId)
else
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounter, isPausedOrMaxed)
end
end
end
if rcall("EXISTS", jobKey) == 1 then
local metaKey = KEYS[3]
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[5], KEYS[1], KEYS[2])
local prioritizedKey = KEYS[4]
local priorityCounterKey = KEYS[6]
local markerKey = KEYS[7]
-- Re-add with the new priority
if rcall("ZREM", prioritizedKey, jobId) > 0 then
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
elseif rcall("LREM", target, -1, jobId) > 0 then
reAddJobWithNewPriority( prioritizedKey, markerKey, target,
priorityCounterKey, ARGV[4] == '1', priority, jobId, isPausedOrMaxed)
end
rcall("HSET", jobKey, "priority", priority)
return 0
else
return -1
end
`;ag.changePriority={name:"changePriority",content:CIe,keys:7}});var Xz=h(cg=>{"use strict";Object.defineProperty(cg,"__esModule",{value:!0});cg.cleanJobsInSet=void 0;var jIe=`--[[
Remove jobs from the specific set.
Input:
KEYS[1] set key,
KEYS[2] events stream key
KEYS[3] repeat key
ARGV[1] jobKey prefix
ARGV[2] timestamp
ARGV[3] limit the number of jobs to be removed. 0 is unlimited
ARGV[4] set name, can be any of 'wait', 'active', 'paused', 'delayed', 'completed', or 'failed'
]]
local rcall = redis.call
local repeatKey = KEYS[3]
local rangeStart = 0
local rangeEnd = -1
local limit = tonumber(ARGV[3])
-- If we're only deleting _n_ items, avoid retrieving all items
-- for faster performance
--
-- Start from the tail of the list, since that's where oldest elements
-- are generally added for FIFO lists
if limit > 0 then
rangeStart = -1 - limit + 1
rangeEnd = -1
end
-- Includes
--[[
Function to clean job list.
Returns jobIds and deleted count number.
]]
-- Includes
--[[
Function to get the latest saved timestamp.
]]
local function getTimestamp(jobKey, attributes)
if #attributes == 1 then
return rcall("HGET", jobKey, attributes[1])
end
local jobTs
for _, ts in ipairs(rcall("HMGET", jobKey, unpack(attributes))) do
if (ts) then
jobTs = ts
break
end
end
return jobTs
end
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function cleanList(listKey, jobKeyPrefix, rangeStart, rangeEnd,
timestamp, isWaiting, jobSchedulersKey)
local jobs = rcall("LRANGE", listKey, rangeStart, rangeEnd)
local deleted = {}
local deletedCount = 0
local jobTS
local deletionMarker = ''
local jobIdsLen = #jobs
for i, job in ipairs(jobs) do
if limit > 0 and deletedCount >= limit then
break
end
local jobKey = jobKeyPrefix .. job
if (isWaiting or rcall("EXISTS", jobKey .. ":lock") == 0) and
not isJobSchedulerJob(job, jobKey, jobSchedulersKey) then
-- Find the right timestamp of the job to compare to maxTimestamp:
-- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
-- * processedOn represents when the job was last attempted, but it doesn't get populated until
-- the job is first tried
-- * timestamp is the original job submission time
-- Fetch all three of these (in that order) and use the first one that is set so that we'll leave jobs
-- that have been active within the grace period:
jobTS = getTimestamp(jobKey, {"finishedOn", "processedOn", "timestamp"})
if (not jobTS or jobTS <= timestamp) then
-- replace the entry with a deletion marker; the actual deletion will
-- occur at the end of the script
rcall("LSET", listKey, rangeEnd - jobIdsLen + i, deletionMarker)
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]])
deletedCount = deletedCount + 1
table.insert(deleted, job)
end
end
end
rcall("LREM", listKey, 0, deletionMarker)
return {deleted, deletedCount}
end
--[[
Function to clean job set.
Returns jobIds and deleted count number.
]]
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
We use ZRANGEBYSCORE to make the case where we're deleting a limited number
of items in a sorted set only run a single iteration. If we simply used
ZRANGE, we may take a long time traversing through jobs that are within the
grace period.
]]
local function getJobsInZset(zsetKey, rangeEnd, limit)
if limit > 0 then
return rcall("ZRANGEBYSCORE", zsetKey, 0, rangeEnd, "LIMIT", 0, limit)
else
return rcall("ZRANGEBYSCORE", zsetKey, 0, rangeEnd)
end
end
local function cleanSet(
setKey,
jobKeyPrefix,
rangeEnd,
timestamp,
limit,
attributes,
isFinished,
jobSchedulersKey)
local jobs = getJobsInZset(setKey, rangeEnd, limit)
local deleted = {}
local deletedCount = 0
local jobTS
for i, job in ipairs(jobs) do
if limit > 0 and deletedCount >= limit then
break
end
local jobKey = jobKeyPrefix .. job
-- Extract a Job Scheduler Id from jobId ("repeat:job-scheduler-id:millis")
-- and check if it is in the scheduled jobs
if not (jobSchedulersKey and isJobSchedulerJob(job, jobKey, jobSchedulersKey)) then
if isFinished then
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
deletedCount = deletedCount + 1
table.insert(deleted, job)
else
-- * finishedOn says when the job was completed, but it isn't set unless the job has actually completed
jobTS = getTimestamp(jobKey, attributes)
if (not jobTS or jobTS <= timestamp) then
removeJob(job, true, jobKeyPrefix, true --[[remove debounce key]] )
deletedCount = deletedCount + 1
table.insert(deleted, job)
end
end
end
end
if (#deleted > 0) then
for from, to in batches(#deleted, 7000) do
rcall("ZREM", setKey, unpack(deleted, from, to))
end
end
return {deleted, deletedCount}
end
local result
if ARGV[4] == "active" then
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], false --[[ hasFinished ]],
repeatKey)
elseif ARGV[4] == "delayed" then
rangeEnd = "+inf"
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"processedOn", "timestamp"}, false --[[ hasFinished ]], repeatKey)
elseif ARGV[4] == "prioritized" then
rangeEnd = "+inf"
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"timestamp"}, false --[[ hasFinished ]], repeatKey)
elseif ARGV[4] == "wait" or ARGV[4] == "paused" then
result = cleanList(KEYS[1], ARGV[1], rangeStart, rangeEnd, ARGV[2], true --[[ hasFinished ]],
repeatKey)
else
rangeEnd = ARGV[2]
-- No need to pass repeat key as in that moment job won't be related to a job scheduler
result = cleanSet(KEYS[1], ARGV[1], rangeEnd, ARGV[2], limit,
{"finishedOn"}, true --[[ hasFinished ]])
end
rcall("XADD", KEYS[2], "*", "event", "cleaned", "count", result[2])
return result[1]
`;cg.cleanJobsInSet={name:"cleanJobsInSet",content:jIe,keys:3}});var Zz=h(lg=>{"use strict";Object.defineProperty(lg,"__esModule",{value:!0});lg.drain=void 0;var PIe=`--[[
Drains the queue, removes all jobs that are waiting
or delayed, but not active, completed or failed
Input:
KEYS[1] 'wait',
KEYS[2] 'paused'
KEYS[3] 'delayed'
KEYS[4] 'prioritized'
KEYS[5] 'jobschedulers' (repeat)
ARGV[1] queue key prefix
ARGV[2] should clean delayed jobs
]]
local rcall = redis.call
local queueBaseKey = ARGV[1]
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to filter out jobs to ignore from a table.
]]
local function filterOutJobsToIgnore(jobs, jobsToIgnore)
local filteredJobs = {}
for i = 1, #jobs do
if not jobsToIgnore[jobs[i]] then
table.insert(filteredJobs, jobs[i])
end
end
return filteredJobs
end
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobs(keys, hard, baseKey, max)
for i, key in ipairs(keys) do
removeJob(key, hard, baseKey, true --[[remove debounce key]])
end
return max - #keys
end
local function getListItems(keyName, max)
return rcall('LRANGE', keyName, 0, max - 1)
end
local function removeListJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getListItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
rcall("LTRIM", keyName, #jobs, -1)
return count
end
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get ZSet items.
]]
local function getZSetItems(keyName, max)
return rcall('ZRANGE', keyName, 0, max - 1)
end
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getZSetItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
if(#jobs > 0) then
for from, to in batches(#jobs, 7000) do
rcall("ZREM", keyName, unpack(jobs, from, to))
end
end
return count
end
-- We must not remove delayed jobs if they are associated to a job scheduler.
local scheduledJobs = {}
local jobSchedulers = rcall("ZRANGE", KEYS[5], 0, -1, "WITHSCORES")
-- For every job scheduler, get the current delayed job id.
for i = 1, #jobSchedulers, 2 do
local jobSchedulerId = jobSchedulers[i]
local jobSchedulerMillis = jobSchedulers[i + 1]
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. jobSchedulerMillis
scheduledJobs[delayedJobId] = true
end
removeListJobs(KEYS[1], true, queueBaseKey, 0, scheduledJobs) -- wait
removeListJobs(KEYS[2], true, queueBaseKey, 0, scheduledJobs) -- paused
if ARGV[2] == "1" then
removeZSetJobs(KEYS[3], true, queueBaseKey, 0, scheduledJobs) -- delayed
end
removeZSetJobs(KEYS[4], true, queueBaseKey, 0, scheduledJobs) -- prioritized
`;lg.drain={name:"drain",content:PIe,keys:5}});var eG=h(ug=>{"use strict";Object.defineProperty(ug,"__esModule",{value:!0});ug.extendLock=void 0;var KIe=`--[[
Extend lock and removes the job from the stalled set.
Input:
KEYS[1] 'lock',
KEYS[2] 'stalled'
ARGV[1] token
ARGV[2] lock duration in milliseconds
ARGV[3] jobid
Output:
"1" if lock extended successfully.
]]
local rcall = redis.call
if rcall("GET", KEYS[1]) == ARGV[1] then
-- if rcall("SET", KEYS[1], ARGV[1], "PX", ARGV[2], "XX") then
if rcall("SET", KEYS[1], ARGV[1], "PX", ARGV[2]) then
rcall("SREM", KEYS[2], ARGV[3])
return 1
end
end
return 0
`;ug.extendLock={name:"extendLock",content:KIe,keys:2}});var tG=h(dg=>{"use strict";Object.defineProperty(dg,"__esModule",{value:!0});dg.extendLocks=void 0;var DIe=`--[[
Extend locks for multiple jobs and remove them from the stalled set if successful.
Return the list of job IDs for which the operation failed.
KEYS[1] = stalled key
ARGV[1] = baseKey
ARGV[2] = tokens
ARGV[3] = jobIds
ARGV[4] = lockDuration (ms)
Output:
An array of failed job IDs. If empty, all succeeded.
]]
local rcall = redis.call
local stalledKey = KEYS[1]
local baseKey = ARGV[1]
local tokens = cmsgpack.unpack(ARGV[2])
local jobIds = cmsgpack.unpack(ARGV[3])
local lockDuration = ARGV[4]
local jobCount = #jobIds
local failedJobs = {}
for i = 1, jobCount, 1 do
local lockKey = baseKey .. jobIds[i] .. ':lock'
local jobId = jobIds[i]
local token = tokens[i]
local currentToken = rcall("GET", lockKey)
if currentToken then
if currentToken == token then
local setResult = rcall("SET", lockKey, token, "PX", lockDuration)
if setResult then
rcall("SREM", stalledKey, jobId)
else
table.insert(failedJobs, jobId)
end
else
table.insert(failedJobs, jobId)
end
else
table.insert(failedJobs, jobId)
end
end
return failedJobs
`;dg.extendLocks={name:"extendLocks",content:DIe,keys:1}});var rG=h(pg=>{"use strict";Object.defineProperty(pg,"__esModule",{value:!0});pg.getCounts=void 0;var MIe=`--[[
Get counts per provided states
Input:
KEYS[1] 'prefix'
ARGV[1...] types
]]
local rcall = redis.call;
local prefix = KEYS[1]
local results = {}
for i = 1, #ARGV do
local stateKey = prefix .. ARGV[i]
if ARGV[i] == "wait" or ARGV[i] == "paused" then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local marker = rcall("LINDEX", stateKey, -1)
if marker and string.sub(marker, 1, 2) == "0:" then
local count = rcall("LLEN", stateKey)
if count > 1 then
rcall("RPOP", stateKey)
results[#results+1] = count-1
else
results[#results+1] = 0
end
else
results[#results+1] = rcall("LLEN", stateKey)
end
elseif ARGV[i] == "active" then
results[#results+1] = rcall("LLEN", stateKey)
else
results[#results+1] = rcall("ZCARD", stateKey)
end
end
return results
`;pg.getCounts={name:"getCounts",content:MIe,keys:1}});var nG=h(fg=>{"use strict";Object.defineProperty(fg,"__esModule",{value:!0});fg.getCountsPerPriority=void 0;var NIe=`--[[
Get counts per provided states
Input:
KEYS[1] wait key
KEYS[2] paused key
KEYS[3] meta key
KEYS[4] prioritized key
ARGV[1...] priorities
]]
local rcall = redis.call
local results = {}
local waitKey = KEYS[1]
local pausedKey = KEYS[2]
local prioritizedKey = KEYS[4]
-- Includes
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePaused(queueMetaKey)
return rcall("HEXISTS", queueMetaKey, "paused") == 1
end
for i = 1, #ARGV do
local priority = tonumber(ARGV[i])
if priority == 0 then
if isQueuePaused(KEYS[3]) then
results[#results+1] = rcall("LLEN", pausedKey)
else
results[#results+1] = rcall("LLEN", waitKey)
end
else
results[#results+1] = rcall("ZCOUNT", prioritizedKey,
priority * 0x100000000, (priority + 1) * 0x100000000 - 1)
end
end
return results
`;fg.getCountsPerPriority={name:"getCountsPerPriority",content:NIe,keys:4}});var iG=h(mg=>{"use strict";Object.defineProperty(mg,"__esModule",{value:!0});mg.getDependencyCounts=void 0;var LIe=`--[[
Get counts per child states
Input:
KEYS[1] processed key
KEYS[2] unprocessed key
KEYS[3] ignored key
KEYS[4] failed key
ARGV[1...] types
]]
local rcall = redis.call;
local processedKey = KEYS[1]
local unprocessedKey = KEYS[2]
local ignoredKey = KEYS[3]
local failedKey = KEYS[4]
local results = {}
for i = 1, #ARGV do
if ARGV[i] == "processed" then
results[#results+1] = rcall("HLEN", processedKey)
elseif ARGV[i] == "unprocessed" then
results[#results+1] = rcall("SCARD", unprocessedKey)
elseif ARGV[i] == "ignored" then
results[#results+1] = rcall("HLEN", ignoredKey)
else
results[#results+1] = rcall("ZCARD", failedKey)
end
end
return results
`;mg.getDependencyCounts={name:"getDependencyCounts",content:LIe,keys:4}});var sG=h(hg=>{"use strict";Object.defineProperty(hg,"__esModule",{value:!0});hg.getJobScheduler=void 0;var qIe=`--[[
Get job scheduler record.
Input:
KEYS[1] 'repeat' key
ARGV[1] id
]]
local rcall = redis.call
local jobSchedulerKey = KEYS[1] .. ":" .. ARGV[1]
local score = rcall("ZSCORE", KEYS[1], ARGV[1])
if score then
return {rcall("HGETALL", jobSchedulerKey), score} -- get job data
end
return {nil, nil}
`;hg.getJobScheduler={name:"getJobScheduler",content:qIe,keys:1}});var oG=h(yg=>{"use strict";Object.defineProperty(yg,"__esModule",{value:!0});yg.getJobs=void 0;var FIe=`--[[
Get jobs (id + data) for the provided states.
Job ids and their hashes are read in the same script so that ids whose hash
disappears after the id is read (but before the job is loaded) do not appear
in the result set. Ids without a job hash (for example the deprecated wait
list marker entry stored in the list) are skipped. For bounded ranges the
script iterates forward using the range offset as a cursor to backfill
skipped ids, preserving the requested page size when possible.
Input:
KEYS[1] 'prefix'
ARGV[1] start
ARGV[2] end
ARGV[3] asc ('1' | '0')
ARGV[4] max iterations (backfill bound)
ARGV[5...] types
Output:
results grouped per requested type; each entry is a
{jobId, {field, value, ...}} tuple
]]
local rcall = redis.call
local prefix = KEYS[1]
local rangeStart = tonumber(ARGV[1])
local rangeEnd = tonumber(ARGV[2])
local asc = ARGV[3] == "1"
local max_iterations = tonumber(ARGV[4])
local results = {}
local function isListType(stateType)
return stateType == "wait" or stateType == "paused" or stateType == "active"
end
-- Fetch a slice of ids for the given state respecting the requested order.
local function fetchIds(stateKey, stateType, sliceStart, sliceEnd, listLength)
if isListType(stateType) then
if asc then
local modifiedRangeStart
local modifiedRangeEnd
if sliceStart == -1 then
modifiedRangeStart = 0
else
modifiedRangeStart = -(sliceStart + 1)
end
if sliceEnd == -1 then
modifiedRangeEnd = 0
else
modifiedRangeEnd = -(sliceEnd + 1)
end
-- Ascending list slices use negative indexes. When the whole window is
-- beyond the list length Redis clamps both indexes to 0 and LRANGE would
-- return the head element, so guard against out-of-range slices with LLEN.
if listLength ~= nil and sliceStart >= 0 and sliceEnd >= 0 and sliceStart >= listLength then
return {}
end
local ids = rcall("LRANGE", stateKey, modifiedRangeEnd, modifiedRangeStart)
local reversed = {}
for i = #ids, 1, -1 do
reversed[#reversed + 1] = ids[i]
end
return reversed
else
return rcall("LRANGE", stateKey, sliceStart, sliceEnd)
end
else
if asc then
return rcall("ZRANGE", stateKey, sliceStart, sliceEnd)
else
return rcall("ZREVRANGE", stateKey, sliceStart, sliceEnd)
end
end
end
-- Fetch the job hash for an id and append it when present.
local function appendJob(entries, jobId)
local jobData = rcall("HGETALL", prefix .. jobId)
if #jobData > 0 then
entries[#entries + 1] = {jobId, jobData}
end
end
local function cleanupDeprecatedMarker(stateKey, stateType)
if stateType == "wait" or stateType == "paused" then
local marker = rcall("LINDEX", stateKey, -1)
if marker and string.sub(marker, 1, 2) == "0:" then
local count = rcall("LLEN", stateKey)
if count > 1 then
rcall("RPOP", stateKey)
return count - 1
end
return 0
end
end
end
local function collectJobs(stateKey, stateType)
local entries = {}
local listLength
local cleanedListLength = cleanupDeprecatedMarker(stateKey, stateType)
if asc and isListType(stateType) and rangeStart >= 0 and rangeEnd >= 0 then
if cleanedListLength ~= nil then
listLength = cleanedListLength
else
listLength = rcall("LLEN", stateKey)
end
end
-- Unbounded or negative ranges: fetch the exact window and skip missing ids.
if rangeStart < 0 or rangeEnd < 0 then
local ids = fetchIds(stateKey, stateType, rangeStart, rangeEnd, listLength)
for i = 1, #ids do
appendJob(entries, ids[i])
end
return entries
end
-- Bounded range: iterate forward to backfill skipped ids.
local needed = rangeEnd - rangeStart + 1
local cursor = rangeStart
local iterations = 0
while #entries < needed and iterations < max_iterations do
local ids = fetchIds(stateKey, stateType, cursor, cursor + needed - 1, listLength)
if #ids == 0 then
break
end
for i = 1, #ids do
if #entries >= needed then
break
end
appendJob(entries, ids[i])
end
cursor = cursor + #ids
iterations = iterations + 1
end
return entries
end
for i = 5, #ARGV do
local stateType = ARGV[i]
local stateKey = prefix .. stateType
results[#results + 1] = collectJobs(stateKey, stateType)
end
return results
`;yg.getJobs={name:"getJobs",content:FIe,keys:1}});var aG=h(gg=>{"use strict";Object.defineProperty(gg,"__esModule",{value:!0});gg.getMetrics=void 0;var $Ie=`--[[
Get metrics
Input:
KEYS[1] 'metrics' key
KEYS[2] 'metrics data' key
ARGV[1] start index
ARGV[2] end index
]]
local rcall = redis.call;
local metricsKey = KEYS[1]
local dataKey = KEYS[2]
local metrics = rcall("HMGET", metricsKey, "count", "prevTS", "prevCount")
local data = rcall("LRANGE", dataKey, tonumber(ARGV[1]), tonumber(ARGV[2]))
local numPoints = rcall("LLEN", dataKey)
return {metrics, data, numPoints}
`;gg.getMetrics={name:"getMetrics",content:$Ie,keys:2}});var cG=h(bg=>{"use strict";Object.defineProperty(bg,"__esModule",{value:!0});bg.getRanges=void 0;var UIe=`--[[
Get job ids per provided states
Input:
KEYS[1] 'prefix'
ARGV[1] start
ARGV[2] end
ARGV[3] asc
ARGV[4...] types
]]
local rcall = redis.call
local prefix = KEYS[1]
local rangeStart = tonumber(ARGV[1])
local rangeEnd = tonumber(ARGV[2])
local asc = ARGV[3]
local results = {}
local function getRangeInList(listKey, asc, rangeStart, rangeEnd, results)
if asc == "1" then
local modifiedRangeStart
local modifiedRangeEnd
if rangeStart == -1 then
modifiedRangeStart = 0
else
modifiedRangeStart = -(rangeStart + 1)
end
if rangeEnd == -1 then
modifiedRangeEnd = 0
else
modifiedRangeEnd = -(rangeEnd + 1)
end
results[#results+1] = rcall("LRANGE", listKey,
modifiedRangeEnd,
modifiedRangeStart)
else
results[#results+1] = rcall("LRANGE", listKey, rangeStart, rangeEnd)
end
end
for i = 4, #ARGV do
local stateKey = prefix .. ARGV[i]
if ARGV[i] == "wait" or ARGV[i] == "paused" then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local marker = rcall("LINDEX", stateKey, -1)
if marker and string.sub(marker, 1, 2) == "0:" then
local count = rcall("LLEN", stateKey)
if count > 1 then
rcall("RPOP", stateKey)
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
else
results[#results+1] = {}
end
else
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
end
elseif ARGV[i] == "active" then
getRangeInList(stateKey, asc, rangeStart, rangeEnd, results)
else
if asc == "1" then
results[#results+1] = rcall("ZRANGE", stateKey, rangeStart, rangeEnd)
else
results[#results+1] = rcall("ZREVRANGE", stateKey, rangeStart, rangeEnd)
end
end
end
return results
`;bg.getRanges={name:"getRanges",content:UIe,keys:1}});var lG=h(vg=>{"use strict";Object.defineProperty(vg,"__esModule",{value:!0});vg.getRateLimitTtl=void 0;var JIe=`--[[
Get rate limit ttl
Input:
KEYS[1] 'limiter'
KEYS[2] 'meta'
ARGV[1] maxJobs
]]
local rcall = redis.call
-- Includes
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
local rateLimiterKey = KEYS[1]
if ARGV[1] ~= "0" then
return getRateLimitTTL(tonumber(ARGV[1]), rateLimiterKey)
else
local rateLimitMax = rcall("HGET", KEYS[2], "max")
if rateLimitMax then
return getRateLimitTTL(tonumber(rateLimitMax), rateLimiterKey)
end
return rcall("PTTL", rateLimiterKey)
end
`;vg.getRateLimitTtl={name:"getRateLimitTtl",content:JIe,keys:2}});var uG=h(Eg=>{"use strict";Object.defineProperty(Eg,"__esModule",{value:!0});Eg.getState=void 0;var zIe=`--[[
Get a job state
Input:
KEYS[1] 'completed' key,
KEYS[2] 'failed' key
KEYS[3] 'delayed' key
KEYS[4] 'active' key
KEYS[5] 'wait' key
KEYS[6] 'paused' key
KEYS[7] 'waiting-children' key
KEYS[8] 'prioritized' key
ARGV[1] job id
Output:
'completed'
'failed'
'delayed'
'active'
'prioritized'
'waiting'
'waiting-children'
'unknown'
]]
local rcall = redis.call
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
return "completed"
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
return "failed"
end
if rcall("ZSCORE", KEYS[3], ARGV[1]) then
return "delayed"
end
if rcall("ZSCORE", KEYS[8], ARGV[1]) then
return "prioritized"
end
-- Includes
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local active_items = rcall("LRANGE", KEYS[4] , 0, -1)
if checkItemInList(active_items, ARGV[1]) ~= nil then
return "active"
end
local wait_items = rcall("LRANGE", KEYS[5] , 0, -1)
if checkItemInList(wait_items, ARGV[1]) ~= nil then
return "waiting"
end
local paused_items = rcall("LRANGE", KEYS[6] , 0, -1)
if checkItemInList(paused_items, ARGV[1]) ~= nil then
return "waiting"
end
if rcall("ZSCORE", KEYS[7], ARGV[1]) then
return "waiting-children"
end
return "unknown"
`;Eg.getState={name:"getState",content:zIe,keys:8}});var dG=h(Sg=>{"use strict";Object.defineProperty(Sg,"__esModule",{value:!0});Sg.getStateV2=void 0;var GIe=`--[[
Get a job state
Input:
KEYS[1] 'completed' key,
KEYS[2] 'failed' key
KEYS[3] 'delayed' key
KEYS[4] 'active' key
KEYS[5] 'wait' key
KEYS[6] 'paused' key
KEYS[7] 'waiting-children' key
KEYS[8] 'prioritized' key
ARGV[1] job id
Output:
'completed'
'failed'
'delayed'
'active'
'waiting'
'waiting-children'
'unknown'
]]
local rcall = redis.call
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
return "completed"
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
return "failed"
end
if rcall("ZSCORE", KEYS[3], ARGV[1]) then
return "delayed"
end
if rcall("ZSCORE", KEYS[8], ARGV[1]) then
return "prioritized"
end
if rcall("LPOS", KEYS[4] , ARGV[1]) then
return "active"
end
if rcall("LPOS", KEYS[5] , ARGV[1]) then
return "waiting"
end
if rcall("LPOS", KEYS[6] , ARGV[1]) then
return "waiting"
end
if rcall("ZSCORE", KEYS[7] , ARGV[1]) then
return "waiting-children"
end
return "unknown"
`;Sg.getStateV2={name:"getStateV2",content:GIe,keys:8}});var pG=h(xg=>{"use strict";Object.defineProperty(xg,"__esModule",{value:!0});xg.isFinished=void 0;var BIe=`--[[
Checks if a job is finished (.i.e. is in the completed or failed set)
Input:
KEYS[1] completed key
KEYS[2] failed key
KEYS[3] job key
ARGV[1] job id
ARGV[2] return value?
Output:
0 - Not finished.
1 - Completed.
2 - Failed.
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[3]) ~= 1 then
if ARGV[2] == "1" then
return {-1,"Missing key for job " .. KEYS[3] .. ". isFinished"}
end
return -1
end
if rcall("ZSCORE", KEYS[1], ARGV[1]) then
if ARGV[2] == "1" then
local returnValue = rcall("HGET", KEYS[3], "returnvalue")
return {1,returnValue}
end
return 1
end
if rcall("ZSCORE", KEYS[2], ARGV[1]) then
if ARGV[2] == "1" then
local failedReason = rcall("HGET", KEYS[3], "failedReason")
return {2,failedReason}
end
return 2
end
if ARGV[2] == "1" then
return {0}
end
return 0
`;xg.isFinished={name:"isFinished",content:BIe,keys:3}});var fG=h(wg=>{"use strict";Object.defineProperty(wg,"__esModule",{value:!0});wg.isJobInList=void 0;var HIe=`--[[
Checks if job is in a given list.
Input:
KEYS[1]
ARGV[1]
Output:
1 if element found in the list.
]]
-- Includes
--[[
Function to check if an item belongs to a list.
]]
local function checkItemInList(list, item)
for _, v in pairs(list) do
if v == item then
return 1
end
end
return nil
end
local items = redis.call("LRANGE", KEYS[1] , 0, -1)
return checkItemInList(items, ARGV[1])
`;wg.isJobInList={name:"isJobInList",content:HIe,keys:1}});var mG=h(_g=>{"use strict";Object.defineProperty(_g,"__esModule",{value:!0});_g.isMaxed=void 0;var VIe=`--[[
Checks if queue is maxed.
Input:
KEYS[1] meta key
KEYS[2] active key
Output:
1 if element found in the list.
]]
local rcall = redis.call
-- Includes
--[[
Function to check if queue is maxed or not.
]]
local function isQueueMaxed(queueMetaKey, activeKey)
local maxConcurrency = rcall("HGET", queueMetaKey, "concurrency")
if maxConcurrency then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(maxConcurrency) then
return true
end
end
return false
end
return isQueueMaxed(KEYS[1], KEYS[2])
`;_g.isMaxed={name:"isMaxed",content:VIe,keys:2}});var hG=h(Ig=>{"use strict";Object.defineProperty(Ig,"__esModule",{value:!0});Ig.moveJobFromActiveToWait=void 0;var WIe=`--[[
Function to move job from active state to wait.
Input:
KEYS[1] active key
KEYS[2] wait key
KEYS[3] stalled key
KEYS[4] paused key
KEYS[5] meta key
KEYS[6] limiter key
KEYS[7] prioritized key
KEYS[8] marker key
KEYS[9] event key
ARGV[1] job id
ARGV[2] lock token
ARGV[3] job id key
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to push back job considering priority in front of same prioritized jobs.
]]
local function pushBackJobWithPriority(prioritizedKey, priority, jobId)
-- in order to put it at front of same prioritized jobs
-- we consider prioritized counter as 0
local score = priority * 0x100000000
rcall("ZADD", prioritizedKey, score, jobId)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
local jobId = ARGV[1]
local token = ARGV[2]
local jobKey = ARGV[3]
if rcall("EXISTS", jobKey) == 0 then
return -1
end
local errorCode = removeLock(jobKey, KEYS[3], token, jobId)
if errorCode < 0 then
return errorCode
end
local metaKey = KEYS[5]
local removed = rcall("LREM", KEYS[1], 1, jobId)
if removed > 0 then
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[1], KEYS[2], KEYS[4])
local priority = tonumber(rcall("HGET", ARGV[3], "priority")) or 0
if priority > 0 then
pushBackJobWithPriority(KEYS[7], priority, jobId)
else
addJobInTargetList(target, KEYS[8], "RPUSH", isPausedOrMaxed, jobId)
end
local maxEvents = getOrSetMaxEvents(metaKey)
-- Emit waiting event
rcall("XADD", KEYS[9], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId, "prev", "active")
end
local pttl = rcall("PTTL", KEYS[6])
if pttl > 0 then
return pttl
else
return 0
end
`;Ig.moveJobFromActiveToWait={name:"moveJobFromActiveToWait",content:WIe,keys:9}});var yG=h(Tg=>{"use strict";Object.defineProperty(Tg,"__esModule",{value:!0});Tg.moveJobsToWait=void 0;var YIe=`--[[
Move completed, failed or delayed jobs to wait.
Note: Does not support jobs with priorities.
Input:
KEYS[1] base key
KEYS[2] events stream
KEYS[3] state key (failed, completed, delayed)
KEYS[4] 'wait'
KEYS[5] 'paused'
KEYS[6] 'meta'
KEYS[7] 'active'
KEYS[8] 'marker'
ARGV[1] count
ARGV[2] timestamp
ARGV[3] prev state
Output:
1 means the operation is not completed
0 means the operation is completed
]]
local maxCount = tonumber(ARGV[1])
local timestamp = tonumber(ARGV[2])
local rcall = redis.call;
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local metaKey = KEYS[6]
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[7], KEYS[4], KEYS[5])
local jobs = rcall('ZRANGEBYSCORE', KEYS[3], 0, timestamp, 'LIMIT', 0, maxCount)
if (#jobs > 0) then
if ARGV[3] == "failed" then
for i, key in ipairs(jobs) do
local jobKey = KEYS[1] .. key
rcall("HDEL", jobKey, "finishedOn", "processedOn", "failedReason")
end
elseif ARGV[3] == "completed" then
for i, key in ipairs(jobs) do
local jobKey = KEYS[1] .. key
rcall("HDEL", jobKey, "finishedOn", "processedOn", "returnvalue")
end
end
local maxEvents = getOrSetMaxEvents(metaKey)
for i, key in ipairs(jobs) do
-- Emit waiting event
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event",
"waiting", "jobId", key, "prev", ARGV[3]);
end
for from, to in batches(#jobs, 7000) do
rcall("ZREM", KEYS[3], unpack(jobs, from, to))
rcall("LPUSH", target, unpack(jobs, from, to))
end
addBaseMarkerIfNeeded(KEYS[8], isPausedOrMaxed)
end
maxCount = maxCount - #jobs
if (maxCount <= 0) then return 1 end
return 0
`;Tg.moveJobsToWait={name:"moveJobsToWait",content:YIe,keys:8}});var gG=h(kg=>{"use strict";Object.defineProperty(kg,"__esModule",{value:!0});kg.moveStalledJobsToWait=void 0;var QIe=`--[[
Move stalled jobs to wait.
Input:
KEYS[1] 'stalled' (SET)
KEYS[2] 'wait', (LIST)
KEYS[3] 'active', (LIST)
KEYS[4] 'stalled-check', (KEY)
KEYS[5] 'meta', (KEY)
KEYS[6] 'paused', (LIST)
KEYS[7] 'marker'
KEYS[8] 'event stream' (STREAM)
KEYS[9] 'repeat' key
ARGV[1] Max stalled job count
ARGV[2] queue.toKey('')
ARGV[3] timestamp
ARGV[4] max check time
Events:
'stalled' with stalled job id.
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to move job to wait to be picked up by a waiting worker.
]]
-- Includes
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function moveJobToWait(metaKey, activeKey, waitKey, pausedKey, markerKey, eventStreamKey,
jobId, pushCmd)
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId", jobId, 'prev', 'active')
end
--[[
Function to trim events, default 10000.
]]
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function trimEvents(metaKey, eventStreamKey)
local maxEvents = getOrSetMaxEvents(metaKey)
if maxEvents then
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
else
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
end
end
local stalledKey = KEYS[1]
local waitKey = KEYS[2]
local activeKey = KEYS[3]
local stalledCheckKey = KEYS[4]
local metaKey = KEYS[5]
local pausedKey = KEYS[6]
local markerKey = KEYS[7]
local eventStreamKey = KEYS[8]
local repeatKey = KEYS[9]
local maxStalledJobCount = tonumber(ARGV[1])
local queueKeyPrefix = ARGV[2]
local timestamp = ARGV[3]
local maxCheckTime = ARGV[4]
if rcall("EXISTS", stalledCheckKey) == 1 then
return {}
end
rcall("SET", stalledCheckKey, timestamp, "PX", maxCheckTime)
-- Trim events before emitting them to avoid trimming events emitted in this script
trimEvents(metaKey, eventStreamKey)
-- Move all stalled jobs to wait
local stalling = rcall('SMEMBERS', stalledKey)
local stalled = {}
if (#stalling > 0) then
rcall('DEL', stalledKey)
-- Remove from active list
for i, jobId in ipairs(stalling) do
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
-- If the jobId is a delay marker ID we just remove it.
rcall("LREM", activeKey, 1, jobId)
else
local jobKey = queueKeyPrefix .. jobId
-- Check that the lock is also missing, then we can handle this job as really stalled.
if (rcall("EXISTS", jobKey .. ":lock") == 0) then
-- Remove from the active queue.
local removed = rcall("LREM", activeKey, 1, jobId)
if (removed > 0) then
-- If this job has been stalled too many times, such as if it crashes the worker, then fail it.
local stalledCount = rcall("HINCRBY", jobKey, "stc", 1)
-- Check if this is a repeatable job by looking at job options
local jobSchedulerId = rcall("HGET", jobKey, "rjk")
local isRepeatableJob = false
if jobSchedulerId then
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
if rcall("EXISTS", schedulerKey) == 1 then
isRepeatableJob = true
else
-- TODO: remove this check in v6, as it is only needed for legacy repeatable jobs
-- that stored the scheduler id in the job key but did not create the scheduler hash key
local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
if prevMillis then
isRepeatableJob = true
end
end
end
-- Only fail job if it exceeds stall limit AND is not a repeatable job
if stalledCount > maxStalledJobCount and not isRepeatableJob then
local failedReason = "job stalled more than allowable limit"
rcall("HSET", jobKey, "defa", failedReason)
end
moveJobToWait(metaKey, activeKey, waitKey, pausedKey, markerKey, eventStreamKey, jobId,
"RPUSH")
-- Emit the stalled event
rcall("XADD", eventStreamKey, "*", "event", "stalled", "jobId", jobId)
table.insert(stalled, jobId)
end
end
end
end
end
-- Mark potentially stalled jobs
local active = rcall('LRANGE', activeKey, 0, -1)
if (#active > 0) then
for from, to in batches(#active, 7000) do
rcall('SADD', stalledKey, unpack(active, from, to))
end
end
return stalled
`;kg.moveStalledJobsToWait={name:"moveStalledJobsToWait",content:QIe,keys:9}});var bG=h(Ag=>{"use strict";Object.defineProperty(Ag,"__esModule",{value:!0});Ag.moveToActive=void 0;var XIe=`--[[
Move next job to be processed to active, lock it and fetch its data. The job
may be delayed, in that case we need to move it to the delayed set instead.
This operation guarantees that the worker owns the job during the lock
expiration time. The worker is responsible of keeping the lock fresh
so that no other worker picks this job again.
Input:
KEYS[1] wait key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] stream events key
KEYS[5] stalled key
-- Rate limiting
KEYS[6] rate limiter key
KEYS[7] delayed key
-- Delayed jobs
KEYS[8] paused key
KEYS[9] meta key
KEYS[10] pc priority counter
-- Marker
KEYS[11] marker key
-- Arguments
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] opts
opts - token - lock token
opts - lockDuration
opts - limiter
opts - name - worker name
]]
local rcall = redis.call
local waitKey = KEYS[1]
local activeKey = KEYS[2]
local eventStreamKey = KEYS[4]
local rateLimiterKey = KEYS[6]
local delayedKey = KEYS[7]
local opts = cmsgpack.unpack(ARGV[3])
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration = getTargetQueueList(KEYS[9],
activeKey, waitKey, KEYS[8])
-- Check if there are delayed jobs that we can move to wait.
local markerKey = KEYS[11]
promoteDelayedJobs(delayedKey, markerKey, target, KEYS[3], eventStreamKey, ARGV[1],
ARGV[2], KEYS[10], isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
-- Check if we are rate limited first.
if expireTime > 0 then return {0, 0, expireTime, 0} end
-- paused or maxed queue
if isPausedOrMaxed then return {0, 0, 0, 0} end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
-- no job ID, try non-blocking move from wait to active
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
-- Markers in waitlist DEPRECATED in v5: Will be completely removed in v6.
if jobId and string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
jobId = rcall("RPOPLPUSH", waitKey, activeKey)
end
if jobId then
return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
maxJobs, limiterDuration, markerKey, opts)
else
jobId = moveJobFromPrioritizedToActive(KEYS[3], activeKey, KEYS[10])
if jobId then
return prepareJobForProcessing(ARGV[1], rateLimiterKey, eventStreamKey, jobId, ARGV[2],
maxJobs, limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then return {0, 0, 0, nextTimestamp} end
return {0, 0, 0, 0}
`;Ag.moveToActive={name:"moveToActive",content:XIe,keys:11}});var vG=h(Rg=>{"use strict";Object.defineProperty(Rg,"__esModule",{value:!0});Rg.moveToDelayed=void 0;var ZIe=`--[[
Moves job from active to delayed set.
Input:
KEYS[1] marker key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] delayed key
KEYS[5] job key
KEYS[6] events stream
KEYS[7] meta key
KEYS[8] stalled key
KEYS[9] wait key
KEYS[10] rate limiter key
KEYS[11] paused key
KEYS[12] pc priority counter
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] the id of the job
ARGV[4] queue token
ARGV[5] delay value
ARGV[6] skip attempt
ARGV[7] optional job fields to update
ARGV[8] fetch next?
ARGV[9] opts
Output:
0 - OK
-1 - Missing job.
-3 - Job not in active set.
Events:
- delayed key.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to fetch the next job to process.
Tries to get the next job to avoid an extra roundtrip if the queue is
not closing and not rate limited.
Input:
waitKey - wait list key
activeKey - active list key
prioritizedKey - prioritized sorted set key
eventStreamKey - event stream key
rateLimiterKey - rate limiter key
delayedKey - delayed sorted set key
pausedKey - paused list key
metaKey - meta hash key
pcKey - priority counter key
markerKey - marker key
prefix - keys prefix
timestamp - current timestamp
opts - options table:
token (required) - lock token used when locking jobs
lockDuration (required) - lock duration for acquired jobs
limiter (optional) - rate limiter options table (e.g. { max = number })
]]
-- Includes
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function fetchNextJob(waitKey, activeKey, prioritizedKey, eventStreamKey,
rateLimiterKey, delayedKey, pausedKey, metaKey, pcKey, markerKey, prefix,
timestamp, opts)
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration =
getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
-- Check if there are delayed jobs that can be promoted
promoteDelayedJobs(delayedKey, markerKey, target, prioritizedKey,
eventStreamKey, prefix, timestamp, pcKey, isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
-- Check if we are rate limited first.
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
if expireTime > 0 then
return {0, 0, expireTime, 0}
end
-- paused or maxed queue
if isPausedOrMaxed then
return {0, 0, 0, 0}
end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
if jobId then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
-- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
-- but if ID is 0:0, then there is at least 1 prioritized job to process
if jobId == "0:0" then
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
if jobId then
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- The result is guaranteed to be positive, since the
-- ZRANGEBYSCORE command would have return a job otherwise.
return {0, 0, 0, nextTimestamp}
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local jobKey = KEYS[5]
local markerKey = KEYS[1]
local metaKey = KEYS[7]
local token = ARGV[4]
if rcall("EXISTS", jobKey) == 1 then
local errorCode = removeLock(jobKey, KEYS[8], token, ARGV[3])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobKey, ARGV[7])
local delayedKey = KEYS[4]
local jobId = ARGV[3]
local delay = tonumber(ARGV[5])
local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
if numRemovedElements < 1 then return -3 end
local score, delayedTimestamp = getDelayedScore(delayedKey, ARGV[2], delay)
if ARGV[6] == "0" then
rcall("HINCRBY", jobKey, "atm", 1)
end
rcall("HSET", jobKey, "delay", ARGV[5])
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- Try to get next job to avoid an extra roundtrip if the queue is not closing,
-- and not rate limited.
if (ARGV[8] == "1") then
local opts = cmsgpack.unpack(ARGV[9])
local result = fetchNextJob(KEYS[9], KEYS[2], KEYS[3], KEYS[6],
KEYS[10], KEYS[4], KEYS[11], metaKey, KEYS[12], markerKey,
ARGV[1], ARGV[2], opts)
if result and type(result[1]) == "table" then
return result
end
end
-- Check if we need to push a marker job to wake up sleeping workers.
addDelayMarkerIfNeeded(markerKey, delayedKey)
return 0
else
return -1
end
`;Rg.moveToDelayed={name:"moveToDelayed",content:ZIe,keys:12}});var EG=h(Og=>{"use strict";Object.defineProperty(Og,"__esModule",{value:!0});Og.moveToFinished=void 0;var e1e=`--[[
Move job from active to a finished status (completed or failed)
A job can only be moved to completed if it was active.
The job must be locked before it can be moved to a finished status,
and the lock must be released in this script.
Input:
KEYS[1] wait key
KEYS[2] active key
KEYS[3] prioritized key
KEYS[4] event stream key
KEYS[5] stalled key
-- Rate limiting
KEYS[6] rate limiter key
KEYS[7] delayed key
KEYS[8] paused key
KEYS[9] meta key
KEYS[10] pc priority counter
KEYS[11] completed/failed key
KEYS[12] jobId key
KEYS[13] metrics key
KEYS[14] marker key
ARGV[1] jobId
ARGV[2] timestamp
ARGV[3] msg property returnvalue / failedReason
ARGV[4] return value / failed reason
ARGV[5] target (completed/failed)
ARGV[6] fetch next?
ARGV[7] keys prefix
ARGV[8] opts
ARGV[9] job fields to update
opts - token - lock token
opts - keepJobs
opts - lockDuration - lock duration in milliseconds
opts - attempts max attempts
opts - maxMetricsSize
opts - fpof - fail parent on fail
opts - cpof - continue parent on fail
opts - idof - ignore dependency on fail
opts - rdof - remove dependency on fail
opts - name - worker name
Output:
0 OK
-1 Missing key.
-2 Missing lock.
-3 Job not in active set
-4 Job has pending children
-6 Lock is not owned by this client
-9 Job has failed children
Events:
'completed/failed'
]]
local rcall = redis.call
--- Includes
--[[
Functions to collect metrics based on a current and previous count of jobs.
Granularity is fixed at 1 minute.
]]
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
local function collectMetrics(metaKey, dataPointsList, maxDataPoints,
timestamp)
-- Increment current count
local count = rcall("HINCRBY", metaKey, "count", 1) - 1
-- Compute how many data points we need to add to the list, N.
local prevTS = rcall("HGET", metaKey, "prevTS")
if not prevTS then
-- If prevTS is nil, set it to the current timestamp
rcall("HSET", metaKey, "prevTS", timestamp, "prevCount", 0)
return
end
local N = math.min(math.floor(timestamp / 60000) - math.floor(prevTS / 60000), tonumber(maxDataPoints))
if N > 0 then
local delta = count - rcall("HGET", metaKey, "prevCount")
-- If N > 1, add N-1 zeros to the list
if N > 1 then
local points = {}
points[1] = delta
for i = 2, N do
points[i] = 0
end
for from, to in batches(#points, 7000) do
rcall("LPUSH", dataPointsList, unpack(points, from, to))
end
else
-- LPUSH delta to the list
rcall("LPUSH", dataPointsList, delta)
end
-- LTRIM to keep list to its max size
rcall("LTRIM", dataPointsList, 0, maxDataPoints - 1)
-- update prev count with current count
rcall("HSET", metaKey, "prevCount", count, "prevTS", timestamp)
end
end
--[[
Function to fetch the next job to process.
Tries to get the next job to avoid an extra roundtrip if the queue is
not closing and not rate limited.
Input:
waitKey - wait list key
activeKey - active list key
prioritizedKey - prioritized sorted set key
eventStreamKey - event stream key
rateLimiterKey - rate limiter key
delayedKey - delayed sorted set key
pausedKey - paused list key
metaKey - meta hash key
pcKey - priority counter key
markerKey - marker key
prefix - keys prefix
timestamp - current timestamp
opts - options table:
token (required) - lock token used when locking jobs
lockDuration (required) - lock duration for acquired jobs
limiter (optional) - rate limiter options table (e.g. { max = number })
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
--[[
Function to get current rate limit ttl.
]]
local function getRateLimitTTL(maxJobs, rateLimiterKey)
if maxJobs and maxJobs <= tonumber(rcall("GET", rateLimiterKey) or 0) then
local pttl = rcall("PTTL", rateLimiterKey)
if pttl == 0 then
rcall("DEL", rateLimiterKey)
end
if pttl > 0 then
return pttl
end
end
return 0
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to move job from prioritized state to active.
]]
local function moveJobFromPrioritizedToActive(priorityKey, activeKey, priorityCounterKey)
local prioritizedJob = rcall("ZPOPMIN", priorityKey)
if #prioritizedJob > 0 then
rcall("LPUSH", activeKey, prioritizedJob[1])
return prioritizedJob[1]
else
rcall("DEL", priorityCounterKey)
end
end
--[[
Function to move job from wait state to active.
Input:
opts - token - lock token
opts - lockDuration
opts - limiter
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function prepareJobForProcessing(keyPrefix, rateLimiterKey, eventStreamKey,
jobId, processedOn, maxJobs, limiterDuration, markerKey, opts)
local jobKey = keyPrefix .. jobId
-- Check if we need to perform rate limiting.
if maxJobs then
local jobCounter = tonumber(rcall("INCR", rateLimiterKey))
if jobCounter == 1 then
local integerDuration = math.floor(math.abs(limiterDuration))
rcall("PEXPIRE", rateLimiterKey, integerDuration)
end
end
-- get a lock
if opts['token'] ~= "0" then
local lockKey = jobKey .. ':lock'
rcall("SET", lockKey, opts['token'], "PX", opts['lockDuration'])
end
local optionalValues = {}
if opts['name'] then
-- Set "processedBy" field to the worker name
table.insert(optionalValues, "pb")
table.insert(optionalValues, opts['name'])
end
rcall("XADD", eventStreamKey, "*", "event", "active", "jobId", jobId, "prev", "waiting")
rcall("HMSET", jobKey, "processedOn", processedOn, unpack(optionalValues))
rcall("HINCRBY", jobKey, "ats", 1)
addBaseMarkerIfNeeded(markerKey, false)
-- rate limit delay must be 0 in this case to prevent adding more delay
-- when job that is moved to active needs to be processed
return {rcall("HGETALL", jobKey), jobId, 0, 0} -- get job data
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function fetchNextJob(waitKey, activeKey, prioritizedKey, eventStreamKey,
rateLimiterKey, delayedKey, pausedKey, metaKey, pcKey, markerKey, prefix,
timestamp, opts)
local target, isPausedOrMaxed, rateLimitMax, rateLimitDuration =
getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
-- Check if there are delayed jobs that can be promoted
promoteDelayedJobs(delayedKey, markerKey, target, prioritizedKey,
eventStreamKey, prefix, timestamp, pcKey, isPausedOrMaxed)
local maxJobs = tonumber(rateLimitMax or (opts['limiter'] and opts['limiter']['max']))
-- Check if we are rate limited first.
local expireTime = getRateLimitTTL(maxJobs, rateLimiterKey)
if expireTime > 0 then
return {0, 0, expireTime, 0}
end
-- paused or maxed queue
if isPausedOrMaxed then
return {0, 0, 0, 0}
end
local limiterDuration = (opts['limiter'] and opts['limiter']['duration']) or rateLimitDuration
local jobId = rcall("RPOPLPUSH", waitKey, activeKey)
if jobId then
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
if string.sub(jobId, 1, 2) == "0:" then
rcall("LREM", activeKey, 1, jobId)
-- If jobId is special ID 0:delay (delay greater than 0), then there is no job to process
-- but if ID is 0:0, then there is at least 1 prioritized job to process
if jobId == "0:0" then
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
else
jobId = moveJobFromPrioritizedToActive(prioritizedKey, activeKey, pcKey)
if jobId then
return prepareJobForProcessing(prefix, rateLimiterKey,
eventStreamKey, jobId, timestamp, maxJobs,
limiterDuration, markerKey, opts)
end
end
-- Return the timestamp for the next delayed job if any.
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- The result is guaranteed to be positive, since the
-- ZRANGEBYSCORE command would have return a job otherwise.
return {0, 0, 0, nextTimestamp}
end
end
--[[
Function to recursively move from waitingChildren to failed.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized)
if no pending dependencies.
]]
-- Includes
--[[
Validate and move parent to a wait status (waiting, delayed or prioritized) if needed.
]]
-- Includes
--[[
Move parent to a wait status (wait, prioritized or delayed)
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
local function moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
local parentWaitKey = parentQueueKey .. ":wait"
local parentPausedKey = parentQueueKey .. ":paused"
local parentActiveKey = parentQueueKey .. ":active"
local parentMetaKey = parentQueueKey .. ":meta"
local parentMarkerKey = parentQueueKey .. ":marker"
local jobAttributes = rcall("HMGET", parentKey, "priority", "delay")
local priority = tonumber(jobAttributes[1]) or 0
local delay = tonumber(jobAttributes[2]) or 0
if delay > 0 then
local delayedTimestamp = tonumber(timestamp) + delay
local score = delayedTimestamp * 0x1000
local parentDelayedKey = parentQueueKey .. ":delayed"
rcall("ZADD", parentDelayedKey, score, parentId)
rcall("XADD", parentQueueKey .. ":events", "*", "event", "delayed", "jobId", parentId, "delay",
delayedTimestamp)
addDelayMarkerIfNeeded(parentMarkerKey, parentDelayedKey)
else
if priority == 0 then
local parentTarget, isParentPausedOrMaxed = getTargetQueueList(parentMetaKey, parentActiveKey,
parentWaitKey, parentPausedKey)
addJobInTargetList(parentTarget, parentMarkerKey, "RPUSH", isParentPausedOrMaxed, parentId)
else
local isPausedOrMaxed = isQueuePausedOrMaxed(parentMetaKey, parentActiveKey)
addJobWithPriority(parentMarkerKey, parentQueueKey .. ":prioritized", priority, parentId,
parentQueueKey .. ":pc", isPausedOrMaxed)
end
rcall("XADD", parentQueueKey .. ":events", "*", "event", "waiting", "jobId", parentId, "prev",
"waiting-children")
end
end
local function moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
rcall("ZREM", parentWaitingChildrenKey, parentId)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
end
end
end
local function moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey,
parentId, timestamp)
local doNotHavePendingDependencies = rcall("SCARD", parentDependenciesKey) == 0
if doNotHavePendingDependencies then
moveParentToWaitIfNeeded(parentQueueKey, parentKey, parentId, timestamp)
end
end
local handleChildFailureAndMoveParentToWait = function (parentQueueKey, parentKey, parentId, jobIdKey, timestamp)
if rcall("EXISTS", parentKey) == 1 then
local parentWaitingChildrenKey = parentQueueKey .. ":waiting-children"
local parentDelayedKey = parentQueueKey .. ":delayed"
local parentWaitingChildrenOrDelayedKey
if rcall("ZSCORE", parentWaitingChildrenKey, parentId) then
parentWaitingChildrenOrDelayedKey = parentWaitingChildrenKey
elseif rcall("ZSCORE", parentDelayedKey, parentId) then
parentWaitingChildrenOrDelayedKey = parentDelayedKey
rcall("HSET", parentKey, "delay", 0)
end
if parentWaitingChildrenOrDelayedKey then
rcall("ZREM", parentWaitingChildrenOrDelayedKey, parentId)
local deferredFailure = "child " .. jobIdKey .. " failed"
rcall("HSET", parentKey, "defa", deferredFailure)
moveParentToWait(parentQueueKey, parentKey, parentId, timestamp)
else
if not rcall("ZSCORE", parentQueueKey .. ":failed", parentId) then
local deferredFailure = "child " .. jobIdKey .. " failed"
rcall("HSET", parentKey, "defa", deferredFailure)
end
end
end
end
local moveChildFromDependenciesIfNeeded = function (rawParentData, childKey, failedReason, timestamp)
if rawParentData then
local parentData = cjson.decode(rawParentData)
local parentKey = parentData['queueKey'] .. ':' .. parentData['id']
local parentDependenciesChildrenKey = parentKey .. ":dependencies"
if parentData['fpof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
local parentUnsuccessfulChildrenKey = parentKey .. ":unsuccessful"
rcall("ZADD", parentUnsuccessfulChildrenKey, timestamp, childKey)
handleChildFailureAndMoveParentToWait(
parentData['queueKey'],
parentKey,
parentData['id'],
childKey,
timestamp
)
end
elseif parentData['cpof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
local parentFailedChildrenKey = parentKey .. ":failed"
rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
moveParentToWaitIfNeeded(parentData['queueKey'], parentKey, parentData['id'], timestamp)
end
elseif parentData['idof'] or parentData['rdof'] then
if rcall("SREM", parentDependenciesChildrenKey, childKey) == 1 then
moveParentToWaitIfNoPendingDependencies(parentData['queueKey'], parentDependenciesChildrenKey,
parentKey, parentData['id'], timestamp)
if parentData['idof'] then
local parentFailedChildrenKey = parentKey .. ":failed"
rcall("HSET", parentFailedChildrenKey, childKey, failedReason)
end
end
end
end
end
--[[
Function to remove deduplication key if needed
when a job is moved to completed or failed states.
]]
local function removeDeduplicationKeyIfNeededOnFinalization(prefixKey,
deduplicationId, jobId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local pttl = rcall("PTTL", deduplicationKey)
if pttl == 0 then
return rcall("DEL", deduplicationKey)
end
if pttl == -1 then
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
return rcall("DEL", deduplicationKey)
end
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Functions to remove jobs by max age.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix, maxLimit)
local start = timestamp - maxAge * 1000
local jobIds = rcall("ZREVRANGEBYSCORE", targetSet, start, "-inf", "LIMIT", 0, maxLimit)
for i, jobId in ipairs(jobIds) do
removeJob(jobId, false, prefix, false --[[remove debounce key]])
end
if #jobIds > 0 then
if #jobIds < maxLimit then
rcall("ZREMRANGEBYSCORE", targetSet, "-inf", start)
else
for from, to in batches(#jobIds, 7000) do
rcall("ZREM", targetSet, unpack(jobIds, from, to))
end
end
end
end
--[[
Functions to remove jobs by max count.
]]
-- Includes
local function removeJobsByMaxCount(maxCount, targetSet, prefix)
local start = maxCount
local jobIds = rcall("ZREVRANGE", targetSet, start, -1)
for i, jobId in ipairs(jobIds) do
removeJob(jobId, false, prefix, false --[[remove debounce key]])
end
rcall("ZREMRANGEBYRANK", targetSet, 0, -(maxCount + 1))
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to create a new job from stored dedup-next data
when a deduplicated job with keepLastIfActive finishes.
At most one next job is created per deduplication ID.
Multiple triggers while active overwrite the dedup-next data,
so only the latest data is used.
]]
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to set the deduplication key for a job.
Uses TTL from deduplication opts if provided.
]]
local function setDeduplicationKey(deduplicationKey, jobId, deduplicationOpts)
local ttl = deduplicationOpts and deduplicationOpts['ttl']
if ttl and ttl > 0 then
rcall('SET', deduplicationKey, jobId, 'PX', ttl)
else
rcall('SET', deduplicationKey, jobId)
end
end
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function requeueDeduplicatedJob(prefix, deduplicationId, eventStreamKey,
metaKey, activeKey, waitKey, pausedKey, markerKey, prioritizedKey,
priorityCounterKey, delayedKey, timestamp)
local deduplicationNextKey = prefix .. "dn:" .. deduplicationId
if rcall("EXISTS", deduplicationNextKey) == 1 then
local nextData = rcall("HMGET", deduplicationNextKey,
"name", "data", "opts", "pk", "pd", "pdk", "rjk", "jid")
-- Always increment the counter to keep it monotonic
local nextId = rcall("INCR", prefix .. "id") .. ""
local storedJobId = nextData[8] -- index 8 = "jid" (8th field in the HMGET call above)
local newJobId
if storedJobId then
newJobId = storedJobId
else
newJobId = nextId
end
local newJobIdKey = prefix .. newJobId
local newOpts = cjson.decode(nextData[3])
local deduplicationKey = prefix .. "de:" .. deduplicationId
local parentKey = nextData[4] or nil
local parentData = nextData[5] or nil
local parentDependenciesKey = nextData[6] or nil
local repeatJobKey = nextData[7] or nil
-- Set dedup key for the new job (without TTL when keepLastIfActive,
-- so the key outlives the job's active duration)
local deOpts = newOpts['de']
if deOpts and deOpts['keepLastIfActive'] then
rcall('SET', deduplicationKey, newJobId)
else
setDeduplicationKey(deduplicationKey, newJobId, deOpts)
end
-- Store and enqueue using the shared helper (handles priority/lifo/delayed)
local maxEvents = getOrSetMaxEvents(metaKey)
storeAndEnqueueJob(eventStreamKey, newJobIdKey, newJobId, nextData[1], nextData[2],
newOpts, timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
-- Register as child dependency if the job has a parent
if parentDependenciesKey then
rcall("SADD", parentDependenciesKey, newJobIdKey)
end
-- Only delete the dedup-next hash after the job is fully created,
-- so that if any step above errors, the data is not permanently lost.
rcall("DEL", deduplicationNextKey)
end
end
--[[
Function to trim events, default 10000.
]]
-- Includes
local function trimEvents(metaKey, eventStreamKey)
local maxEvents = getOrSetMaxEvents(metaKey)
if maxEvents then
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", maxEvents)
else
rcall("XTRIM", eventStreamKey, "MAXLEN", "~", 10000)
end
end
--[[
Validate and move or add dependencies to parent.
]]
-- Includes
local function updateParentDepsIfNeeded(parentKey, parentQueueKey, parentDependenciesKey,
parentId, jobIdKey, returnvalue, timestamp )
local processedSet = parentKey .. ":processed"
rcall("HSET", processedSet, jobIdKey, returnvalue)
moveParentToWaitIfNoPendingDependencies(parentQueueKey, parentDependenciesKey, parentKey, parentId, timestamp)
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local jobIdKey = KEYS[12]
if rcall("EXISTS", jobIdKey) == 1 then -- Make sure job exists
-- Make sure it does not have pending dependencies
-- It must happen before removing lock
if ARGV[5] == "completed" then
if rcall("SCARD", jobIdKey .. ":dependencies") ~= 0 then
return -4
end
if rcall("ZCARD", jobIdKey .. ":unsuccessful") ~= 0 then
return -9
end
end
local opts = cmsgpack.unpack(ARGV[8])
local token = opts['token']
local errorCode = removeLock(jobIdKey, KEYS[5], token, ARGV[1])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobIdKey, ARGV[9]);
local attempts = opts['attempts']
local maxMetricsSize = opts['maxMetricsSize']
local maxCount = opts['keepJobs']['count']
local maxAge = opts['keepJobs']['age']
local maxLimit = opts['keepJobs']['limit'] or 1000
local jobAttributes = rcall("HMGET", jobIdKey, "parentKey", "parent", "deid")
local parentKey = jobAttributes[1] or ""
local parentId = ""
local parentQueueKey = ""
if jobAttributes[2] then -- TODO: need to revisit this logic if it's still needed
local jsonDecodedParent = cjson.decode(jobAttributes[2])
parentId = jsonDecodedParent['id']
parentQueueKey = jsonDecodedParent['queueKey']
end
local jobId = ARGV[1]
local timestamp = ARGV[2]
-- Remove from active list (if not active we shall return error)
local numRemovedElements = rcall("LREM", KEYS[2], -1, jobId)
if (numRemovedElements < 1) then
return -3
end
local eventStreamKey = KEYS[4]
local metaKey = KEYS[9]
-- Trim events before emitting them to avoid trimming events emitted in this script
trimEvents(metaKey, eventStreamKey)
local prefix = ARGV[7]
removeDeduplicationKeyIfNeededOnFinalization(prefix, jobAttributes[3], jobId)
-- Check if there is requeue data for this dedup ID (keepLastIfActive mode)
if jobAttributes[3] then
requeueDeduplicatedJob(prefix, jobAttributes[3], eventStreamKey,
metaKey, KEYS[2], KEYS[1], KEYS[8], KEYS[14], KEYS[3], KEYS[10],
KEYS[7], timestamp)
end
-- If job has a parent we need to
-- 1) remove this job id from parents dependencies
-- 2) move the job Id to parent "processed" set
-- 3) push the results into parent "results" list
-- 4) if parent's dependencies is empty, then move parent to "wait/paused". Note it may be a different queue!.
if parentId == "" and parentKey ~= "" then
parentId = getJobIdFromKey(parentKey)
parentQueueKey = getJobKeyPrefix(parentKey, ":" .. parentId)
end
if parentId ~= "" then
if ARGV[5] == "completed" then
local dependenciesSet = parentKey .. ":dependencies"
if rcall("SREM", dependenciesSet, jobIdKey) == 1 then
updateParentDepsIfNeeded(parentKey, parentQueueKey, dependenciesSet, parentId, jobIdKey, ARGV[4],
timestamp)
end
else
moveChildFromDependenciesIfNeeded(jobAttributes[2], jobIdKey, ARGV[4], timestamp)
end
end
local attemptsMade = rcall("HINCRBY", jobIdKey, "atm", 1)
-- Remove job?
if maxCount ~= 0 then
local targetSet = KEYS[11]
-- Add to complete/failed set
rcall("ZADD", targetSet, timestamp, jobId)
rcall("HSET", jobIdKey, ARGV[3], ARGV[4], "finishedOn", timestamp)
-- "returnvalue" / "failedReason" and "finishedOn"
if ARGV[5] == "failed" then
rcall("HDEL", jobIdKey, "defa")
end
-- Remove old jobs?
if maxAge ~= nil then
removeJobsByMaxAge(timestamp, maxAge, targetSet, prefix, maxLimit)
end
if maxCount ~= nil and maxCount > 0 then
removeJobsByMaxCount(maxCount, targetSet, prefix)
end
else
removeJobKeys(jobIdKey)
if parentKey ~= "" then
-- TODO: when a child is removed when finished, result or failure in parent
-- must not be deleted, those value references should be deleted when the parent
-- is deleted
removeParentDependencyKey(jobIdKey, false, parentKey, jobAttributes[3])
end
end
rcall("XADD", eventStreamKey, "*", "event", ARGV[5], "jobId", jobId, ARGV[3], ARGV[4], "prev", "active")
if ARGV[5] == "failed" then
if tonumber(attemptsMade) >= tonumber(attempts) then
rcall("XADD", eventStreamKey, "*", "event", "retries-exhausted", "jobId", jobId, "attemptsMade",
attemptsMade)
end
end
-- Collect metrics
if maxMetricsSize ~= "" then
collectMetrics(KEYS[13], KEYS[13] .. ':data', maxMetricsSize, timestamp)
end
-- Try to get next job to avoid an extra roundtrip if the queue is not closing,
-- and not rate limited.
if (ARGV[6] == "1") then
local result = fetchNextJob(KEYS[1], KEYS[2], KEYS[3], eventStreamKey,
KEYS[6], KEYS[7], KEYS[8], metaKey, KEYS[10], KEYS[14], prefix,
timestamp, opts)
if result then
return result
end
end
local waitLen = rcall("LLEN", KEYS[1])
if waitLen == 0 then
local activeLen = rcall("LLEN", KEYS[2])
if activeLen == 0 then
local prioritizedLen = rcall("ZCARD", KEYS[3])
if prioritizedLen == 0 then
rcall("XADD", eventStreamKey, "*", "event", "drained")
end
end
end
return 0
else
return -1
end
`;Og.moveToFinished={name:"moveToFinished",content:e1e,keys:14}});var SG=h(Cg=>{"use strict";Object.defineProperty(Cg,"__esModule",{value:!0});Cg.moveToWaitingChildren=void 0;var t1e=`--[[
Moves job from active to waiting children set.
Input:
KEYS[1] active key
KEYS[2] wait-children key
KEYS[3] job key
KEYS[4] job dependencies key
KEYS[5] job unsuccessful key
KEYS[6] stalled key
KEYS[7] events key
ARGV[1] token
ARGV[2] child key
ARGV[3] timestamp
ARGV[4] jobId
ARGV[5] prefix
Output:
0 - OK
1 - There are not pending dependencies.
-1 - Missing job.
-2 - Missing lock
-3 - Job not in active set
-9 - Job has failed children
]]
local rcall = redis.call
local activeKey = KEYS[1]
local waitingChildrenKey = KEYS[2]
local jobKey = KEYS[3]
local jobDependenciesKey = KEYS[4]
local jobUnsuccessfulKey = KEYS[5]
local stalledKey = KEYS[6]
local eventStreamKey = KEYS[7]
local token = ARGV[1]
local timestamp = ARGV[3]
local jobId = ARGV[4]
--- Includes
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
local function removeJobFromActive(activeKey, stalledKey, jobKey, jobId,
token)
local errorCode = removeLock(jobKey, stalledKey, token, jobId)
if errorCode < 0 then
return errorCode
end
local numRemovedElements = rcall("LREM", activeKey, -1, jobId)
if numRemovedElements < 1 then
return -3
end
return 0
end
local function moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
local errorCode = removeJobFromActive(activeKey, stalledKey, jobKey, jobId, token)
if errorCode < 0 then
return errorCode
end
local score = tonumber(timestamp)
rcall("ZADD", waitingChildrenKey, score, jobId)
rcall("XADD", eventStreamKey, "*", "event", "waiting-children", "jobId", jobId, 'prev', 'active')
return 0
end
if rcall("EXISTS", jobKey) == 1 then
if rcall("ZCARD", jobUnsuccessfulKey) ~= 0 then
return -9
else
if ARGV[2] ~= "" then
if rcall("SISMEMBER", jobDependenciesKey, ARGV[2]) ~= 0 then
return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
end
return 1
else
if rcall("SCARD", jobDependenciesKey) ~= 0 then
return moveToWaitingChildren(activeKey, waitingChildrenKey, stalledKey, eventStreamKey,
jobKey, jobId, timestamp, token)
end
return 1
end
end
end
return -1
`;Cg.moveToWaitingChildren={name:"moveToWaitingChildren",content:t1e,keys:7}});var xG=h(jg=>{"use strict";Object.defineProperty(jg,"__esModule",{value:!0});jg.obliterate=void 0;var r1e=`--[[
Completely obliterates a queue and all of its contents
This command completely destroys a queue including all of its jobs, current or past
leaving no trace of its existence. Since this script needs to iterate to find all the job
keys, consider that this call may be slow for very large queues.
The queue needs to be "paused" or it will return an error
If the queue has currently active jobs then the script by default will return error,
however this behaviour can be overridden using the 'force' option.
Input:
KEYS[1] meta
KEYS[2] base
ARGV[1] count
ARGV[2] force
]]
local maxCount = tonumber(ARGV[1])
local baseKey = KEYS[2]
local rcall = redis.call
-- Includes
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to remove job.
]]
-- Includes
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local function removeJob(jobId, hard, baseKey, shouldRemoveDeduplicationKey)
local jobKey = baseKey .. jobId
removeParentDependencyKey(jobKey, hard, nil, baseKey)
if shouldRemoveDeduplicationKey then
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(baseKey, jobId, deduplicationId)
end
removeJobKeys(jobKey)
end
local function removeJobs(keys, hard, baseKey, max)
for i, key in ipairs(keys) do
removeJob(key, hard, baseKey, true --[[remove debounce key]])
end
return max - #keys
end
--[[
Functions to remove jobs.
]]
-- Includes
--[[
Function to filter out jobs to ignore from a table.
]]
local function filterOutJobsToIgnore(jobs, jobsToIgnore)
local filteredJobs = {}
for i = 1, #jobs do
if not jobsToIgnore[jobs[i]] then
table.insert(filteredJobs, jobs[i])
end
end
return filteredJobs
end
local function getListItems(keyName, max)
return rcall('LRANGE', keyName, 0, max - 1)
end
local function removeListJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getListItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
rcall("LTRIM", keyName, #jobs, -1)
return count
end
-- Includes
--[[
Function to loop in batches.
Just a bit of warning, some commands as ZREM
could receive a maximum of 7000 parameters per call.
]]
local function batches(n, batchSize)
local i = 0
return function()
local from = i * batchSize + 1
i = i + 1
if (from <= n) then
local to = math.min(from + batchSize - 1, n)
return from, to
end
end
end
--[[
Function to get ZSet items.
]]
local function getZSetItems(keyName, max)
return rcall('ZRANGE', keyName, 0, max - 1)
end
local function removeZSetJobs(keyName, hard, baseKey, max, jobsToIgnore)
local jobs = getZSetItems(keyName, max)
if jobsToIgnore then
jobs = filterOutJobsToIgnore(jobs, jobsToIgnore)
end
local count = removeJobs(jobs, hard, baseKey, max)
if(#jobs > 0) then
for from, to in batches(#jobs, 7000) do
rcall("ZREM", keyName, unpack(jobs, from, to))
end
end
return count
end
local function removeLockKeys(keys)
for i, key in ipairs(keys) do
rcall("DEL", baseKey .. key .. ':lock')
end
end
-- 1) Check if paused, if not return with error.
if rcall("HEXISTS", KEYS[1], "paused") ~= 1 then
return -1 -- Error, NotPaused
end
-- 2) Check if there are active jobs, if there are and not "force" return error.
local activeKey = baseKey .. 'active'
local activeJobs = getListItems(activeKey, maxCount)
if (#activeJobs > 0) then
if(ARGV[2] == "") then
return -2 -- Error, ExistActiveJobs
end
end
removeLockKeys(activeJobs)
maxCount = removeJobs(activeJobs, true, baseKey, maxCount)
rcall("LTRIM", activeKey, #activeJobs, -1)
if(maxCount <= 0) then
return 1
end
local delayedKey = baseKey .. 'delayed'
maxCount = removeZSetJobs(delayedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local repeatKey = baseKey .. 'repeat'
local repeatJobsIds = getZSetItems(repeatKey, maxCount)
for i, key in ipairs(repeatJobsIds) do
local jobKey = repeatKey .. ":" .. key
rcall("DEL", jobKey)
end
if(#repeatJobsIds > 0) then
for from, to in batches(#repeatJobsIds, 7000) do
rcall("ZREM", repeatKey, unpack(repeatJobsIds, from, to))
end
end
maxCount = maxCount - #repeatJobsIds
if(maxCount <= 0) then
return 1
end
local completedKey = baseKey .. 'completed'
maxCount = removeZSetJobs(completedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local pausedKey = baseKey .. 'paused'
maxCount = removeListJobs(pausedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local prioritizedKey = baseKey .. 'prioritized'
maxCount = removeZSetJobs(prioritizedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
local failedKey = baseKey .. 'failed'
maxCount = removeZSetJobs(failedKey, true, baseKey, maxCount)
if(maxCount <= 0) then
return 1
end
if(maxCount > 0) then
rcall("DEL",
baseKey .. 'events',
baseKey .. 'delay',
baseKey .. 'stalled-check',
baseKey .. 'stalled',
baseKey .. 'id',
baseKey .. 'pc',
baseKey .. 'marker',
baseKey .. 'meta',
baseKey .. 'metrics:completed',
baseKey .. 'metrics:completed:data',
baseKey .. 'metrics:failed',
baseKey .. 'metrics:failed:data')
return 0
else
return 1
end
`;jg.obliterate={name:"obliterate",content:r1e,keys:2}});var wG=h(Pg=>{"use strict";Object.defineProperty(Pg,"__esModule",{value:!0});Pg.paginate=void 0;var n1e=`--[[
Paginate a set or hash
Input:
KEYS[1] key pointing to the set or hash to be paginated.
ARGV[1] page start offset
ARGV[2] page end offset (-1 for all the elements)
ARGV[3] cursor
ARGV[4] offset
ARGV[5] max iterations
ARGV[6] fetch jobs?
Output:
[cursor, offset, items, numItems]
]]
local rcall = redis.call
-- Includes
--[[
Function to achieve pagination for a set or hash.
This function simulates pagination in the most efficient way possible
for a set using sscan or hscan.
The main limitation is that sets are not order preserving, so the
pagination is not stable. This means that if the set is modified
between pages, the same element may appear in different pages.
]] -- Maximum number of elements to be returned by sscan per iteration.
local maxCount = 100
-- Finds the cursor, and returns the first elements available for the requested page.
local function findPage(key, command, pageStart, pageSize, cursor, offset,
maxIterations, fetchJobs)
local items = {}
local jobs = {}
local iterations = 0
repeat
-- Iterate over the set using sscan/hscan.
local result = rcall(command, key, cursor, "COUNT", maxCount)
cursor = result[1]
local members = result[2]
local step = 1
if command == "HSCAN" then
step = 2
end
if #members == 0 then
-- If the result is empty, we can return the result.
return cursor, offset, items, jobs
end
local chunkStart = offset
local chunkEnd = offset + #members / step
local pageEnd = pageStart + pageSize
if chunkEnd < pageStart then
-- If the chunk is before the page, we can skip it.
offset = chunkEnd
elseif chunkStart > pageEnd then
-- If the chunk is after the page, we can return the result.
return cursor, offset, items, jobs
else
-- If the chunk is overlapping the page, we need to add the elements to the result.
for i = 1, #members, step do
if offset >= pageEnd then
return cursor, offset, items, jobs
end
if offset >= pageStart then
local index = #items + 1
if fetchJobs ~= nil then
jobs[#jobs+1] = rcall("HGETALL", members[i])
end
if step == 2 then
items[index] = {members[i], members[i + 1]}
else
items[index] = members[i]
end
end
offset = offset + 1
end
end
iterations = iterations + 1
until cursor == "0" or iterations >= maxIterations
return cursor, offset, items, jobs
end
local key = KEYS[1]
local scanCommand = "SSCAN"
local countCommand = "SCARD"
local type = rcall("TYPE", key)["ok"]
if type == "none" then
return {0, 0, {}, 0}
elseif type == "hash" then
scanCommand = "HSCAN"
countCommand = "HLEN"
elseif type ~= "set" then
return
redis.error_reply("Pagination is only supported for sets and hashes.")
end
local numItems = rcall(countCommand, key)
local startOffset = tonumber(ARGV[1])
local endOffset = tonumber(ARGV[2])
if endOffset == -1 then
endOffset = numItems
end
local pageSize = (endOffset - startOffset) + 1
local cursor, offset, items, jobs = findPage(key, scanCommand, startOffset,
pageSize, ARGV[3], tonumber(ARGV[4]),
tonumber(ARGV[5]), ARGV[6])
return {cursor, offset, items, numItems, jobs}
`;Pg.paginate={name:"paginate",content:n1e,keys:1}});var _G=h(Kg=>{"use strict";Object.defineProperty(Kg,"__esModule",{value:!0});Kg.pause=void 0;var i1e=`--[[
Pauses or resumes a queue globally.
Input:
KEYS[1] 'wait' or 'paused'
KEYS[2] 'paused' or 'wait'
KEYS[3] 'meta'
KEYS[4] 'prioritized'
KEYS[5] events stream key
KEYS[6] 'delayed'
KEYS[7] 'marker'
ARGV[1] 'paused' or 'resumed'
Event:
publish paused or resumed event.
]]
local rcall = redis.call
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
local markerKey = KEYS[7]
local hasJobs = rcall("EXISTS", KEYS[1]) == 1
--TODO: check this logic to be reused when changing a delay
if hasJobs then rcall("RENAME", KEYS[1], KEYS[2]) end
if ARGV[1] == "paused" then
rcall("HSET", KEYS[3], "paused", 1)
rcall("DEL", markerKey)
else
rcall("HDEL", KEYS[3], "paused")
if hasJobs or rcall("ZCARD", KEYS[4]) > 0 then
-- Add marker if there are waiting or priority jobs
rcall("ZADD", markerKey, 0, "0")
else
addDelayMarkerIfNeeded(markerKey, KEYS[6])
end
end
rcall("XADD", KEYS[5], "*", "event", ARGV[1]);
`;Kg.pause={name:"pause",content:i1e,keys:7}});var IG=h(Dg=>{"use strict";Object.defineProperty(Dg,"__esModule",{value:!0});Dg.promote=void 0;var s1e=`--[[
Promotes a job that is currently "delayed" to the "waiting" state
Input:
KEYS[1] 'delayed'
KEYS[2] 'wait'
KEYS[3] 'paused'
KEYS[4] 'meta'
KEYS[5] 'prioritized'
KEYS[6] 'active'
KEYS[7] 'pc' priority counter
KEYS[8] 'event stream'
KEYS[9] 'marker'
ARGV[1] queue.toKey('')
ARGV[2] jobId
Output:
0 - OK
-3 - Job not in delayed zset.
Events:
'waiting'
]]
local rcall = redis.call
local jobId = ARGV[2]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
if rcall("ZREM", KEYS[1], jobId) == 1 then
local jobKey = ARGV[1] .. jobId
local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
local metaKey = KEYS[4]
local markerKey = KEYS[9]
-- Remove delayed "marker" from the wait list if there is any.
-- Since we are adding a job we do not need the marker anymore.
-- Markers in waitlist DEPRECATED in v5: Remove in v6.
local target, isPausedOrMaxed = getTargetQueueList(metaKey, KEYS[6], KEYS[2], KEYS[3])
local marker = rcall("LINDEX", target, 0)
if marker and string.sub(marker, 1, 2) == "0:" then rcall("LPOP", target) end
if priority == 0 then
-- LIFO or FIFO
addJobInTargetList(target, markerKey, "LPUSH", isPausedOrMaxed, jobId)
else
addJobWithPriority(markerKey, KEYS[5], priority, jobId, KEYS[7], isPausedOrMaxed)
end
rcall("XADD", KEYS[8], "*", "event", "waiting", "jobId", jobId, "prev",
"delayed");
rcall("HSET", jobKey, "delay", 0)
return 0
else
return -3
end
`;Dg.promote={name:"promote",content:s1e,keys:9}});var TG=h(Mg=>{"use strict";Object.defineProperty(Mg,"__esModule",{value:!0});Mg.releaseLock=void 0;var o1e=`--[[
Release lock
Input:
KEYS[1] 'lock',
ARGV[1] token
ARGV[2] lock duration in milliseconds
Output:
"OK" if lock extended successfully.
]]
local rcall = redis.call
if rcall("GET", KEYS[1]) == ARGV[1] then
return rcall("DEL", KEYS[1])
else
return 0
end
`;Mg.releaseLock={name:"releaseLock",content:o1e,keys:1}});var kG=h(Ng=>{"use strict";Object.defineProperty(Ng,"__esModule",{value:!0});Ng.removeChildDependency=void 0;var a1e=`--[[
Break parent-child dependency by removing
child reference from parent
Input:
KEYS[1] 'key' prefix,
ARGV[1] job key
ARGV[2] parent key
Output:
0 - OK
1 - There is not relationship.
-1 - Missing job key
-5 - Missing parent key
]]
local rcall = redis.call
local jobKey = ARGV[1]
local parentKey = ARGV[2]
-- Includes
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
if rcall("EXISTS", jobKey) ~= 1 then return -1 end
if rcall("EXISTS", parentKey) ~= 1 then return -5 end
if removeParentDependencyKey(jobKey, false, parentKey, KEYS[1], nil) then
rcall("HDEL", jobKey, "parentKey", "parent")
return 0
else
return 1
end`;Ng.removeChildDependency={name:"removeChildDependency",content:a1e,keys:1}});var AG=h(Lg=>{"use strict";Object.defineProperty(Lg,"__esModule",{value:!0});Lg.removeDeduplicationKey=void 0;var c1e=`--[[
Remove deduplication key if it matches the job id.
Input:
KEYS[1] deduplication key
ARGV[1] job id
Output:
0 - false
1 - true
]]
local rcall = redis.call
local deduplicationKey = KEYS[1]
local jobId = ARGV[1]
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
return rcall("DEL", deduplicationKey)
end
return 0
`;Lg.removeDeduplicationKey={name:"removeDeduplicationKey",content:c1e,keys:1}});var RG=h(qg=>{"use strict";Object.defineProperty(qg,"__esModule",{value:!0});qg.removeJob=void 0;var l1e=`--[[
Remove a job from all the statuses it may be in as well as all its data.
In order to be able to remove a job, it cannot be active.
Input:
KEYS[1] jobKey
KEYS[2] repeat key
ARGV[1] jobId
ARGV[2] remove children
ARGV[3] queue prefix
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to recursively check if there are no locks
on the jobs to be removed.
returns:
boolean
]]
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
local function isLocked( prefix, jobId, removeChildren)
local jobKey = prefix .. jobId;
-- Check if this job is locked
local lockKey = jobKey .. ':lock'
local lock = rcall("GET", lockKey)
if not lock then
if removeChildren == "1" then
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if (#dependencies > 0) then
for i, childJobKey in ipairs(dependencies) do
-- We need to get the jobId for this job.
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
local result = isLocked( childJobPrefix, childJobId, removeChildren )
if result then
return true
end
end
end
end
return false
end
return true
end
--[[
Remove a job from all the statuses it may be in as well as all its data,
including its children. Active children can be ignored.
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove from any state.
returns:
prev state
]]
local function removeJobFromAnyState( prefix, jobId)
-- We start with the ZSCORE checks, since they have O(1) complexity
if rcall("ZSCORE", prefix .. "completed", jobId) then
rcall("ZREM", prefix .. "completed", jobId)
return "completed"
elseif rcall("ZSCORE", prefix .. "waiting-children", jobId) then
rcall("ZREM", prefix .. "waiting-children", jobId)
return "waiting-children"
elseif rcall("ZSCORE", prefix .. "delayed", jobId) then
rcall("ZREM", prefix .. "delayed", jobId)
return "delayed"
elseif rcall("ZSCORE", prefix .. "failed", jobId) then
rcall("ZREM", prefix .. "failed", jobId)
return "failed"
elseif rcall("ZSCORE", prefix .. "prioritized", jobId) then
rcall("ZREM", prefix .. "prioritized", jobId)
return "prioritized"
-- We remove only 1 element from the list, since we assume they are not added multiple times
elseif rcall("LREM", prefix .. "wait", 1, jobId) == 1 then
return "wait"
elseif rcall("LREM", prefix .. "paused", 1, jobId) == 1 then
return "paused"
elseif rcall("LREM", prefix .. "active", 1, jobId) == 1 then
return "active"
end
return "unknown"
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
local removeJobChildren
local removeJobWithChildren
removeJobChildren = function(prefix, jobKey, options)
-- Check if this job has children
-- If so, we are going to try to remove the children recursively in a depth-first way
-- because if some job is locked, we must exit with an error.
if not options.ignoreProcessed then
local processed = rcall("HGETALL", jobKey .. ":processed")
if #processed > 0 then
for i = 1, #processed, 2 do
local childJobId = getJobIdFromKey(processed[i])
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local failed = rcall("HGETALL", jobKey .. ":failed")
if #failed > 0 then
for i = 1, #failed, 2 do
local childJobId = getJobIdFromKey(failed[i])
local childJobPrefix = getJobKeyPrefix(failed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local unsuccessful = rcall("ZRANGE", jobKey .. ":unsuccessful", 0, -1)
if #unsuccessful > 0 then
for i = 1, #unsuccessful, 1 do
local childJobId = getJobIdFromKey(unsuccessful[i])
local childJobPrefix = getJobKeyPrefix(unsuccessful[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if #dependencies > 0 then
for i, childJobKey in ipairs(dependencies) do
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
removeJobWithChildren = function(prefix, jobId, parentKey, options)
local jobKey = prefix .. jobId
if options.ignoreLocked then
if isLocked(prefix, jobId) then
return
end
end
-- Check if job is in the failed zset
local failedSet = prefix .. "failed"
if not (options.ignoreProcessed and rcall("ZSCORE", failedSet, jobId)) then
removeParentDependencyKey(jobKey, false, parentKey, nil)
if options.removeChildren then
removeJobChildren(prefix, jobKey, options)
end
local prev = removeJobFromAnyState(prefix, jobId)
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(prefix, jobId, deduplicationId)
if removeJobKeys(jobKey) > 0 then
local metaKey = prefix .. "meta"
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed",
"jobId", jobId, "prev", prev)
end
end
end
local jobId = ARGV[1]
local shouldRemoveChildren = ARGV[2]
local prefix = ARGV[3]
local jobKey = KEYS[1]
local repeatKey = KEYS[2]
if isJobSchedulerJob(jobId, jobKey, repeatKey) then
return -8
end
if not isLocked(prefix, jobId, shouldRemoveChildren) then
local options = {
removeChildren = shouldRemoveChildren == "1",
ignoreProcessed = false,
ignoreLocked = false
}
removeJobWithChildren(prefix, jobId, nil, options)
return 1
end
return 0
`;qg.removeJob={name:"removeJob",content:l1e,keys:2}});var OG=h(Fg=>{"use strict";Object.defineProperty(Fg,"__esModule",{value:!0});Fg.removeJobScheduler=void 0;var u1e=`--[[
Removes a job scheduler and its next scheduled job.
Input:
KEYS[1] job schedulers key
KEYS[2] delayed jobs key
KEYS[3] events key
ARGV[1] job scheduler id
ARGV[2] prefix key
Output:
0 - OK
1 - Missing repeat job
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
local jobSchedulerId = ARGV[1]
local prefix = ARGV[2]
local millis = rcall("ZSCORE", KEYS[1], jobSchedulerId)
if millis then
-- Delete next programmed job.
local delayedJobId = "repeat:" .. jobSchedulerId .. ":" .. millis
if(rcall("ZREM", KEYS[2], delayedJobId) == 1) then
removeJobKeys(prefix .. delayedJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", delayedJobId, "prev", "delayed")
end
end
if(rcall("ZREM", KEYS[1], jobSchedulerId) == 1) then
rcall("DEL", KEYS[1] .. ":" .. jobSchedulerId)
return 0
end
return 1
`;Fg.removeJobScheduler={name:"removeJobScheduler",content:u1e,keys:3}});var CG=h($g=>{"use strict";Object.defineProperty($g,"__esModule",{value:!0});$g.removeOrphanedJobs=void 0;var d1e=`--[[
Removes orphaned job keys that exist in Redis but are not referenced
in any queue state set. Checks each candidate atomically.
Input:
KEYS[1] base prefix key including trailing colon (e.g. bull:queueName:)
ARGV[1] number of state key suffixes
ARGV[2 .. 1+N] state key suffixes (e.g. active, wait, completed, ...)
ARGV[2+N] number of job sub-key suffixes
ARGV[3+N .. 2+N+M] job sub-key suffixes (e.g. logs, dependencies, ...)
ARGV[3+N+M .. end] candidate job IDs to check
Output:
number of removed jobs
]]
local rcall = redis.call
local basePrefix = KEYS[1]
-- Parse state key suffixes and cache their full key names + types.
local stateKeyCount = tonumber(ARGV[1])
local stateKeys = {}
local stateKeyTypes = {}
for i = 1, stateKeyCount do
local fullKey = basePrefix .. ARGV[1 + i]
stateKeys[i] = fullKey
stateKeyTypes[i] = rcall('TYPE', fullKey)['ok']
end
-- Parse job sub-key suffixes.
local subKeyCountIdx = 2 + stateKeyCount
local subKeyCount = tonumber(ARGV[subKeyCountIdx])
local subKeySuffixes = {}
for i = 1, subKeyCount do
subKeySuffixes[i] = ARGV[subKeyCountIdx + i]
end
-- Process candidate job IDs.
local candidateStart = subKeyCountIdx + subKeyCount + 1
local removedCount = 0
for c = candidateStart, #ARGV do
local jobId = ARGV[c]
local found = false
for i = 1, stateKeyCount do
local kt = stateKeyTypes[i]
if kt == 'list' then
if rcall('LPOS', stateKeys[i], jobId) then
found = true
break
end
elseif kt == 'zset' then
if rcall('ZSCORE', stateKeys[i], jobId) then
found = true
break
end
elseif kt == 'set' then
if rcall('SISMEMBER', stateKeys[i], jobId) == 1 then
found = true
break
end
end
end
if not found then
local jobKey = basePrefix .. jobId
local keysToDelete = { jobKey }
for _, suffix in ipairs(subKeySuffixes) do
keysToDelete[#keysToDelete + 1] = jobKey .. ':' .. suffix
end
rcall('DEL', unpack(keysToDelete))
removedCount = removedCount + 1
end
end
return removedCount
`;$g.removeOrphanedJobs={name:"removeOrphanedJobs",content:d1e,keys:1}});var jG=h(Ug=>{"use strict";Object.defineProperty(Ug,"__esModule",{value:!0});Ug.removeRepeatable=void 0;var p1e=`--[[
Removes a repeatable job
Input:
KEYS[1] repeat jobs key
KEYS[2] delayed jobs key
KEYS[3] events key
ARGV[1] old repeat job id
ARGV[2] options concat
ARGV[3] repeat job key
ARGV[4] prefix key
Output:
0 - OK
1 - Missing repeat job
Events:
'removed'
]]
local rcall = redis.call
local millis = rcall("ZSCORE", KEYS[1], ARGV[2])
-- Includes
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
-- legacy removal TODO: remove in next breaking change
if millis then
-- Delete next programmed job.
local repeatJobId = ARGV[1] .. millis
if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
removeJobKeys(ARGV[4] .. repeatJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed");
end
end
if(rcall("ZREM", KEYS[1], ARGV[2]) == 1) then
return 0
end
-- new removal
millis = rcall("ZSCORE", KEYS[1], ARGV[3])
if millis then
-- Delete next programmed job.
local repeatJobId = "repeat:" .. ARGV[3] .. ":" .. millis
if(rcall("ZREM", KEYS[2], repeatJobId) == 1) then
removeJobKeys(ARGV[4] .. repeatJobId)
rcall("XADD", KEYS[3], "*", "event", "removed", "jobId", repeatJobId, "prev", "delayed")
end
end
if(rcall("ZREM", KEYS[1], ARGV[3]) == 1) then
rcall("DEL", KEYS[1] .. ":" .. ARGV[3])
return 0
end
return 1
`;Ug.removeRepeatable={name:"removeRepeatable",content:p1e,keys:3}});var PG=h(Jg=>{"use strict";Object.defineProperty(Jg,"__esModule",{value:!0});Jg.removeUnprocessedChildren=void 0;var f1e=`--[[
Remove a job from all the statuses it may be in as well as all its data.
In order to be able to remove a job, it cannot be active.
Input:
KEYS[1] jobKey
KEYS[2] meta key
ARGV[1] prefix
ARGV[2] jobId
Events:
'removed' for every children removed
]]
-- Includes
--[[
Remove a job from all the statuses it may be in as well as all its data,
including its children. Active children can be ignored.
Events:
'removed'
]]
local rcall = redis.call
-- Includes
--[[
Functions to destructure job key.
Just a bit of warning, these functions may be a bit slow and affect performance significantly.
]]
local getJobIdFromKey = function (jobKey)
return string.match(jobKey, ".*:(.*)")
end
local getJobKeyPrefix = function (jobKey, jobId)
return string.sub(jobKey, 0, #jobKey - #jobId)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check if the job belongs to a job scheduler and
current delayed job matches with jobId
]]
local function isJobSchedulerJob(jobId, jobKey, jobSchedulersKey)
local repeatJobKey = rcall("HGET", jobKey, "rjk")
if repeatJobKey then
local prevMillis = rcall("ZSCORE", jobSchedulersKey, repeatJobKey)
if prevMillis then
local currentDelayedJobId = "repeat:" .. repeatJobKey .. ":" .. prevMillis
return jobId == currentDelayedJobId
end
end
return false
end
--[[
Function to remove deduplication key if needed
when a job is being removed.
]]
local function removeDeduplicationKeyIfNeededOnRemoval(prefixKey,
jobId, deduplicationId)
if deduplicationId then
local deduplicationKey = prefixKey .. "de:" .. deduplicationId
local currentJobId = rcall('GET', deduplicationKey)
if currentJobId and currentJobId == jobId then
rcall("DEL", deduplicationKey)
-- Also clean up any pending dedup-next data for this dedup ID
rcall("DEL", prefixKey .. "dn:" .. deduplicationId)
return 1
end
end
end
--[[
Function to remove from any state.
returns:
prev state
]]
local function removeJobFromAnyState( prefix, jobId)
-- We start with the ZSCORE checks, since they have O(1) complexity
if rcall("ZSCORE", prefix .. "completed", jobId) then
rcall("ZREM", prefix .. "completed", jobId)
return "completed"
elseif rcall("ZSCORE", prefix .. "waiting-children", jobId) then
rcall("ZREM", prefix .. "waiting-children", jobId)
return "waiting-children"
elseif rcall("ZSCORE", prefix .. "delayed", jobId) then
rcall("ZREM", prefix .. "delayed", jobId)
return "delayed"
elseif rcall("ZSCORE", prefix .. "failed", jobId) then
rcall("ZREM", prefix .. "failed", jobId)
return "failed"
elseif rcall("ZSCORE", prefix .. "prioritized", jobId) then
rcall("ZREM", prefix .. "prioritized", jobId)
return "prioritized"
-- We remove only 1 element from the list, since we assume they are not added multiple times
elseif rcall("LREM", prefix .. "wait", 1, jobId) == 1 then
return "wait"
elseif rcall("LREM", prefix .. "paused", 1, jobId) == 1 then
return "paused"
elseif rcall("LREM", prefix .. "active", 1, jobId) == 1 then
return "active"
end
return "unknown"
end
--[[
Function to remove job keys.
]]
local function removeJobKeys(jobKey)
return rcall("DEL", jobKey, jobKey .. ':logs', jobKey .. ':dependencies',
jobKey .. ':processed', jobKey .. ':failed', jobKey .. ':unsuccessful')
end
--[[
Check if this job has a parent. If so we will just remove it from
the parent child list, but if it is the last child we should move the parent to "wait/paused"
which requires code from "moveToFinished"
]]
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local function _moveParentToWait(parentPrefix, parentId, emitEvent)
local parentTarget, isPausedOrMaxed = getTargetQueueList(parentPrefix .. "meta", parentPrefix .. "active",
parentPrefix .. "wait", parentPrefix .. "paused")
addJobInTargetList(parentTarget, parentPrefix .. "marker", "RPUSH", isPausedOrMaxed, parentId)
if emitEvent then
local parentEventStream = parentPrefix .. "events"
rcall("XADD", parentEventStream, "*", "event", "waiting", "jobId", parentId, "prev", "waiting-children")
end
end
local function removeParentDependencyKey(jobKey, hard, parentKey, baseKey, debounceId)
if parentKey then
local parentDependenciesKey = parentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(parentKey)
local parentPrefix = getJobKeyPrefix(parentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then -- remove parent in same queue
if parentPrefix == baseKey then
removeParentDependencyKey(parentKey, hard, nil, baseKey, nil)
removeJobKeys(parentKey)
if debounceId then
rcall("DEL", parentPrefix .. "de:" .. debounceId)
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
else
local parentAttributes = rcall("HMGET", jobKey, "parentKey", "deid")
local missedParentKey = parentAttributes[1]
if( (type(missedParentKey) == "string") and missedParentKey ~= ""
and (rcall("EXISTS", missedParentKey) == 1)) then
local parentDependenciesKey = missedParentKey .. ":dependencies"
local result = rcall("SREM", parentDependenciesKey, jobKey)
if result > 0 then
local pendingDependencies = rcall("SCARD", parentDependenciesKey)
if pendingDependencies == 0 then
local parentId = getJobIdFromKey(missedParentKey)
local parentPrefix = getJobKeyPrefix(missedParentKey, parentId)
local numRemovedElements = rcall("ZREM", parentPrefix .. "waiting-children", parentId)
if numRemovedElements == 1 then
if hard then
if parentPrefix == baseKey then
removeParentDependencyKey(missedParentKey, hard, nil, baseKey, nil)
removeJobKeys(missedParentKey)
if parentAttributes[2] then
rcall("DEL", parentPrefix .. "de:" .. parentAttributes[2])
end
else
_moveParentToWait(parentPrefix, parentId)
end
else
_moveParentToWait(parentPrefix, parentId, true)
end
end
end
return true
end
end
end
return false
end
--[[
Function to recursively check if there are no locks
on the jobs to be removed.
returns:
boolean
]]
local function isLocked( prefix, jobId, removeChildren)
local jobKey = prefix .. jobId;
-- Check if this job is locked
local lockKey = jobKey .. ':lock'
local lock = rcall("GET", lockKey)
if not lock then
if removeChildren == "1" then
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if (#dependencies > 0) then
for i, childJobKey in ipairs(dependencies) do
-- We need to get the jobId for this job.
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
local result = isLocked( childJobPrefix, childJobId, removeChildren )
if result then
return true
end
end
end
end
return false
end
return true
end
local removeJobChildren
local removeJobWithChildren
removeJobChildren = function(prefix, jobKey, options)
-- Check if this job has children
-- If so, we are going to try to remove the children recursively in a depth-first way
-- because if some job is locked, we must exit with an error.
if not options.ignoreProcessed then
local processed = rcall("HGETALL", jobKey .. ":processed")
if #processed > 0 then
for i = 1, #processed, 2 do
local childJobId = getJobIdFromKey(processed[i])
local childJobPrefix = getJobKeyPrefix(processed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local failed = rcall("HGETALL", jobKey .. ":failed")
if #failed > 0 then
for i = 1, #failed, 2 do
local childJobId = getJobIdFromKey(failed[i])
local childJobPrefix = getJobKeyPrefix(failed[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
local unsuccessful = rcall("ZRANGE", jobKey .. ":unsuccessful", 0, -1)
if #unsuccessful > 0 then
for i = 1, #unsuccessful, 1 do
local childJobId = getJobIdFromKey(unsuccessful[i])
local childJobPrefix = getJobKeyPrefix(unsuccessful[i], childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
local dependencies = rcall("SMEMBERS", jobKey .. ":dependencies")
if #dependencies > 0 then
for i, childJobKey in ipairs(dependencies) do
local childJobId = getJobIdFromKey(childJobKey)
local childJobPrefix = getJobKeyPrefix(childJobKey, childJobId)
removeJobWithChildren(childJobPrefix, childJobId, jobKey, options)
end
end
end
removeJobWithChildren = function(prefix, jobId, parentKey, options)
local jobKey = prefix .. jobId
if options.ignoreLocked then
if isLocked(prefix, jobId) then
return
end
end
-- Check if job is in the failed zset
local failedSet = prefix .. "failed"
if not (options.ignoreProcessed and rcall("ZSCORE", failedSet, jobId)) then
removeParentDependencyKey(jobKey, false, parentKey, nil)
if options.removeChildren then
removeJobChildren(prefix, jobKey, options)
end
local prev = removeJobFromAnyState(prefix, jobId)
local deduplicationId = rcall("HGET", jobKey, "deid")
removeDeduplicationKeyIfNeededOnRemoval(prefix, jobId, deduplicationId)
if removeJobKeys(jobKey) > 0 then
local metaKey = prefix .. "meta"
local maxEvents = getOrSetMaxEvents(metaKey)
rcall("XADD", prefix .. "events", "MAXLEN", "~", maxEvents, "*", "event", "removed",
"jobId", jobId, "prev", prev)
end
end
end
local prefix = ARGV[1]
local jobId = ARGV[2]
local jobKey = KEYS[1]
local metaKey = KEYS[2]
local options = {
removeChildren = "1",
ignoreProcessed = true,
ignoreLocked = true
}
removeJobChildren(prefix, jobKey, options)
`;Jg.removeUnprocessedChildren={name:"removeUnprocessedChildren",content:f1e,keys:2}});var KG=h(zg=>{"use strict";Object.defineProperty(zg,"__esModule",{value:!0});zg.reprocessJob=void 0;var m1e=`--[[
Attempts to reprocess a job
Input:
KEYS[1] job key
KEYS[2] events stream
KEYS[3] job state
KEYS[4] wait key
KEYS[5] meta
KEYS[6] paused key
KEYS[7] active key
KEYS[8] marker key
ARGV[1] job.id
ARGV[2] (job.opts.lifo ? 'R' : 'L') + 'PUSH'
ARGV[3] propVal - failedReason/returnvalue
ARGV[4] prev state - failed/completed
ARGV[5] reset attemptsMade - "1" or "0"
ARGV[6] reset attemptsStarted - "1" or "0"
Output:
1 means the operation was a success
-1 means the job does not exist
-3 means the job was not found in the expected set.
]]
local rcall = redis.call;
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
local jobKey = KEYS[1]
if rcall("EXISTS", jobKey) == 1 then
local jobId = ARGV[1]
if (rcall("ZREM", KEYS[3], jobId) == 1) then
local attributesToRemove = {}
if ARGV[5] == "1" then
table.insert(attributesToRemove, "atm")
end
if ARGV[6] == "1" then
table.insert(attributesToRemove, "ats")
end
rcall("HDEL", jobKey, "finishedOn", "processedOn", ARGV[3], unpack(attributesToRemove))
local target, isPausedOrMaxed = getTargetQueueList(KEYS[5], KEYS[7], KEYS[4], KEYS[6])
addJobInTargetList(target, KEYS[8], ARGV[2], isPausedOrMaxed, jobId)
local parentKey = rcall("HGET", jobKey, "parentKey")
if parentKey and rcall("EXISTS", parentKey) == 1 then
if ARGV[4] == "failed" then
if rcall("ZREM", parentKey .. ":unsuccessful", jobKey) == 1 or
rcall("HDEL", parentKey .. ":failed", jobKey) == 1 then
rcall("SADD", parentKey .. ":dependencies", jobKey)
end
else
if rcall("HDEL", parentKey .. ":processed", jobKey) == 1 then
rcall("SADD", parentKey .. ":dependencies", jobKey)
end
end
end
local maxEvents = getOrSetMaxEvents(KEYS[5])
-- Emit waiting event
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId, "prev", ARGV[4]);
return 1
else
return -3
end
else
return -1
end
`;zg.reprocessJob={name:"reprocessJob",content:m1e,keys:8}});var DG=h(Gg=>{"use strict";Object.defineProperty(Gg,"__esModule",{value:!0});Gg.retryJob=void 0;var h1e=`--[[
Retries a failed job by moving it back to the wait queue.
Input:
KEYS[1] 'active',
KEYS[2] 'wait'
KEYS[3] 'paused'
KEYS[4] job key
KEYS[5] 'meta'
KEYS[6] events stream
KEYS[7] delayed key
KEYS[8] prioritized key
KEYS[9] 'pc' priority counter
KEYS[10] 'marker'
KEYS[11] 'stalled'
ARGV[1] key prefix
ARGV[2] timestamp
ARGV[3] pushCmd
ARGV[4] jobId
ARGV[5] token
ARGV[6] optional job fields to update
Events:
'waiting'
Output:
0 - OK
-1 - Missing key
-2 - Missing lock
-3 - Job not in active set
]]
local rcall = redis.call
-- Includes
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to check if queue is paused or maxed
(since an empty list and !EXISTS are not really the same).
]]
local function isQueuePausedOrMaxed(queueMetaKey, activeKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency")
if queueAttributes[1] then
return true
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
return activeCount >= tonumber(queueAttributes[2])
end
end
return false
end
--[[
Updates the delay set, by moving delayed jobs that should
be processed now to "wait".
Events:
'waiting'
]]
-- Includes
-- Try to get as much as 1000 jobs at once
local function promoteDelayedJobs(delayedKey, markerKey, targetKey, prioritizedKey,
eventStreamKey, prefix, timestamp, priorityCounterKey, isPaused)
local jobs = rcall("ZRANGEBYSCORE", delayedKey, 0, (timestamp + 1) * 0x1000 - 1, "LIMIT", 0, 1000)
if (#jobs > 0) then
rcall("ZREM", delayedKey, unpack(jobs))
for _, jobId in ipairs(jobs) do
local jobKey = prefix .. jobId
local priority =
tonumber(rcall("HGET", jobKey, "priority")) or 0
if priority == 0 then
-- LIFO or FIFO
rcall("LPUSH", targetKey, jobId)
else
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
end
-- Emit waiting event
rcall("XADD", eventStreamKey, "*", "event", "waiting", "jobId",
jobId, "prev", "delayed")
rcall("HSET", jobKey, "delay", 0)
end
addBaseMarkerIfNeeded(markerKey, isPaused)
end
end
local function removeLock(jobKey, stalledKey, token, jobId)
if token ~= "0" then
local lockKey = jobKey .. ':lock'
local lockToken = rcall("GET", lockKey)
if lockToken == token then
rcall("DEL", lockKey)
rcall("SREM", stalledKey, jobId)
else
if lockToken then
-- Lock exists but token does not match
return -6
else
-- Lock is missing completely
return -2
end
end
end
return 0
end
--[[
Function to update a bunch of fields in a job.
]]
local function updateJobFields(jobKey, msgpackedFields)
if msgpackedFields and #msgpackedFields > 0 then
local fieldsToUpdate = cmsgpack.unpack(msgpackedFields)
if fieldsToUpdate then
rcall("HMSET", jobKey, unpack(fieldsToUpdate))
end
end
end
local target, isPausedOrMaxed = getTargetQueueList(KEYS[5], KEYS[1], KEYS[2], KEYS[3])
local markerKey = KEYS[10]
-- Check if there are delayed jobs that we can move to wait.
-- test example: when there are delayed jobs between retries
promoteDelayedJobs(KEYS[7], markerKey, target, KEYS[8], KEYS[6], ARGV[1], ARGV[2], KEYS[9], isPausedOrMaxed)
local jobKey = KEYS[4]
if rcall("EXISTS", jobKey) == 1 then
local errorCode = removeLock(jobKey, KEYS[11], ARGV[5], ARGV[4])
if errorCode < 0 then
return errorCode
end
updateJobFields(jobKey, ARGV[6])
local numRemovedElements = rcall("LREM", KEYS[1], -1, ARGV[4])
if (numRemovedElements < 1) then return -3 end
local priority = tonumber(rcall("HGET", jobKey, "priority")) or 0
--need to re-evaluate after removing job from active
isPausedOrMaxed = isQueuePausedOrMaxed(KEYS[5], KEYS[1])
-- Standard or priority add
if priority == 0 then
addJobInTargetList(target, markerKey, ARGV[3], isPausedOrMaxed, ARGV[4])
else
addJobWithPriority(markerKey, KEYS[8], priority, ARGV[4], KEYS[9], isPausedOrMaxed)
end
rcall("HINCRBY", jobKey, "atm", 1)
local maxEvents = getOrSetMaxEvents(KEYS[5])
-- Emit waiting event
rcall("XADD", KEYS[6], "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", ARGV[4], "prev", "active")
return 0
else
return -1
end
`;Gg.retryJob={name:"retryJob",content:h1e,keys:11}});var MG=h(Bg=>{"use strict";Object.defineProperty(Bg,"__esModule",{value:!0});Bg.saveStacktrace=void 0;var y1e=`--[[
Save stacktrace and failedReason.
Input:
KEYS[1] job key
ARGV[1] stacktrace
ARGV[2] failedReason
Output:
0 - OK
-1 - Missing key
]]
local rcall = redis.call
if rcall("EXISTS", KEYS[1]) == 1 then
rcall("HMSET", KEYS[1], "stacktrace", ARGV[1], "failedReason", ARGV[2])
return 0
else
return -1
end
`;Bg.saveStacktrace={name:"saveStacktrace",content:y1e,keys:1}});var NG=h(Hg=>{"use strict";Object.defineProperty(Hg,"__esModule",{value:!0});Hg.updateData=void 0;var g1e=`--[[
Update job data
Input:
KEYS[1] Job id key
ARGV[1] data
Output:
0 - OK
-1 - Missing job.
]]
local rcall = redis.call
if rcall("EXISTS",KEYS[1]) == 1 then -- // Make sure job exists
rcall("HSET", KEYS[1], "data", ARGV[1])
return 0
else
return -1
end
`;Hg.updateData={name:"updateData",content:g1e,keys:1}});var LG=h(Vg=>{"use strict";Object.defineProperty(Vg,"__esModule",{value:!0});Vg.updateJobScheduler=void 0;var b1e=`--[[
Updates a job scheduler and adds next delayed job
Input:
KEYS[1] 'repeat' key
KEYS[2] 'delayed'
KEYS[3] 'wait' key
KEYS[4] 'paused' key
KEYS[5] 'meta'
KEYS[6] 'prioritized' key
KEYS[7] 'marker',
KEYS[8] 'id'
KEYS[9] events stream key
KEYS[10] 'pc' priority counter
KEYS[11] producer key
KEYS[12] 'active' key
ARGV[1] next milliseconds
ARGV[2] jobs scheduler id
ARGV[3] Json stringified delayed data
ARGV[4] msgpacked delayed opts
ARGV[5] timestamp
ARGV[6] prefix key
ARGV[7] producer id
Output:
next delayed job id - OK
]] local rcall = redis.call
local repeatKey = KEYS[1]
local delayedKey = KEYS[2]
local waitKey = KEYS[3]
local pausedKey = KEYS[4]
local metaKey = KEYS[5]
local prioritizedKey = KEYS[6]
local nextMillis = tonumber(ARGV[1])
local jobSchedulerId = ARGV[2]
local timestamp = tonumber(ARGV[5])
local prefixKey = ARGV[6]
local producerId = ARGV[7]
local jobOpts = cmsgpack.unpack(ARGV[4])
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Shared helper to store a job and enqueue it into the appropriate list/set.
Handles delayed, prioritized, and standard (LIFO/FIFO) jobs.
Emits the appropriate event after enqueuing ("delayed" or "waiting").
Returns delay, priority from storeJob.
]]
-- Includes
--[[
Adds a delayed job to the queue by doing the following:
- Creates a new job key with the job data.
- adds to delayed zset.
- Emits a global event 'delayed' if the job is delayed.
]]
-- Includes
--[[
Add delay marker if needed.
]]
-- Includes
--[[
Function to return the next delayed job timestamp.
]]
local function getNextDelayedTimestamp(delayedKey)
local result = rcall("ZRANGE", delayedKey, 0, 0, "WITHSCORES")
if #result then
local nextTimestamp = tonumber(result[2])
if nextTimestamp ~= nil then
return nextTimestamp / 0x1000
end
end
end
local function addDelayMarkerIfNeeded(markerKey, delayedKey)
local nextTimestamp = getNextDelayedTimestamp(delayedKey)
if nextTimestamp ~= nil then
-- Replace the score of the marker with the newest known
-- next timestamp.
rcall("ZADD", markerKey, nextTimestamp, "1")
end
end
--[[
Bake in the job id first 12 bits into the timestamp
to guarantee correct execution order of delayed jobs
(up to 4096 jobs per given timestamp or 4096 jobs apart per timestamp)
WARNING: Jobs that are so far apart that they wrap around will cause FIFO to fail
]]
local function getDelayedScore(delayedKey, timestamp, delay)
local delayedTimestamp = (delay > 0 and (tonumber(timestamp) + delay)) or tonumber(timestamp)
local minScore = delayedTimestamp * 0x1000
local maxScore = (delayedTimestamp + 1 ) * 0x1000 - 1
local result = rcall("ZREVRANGEBYSCORE", delayedKey, maxScore,
minScore, "WITHSCORES","LIMIT", 0, 1)
if #result then
local currentMaxScore = tonumber(result[2])
if currentMaxScore ~= nil then
if currentMaxScore >= maxScore then
return maxScore, delayedTimestamp
else
return currentMaxScore + 1, delayedTimestamp
end
end
end
return minScore, delayedTimestamp
end
local function addDelayedJob(jobId, delayedKey, eventsKey, timestamp,
maxEvents, markerKey, delay)
local score, delayedTimestamp = getDelayedScore(delayedKey, timestamp, tonumber(delay))
rcall("ZADD", delayedKey, score, jobId)
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "delayed",
"jobId", jobId, "delay", delayedTimestamp)
-- mark that a delayed job is available
addDelayMarkerIfNeeded(markerKey, delayedKey)
end
--[[
Function to add job in target list and add marker if needed.
]]
-- Includes
--[[
Add marker if needed when a job is available.
]]
local function addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
if not isPausedOrMaxed then
rcall("ZADD", markerKey, 0, "0")
end
end
local function addJobInTargetList(targetKey, markerKey, pushCmd, isPausedOrMaxed, jobId)
rcall(pushCmd, targetKey, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to add job considering priority.
]]
-- Includes
--[[
Function to get priority score.
]]
local function getPriorityScore(priority, priorityCounterKey)
local prioCounter = rcall("INCR", priorityCounterKey)
return priority * 0x100000000 + prioCounter % 0x100000000
end
local function addJobWithPriority(markerKey, prioritizedKey, priority, jobId, priorityCounterKey,
isPausedOrMaxed)
local score = getPriorityScore(priority, priorityCounterKey)
rcall("ZADD", prioritizedKey, score, jobId)
addBaseMarkerIfNeeded(markerKey, isPausedOrMaxed)
end
--[[
Function to check for the meta.paused key to decide if we are paused or not
(since an empty list and !EXISTS are not really the same).
]]
local function getTargetQueueList(queueMetaKey, activeKey, waitKey, pausedKey)
local queueAttributes = rcall("HMGET", queueMetaKey, "paused", "concurrency", "max", "duration")
if queueAttributes[1] then
return pausedKey, true, queueAttributes[3], queueAttributes[4]
else
if queueAttributes[2] then
local activeCount = rcall("LLEN", activeKey)
if activeCount >= tonumber(queueAttributes[2]) then
return waitKey, true, queueAttributes[3], queueAttributes[4]
else
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
end
end
return waitKey, false, queueAttributes[3], queueAttributes[4]
end
--[[
Function to store a job
]]
local function storeJob(eventsKey, jobIdKey, jobId, name, data, opts, timestamp,
parentKey, parentData, repeatJobKey)
local jsonOpts = cjson.encode(opts)
local delay = opts['delay'] or 0
local priority = opts['priority'] or 0
local debounceId = opts['de'] and opts['de']['id']
local optionalValues = {}
if parentKey ~= nil then
table.insert(optionalValues, "parentKey")
table.insert(optionalValues, parentKey)
table.insert(optionalValues, "parent")
table.insert(optionalValues, parentData)
end
if repeatJobKey then
table.insert(optionalValues, "rjk")
table.insert(optionalValues, repeatJobKey)
end
if debounceId then
table.insert(optionalValues, "deid")
table.insert(optionalValues, debounceId)
end
rcall("HMSET", jobIdKey, "name", name, "data", data, "opts", jsonOpts,
"timestamp", timestamp, "delay", delay, "priority", priority,
unpack(optionalValues))
rcall("XADD", eventsKey, "*", "event", "added", "jobId", jobId, "name", name)
return delay, priority
end
local function storeAndEnqueueJob(eventsKey, jobIdKey, jobId, name, data, opts,
timestamp, parentKey, parentData, repeatJobKey, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounterKey, delayedKey, markerKey)
local delay, priority = storeJob(eventsKey, jobIdKey, jobId, name, data,
opts, timestamp, parentKey, parentData, repeatJobKey)
if delay ~= 0 and delayedKey then
addDelayedJob(jobId, delayedKey, eventsKey, timestamp, maxEvents, markerKey, delay)
else
local target, isPausedOrMaxed = getTargetQueueList(metaKey, activeKey, waitKey, pausedKey)
if priority > 0 then
addJobWithPriority(markerKey, prioritizedKey, priority, jobId,
priorityCounterKey, isPausedOrMaxed)
else
local pushCmd = opts['lifo'] and 'RPUSH' or 'LPUSH'
addJobInTargetList(target, markerKey, pushCmd, isPausedOrMaxed, jobId)
end
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "waiting",
"jobId", jobId)
end
return delay, priority
end
local function addJobFromScheduler(jobKey, jobId, opts, waitKey, pausedKey, activeKey, metaKey,
prioritizedKey, priorityCounter, delayedKey, markerKey, eventsKey, name, maxEvents, timestamp,
data, jobSchedulerId, repeatDelay)
opts['delay'] = repeatDelay
opts['jobId'] = jobId
storeAndEnqueueJob(eventsKey, jobKey, jobId, name, data, opts,
timestamp, nil, nil, jobSchedulerId, maxEvents,
waitKey, pausedKey, activeKey, metaKey, prioritizedKey,
priorityCounter, delayedKey, markerKey)
end
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
local function getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
offset = tonumber(offset)
local nextMillis
if not prevMillis then
if startDate then
-- Assuming startDate is passed as milliseconds from JavaScript
nextMillis = tonumber(startDate)
nextMillis = nextMillis > now and nextMillis or now
else
if offset and offset > 0 then
-- Align to the next slot that respects the offset
nextMillis = math.floor(now / every) * every + offset
if nextMillis <= now then
nextMillis = nextMillis + every
end
else
nextMillis = now
end
end
else
nextMillis = prevMillis + every
-- check if we may have missed some iterations
if nextMillis < now then
-- Use the same offset-aware alignment as the initial branch
-- above so a non-zero offset is preserved across catch-ups
-- instead of being flattened to (slot + every). When the
-- aligned slot is itself still in the past, advance by one
-- full interval; otherwise the aligned slot is the next
-- iteration.
local aligned = math.floor(now / every) * every + (offset or 0)
if aligned <= now then
nextMillis = aligned + every
else
nextMillis = aligned
end
end
end
if not offset or offset == 0 then
local timeSlot = math.floor(nextMillis / every) * every;
offset = nextMillis - timeSlot;
end
-- Return a tuple nextMillis, offset
return math.floor(nextMillis), math.floor(offset)
end
local prevMillis = rcall("ZSCORE", repeatKey, jobSchedulerId)
-- Validate that scheduler exists.
-- If it does not exist we should not iterate anymore.
if prevMillis then
prevMillis = tonumber(prevMillis)
local schedulerKey = repeatKey .. ":" .. jobSchedulerId
local schedulerAttributes = rcall("HMGET", schedulerKey, "name", "data", "every", "startDate", "offset")
local every = tonumber(schedulerAttributes[3])
local now = tonumber(timestamp)
-- If every is not found in scheduler attributes, try to get it from job options
if not every and jobOpts['repeat'] and jobOpts['repeat']['every'] then
every = tonumber(jobOpts['repeat']['every'])
end
if every then
local startDate = schedulerAttributes[4]
local jobOptsOffset = jobOpts['repeat'] and jobOpts['repeat']['offset'] or 0
local offset = schedulerAttributes[5] or jobOptsOffset or 0
local newOffset
nextMillis, newOffset = getJobSchedulerEveryNextMillis(prevMillis, every, now, offset, startDate)
if not offset then
rcall("HSET", schedulerKey, "offset", newOffset)
jobOpts['repeat']['offset'] = newOffset
end
end
local nextDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. nextMillis
local nextDelayedJobKey = schedulerKey .. ":" .. nextMillis
local currentDelayedJobId = "repeat:" .. jobSchedulerId .. ":" .. prevMillis
if producerId == currentDelayedJobId then
local eventsKey = KEYS[9]
local maxEvents = getOrSetMaxEvents(metaKey)
if rcall("EXISTS", nextDelayedJobKey) ~= 1 then
rcall("ZADD", repeatKey, nextMillis, jobSchedulerId)
rcall("HINCRBY", schedulerKey, "ic", 1)
rcall("INCR", KEYS[8])
-- TODO: remove this workaround in next breaking change,
-- all job-schedulers must save job data
local templateData = schedulerAttributes[2] or ARGV[3]
if templateData and templateData ~= '{}' then
rcall("HSET", schedulerKey, "data", templateData)
end
local delay = nextMillis - now
-- Fast Clamp delay to minimum of 0
if delay < 0 then
delay = 0
end
jobOpts["delay"] = delay
addJobFromScheduler(nextDelayedJobKey, nextDelayedJobId, jobOpts, waitKey, pausedKey, KEYS[12], metaKey,
prioritizedKey, KEYS[10], delayedKey, KEYS[7], eventsKey, schedulerAttributes[1], maxEvents, ARGV[5],
templateData or '{}', jobSchedulerId, delay)
-- TODO: remove this workaround in next breaking change
if KEYS[11] ~= "" then
rcall("HSET", KEYS[11], "nrjid", nextDelayedJobId)
end
return nextDelayedJobId .. "" -- convert to string
else
rcall("XADD", eventsKey, "MAXLEN", "~", maxEvents, "*", "event", "duplicated", "jobId", nextDelayedJobId)
end
end
end
`;Vg.updateJobScheduler={name:"updateJobScheduler",content:b1e,keys:12}});var qG=h(Wg=>{"use strict";Object.defineProperty(Wg,"__esModule",{value:!0});Wg.updateProgress=void 0;var v1e=`--[[
Update job progress
Input:
KEYS[1] Job id key
KEYS[2] event stream key
KEYS[3] meta key
ARGV[1] id
ARGV[2] progress
Output:
0 - OK
-1 - Missing job.
Event:
progress(jobId, progress)
]]
local rcall = redis.call
-- Includes
--[[
Function to get max events value or set by default 10000.
]]
local function getOrSetMaxEvents(metaKey)
local maxEvents = rcall("HGET", metaKey, "opts.maxLenEvents")
if not maxEvents then
maxEvents = 10000
rcall("HSET", metaKey, "opts.maxLenEvents", maxEvents)
end
return maxEvents
end
if rcall("EXISTS", KEYS[1]) == 1 then -- // Make sure job exists
local maxEvents = getOrSetMaxEvents(KEYS[3])
rcall("HSET", KEYS[1], "progress", ARGV[2])
rcall("XADD", KEYS[2], "MAXLEN", "~", maxEvents, "*", "event", "progress",
"jobId", ARGV[1], "data", ARGV[2]);
return 0
else
return -1
end
`;Wg.updateProgress={name:"updateProgress",content:v1e,keys:3}});var FG=h(Yg=>{"use strict";Object.defineProperty(Yg,"__esModule",{value:!0});Yg.updateRepeatableJobMillis=void 0;var E1e=`--[[
Adds a repeatable job
Input:
KEYS[1] 'repeat' key
ARGV[1] next milliseconds
ARGV[2] custom key
ARGV[3] legacy custom key TODO: remove this logic in next breaking change
Output:
repeatableKey - OK
]]
local rcall = redis.call
local repeatKey = KEYS[1]
local nextMillis = ARGV[1]
local customKey = ARGV[2]
local legacyCustomKey = ARGV[3]
if rcall("ZSCORE", repeatKey, customKey) then
rcall("ZADD", repeatKey, nextMillis, customKey)
return customKey
elseif rcall("ZSCORE", repeatKey, legacyCustomKey) ~= false then
rcall("ZADD", repeatKey, nextMillis, legacyCustomKey)
return legacyCustomKey
end
return ''
`;Yg.updateRepeatableJobMillis={name:"updateRepeatableJobMillis",content:E1e,keys:1}});var $G=h(z=>{"use strict";Object.defineProperty(z,"__esModule",{value:!0});var B=(nr(),Pt(rr));B.__exportStar(Jz(),z);B.__exportStar(zz(),z);B.__exportStar(Gz(),z);B.__exportStar(Bz(),z);B.__exportStar(Hz(),z);B.__exportStar(Vz(),z);B.__exportStar(Wz(),z);B.__exportStar(Yz(),z);B.__exportStar(Qz(),z);B.__exportStar(Xz(),z);B.__exportStar(Zz(),z);B.__exportStar(eG(),z);B.__exportStar(tG(),z);B.__exportStar(rG(),z);B.__exportStar(nG(),z);B.__exportStar(iG(),z);B.__exportStar(sG(),z);B.__exportStar(oG(),z);B.__exportStar(aG(),z);B.__exportStar(cG(),z);B.__exportStar(lG(),z);B.__exportStar(uG(),z);B.__exportStar(dG(),z);B.__exportStar(pG(),z);B.__exportStar(fG(),z);B.__exportStar(mG(),z);B.__exportStar(hG(),z);B.__exportStar(yG(),z);B.__exportStar(gG(),z);B.__exportStar(bG(),z);B.__exportStar(vG(),z);B.__exportStar(EG(),z);B.__exportStar(SG(),z);B.__exportStar(xG(),z);B.__exportStar(wG(),z);B.__exportStar(_G(),z);B.__exportStar(IG(),z);B.__exportStar(TG(),z);B.__exportStar(kG(),z);B.__exportStar(AG(),z);B.__exportStar(RG(),z);B.__exportStar(OG(),z);B.__exportStar(CG(),z);B.__exportStar(jG(),z);B.__exportStar(PG(),z);B.__exportStar(KG(),z);B.__exportStar(DG(),z);B.__exportStar(MG(),z);B.__exportStar(NG(),z);B.__exportStar(LG(),z);B.__exportStar(qG(),z);B.__exportStar(FG(),z)});var Kd=h(Qg=>{"use strict";Object.defineProperty(Qg,"__esModule",{value:!0});Qg.createIORedisClient=yk;Qg.isIRedisClient=S1e;var UG=new WeakMap;function yk(t){if(t.__bullmq_iredis===!0)return t;let e=UG.get(t);if(e)return e;let r=t.isCluster===!0,n=new Map,i=Object.create(null);i.__bullmq_iredis=!0,i.isCluster=r,i.runCommand=(o,a)=>t[o](a),i.pipeline=(...o)=>JG(t.pipeline(...o)),i.multi=(...o)=>JG(t.multi(...o)),typeof t.duplicate=="function"&&(i.duplicate=o=>{var a;if(r){let c=((a=t.options)===null||a===void 0?void 0:a.redisOptions)||{},l=o?Object.assign(Object.assign({},c),o):c;return yk(t.duplicate(void 0,{redisOptions:l}))}return yk(t.duplicate(o))}),i.hset=(o,a,...c)=>{if(typeof a=="string")return t.hset(o,a,...c);let l=[o];for(let[u,d]of Object.entries(a))l.push(u,d);return t.hset(...l)},i.set=(o,a,c,...l)=>{if(typeof c=="string"||c==null)return t.set(o,a,...c!=null?[c,...l]:[]);let u=[o,a];return c.PX!=null?u.push("PX",c.PX):c.EX!=null&&u.push("EX",c.EX),t.set(...u)},i.zrange=(o,a,c,l,...u)=>typeof l=="string"?t.zrange(o,a,c,l,...u):l?.WITHSCORES?t.zrange(o,a,c,"WITHSCORES"):t.zrange(o,a,c),i.zrevrange=(o,a,c,l,...u)=>typeof l=="string"?t.zrevrange(o,a,c,l,...u):l?.WITHSCORES?t.zrevrange(o,a,c,"WITHSCORES"):t.zrevrange(o,a,c),i.xadd=(o,a,c,...l)=>{if(typeof c=="string")return t.xadd(o,a,c,...l);let u=l[0],d=[o];u?.MAXLEN!=null&&(d.push("MAXLEN"),u.approximate!==!1&&d.push("~"),d.push(u.MAXLEN)),d.push(a);for(let[p,f]of Object.entries(c))d.push(p,f);return t.xadd(...d)},i.xread=(o,...a)=>{if(typeof o=="string")return t.xread(o,...a);let c=a[0],l=[];c?.BLOCK!=null&&l.push("BLOCK",c.BLOCK),c?.COUNT!=null&&l.push("COUNT",c.COUNT),l.push("STREAMS");for(let u of o)l.push(u.key);for(let u of o)l.push(u.id);return t.xread(...l)},i.xtrim=(o,a,c,...l)=>{if(typeof c=="string"||l.length===0)return t.xtrim(o,a,c,...l);let u=l[0],d=[o,a];return u?.approximate!==!1&&d.push("~"),d.push(c),t.xtrim(...d)},i.clientSetName=o=>t.client("SETNAME",o),i.clientList=()=>t.client("LIST"),i.scan=(o,...a)=>{if(a.length===0||typeof a[0]=="string"||typeof a[0]=="function")return t.scan(o,...a);let c=a[0],l=[o];return c?.MATCH!=null&&l.push("MATCH",c.MATCH),c?.COUNT!=null&&l.push("COUNT",c.COUNT),t.scan(...l)};let s=new Proxy(t,{get(o,a){if(a in i)return i[a];let c=Reflect.get(o,a,o);if(typeof c!="function")return c;if(Object.prototype.hasOwnProperty.call(o,a))return c.bind(o);let l=n.get(a);if(l!==void 0)return l;let u=c.bind(o);return n.set(a,u),u},set(o,a,c){return a in i?(i[a]=c,!0):(n.delete(a),Reflect.set(o,a,c))},deleteProperty(o,a){return a in i?!1:(n.delete(a),Reflect.deleteProperty(o,a))},has(o,a){return a in i||Reflect.has(o,a)}});return UG.set(t,s),s}function JG(t){let e=t;e.runCommand=function(s,o){return e[s](o),e};let r=e.hset.bind(e);e.hset=function(s,o){let a=[s];for(let[c,l]of Object.entries(o))a.push(c,l);return r(...a),e};let n=e.hscan.bind(e);e.hscan=function(s,o,a){return a?.COUNT!=null?n(s,o,"COUNT",a.COUNT):n(s,o),e};let i=e.sscan.bind(e);return e.sscan=function(s,o,a){return a?.COUNT!=null?i(s,o,"COUNT",a.COUNT):i(s,o),e},e}function S1e(t){return!t||typeof t!="object"?!1:t.__bullmq_iredis===!0?!0:typeof t.runCommand=="function"&&typeof t.defineCommand=="function"&&typeof t.pipeline=="function"&&typeof t.multi=="function"&&typeof t.duplicate=="function"&&typeof t.scanStream=="function"&&typeof t.connect=="function"&&typeof t.disconnect=="function"&&typeof t.on=="function"&&typeof t.status=="string"&&typeof t.isCluster=="boolean"}});var Md=h(tb=>{"use strict";Object.defineProperty(tb,"__esModule",{value:!0});tb.RedisConnection=void 0;var x1e=(nr(),Pt(rr)),w1e=require("events"),zG=Uz(),gk=gt(),yr=Dr(),_1e=Ay(),I1e=$G(),bk=Kd(),Xg=zo(),T1e=["BullMQ: WARNING! Your redis options maxRetriesPerRequest must be null","and will be overridden by BullMQ."].join(" "),k1e="BullMQ: Your redis options maxRetriesPerRequest must be null.",Zg=Symbol("bullmqClusterReconnectPromise"),vk=Symbol("bullmqClusterPatchedForBlocking"),eb=Symbol("bullmqClusterOriginalBzpopmin"),Ek=Symbol("bullmqClusterWrappedBzpopmin"),cl=Symbol("bullmqClusterPatchRefCount"),ia=Symbol("bullmqClusterClosingRefCount"),GG=3e4,Dd=class t extends w1e.EventEmitter{constructor(e,r){if(super(),this.extraOptions=r,this.capabilities={canDoubleTimeout:!1,canBlockFor1Ms:!0},this.status="initializing",this.dbType="redis",this.packageVersion=_1e.version,this.disabledBlockingClusterReconnect=!1,this.extraOptions=Object.assign({shared:!1,blocking:!0,skipVersionCheck:!1,skipWaitingForReady:!1,clusterReconnectTimeoutMs:GG},r),!(0,yr.isRedisInstance)(e))this.checkBlockingOptions(T1e,e),this.opts=Object.assign({port:6379,host:"127.0.0.1",retryStrategy:function(n){return Math.max(Math.min(Math.exp(n),2e4),1e3)}},e),this.extraOptions.blocking&&(this.opts.maxRetriesPerRequest=null);else{if(this._client=(0,bk.isIRedisClient)(e)?e:(0,bk.createIORedisClient)(e),this._client.options.keyPrefix)throw new Error("BullMQ: ioredis does not support ioredis prefixes, use the prefix option instead.");this._client.isCluster?this.opts=this._client.options.redisOptions:this.opts=this._client.options,this.checkBlockingOptions(k1e,this.opts,!0)}this.skipVersionCheck=r?.skipVersionCheck||!!(this.opts&&this.opts.skipVersionCheck),this.handleClientError=n=>{this.emit("error",n)},this.handleClientClose=()=>{this.emit("close")},this.handleClientReady=()=>{this.emit("ready")},this.initializing=this.init(),this.initializing.catch(n=>this.emit("error",n))}checkBlockingOptions(e,r,n=!1){if(this.extraOptions.blocking&&r&&r.maxRetriesPerRequest){if(n)throw new Error(e);console.error(e)}}static async waitUntilReady(e){if(e.status==="ready"||e.status==="connect"&&(0,yr.isRedisCluster)(e))return;if(e.status==="wait")return e.connect();if(e.status==="end")throw new Xg.ConnectionClosedError(gk.CONNECTION_CLOSED_ERROR_MSG);let r,n,i;try{await new Promise((s,o)=>{let a;i=c=>{a=c},r=()=>{s()},n=()=>{e.status!=="end"?o(a||new Xg.ConnectionClosedError(gk.CONNECTION_CLOSED_ERROR_MSG)):a?o(a):s()},(0,yr.increaseMaxListeners)(e,3),e.once("ready",r),e.on("end",n),e.once("error",i)})}finally{e.removeListener("end",n),e.removeListener("error",i),e.removeListener("ready",r),(0,yr.decreaseMaxListeners)(e,3)}}get client(){return this.initializing}loadCommands(e,r){let n=r||I1e;for(let i in n){let s=`${n[i].name}:${e}`;this._client[s]||this._client.defineCommand(s,{numberOfKeys:n[i].keys,lua:n[i].content})}}async init(){if(!this._client)if(t.clientFactory)this._client=t.clientFactory(this.opts);else{let e=this.opts,{url:r}=e,n=x1e.__rest(e,["url"]),i=r?new zG.default(r,n):new zG.default(n);this._client=(0,bk.createIORedisClient)(i)}if((0,yr.increaseMaxListeners)(this._client,3),this._client.on("error",this.handleClientError),this._client.on("close",this.handleClientClose),this._client.on("ready",this.handleClientReady),this.patchBlockingClusterClient(),this.extraOptions.skipWaitingForReady||await t.waitUntilReady(this._client),this.loadCommands(this.packageVersion),this._client.status!=="end"){let e=await this.getRedisVersionAndType();if(this.version=e.version,this.dbType=e.databaseType,this.skipVersionCheck!==!0&&!this.closing){if((0,yr.isRedisVersionLowerThan)(this.version,t.minimumVersion,this.dbType))throw new Error(`Redis version needs to be greater or equal than ${t.minimumVersion} Current: ${this.version}`);(0,yr.isRedisVersionLowerThan)(this.version,t.recommendedMinimumVersion,this.dbType)&&console.warn(`It is highly recommended to use a minimum Redis version of ${t.recommendedMinimumVersion}
Current: ${this.version}`)}this.capabilities={canDoubleTimeout:!(0,yr.isRedisVersionLowerThan)(this.version,"6.0.0",this.dbType),canBlockFor1Ms:!(0,yr.isRedisVersionLowerThan)(this.version,"7.0.8",this.dbType)},this.status="ready"}return this._client}patchBlockingClusterClient(){var e;let r=this._client,n=r;if(!this.extraOptions.blocking||!(0,yr.isRedisCluster)(r)||typeof n.bzpopmin!="function")return;let i=(e=this.extraOptions.clusterReconnectTimeoutMs)!==null&&e!==void 0?e:GG;if(n[cl]=(n[cl]||0)+1,this.patchedBlockingClusterClient=n,n[vk])return;let s=n.bzpopmin,o=async(...a)=>{await t.reconnectClusterIfNeeded(n,i);try{return await s.apply(n,a)}catch(c){let l=c;if(t.shouldReconnectClusterAfterError(n,l))try{await t.reconnectCluster(n,i)}catch{}throw l}};n[eb]=s,n[Ek]=o,n[vk]=!0,n.bzpopmin=o}disableBlockingClusterReconnect(){let e=this.patchedBlockingClusterClient;!e||this.disabledBlockingClusterReconnect||(e[ia]=(e[ia]||0)+1,this.disabledBlockingClusterReconnect=!0)}releaseBlockingClusterClientPatch(){let e=this.patchedBlockingClusterClient;if(!e)return;if(this.disabledBlockingClusterReconnect){let n=(e[ia]||1)-1;n>0?e[ia]=n:delete e[ia],this.disabledBlockingClusterReconnect=!1}let r=(e[cl]||1)-1;if(r>0){e[cl]=r,this.patchedBlockingClusterClient=void 0;return}e[eb]&&e.bzpopmin===e[Ek]&&(e.bzpopmin=e[eb]),delete e[cl],delete e[ia],delete e[eb],delete e[Ek],delete e[vk],this.patchedBlockingClusterClient=void 0}static isClusterWithEmptyNodes(e){return typeof e.nodes=="function"&&e.nodes().length===0}static isReconnectingDisabled(e){let r=e[cl]||0,n=e[ia]||0;return r===0||n>=r||e.status==="end"||e.status==="closing"}static async reconnectClusterIfNeeded(e,r){!t.isReconnectingDisabled(e)&&t.isClusterWithEmptyNodes(e)&&await t.reconnectCluster(e,r)}static shouldReconnectClusterAfterError(e,r){var n,i;if(t.isReconnectingDisabled(e))return!1;let s=[r.message,(n=r.cause)===null||n===void 0?void 0:n.message,(i=r.lastNodeError)===null||i===void 0?void 0:i.message].join(" ");return t.isClusterWithEmptyNodes(e)||/Command timed out|Failed to refresh slots cache/i.test(s)}static async reconnectCluster(e,r){t.isReconnectingDisabled(e)||(e[Zg]||(e[Zg]=t.connectClusterWithTimeout(e,r).finally(()=>{e[Zg]=null})),await e[Zg])}static async connectClusterWithTimeout(e,r){e.disconnect(!1);let n;try{await Promise.race([e.connect(),new Promise((i,s)=>{var o;n=setTimeout(()=>{s(new Xg.ConnectionClosedError(`BullMQ: cluster reconnect timed out after ${r}ms`))},r),(o=n.unref)===null||o===void 0||o.call(n)})])}finally{n&&clearTimeout(n)}}async disconnect(e=!0){let r=await this.client;if(r.status!=="end"){let n,i;if(!e)return r.disconnect();let s=new Promise((o,a)=>{(0,yr.increaseMaxListeners)(r,2),r.once("end",o),r.once("error",a),n=o,i=a});r.disconnect();try{await s}finally{(0,yr.decreaseMaxListeners)(r,2),r.removeListener("end",n),r.removeListener("error",i)}}}async reconnect(){let e=await this.client;for(;;){if(this.closing)throw new Xg.ConnectionClosedError(gk.CONNECTION_CLOSED_ERROR_MSG);if(e.status==="ready"||e.status==="connect"&&(0,yr.isRedisCluster)(e))return;if(e.status==="wait"||e.status==="end")return e.connect();try{await t.waitUntilReady(e)}catch(r){if(!["end","connecting","connect","reconnecting"].includes(e.status))throw r}}}async close(e=!1){var r;if(!this.closing){let n=this.status;this.status="closing",this.closing=!0,this.disableBlockingClusterReconnect();try{n==="ready"&&await this.initializing,this.extraOptions.shared||(n=="initializing"||e?(this._client.disconnect(),(r=this.initializing)===null||r===void 0||r.catch(()=>{})):await this._client.quit(),this._client.status="end")}catch(i){if((0,yr.isNotConnectionError)(i))throw i}finally{this.releaseBlockingClusterClientPatch(),this._client.off("error",this.handleClientError),this._client.off("close",this.handleClientClose),this._client.off("ready",this.handleClientReady),(0,yr.decreaseMaxListeners)(this._client,3),this.removeAllListeners(),this.status="closed"}}}async getRedisVersionAndType(){if(this.skipVersionCheck)return{version:t.minimumVersion,databaseType:"redis"};let e=await this._client.info(),r="redis_version:",n="maxmemory_policy:",i=e.split(/\r?\n/),s,o="redis";for(let a=0;a<i.length;a++){let c=i[a];if(c.includes("dragonfly_version:")||c.includes("server:Dragonfly")?(o="dragonfly",c.indexOf("dragonfly_version:")===0&&(s=c.substr(18))):c.includes("valkey_version:")||c.includes("server:Valkey")?(o="valkey",c.indexOf("valkey_version:")===0&&(s=c.substr(15))):c.indexOf(r)===0&&(s=c.substr(r.length),o==="redis"&&(o="redis")),c.indexOf(n)===0){let l=c.substr(n.length);l!=="noeviction"&&console.warn(`IMPORTANT! Eviction policy is ${l}. It should be "noeviction"`)}}if(!s){for(let a of i)if(a.includes("version:")){let c=a.split(":");if(c.length>=2){s=c[1];break}}}return{version:s||t.minimumVersion,databaseType:o}}get redisVersion(){return this.version}get databaseType(){return this.dbType}};tb.RedisConnection=Dd;Dd.minimumVersion="5.0.0";Dd.recommendedMinimumVersion="6.2.0"});var BG=h(nb=>{"use strict";Object.defineProperty(nb,"__esModule",{value:!0});nb.FlowProducer=void 0;var A1e=require("events"),fi=Dr(),R1e=Id(),O1e=Qc(),rb=jy(),C1e=Md(),mi=_r(),Sk=class extends A1e.EventEmitter{constructor(e={connection:{}},r=C1e.RedisConnection){super(),this.opts=e,this.queues=new Map,this.opts=Object.assign({prefix:"bull"},e),this.connection=new r(e.connection,{shared:(0,fi.isRedisInstance)(e.connection),blocking:!1,skipVersionCheck:e.skipVersionCheck,skipWaitingForReady:e.skipWaitingForReady}),(0,fi.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.queues.clear(),this.closing||this.emit("ioredis:close")}),this.queueKeys=new rb.QueueKeys(e.prefix),e?.telemetry&&(this.telemetry=e.telemetry)}createScripts(e){var r;return(r=e.scripts)!==null&&r!==void 0?r:(0,R1e.createScripts)(e)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get client(){return this.connection.client}get Job(){return O1e.Job}waitUntilReady(){return this.client}async add(e,r){var n;if(this.closing)return;let s=(await this.connection.client).multi(),o=(n=e?.opts)===null||n===void 0?void 0:n.parent,a=(0,fi.getParentKey)(o),c=a?`${a}:dependencies`:void 0;return(0,fi.trace)(this.telemetry,mi.SpanKind.PRODUCER,e.queueName,"addFlow",e.queueName,async l=>{l?.setAttributes({[mi.TelemetryAttributes.FlowName]:e.name});let u=await this.addNode({multi:s,node:e,queuesOpts:r?.queuesOptions,parent:{parentOpts:o,parentDependenciesKey:c}}),d=await s.exec(),[p]=d||[];if(p){let[f,m]=p;if(f)throw f;if(typeof m=="number"&&m<0)throw this.toFlowError(m,a);typeof m=="string"?u.job.id=m:typeof m=="number"&&(u.job.id=m.toString())}return u})}async getFlow(e){if(this.closing)return;let r=await this.connection.client,n=Object.assign({depth:10,maxChildren:20,prefix:this.opts.prefix},e);return this.getNode(r,n)}async addBulk(e){if(this.closing)return;let n=(await this.connection.client).multi();return(0,fi.trace)(this.telemetry,mi.SpanKind.PRODUCER,"","addBulkFlows","",async i=>{var s,o;i?.setAttributes({[mi.TelemetryAttributes.BulkCount]:e.length,[mi.TelemetryAttributes.BulkNames]:e.map(l=>l.name).join(",")});let a=await this.addNodes(n,e),c=await n.exec();for(let l=0;l<a.length;++l){let u=c?.[l];if(!u)continue;let[d,p]=u;if(d)throw d;if(typeof p=="number"&&p<0)throw this.toFlowError(p,(0,fi.getParentKey)((o=(s=e[l])===null||s===void 0?void 0:s.opts)===null||o===void 0?void 0:o.parent));typeof p=="string"?a[l].job.id=p:typeof p=="number"&&(a[l].job.id=p.toString())}return a})}async addNode({multi:e,node:r,parent:n,queuesOpts:i}){var s,o;let a=r.prefix||this.opts.prefix,c=this.queueFromNode(r,new rb.QueueKeys(a),a),l=i&&i[r.queueName],u=(s=l?.defaultJobOptions)!==null&&s!==void 0?s:{},d=((o=r.opts)===null||o===void 0?void 0:o.jobId)||(0,fi.randomUUID)();return(0,fi.trace)(this.telemetry,mi.SpanKind.PRODUCER,r.queueName,"addNode",r.queueName,async(p,f)=>{var m,y;p?.setAttributes({[mi.TelemetryAttributes.JobName]:r.name,[mi.TelemetryAttributes.JobId]:d});let b=r.opts,v=b?.telemetry;if(f&&b){let k=(m=b.telemetry)===null||m===void 0?void 0:m.omitContext,_=((y=b.telemetry)===null||y===void 0?void 0:y.metadata)||!k&&f;(_||k)&&(v={metadata:_,omitContext:k})}let E=new this.Job(c,r.name,r.data,Object.assign(Object.assign(Object.assign({},u),b),{parent:n?.parentOpts,telemetry:v}),d),S=(0,fi.getParentKey)(n?.parentOpts);if(r.children&&r.children.length>0){let k=d,_=new rb.QueueKeys(r.prefix||this.opts.prefix);await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,addToWaitingChildren:!0,parentKey:S});let O=`${_.toKey(r.queueName,k)}:dependencies`,N=await this.addChildren({multi:e,nodes:r.children,parent:{parentOpts:{id:k,queue:_.getQueueQualifiedName(r.queueName)},parentDependenciesKey:O},queuesOpts:i});return{job:E,children:N}}else return await E.addJob(e,{parentDependenciesKey:n?.parentDependenciesKey,parentKey:S}),{job:E}})}addNodes(e,r){return Promise.all(r.map(n=>{var i;let s=(i=n?.opts)===null||i===void 0?void 0:i.parent,o=(0,fi.getParentKey)(s),a=o?`${o}:dependencies`:void 0;return this.addNode({multi:e,node:n,parent:{parentOpts:s,parentDependenciesKey:a}})}))}async getNode(e,r){let n=this.queueFromNode(r,new rb.QueueKeys(r.prefix),r.prefix),i=await this.Job.fromId(n,r.id);if(i){let{processed:s={},unprocessed:o=[],failed:a=[],ignored:c={}}=await i.getDependencies({failed:{count:r.maxChildren},processed:{count:r.maxChildren},unprocessed:{count:r.maxChildren},ignored:{count:r.maxChildren}}),l=Object.keys(s),u=Object.keys(c),d=l.length+o.length+u.length+a.length,p=r.depth-1;if(d>0&&p){let f=await this.getChildren(e,[...l,...o,...a,...u],p,r.maxChildren);return{job:i,children:f}}else return{job:i}}}addChildren({multi:e,nodes:r,parent:n,queuesOpts:i}){return Promise.all(r.map(s=>this.addNode({multi:e,node:s,parent:n,queuesOpts:i})))}getChildren(e,r,n,i){let s=o=>{let[a,c,l]=o.split(":");return this.getNode(e,{id:l,queueName:c,prefix:a,depth:n,maxChildren:i})};return Promise.all([...r.map(s)])}queueFromNode(e,r,n){let i=`${n}:${e.queueName}`,s=this.queues.get(i);if(s)return s;let o=this,a={client:this.connection.client,name:e.queueName,keys:r.getKeys(e.queueName),toKey:c=>r.toKey(e.queueName,c),opts:{prefix:n,connection:{}},qualifiedName:r.getQueueQualifiedName(e.queueName),get closing(){return o.closing},waitUntilReady:async()=>this.connection.client,removeListener:this.removeListener.bind(this),emit:this.emit.bind(this),on:this.on.bind(this),get redisVersion(){return o.connection.redisVersion},get databaseType(){return o.connection.databaseType},trace:async()=>{}};return a.scripts=this.createScripts(a),this.queues.set(i,a),a}toFlowError(e,r){let n;switch(e){case mi.ErrorCode.ParentJobNotExist:n=new Error(`Missing key for parent job ${r}. addJob`);break;case mi.ErrorCode.ParentJobCannotBeReplaced:n=new Error(`The parent job ${r} cannot be replaced. addJob`);break;default:n=new Error(`Unknown code ${e} error for addJob`)}return n.code=e,n}async close(){this.closing||(this.queues.clear(),this.closing=this.connection.close()),await this.closing}disconnect(){return this.connection.disconnect()}};nb.FlowProducer=Sk});var VG=h(_k=>{"use strict";Object.defineProperty(_k,"__esModule",{value:!0});_k.createNodeRedisClient=M1e;var j1e=(nr(),Pt(rr)),P1e=require("crypto"),K1e=require("events"),D1e=require("stream"),ib=zo();function HG(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function hi(t){return t?.message==="Disconnects client"||t?.message==="The client is closed"||t?.message==="Connection is closed."}function M1e(t){return new xk(t)}var xk=class t extends K1e.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.raw.isReady?"ready":this.raw.isOpen?"connect":this.hasConnected?"end":"wait"}set status(e){if(e==="end"&&(this.destroying=!0,this.raw.isOpen))try{this.raw.quit().catch(()=>{})}catch{}this.statusOverride=e}get options(){var e;return(e=this.raw.options)!==null&&e!==void 0?e:{}}set options(e){}constructor(e){super(),this.raw=e,this.scripts=new Map,this.hasConnected=!1,this.destroying=!1,this.isCluster=!1,e.on("ready",()=>{this.hasConnected=!0,this.connectionName?this.raw.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")}),e.on("error",r=>{this.destroying&&hi(r)||this.emit("error",r)}),e.on("end",()=>this.emit("close")),e.on("reconnecting",()=>this.emit("reconnecting")),e.isOpen||(this.connectPromise=e.connect().then(()=>{this.connectPromise=void 0},r=>{this.connectPromise=void 0}))}async connect(){if(this.connectPromise)return this.connectPromise;if(!this.raw.isOpen)return this.connectPromise=this.raw.connect().then(()=>{this.connectPromise=void 0},e=>{throw this.connectPromise=void 0,e}),this.connectPromise;this.raw.isReady||await new Promise((e,r)=>{let n=()=>{o(),e()},i=a=>{o(),r(a)},s=()=>{o(),r(new Error("Connection ended before ready event"))},o=()=>{this.off("ready",n),this.off("error",i),this.off("end",s)};this.once("ready",n),this.once("error",i),this.once("end",s)})}disconnect(e=!1){this.destroying=!0,e||(this.statusOverride="end");try{this.raw.isOpen&&this.raw.destroy()}catch{}this.emit("close"),e?(this.statusOverride=void 0,this.emit("reconnecting"),this.connect().catch(r=>{hi(r)||this.emit("error",r)}).finally(()=>{this.destroying=!1})):this.emit("end")}async quit(){if(this.destroying||this.statusOverride==="end")return setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK";this.destroying=!0;try{if(this.raw.isOpen)try{await this.raw.quit()}catch{}}catch{}return this.statusOverride="end",setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"}duplicate(...e){let r=this.raw.duplicate(),n=new t(r);for(let[s,o]of this.scripts)n.scripts.set(s,o),n[s]=(...a)=>n.runCommand(s,a);let i=e[0];return i&&typeof i=="object"&&i.connectionName&&(n.connectionName=i.connectionName),n}defineCommand(e,r){let n=(0,P1e.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i),this.raw.scriptLoad(r.lua).catch(()=>{})}async runCommand(e,r){var n,i;let s=this.scripts.get(e);if(!s)throw new Error(`BullMQ: unknown command "${e}"`);let o=HG(r),{sha:a,lua:c,numberOfKeys:l}=s,u=o.slice(0,l).map(String),d=o.slice(l).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p));try{return await this.raw.evalSha(a,{keys:u,arguments:d})}catch(p){if(this.destroying&&hi(p))return null;if(hi(p))throw new ib.ConnectionClosedError(p.message,p);if(!((i=(n=p?.message)===null||n===void 0?void 0:n.includes)===null||i===void 0)&&i.call(n,"NOSCRIPT"))try{return await this.raw.eval(c,{keys:u,arguments:d})}catch(f){if(this.destroying&&hi(f))return null;throw hi(f)?new ib.ConnectionClosedError(f.message,f):f}throw p}}multi(){return new wk(this.raw.multi(),this.scripts)}pipeline(){return this.multi()}async hgetall(e){let r=await this.raw.hGetAll(e);return r??{}}async hget(e,r){var n;return(n=await this.raw.hGet(e,r))!==null&&n!==void 0?n:null}async hmget(e,...r){return(await this.raw.hmGet(e,r)).map(i=>i??null)}async hset(e,r,...n){if(typeof r=="object")return await this.raw.hSet(e,r);let i={};i[r]=String(n[0]);for(let s=1;s<n.length;s+=2)i[String(n[s])]=String(n[s+1]);return await this.raw.hSet(e,i)}async hdel(e,...r){return await this.raw.hDel(e,r)}async hexists(e,r){return await this.raw.hExists(e,r)?1:0}async get(e){var r;return(r=await this.raw.get(e))!==null&&r!==void 0?r:null}async set(e,r,n){let i={};return n?.PX!=null?i.PX=n.PX:n?.EX!=null&&(i.EX=n.EX),await this.raw.set(e,String(r),i)}async del(...e){return e.length===0?0:await this.raw.del(e)}async zrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n)}async zrevrange(e,r,n,i){if(i?.WITHSCORES){let s=await this.raw.zRangeWithScores(e,r,n,{REV:!0}),o=[];for(let a of s)o.push(a.value,String(a.score));return o}return await this.raw.zRange(e,r,n,{REV:!0})}async zcard(e){return await this.raw.zCard(e)}async zscore(e,r){let n=await this.raw.zScore(e,r);return n!=null?String(n):null}async lrange(e,r,n){return await this.raw.lRange(e,r,n)}async llen(e){return await this.raw.lLen(e)}async ltrim(e,r,n){return await this.raw.lTrim(e,r,n),"OK"}async lpos(e,r){var n;return(n=await this.raw.lPos(e,r))!==null&&n!==void 0?n:null}async smembers(e){return await this.raw.sMembers(e)}async xadd(e,r,n,i){let s={};i?.MAXLEN!=null&&(s.TRIM={strategy:"MAXLEN",threshold:i.MAXLEN,strategyModifier:i.approximate===!1?void 0:"~"});let o={};for(let[a,c]of Object.entries(n))o[a]=String(c);return await this.raw.xAdd(e,r,o,s)}async xread(e,r){let n={};r?.BLOCK!=null&&(n.BLOCK=r.BLOCK),r?.COUNT!=null&&(n.COUNT=r.COUNT);let i=e.map(o=>({key:o.key,id:o.id})),s;try{s=await this.raw.xRead(i,n)}catch(o){if(this.destroying&&hi(o))return null;throw hi(o)?new ib.ConnectionClosedError(o.message,o):o}return s?s.map(o=>[o.name,o.messages.map(a=>[a.id,Object.entries(a.message).flat()])]):null}async xtrim(e,r,n,i){let s=i?.approximate===!1?void 0:"~";return await this.raw.xTrim(e,r,n,{strategyModifier:s})}async bzpopmin(e,r){let n;try{n=await this.raw.bzPopMin(e,r)}catch(i){if(this.destroying&&hi(i))return null;throw hi(i)?new ib.ConnectionClosedError(i.message,i):i}return n?[n.key,n.value,String(n.score)]:null}async info(){return await this.raw.info()}async clientSetName(e){return await this.raw.clientSetName(e)}async clientList(){return await this.raw.sendCommand(["CLIENT","LIST"])}async scan(e,r){let n={};r?.MATCH&&(n.MATCH=r.MATCH),r?.COUNT&&(n.COUNT=r.COUNT);let i=await this.raw.scan(String(e),n);return[String(i.cursor),i.keys]}scanStream(e){let r=this.raw,n=this.connectPromise,i={};e.match&&(i.MATCH=e.match),e.count&&(i.COUNT=e.count);let s=new D1e.Readable({objectMode:!0,async read(){var o,a,c,l;try{n&&await n;try{for(var u=!0,d=j1e.__asyncValues(r.scanIterator(i)),p;p=await d.next(),o=p.done,!o;u=!0){l=p.value,u=!1;let f=l;if(!s.push(Array.isArray(f)?f:[f]))return}}catch(f){a={error:f}}finally{try{!u&&!o&&(c=d.return)&&await c.call(d)}finally{if(a)throw a.error}}s.push(null)}catch(f){s.destroy(f)}}});return s}async keys(e){return await this.raw.keys(e)}async exists(...e){return e.length===0?0:await this.raw.exists(e)}async zadd(e,...r){let n=[];for(let i=0;i<r.length;i+=2)n.push({score:Number(r[i]),value:String(r[i+1])});return await this.raw.zAdd(e,n)}async zrem(e,...r){return await this.raw.zRem(e,r)}async xlen(e){return await this.raw.xLen(e)}async xrevrange(e,r,n,...i){let s={};return i[0]==="COUNT"&&(s.COUNT=Number(i[1])),(await this.raw.xRevRange(e,r,n,s)).map(a=>[a.id,Object.entries(a.message).flat()])}async sadd(e,...r){return await this.raw.sAdd(e,r.map(String))}async scard(e){return await this.raw.sCard(e)}async lpush(e,...r){return await this.raw.lPush(e,r)}async rpop(e){return await this.raw.rPop(e)}async incr(e){return await this.raw.incr(e)}async incrby(e,r){return await this.raw.incrBy(e,r)}async flushall(){return await this.raw.flushAll()}},wk=class{constructor(e,r){this.raw=e,this.scripts=r,this.transformers=[]}addIdentityTransformer(){this.transformers.push(e=>e)}hgetall(e){return this.raw.hGetAll(e),this.addIdentityTransformer(),this}hset(e,r){return this.raw.hSet(e,r),this.addIdentityTransformer(),this}hscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.hScan(e,String(r),i),this.transformers.push(s=>{if(!s)return["0",[]];let o=[];for(let a of s.entries||[])o.push(a.field,a.value);return[String(s.cursor),o]}),this}smembers(e){return this.raw.sMembers(e),this.addIdentityTransformer(),this}sscan(e,r,n){let i={};return n?.COUNT!=null&&(i.COUNT=n.COUNT),this.raw.sScan(e,String(r),i),this.transformers.push(s=>s?[String(s.cursor),s.members||[]]:["0",[]]),this}zrange(e,r,n){return this.raw.zRange(e,r,n),this.addIdentityTransformer(),this}lrange(e,r,n){return this.raw.lRange(e,r,n),this.addIdentityTransformer(),this}llen(e){return this.raw.lLen(e),this.addIdentityTransformer(),this}del(...e){return e.length>0&&(this.raw.del(e),this.addIdentityTransformer()),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=HG(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(u=>Buffer.isBuffer(u)?u:u==null?"":String(u));return this.raw.evalSha(s,{keys:c,arguments:l}),this.addIdentityTransformer(),this}async exec(){let e=await this.raw.exec();return e?e.map((r,n)=>{if(r instanceof Error)return[r,null];let i=this.transformers[n];return[null,i?i(r):r]}):null}}});var QG=h(Tk=>{"use strict";Object.defineProperty(Tk,"__esModule",{value:!0});Tk.createBunRedisClient=$1e;var N1e=require("crypto"),L1e=require("events"),q1e=require("stream"),WG=zo();function YG(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function F1e(t){var e;let r=(e=t?.message)!==null&&e!==void 0?e:"";return r==="Socket closed unexpectedly"||r.startsWith("Connection closed")||r==="Connection is closed."||r==="Connection has failed"}function sb(t){return t==null?[]:Array.isArray(t)?t.map(String):t instanceof Set?Array.from(t,e=>String(e)):[]}function $1e(t,e){return new Ik(t,e)}var Ik=class t extends L1e.EventEmitter{get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.raw.connected?"ready":this.hasConnected?"end":"wait"}set status(e){e==="end"&&(this.closing=!0,this.closed=!0),this.statusOverride=e}get options(){return{}}set options(e){}constructor(e,r){super(),this.raw=e,this.scripts=new Map,this.loadedScriptShas=new Set,this.hasConnected=!1,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectTimer=null,this.reconnectAttempts=0,this.maxReconnectDelay=2e4,this.isCluster=!1,this._setupCallbacks(),r?.lazyConnect||this.connect().catch(()=>{})}_setupCallbacks(){this.raw.onconnect=()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.reconnecting=!1,this.reconnectAttempts=0,this.statusOverride=void 0,this.loadedScriptShas.clear(),this.connectionName?this.clientSetName(this.connectionName).then(()=>this.emit("ready"),()=>this.emit("ready")):this.emit("ready")},this.raw.onclose=e=>{if(this.closing){this.closed=!0,this.emit("close"),this.emit("end");return}this.closed=!0,this.emit("close"),e&&this.emit("error",e),this._scheduleReconnect()}}_scheduleReconnect(){if(this.closing||this.reconnecting)return;this.reconnecting=!0,this.reconnectAttempts++;let e=Math.max(Math.min(Math.exp(this.reconnectAttempts)*100,this.maxReconnectDelay),1e3);this.reconnectTimer=setTimeout(async()=>{if(this.reconnectTimer=null,this.closing){this.reconnecting=!1;return}try{let r=this.raw.constructor,n=new r(this.raw.url);this.raw=n,this.closed=!1,this.connecting=void 0,this._setupCallbacks(),await n.connect()}catch{this.reconnecting=!1,this.closing||this._scheduleReconnect()}},e)}async connect(){let e=this.hasConnected&&(this.closed||!this.raw.connected);if(this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1,this.raw.connected&&!e){this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0;return}if(!this.connecting){if(this.closed=!1,this.closing=!1,this.statusOverride=void 0,e){let r=this.raw.constructor;this.raw=new r(this.raw.url),this._setupCallbacks()}this.connecting=this.raw.connect().then(()=>{this.hasConnected=!0,this.closed=!1,this.closing=!1,this.statusOverride=void 0}).finally(()=>{this.connecting=void 0})}await this.connecting}_closeRaw(){this.reconnectTimer&&(clearTimeout(this.reconnectTimer),this.reconnectTimer=null),this.reconnecting=!1;let e=this.raw;e.onconnect=()=>{},e.onclose=()=>{},e.onerror=()=>{},e.connected&&setImmediate(()=>{try{e.connected&&e.close()}catch{}})}disconnect(e){if(!(this.closed&&!e))if(e){this.closed=!0,this.statusOverride=void 0;let r=this.raw;r.onclose=()=>{},r.connected&&setImmediate(()=>{try{r.connected&&r.close()}catch{}}),this.emit("close"),this._scheduleReconnect()}else this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),this.emit("close"),this.emit("end")}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closing=!0,this.closed=!0,this.statusOverride="end",this._closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){let r=this.raw.constructor,n=new r(this.raw.url),i=new t(n);for(let[o,a]of this.scripts)i.scripts.set(o,a),i[o]=(...c)=>i.runCommand(o,c);let s=e[0];return s&&typeof s=="object"&&s.connectionName&&(i.connectionName=s.connectionName),i}defineCommand(e,r){let n=(0,N1e.createHash)("sha1").update(r.lua).digest("hex");this.scripts.set(e,{sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys}),this[e]=(...i)=>this.runCommand(e,i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}"`);let i=YG(r),{sha:s,lua:o,numberOfKeys:a}=n,c=i.slice(0,a).map(String),l=i.slice(a).map(p=>Buffer.isBuffer(p)?p:p==null?"":String(p)),u=[s,String(c.length),...c,...l];return(async()=>{var p,f;try{let m=await this.sendCommand("EVALSHA",u);return this.loadedScriptShas.add(s),m}catch(m){if(!((f=(p=m?.message)===null||p===void 0?void 0:p.includes)===null||f===void 0)&&f.call(p,"NOSCRIPT")){let y=[o,String(c.length),...c,...l],b=await this.sendCommand("EVAL",y);return this.loadedScriptShas.add(s),b}throw m}})()}async ensureScriptsLoaded(e){let r=[],n=new Set;for(let i of e)this.loadedScriptShas.has(i.sha)||n.has(i.sha)||(n.add(i.sha),r.push(i));r.length!==0&&await Promise.all(r.map(async i=>{await this.sendCommand("SCRIPT",["LOAD",i.lua]),this.loadedScriptShas.add(i.sha)}))}sendCommand(e,r){return this.closing||this.closed?Promise.reject(new WG.ConnectionClosedError("Connection is closed")):this.raw.send(e,r).catch(n=>{if(F1e(n))return this.closing||this.closed?null:Promise.reject(new WG.ConnectionClosedError(n.message,n));throw n})}multi(){return new ob(this.raw,this.scripts,!0,this)}pipeline(){return new ob(this.raw,this.scripts,!1,this)}async hgetall(e){let r=await this.sendCommand("HGETALL",[e]);if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}async hget(e,r){let n=await this.sendCommand("HGET",[e,r]);return n??null}async hmget(e,...r){return(await this.sendCommand("HMGET",[e,...r])||[]).map(i=>i??null)}async hset(e,r,...n){let i;if(typeof r=="object"){i=[e];for(let[s,o]of Object.entries(r))i.push(s,String(o))}else{i=[e,r,String(n[0])];for(let s=1;s<n.length;s+=2)i.push(String(n[s]),String(n[s+1]))}return await this.sendCommand("HSET",i)}async hdel(e,...r){return await this.sendCommand("HDEL",[e,...r])}async hexists(e,r){let n=await this.sendCommand("HEXISTS",[e,r]);return n===!0||n===1?1:0}async get(e){let r=await this.sendCommand("GET",[e]);return r??null}async set(e,r,n){let i=[e,String(r)];return n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX)),await this.sendCommand("SET",i)}async del(...e){return e.length===0?0:await this.sendCommand("DEL",e)}async zrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zrevrange(e,r,n,i){let s=[e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES"),s.push("REV");let o=await this.sendCommand("ZRANGE",s);return o?i?.WITHSCORES&&o.length>0&&Array.isArray(o[0])?o.flatMap(a=>[String(a[0]),String(a[1])]):o.map(String):[]}async zcard(e){return await this.sendCommand("ZCARD",[e])}async zscore(e,r){let n=await this.sendCommand("ZSCORE",[e,r]);return n!=null?String(n):null}async lrange(e,r,n){return(await this.sendCommand("LRANGE",[e,String(r),String(n)])||[]).map(String)}async llen(e){return await this.sendCommand("LLEN",[e])}async ltrim(e,r,n){return await this.sendCommand("LTRIM",[e,String(r),String(n)]),"OK"}async lpos(e,r){let n=await this.sendCommand("LPOS",[e,r]);return n??null}async smembers(e){let r=await this.sendCommand("SMEMBERS",[e]);return sb(r)}async xadd(e,r,n,i){let s=[e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,String(a));return await this.raw.send("XADD",s)}async xread(e,r){let n=[];r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),n.push("STREAMS");for(let s of e)n.push(s.key);for(let s of e)n.push(s.id);let i;try{i=await this.sendCommand("XREAD",n)}catch(s){if(this.closing)return null;throw s}return i?Array.isArray(i)?i.map(s=>{let o=String(s[0]),a=(s[1]||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[o,a]}):Object.entries(i).map(([s,o])=>{let a=(o||[]).map(c=>{let l=String(c[0]),u=(c[1]||[]).map(String);return[l,u]});return[s,a]}):null}async xtrim(e,r,n,i){let s=[e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),await this.sendCommand("XTRIM",s)}async bzpopmin(e,r){let n;try{n=await this.sendCommand("BZPOPMIN",[e,String(r)])}catch(i){if(this.closing)return null;throw i}return!n||n.length===0?null:[String(n[0]),String(n[1]),String(n[2])]}async info(){return await this.sendCommand("INFO",[])}async clientSetName(e){return await this.sendCommand("CLIENT",["SETNAME",e])}async clientList(){return await this.sendCommand("CLIENT",["LIST"])}async scan(e,r){let n=[String(e)];r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT&&n.push("COUNT",String(r.COUNT));let i=await this.sendCommand("SCAN",n),s=i[1];return[String(i[0]),Array.isArray(s)?s.map(String):[]]}scanStream(e){let r=this,n="0",i=!1,s=new q1e.Readable({objectMode:!0,async read(){if(i&&n==="0"){s.push(null);return}i=!0;try{for(;;){let[o,a]=await r.scan(n,{MATCH:e.match,COUNT:e.count});if(n=o,a.length>0){s.push(a),n==="0"&&s.push(null);return}if(n==="0"){s.push(null);return}}}catch(o){s.destroy(o)}}});return s}async keys(e){return(await this.sendCommand("KEYS",[e])||[]).map(String)}async exists(...e){if(e.length===0)return 0;let r=await this.sendCommand("EXISTS",e);return typeof r=="boolean"?r?1:0:r}async zadd(e,...r){let n=[e];for(let i=0;i<r.length;i+=2)n.push(String(r[i]),String(r[i+1]));return await this.sendCommand("ZADD",n)}async zrem(e,...r){return await this.sendCommand("ZREM",[e,...r])}async xlen(e){return await this.sendCommand("XLEN",[e])}async xrevrange(e,r,n,...i){let s=[e,r,n];i[0]==="COUNT"&&s.push("COUNT",String(i[1]));let o=await this.sendCommand("XREVRANGE",s);return o?o.map(a=>[String(a[0]),(a[1]||[]).map(String)]):[]}async sadd(e,...r){return await this.sendCommand("SADD",[e,...r.map(String)])}async scard(e){return await this.sendCommand("SCARD",[e])}async lpush(e,...r){return await this.sendCommand("LPUSH",[e,...r])}async rpop(e){let r=await this.sendCommand("RPOP",[e]);return r??null}async incr(e){return await this.sendCommand("INCR",[e])}async incrby(e,r){return await this.sendCommand("INCRBY",[e,String(r)])}async flushall(){return await this.sendCommand("FLUSHALL",[])}},ob=class{constructor(e,r,n,i){this.raw=e,this.scripts=r,this.transactional=n,this.adapter=i,this.commands=[],this.transformers=[],this.scriptsToLoad=[]}addCommand(e,r,n){this.commands.push({cmd:e,args:r}),this.transformers.push(n||(i=>i))}hgetall(e){return this.addCommand("HGETALL",[e],r=>{if(!r||Array.isArray(r)&&r.length===0)return{};if(Array.isArray(r)){let n={};for(let i=0;i<r.length;i+=2)n[String(r[i])]=String(r[i+1]);return n}return r}),this}hset(e,r){let n=[e];for(let[i,s]of Object.entries(r))n.push(i,String(s));return this.addCommand("HSET",n),this}hscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("HSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),sb(s[1])]:["0",[]]:["0",[]]),this}smembers(e){return this.addCommand("SMEMBERS",[e],r=>sb(r)),this}sscan(e,r,n){let i=[e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.addCommand("SSCAN",i,s=>s?Array.isArray(s)?[String(s[0]),sb(s[1])]:["0",[]]:["0",[]]),this}zrange(e,r,n){return this.addCommand("ZRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}lrange(e,r,n){return this.addCommand("LRANGE",[e,String(r),String(n)],i=>Array.isArray(i)?i.map(String):[]),this}llen(e){return this.addCommand("LLEN",[e]),this}del(...e){return e.length>0&&this.addCommand("DEL",e),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: unknown command "${e}" in transaction`);let i=YG(r),{sha:s,numberOfKeys:o}=n,a=i.slice(0,o).map(String),c=i.slice(o).map(l=>Buffer.isBuffer(l)?l:l==null?"":String(l));return this.scriptsToLoad.push(n),this.addCommand("EVALSHA",[s,String(a.length),...a,...c]),this}async exec(){if(this.commands.length===0)return[];if(this.scriptsToLoad.length>0&&await this.adapter.ensureScriptsLoaded(this.scriptsToLoad),!this.transactional)return(await Promise.allSettled(this.commands.map(({cmd:n,args:i})=>this.adapter.sendCommand(n,i)))).map((n,i)=>{if(n.status==="rejected")return[n.reason,null];let s=this.transformers[i];return[null,s?s(n.value):n.value]});let e=r=>{};try{this.raw.send("MULTI",[]).catch(e);for(let{cmd:n,args:i}of this.commands)this.raw.send(n,i).catch(e);let r=await this.raw.send("EXEC",[]);return r?r.map((n,i)=>{if(n instanceof Error)return[n,null];let s=this.transformers[i];return[null,s?s(n):n]}):null}catch(r){try{await this.raw.send("DISCARD",[])}catch{}throw r}}}});var r5=h(Ok=>{"use strict";Object.defineProperty(Ok,"__esModule",{value:!0});Ok.createValkeyGlideClient=Q1e;var U1e=require("crypto"),J1e=require("events"),z1e=require("stream"),ab=zo(),Nd=1;function G1e(){return{commands:[],customCommand(t){this.commands.push(t)}}}function B1e(t){try{let{Batch:e}=require("@valkey/valkey-glide");return typeof e=="function"?new e(t):null}catch{return null}}function ZG(t){return Buffer.isBuffer(t)}function hn(t){return ZG(t)?t:t==null?"":String(t)}function H(t){return ZG(t)?t.toString():String(t)}function ll(t){return Array.isArray(t)&&t.every(e=>e&&typeof e=="object"&&"key"in e&&"value"in e)}function e5(t){return t.length===1&&Array.isArray(t[0])?t[0]:t}function t5(t){if(!t)return{};if(ll(t))return t.reduce((e,r)=>(e[H(r.key)]=H(r.value),e),{});if(t instanceof Map){let e={};for(let[r,n]of t.entries())e[H(r)]=H(n);return e}if(Array.isArray(t)){let e={};for(let r=0;r<t.length;r+=2)e[H(t[r])]=H(t[r+1]);return e}if(typeof t=="object"){let e={};for(let[r,n]of Object.entries(t))e[r]=H(n);return e}return{}}function Rk(t){return t?Array.isArray(t)?ll(t)?t.flatMap(e=>[H(e.key),H(e.value)]):t.every(e=>Array.isArray(e)&&e.length===2)?t.flatMap(e=>{let[r,n]=e;return[H(r),H(n)]}):t.map(e=>H(e)):typeof t=="object"?Object.entries(t).flatMap(([e,r])=>[e,H(r)]):[]:[]}function H1e(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))||!ll(t)?t:t.map(e=>{let r=H(e.key),n=ll(e.value)?e.value.map(i=>[H(i.key),Rk(i.value)]):[];return[r,n]}):null}function V1e(t){if(Array.isArray(t)&&t.length>=2){let[e,r]=t,n=Array.isArray(r)?r.map(i=>H(i)):[];return[H(e),n]}if(t&&typeof t=="object"){let e=t;if(e.cursor!==void 0&&Array.isArray(e.keys))return[H(e.cursor),e.keys.map(r=>H(r))]}return["0",[]]}function W1e(t){return t?Array.isArray(t)&&t.every(e=>Array.isArray(e)&&e.length===2&&typeof e[0]<"u"&&Array.isArray(e[1]))?t.map(([e,r])=>[H(e),r.map(n=>H(n))]):ll(t)?t.map(e=>[H(e.key),Rk(e.value)]):[]:[]}function XG(t,e=!1){return Array.isArray(t)?e?ll(t)?t.flatMap(r=>[H(r.key),H(r.value)]):t.every(r=>Array.isArray(r)&&r.length>=2&&r[0]!==void 0)?t.flatMap(r=>[H(r[0]),H(r[1])]):t.map(r=>H(r)):t.map(r=>H(r)):[]}function Y1e(t){let[e,...r]=t,n=H(e).toUpperCase();if(n==="BZPOPMIN")return!0;if(n!=="XREAD")return!1;for(let i=0;i<r.length;i+=2)if(H(r[i]).toUpperCase()==="BLOCK")return!0;return!1}function Q1e(t){return new kk(t)}var kk=class t extends J1e.EventEmitter{constructor(e,r){super(),this.connectionName=r,this.scripts=new Map,this.scriptsBySha=new Map,this.scriptLoadPromises=new Map,this.readyEmitted=!1,this.closed=!1,this.operationChain=Promise.resolve(),this.activeBlockingCommands=0,e instanceof Promise?(this.rawPromise=e,this.connect().catch(n=>this.emit("error",n))):this.raw=e}get status(){return this.statusOverride?this.statusOverride:this.closed?"end":this.readyEmitted?"ready":"wait"}set status(e){e==="end"&&this.disconnect(),this.statusOverride=e}get isCluster(){var e,r,n;return((n=(r=(e=this.raw)===null||e===void 0?void 0:e.constructor)===null||r===void 0?void 0:r.name)!==null&&n!==void 0?n:"").includes("Cluster")}get options(){var e,r,n,i;return(i=(r=(e=this.raw)===null||e===void 0?void 0:e.config)!==null&&r!==void 0?r:(n=this.raw)===null||n===void 0?void 0:n.options)!==null&&i!==void 0?i:{}}set options(e){}ensureOpen(){if(this.closed)throw new ab.ConnectionClosedError}normalizeError(e){throw e instanceof ab.ConnectionClosedError||e instanceof Error&&e.name==="ClosingError"?new ab.ConnectionClosedError(e.message,e):e}async ensureRaw(){if(this.raw)return this.raw;if(!this.rawPromise)throw new Error("BullMQ: Valkey Glide client not initialized - missing raw client and client promise. Please report this as a bug.");return this.raw=await this.rawPromise,this.raw}async runSerialized(e){this.ensureOpen();let r=this.operationChain,n;this.operationChain=new Promise(i=>{n=i}),await r,this.ensureOpen();try{let i=await this.ensureRaw();return this.ensureOpen(),await e(i)}catch(i){this.normalizeError(i)}finally{n()}}async runRawCommand(e,r){let n=Y1e(e);return this.runSerialized(async i=>{n&&this.activeBlockingCommands++;try{return await i.customCommand(e,r)}finally{n&&this.activeBlockingCommands--}})}ensureScriptLoaded(e){let r=this.scriptLoadPromises.get(e.sha);return r||(r=this.runRawCommand(["SCRIPT","LOAD",e.lua]).then(()=>{}).catch(()=>{}),this.scriptLoadPromises.set(e.sha,r)),r}async applyConnectionNameIfNeeded(){this.connectionName&&await this.runRawCommand(["CLIENT","SETNAME",this.connectionName],{decoder:Nd})}async clearConnectionNameIfNeeded(e){if(this.connectionName)try{await e.customCommand(["CLIENT","SETNAME",""],{decoder:Nd})}catch{}}async recreateRaw(){var e,r;let n=await this.ensureRaw(),i=n.constructor,s=(e=i?.createClient)===null||e===void 0?void 0:e.bind(i),o=(r=n.config)!==null&&r!==void 0?r:n.options;if(!s||!o)throw new Error("BullMQ: Cannot recreate Valkey Glide client: missing createClient() method or config object. Ensure the client was created via GlideClient.createClient() or GlideClusterClient.createClient().");this.raw=await s(o),this.scriptLoadPromises.clear()}async connect(){return this.connecting?this.connecting:(this.connecting=(async()=>{this.closed&&this.raw&&await this.recreateRaw(),this.closed=!1,this.statusOverride=void 0,await this.ensureRaw();try{await this.applyConnectionNameIfNeeded()}catch(e){if(this.closed&&e instanceof ab.ConnectionClosedError)return;throw e}this.closed||(this.readyEmitted=!0,this.emit("ready"))})().finally(()=>{this.connecting=void 0}),this.connecting)}closeRaw(){if(!this.closingPromise){let e=()=>{if(this.raw)try{this.raw.close()}catch{}};this.closingPromise=(this.activeBlockingCommands>0?Promise.resolve().then(e):this.operationChain.catch(()=>{}).then(async()=>{this.closed&&(this.raw&&await this.clearConnectionNameIfNeeded(this.raw),e())})).finally(()=>{this.closingPromise=void 0})}return this.closingPromise}disconnect(e=!1){if(!(this.closed&&!e)){if(this.closed=!0,this.readyEmitted=!1,this.statusOverride=e?void 0:"end",this.emit("close"),e){this.closeRaw().then(()=>(this.emit("reconnecting"),this.connect())).catch(r=>this.emit("error",r));return}this.closeRaw(),this.emit("end")}}async quit(){return this.closed?(setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK"):(this.closed=!0,this.readyEmitted=!1,this.statusOverride="end",this.closeRaw(),setImmediate(()=>{this.emit("end"),this.emit("close")}),"OK")}duplicate(...e){var r;let n=(r=e[0])!==null&&r!==void 0?r:{},i=(async()=>{var s,o;let a=await this.ensureRaw(),c=a.constructor,l=(s=c?.createClient)===null||s===void 0?void 0:s.bind(c),u=(o=a.config)!==null&&o!==void 0?o:a.options;if(!l||!u)throw new Error("BullMQ: Cannot duplicate Valkey Glide client: missing createClient() or config. Ensure the client was created via GlideClient.createClient()/GlideClusterClient.createClient().");return l(u)})();return new t(i,n.connectionName)}defineCommand(e,r){let n=(0,U1e.createHash)("sha1").update(r.lua).digest("hex"),i={sha:n,lua:r.lua,numberOfKeys:r.numberOfKeys};this.scripts.set(e,i),this.scriptsBySha.set(n,i),this[e]=(...s)=>this.runCommand(e,s),this.ensureScriptLoaded(i)}async runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before runCommand().`);let i=e5(r),s=i.slice(0,n.numberOfKeys).map(hn),o=i.slice(n.numberOfKeys).map(hn),a=["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o];try{return await this.runRawCommand(a)}catch(c){if(typeof c?.message=="string"&&c.message.toLowerCase().includes("noscript"))return this.runRawCommand(["EVAL",n.lua,String(n.numberOfKeys),...s,...o]);throw c}}multi(){return new Ak(this,this.scripts)}pipeline(){return this.multi()}async hgetall(e){return t5(await this.runRawCommand(["HGETALL",e]))}async hget(e,r){let n=await this.runRawCommand(["HGET",e,r]);return n==null?null:H(n)}async hmget(e,...r){let n=await this.runRawCommand(["HMGET",e,...r]);return Array.isArray(n)?n.map(i=>i==null?null:H(i)):[]}async hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,hn(s));return Number(await this.runRawCommand(n))}async hdel(e,...r){return Number(await this.runRawCommand(["HDEL",e,...r]))}async hexists(e,r){let n=await this.runRawCommand(["HEXISTS",e,r]);return typeof n=="boolean"?n?1:0:Number(n)}async get(e){let r=await this.runRawCommand(["GET",e]);return r==null?null:H(r)}async set(e,r,n){let i=["SET",e,hn(r)];n?.PX!=null?i.push("PX",String(n.PX)):n?.EX!=null&&i.push("EX",String(n.EX));let s=await this.runRawCommand(i);return s==null?null:H(s)}async del(...e){return e.length===0?0:Number(await this.runRawCommand(["DEL",...e]))}async zrange(e,r,n,i){let s=["ZRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return XG(o,i?.WITHSCORES)}async zrevrange(e,r,n,i){let s=["ZREVRANGE",e,String(r),String(n)];i?.WITHSCORES&&s.push("WITHSCORES");let o=await this.runRawCommand(s);return XG(o,i?.WITHSCORES)}async zcard(e){return Number(await this.runRawCommand(["ZCARD",e]))}async zscore(e,r){let n=await this.runRawCommand(["ZSCORE",e,r]);return n==null?null:H(n)}async lrange(e,r,n){let i=await this.runRawCommand(["LRANGE",e,String(r),String(n)]);return Array.isArray(i)?i.map(H):[]}async llen(e){return Number(await this.runRawCommand(["LLEN",e]))}async ltrim(e,r,n){let i=await this.runRawCommand(["LTRIM",e,String(r),String(n)]);return i==null?"OK":H(i)}async lpos(e,r){let n=await this.runRawCommand(["LPOS",e,r]);return n==null?null:Number(n)}async smembers(e){let r=await this.runRawCommand(["SMEMBERS",e]);return Array.isArray(r)?r.map(H):[]}async xadd(e,r,n,i){let s=["XADD",e];i?.MAXLEN!=null&&(s.push("MAXLEN"),i.approximate!==!1&&s.push("~"),s.push(String(i.MAXLEN))),s.push(r);for(let[o,a]of Object.entries(n))s.push(o,hn(a));return H(await this.runRawCommand(s))}async xread(e,r){let n=["XREAD"];r?.BLOCK!=null&&n.push("BLOCK",String(r.BLOCK)),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),n.push("STREAMS");for(let i of e)n.push(i.key);for(let i of e)n.push(i.id);return H1e(await this.runRawCommand(n))}async xtrim(e,r,n,i){let s=["XTRIM",e,r];return i?.approximate!==!1&&s.push("~"),s.push(String(n)),Number(await this.runRawCommand(s))}async bzpopmin(e,r){let n=await this.runRawCommand(["BZPOPMIN",e,String(r)]);return n&&Array.isArray(n)&&n.length>=3?[H(n[0]),H(n[1]),H(n[2])]:null}async info(){return H(await this.runRawCommand(["INFO"]))}async clientSetName(e){return this.runRawCommand(["CLIENT","SETNAME",e],{decoder:Nd})}async clientList(){return H(await this.runRawCommand(["CLIENT","LIST"],{decoder:Nd}))}async scan(e,r){let n=["SCAN",String(e)];return r?.MATCH&&n.push("MATCH",r.MATCH),r?.COUNT!=null&&n.push("COUNT",String(r.COUNT)),V1e(await this.runRawCommand(n))}scanStream(e){let r="0",n=!1,i=new z1e.Readable({objectMode:!0,read:()=>{n||(n=!0,(async()=>{do{let[s,o]=await this.scan(r,{MATCH:e.match,COUNT:e.count});if(r=s,o.length>0&&!i.push(o))return}while(r!=="0");i.push(null)})().catch(s=>i.destroy(s)).finally(()=>{n=!1}))}});return i}async keys(e){let r=await this.runRawCommand(["KEYS",e]);return Array.isArray(r)?r.map(H):[]}async exists(...e){if(e.length===0)return 0;let r=await this.runRawCommand(["EXISTS",...e]);return typeof r=="boolean"?r?1:0:Number(r)}async zadd(e,...r){let n=["ZADD",e];for(let i=0;i<r.length;i+=2)n.push(hn(r[i]),hn(r[i+1]));return Number(await this.runRawCommand(n))}async zrem(e,...r){return Number(await this.runRawCommand(["ZREM",e,...r]))}async xlen(e){return Number(await this.runRawCommand(["XLEN",e]))}async xrevrange(e,r,n,...i){let s=["XREVRANGE",e,r,n];return i[0]==="COUNT"&&s.push("COUNT",hn(i[1])),W1e(await this.runRawCommand(s))}async sadd(e,...r){return Number(await this.runRawCommand(["SADD",e,...r.map(n=>hn(n))]))}async scard(e){return Number(await this.runRawCommand(["SCARD",e]))}async lpush(e,...r){return Number(await this.runRawCommand(["LPUSH",e,...r]))}async rpop(e){let r=await this.runRawCommand(["RPOP",e]);return r==null?null:H(r)}async incr(e){return Number(await this.runRawCommand(["INCR",e]))}async incrby(e,r){return Number(await this.runRawCommand(["INCRBY",e,String(r)]))}async flushall(){let e=await this.runRawCommand(["FLUSHALL"]);return e==null?"OK":H(e)}async execQueuedCommands(e){let r=e.map(n=>String(n.args[0]).toUpperCase()==="EVALSHA"?this.scriptsBySha.get(H(n.args[1])):void 0).filter(n=>!!n);return r.length>0&&await Promise.all(r.map(n=>this.ensureScriptLoaded(n))),this.runSerialized(async n=>{if(typeof n.exec=="function"){let i=B1e(!0),s=i??G1e();if(s){for(let a of e)s.customCommand(a.args);let o;try{o=await n.exec(s,!1)}catch(a){if(i)throw a;o=null}if(o)return o.map((a,c)=>{var l;if(a instanceof Error)return[a,null];let u=(l=e[c])===null||l===void 0?void 0:l.transform;return[null,u?u(a):a]});if(i)return null}}await n.customCommand(["MULTI"]);try{for(let o of e)await n.customCommand(o.args,{decoder:Nd});let i=await n.customCommand(["EXEC"]);return i?(Array.isArray(i)?i:[i]).map((o,a)=>{var c;if(o instanceof Error)return[o,null];let l=(c=e[a])===null||c===void 0?void 0:c.transform;return[null,l?l(o):o]}):null}catch(i){try{await n.customCommand(["DISCARD"])}catch{}throw i}})}},Ak=class{constructor(e,r){this.adapter=e,this.scripts=r,this.commands=[]}queueCommand(e,r){return this.commands.push({args:e,transform:r}),this}hgetall(e){return this.queueCommand(["HGETALL",e],t5)}hset(e,r){let n=["HSET",e];for(let[i,s]of Object.entries(r))n.push(i,hn(s));return this.queueCommand(n)}hscan(e,r,n){let i=["HSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>Array.isArray(s)&&s.length>=2?[H(s[0]),Rk(s[1])]:["0",[]])}smembers(e){return this.queueCommand(["SMEMBERS",e],r=>Array.isArray(r)?r.map(n=>H(n)):[])}sscan(e,r,n){let i=["SSCAN",e,String(r)];return n?.COUNT!=null&&i.push("COUNT",String(n.COUNT)),this.queueCommand(i,s=>{if(Array.isArray(s)&&s.length>=2){let o=Array.isArray(s[1])?s[1].map(a=>H(a)):[];return[H(s[0]),o]}return["0",[]]})}zrange(e,r,n){return this.queueCommand(["ZRANGE",e,String(r),String(n)])}lrange(e,r,n){return this.queueCommand(["LRANGE",e,String(r),String(n)])}llen(e){return this.queueCommand(["LLEN",e])}del(...e){return e.length>0&&this.queueCommand(["DEL",...e]),this}runCommand(e,r){let n=this.scripts.get(e);if(!n)throw new Error(`BullMQ: command "${e}" is not defined. Use defineCommand() before adding it to transactions.`);let i=e5(r),s=i.slice(0,n.numberOfKeys).map(hn),o=i.slice(n.numberOfKeys).map(hn);return this.queueCommand(["EVALSHA",n.sha,String(n.numberOfKeys),...s,...o])}exec(){return this.adapter.execQueuedCommands(this.commands)}}});var jB=h(Jr=>{"use strict";Object.defineProperty(Jr,"__esModule",{value:!0});var Xi=class extends Error{},Fk=class extends Xi{constructor(e){super(`Invalid DateTime: ${e.toMessage()}`)}},$k=class extends Xi{constructor(e){super(`Invalid Interval: ${e.toMessage()}`)}},Uk=class extends Xi{constructor(e){super(`Invalid Duration: ${e.toMessage()}`)}},Xs=class extends Xi{},hb=class extends Xi{constructor(e){super(`Invalid unit ${e}`)}},jt=class extends Xi{},yi=class extends Xi{constructor(){super("Zone is an abstract class")}},M="numeric",Nn="short",$r="long",yb={year:M,month:M,day:M},P5={year:M,month:Nn,day:M},X1e={year:M,month:Nn,day:M,weekday:Nn},K5={year:M,month:$r,day:M},D5={year:M,month:$r,day:M,weekday:$r},M5={hour:M,minute:M},N5={hour:M,minute:M,second:M},L5={hour:M,minute:M,second:M,timeZoneName:Nn},q5={hour:M,minute:M,second:M,timeZoneName:$r},F5={hour:M,minute:M,hourCycle:"h23"},$5={hour:M,minute:M,second:M,hourCycle:"h23"},U5={hour:M,minute:M,second:M,hourCycle:"h23",timeZoneName:Nn},J5={hour:M,minute:M,second:M,hourCycle:"h23",timeZoneName:$r},z5={year:M,month:M,day:M,hour:M,minute:M},G5={year:M,month:M,day:M,hour:M,minute:M,second:M},B5={year:M,month:Nn,day:M,hour:M,minute:M},H5={year:M,month:Nn,day:M,hour:M,minute:M,second:M},Z1e={year:M,month:Nn,day:M,weekday:Nn,hour:M,minute:M},V5={year:M,month:$r,day:M,hour:M,minute:M,timeZoneName:Nn},W5={year:M,month:$r,day:M,hour:M,minute:M,second:M,timeZoneName:Nn},Y5={year:M,month:$r,day:M,weekday:$r,hour:M,minute:M,timeZoneName:$r},Q5={year:M,month:$r,day:M,weekday:$r,hour:M,minute:M,second:M,timeZoneName:$r},eo=class{get type(){throw new yi}get name(){throw new yi}get ianaName(){return this.name}get isUniversal(){throw new yi}offsetName(e,r){throw new yi}formatOffset(e,r){throw new yi}offset(e){throw new yi}equals(e){throw new yi}get isValid(){throw new yi}},Ck=null,Jd=class t extends eo{static get instance(){return Ck===null&&(Ck=new t),Ck}get type(){return"system"}get name(){return new Intl.DateTimeFormat().resolvedOptions().timeZone}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return cB(e,r,n)}formatOffset(e,r){return Ud(this.offset(e),r)}offset(e){return-new Date(e).getTimezoneOffset()}equals(e){return e.type==="system"}get isValid(){return!0}},Jk=new Map;function eTe(t){let e=Jk.get(t);return e===void 0&&(e=new Intl.DateTimeFormat("en-US",{hour12:!1,timeZone:t,year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit",second:"2-digit",era:"short"}),Jk.set(t,e)),e}var tTe={year:0,month:1,day:2,era:3,hour:4,minute:5,second:6};function rTe(t,e){let r=t.format(e).replace(/\u200E/g,""),n=/(\d+)\/(\d+)\/(\d+) (AD|BC),? (\d+):(\d+):(\d+)/.exec(r),[,i,s,o,a,c,l,u]=n;return[o,i,s,a,c,l,u]}function nTe(t,e){let r=t.formatToParts(e),n=[];for(let i=0;i<r.length;i++){let{type:s,value:o}=r[i],a=tTe[s];s==="era"?n[a]=o:Q(a)||(n[a]=parseInt(o,10))}return n}var jk=new Map,Zi=class t extends eo{static create(e){let r=jk.get(e);return r===void 0&&jk.set(e,r=new t(e)),r}static resetCache(){jk.clear(),Jk.clear()}static isValidSpecifier(e){return this.isValidZone(e)}static isValidZone(e){if(!e)return!1;try{return new Intl.DateTimeFormat("en-US",{timeZone:e}).format(),!0}catch{return!1}}constructor(e){super(),this.zoneName=e,this.valid=t.isValidZone(e)}get type(){return"iana"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(e,{format:r,locale:n}){return cB(e,r,n,this.name)}formatOffset(e,r){return Ud(this.offset(e),r)}offset(e){if(!this.valid)return NaN;let r=new Date(e);if(isNaN(r))return NaN;let n=eTe(this.name),[i,s,o,a,c,l,u]=n.formatToParts?nTe(n,r):rTe(n,r);a==="BC"&&(i=-Math.abs(i)+1);let p=wb({year:i,month:s,day:o,hour:c===24?0:c,minute:l,second:u,millisecond:0}),f=+r,m=f%1e3;return f-=m>=0?m:1e3+m,(p-f)/(60*1e3)}equals(e){return e.type==="iana"&&e.name===this.name}get isValid(){return this.valid}},n5={};function iTe(t,e={}){let r=JSON.stringify([t,e]),n=n5[r];return n||(n=new Intl.ListFormat(t,e),n5[r]=n),n}var zk=new Map;function Gk(t,e={}){let r=JSON.stringify([t,e]),n=zk.get(r);return n===void 0&&(n=new Intl.DateTimeFormat(t,e),zk.set(r,n)),n}var Bk=new Map;function sTe(t,e={}){let r=JSON.stringify([t,e]),n=Bk.get(r);return n===void 0&&(n=new Intl.NumberFormat(t,e),Bk.set(r,n)),n}var Hk=new Map;function oTe(t,e={}){let{base:r,...n}=e,i=JSON.stringify([t,n]),s=Hk.get(i);return s===void 0&&(s=new Intl.RelativeTimeFormat(t,e),Hk.set(i,s)),s}var qd=null;function aTe(){return qd||(qd=new Intl.DateTimeFormat().resolvedOptions().locale,qd)}var Vk=new Map;function X5(t){let e=Vk.get(t);return e===void 0&&(e=new Intl.DateTimeFormat(t).resolvedOptions(),Vk.set(t,e)),e}var Wk=new Map;function cTe(t){let e=Wk.get(t);if(!e){let r=new Intl.Locale(t);e="getWeekInfo"in r?r.getWeekInfo():r.weekInfo,"minimalDays"in e||(e={...Z5,...e}),Wk.set(t,e)}return e}function lTe(t){let e=t.indexOf("-x-");e!==-1&&(t=t.substring(0,e));let r=t.indexOf("-u-");if(r===-1)return[t];{let n,i;try{n=Gk(t).resolvedOptions(),i=t}catch{let c=t.substring(0,r);n=Gk(c).resolvedOptions(),i=c}let{numberingSystem:s,calendar:o}=n;return[i,s,o]}}function uTe(t,e,r){return(r||e)&&(t.includes("-u-")||(t+="-u"),r&&(t+=`-ca-${r}`),e&&(t+=`-nu-${e}`)),t}function dTe(t){let e=[];for(let r=1;r<=12;r++){let n=et.utc(2009,r,1);e.push(t(n))}return e}function pTe(t){let e=[];for(let r=1;r<=7;r++){let n=et.utc(2016,11,13+r);e.push(t(n))}return e}function cb(t,e,r,n){let i=t.listingMode();return i==="error"?null:i==="en"?r(e):n(e)}function fTe(t){return t.numberingSystem&&t.numberingSystem!=="latn"?!1:t.numberingSystem==="latn"||!t.locale||t.locale.startsWith("en")||X5(t.locale).numberingSystem==="latn"}var Yk=class{constructor(e,r,n){this.padTo=n.padTo||0,this.floor=n.floor||!1;let{padTo:i,floor:s,...o}=n;if(!r||Object.keys(o).length>0){let a={useGrouping:!1,...n};n.padTo>0&&(a.minimumIntegerDigits=n.padTo),this.inf=sTe(e,a)}}format(e){if(this.inf){let r=this.floor?Math.floor(e):e;return this.inf.format(r)}else{let r=this.floor?Math.floor(e):aA(e,3);return bt(r,this.padTo)}}},Qk=class{constructor(e,r,n){this.opts=n,this.originalZone=void 0;let i;if(this.opts.timeZone)this.dt=e;else if(e.zone.type==="fixed"){let o=-1*(e.offset/60),a=o>=0?`Etc/GMT+${o}`:`Etc/GMT${o}`;e.offset!==0&&Zi.create(a).valid?(i=a,this.dt=e):(i="UTC",this.dt=e.offset===0?e:e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone)}else e.zone.type==="system"?this.dt=e:e.zone.type==="iana"?(this.dt=e,i=e.zone.name):(i="UTC",this.dt=e.setZone("UTC").plus({minutes:e.offset}),this.originalZone=e.zone);let s={...this.opts};s.timeZone=s.timeZone||i,this.dtf=Gk(r,s)}format(){return this.originalZone?this.formatToParts().map(({value:e})=>e).join(""):this.dtf.format(this.dt.toJSDate())}formatToParts(){let e=this.dtf.formatToParts(this.dt.toJSDate());return this.originalZone?e.map(r=>{if(r.type==="timeZoneName"){let n=this.originalZone.offsetName(this.dt.ts,{locale:this.dt.locale,format:this.opts.timeZoneName});return{...r,value:n}}else return r}):e}resolvedOptions(){return this.dtf.resolvedOptions()}},Xk=class{constructor(e,r,n){this.opts={style:"long",...n},!r&&oB()&&(this.rtf=oTe(e,n))}format(e,r){return this.rtf?this.rtf.format(e,r):KTe(r,e,this.opts.numeric,this.opts.style!=="long")}formatToParts(e,r){return this.rtf?this.rtf.formatToParts(e,r):[]}},Z5={firstDay:1,minimalDays:4,weekend:[6,7]},$e=class t{static fromOpts(e){return t.create(e.locale,e.numberingSystem,e.outputCalendar,e.weekSettings,e.defaultToEN)}static create(e,r,n,i,s=!1){let o=e||Ye.defaultLocale,a=o||(s?"en-US":aTe()),c=r||Ye.defaultNumberingSystem,l=n||Ye.defaultOutputCalendar,u=eA(i)||Ye.defaultWeekSettings;return new t(a,c,l,u,o)}static resetCache(){qd=null,zk.clear(),Bk.clear(),Hk.clear(),Vk.clear(),Wk.clear()}static fromObject({locale:e,numberingSystem:r,outputCalendar:n,weekSettings:i}={}){return t.create(e,r,n,i)}constructor(e,r,n,i,s){let[o,a,c]=lTe(e);this.locale=o,this.numberingSystem=r||a||null,this.outputCalendar=n||c||null,this.weekSettings=i,this.intl=uTe(this.locale,this.numberingSystem,this.outputCalendar),this.weekdaysCache={format:{},standalone:{}},this.monthsCache={format:{},standalone:{}},this.meridiemCache=null,this.eraCache={},this.specifiedLocale=s,this.fastNumbersCached=null}get fastNumbers(){return this.fastNumbersCached==null&&(this.fastNumbersCached=fTe(this)),this.fastNumbersCached}listingMode(){let e=this.isEnglish(),r=(this.numberingSystem===null||this.numberingSystem==="latn")&&(this.outputCalendar===null||this.outputCalendar==="gregory");return e&&r?"en":"intl"}clone(e){return!e||Object.getOwnPropertyNames(e).length===0?this:t.create(e.locale||this.specifiedLocale,e.numberingSystem||this.numberingSystem,e.outputCalendar||this.outputCalendar,eA(e.weekSettings)||this.weekSettings,e.defaultToEN||!1)}redefaultToEN(e={}){return this.clone({...e,defaultToEN:!0})}redefaultToSystem(e={}){return this.clone({...e,defaultToEN:!1})}months(e,r=!1){return cb(this,e,dB,()=>{let n=this.intl==="ja"||this.intl.startsWith("ja-");r&=!n;let i=r?{month:e,day:"numeric"}:{month:e},s=r?"format":"standalone";if(!this.monthsCache[s][e]){let o=n?a=>this.dtFormatter(a,i).format():a=>this.extract(a,i,"month");this.monthsCache[s][e]=dTe(o)}return this.monthsCache[s][e]})}weekdays(e,r=!1){return cb(this,e,mB,()=>{let n=r?{weekday:e,year:"numeric",month:"long",day:"numeric"}:{weekday:e},i=r?"format":"standalone";return this.weekdaysCache[i][e]||(this.weekdaysCache[i][e]=pTe(s=>this.extract(s,n,"weekday"))),this.weekdaysCache[i][e]})}meridiems(){return cb(this,void 0,()=>hB,()=>{if(!this.meridiemCache){let e={hour:"numeric",hourCycle:"h12"};this.meridiemCache=[et.utc(2016,11,13,9),et.utc(2016,11,13,19)].map(r=>this.extract(r,e,"dayperiod"))}return this.meridiemCache})}eras(e){return cb(this,e,yB,()=>{let r={era:e};return this.eraCache[e]||(this.eraCache[e]=[et.utc(-40,1,1),et.utc(2017,1,1)].map(n=>this.extract(n,r,"era"))),this.eraCache[e]})}extract(e,r,n){let i=this.dtFormatter(e,r),s=i.formatToParts(),o=s.find(a=>a.type.toLowerCase()===n);return o?o.value:null}numberFormatter(e={}){return new Yk(this.intl,e.forceSimple||this.fastNumbers,e)}dtFormatter(e,r={}){return new Qk(e,this.intl,r)}relFormatter(e={}){return new Xk(this.intl,this.isEnglish(),e)}listFormatter(e={}){return iTe(this.intl,e)}isEnglish(){return this.locale==="en"||this.locale.toLowerCase()==="en-us"||X5(this.intl).locale.startsWith("en-us")}getWeekSettings(){return this.weekSettings?this.weekSettings:aB()?cTe(this.locale):Z5}getStartOfWeek(){return this.getWeekSettings().firstDay}getMinDaysInFirstWeek(){return this.getWeekSettings().minimalDays}getWeekendDays(){return this.getWeekSettings().weekend}equals(e){return this.locale===e.locale&&this.numberingSystem===e.numberingSystem&&this.outputCalendar===e.outputCalendar}toString(){return`Locale(${this.locale}, ${this.numberingSystem}, ${this.outputCalendar})`}},Pk=null,Ur=class t extends eo{static get utcInstance(){return Pk===null&&(Pk=new t(0)),Pk}static instance(e){return e===0?t.utcInstance:new t(e)}static parseSpecifier(e){if(e){let r=e.match(/^utc(?:([+-]\d{1,2})(?::(\d{2}))?)?$/i);if(r)return new t(_b(r[1],r[2]))}return null}constructor(e){super(),this.fixed=e}get type(){return"fixed"}get name(){return this.fixed===0?"UTC":`UTC${Ud(this.fixed,"narrow")}`}get ianaName(){return this.fixed===0?"Etc/UTC":`Etc/GMT${Ud(-this.fixed,"narrow")}`}offsetName(){return this.name}formatOffset(e,r){return Ud(this.fixed,r)}get isUniversal(){return!0}offset(){return this.fixed}equals(e){return e.type==="fixed"&&e.fixed===this.fixed}get isValid(){return!0}},gb=class extends eo{constructor(e){super(),this.zoneName=e}get type(){return"invalid"}get name(){return this.zoneName}get isUniversal(){return!1}offsetName(){return null}formatOffset(){return""}offset(){return NaN}equals(){return!1}get isValid(){return!1}};function Qs(t,e){if(Q(t)||t===null)return e;if(t instanceof eo)return t;if(vTe(t)){let r=t.toLowerCase();return r==="default"?e:r==="local"||r==="system"?Jd.instance:r==="utc"||r==="gmt"?Ur.utcInstance:Ur.parseSpecifier(r)||Zi.create(t)}else return Zs(t)?Ur.instance(t):typeof t=="object"&&"offset"in t&&typeof t.offset=="function"?t:new gb(t)}var nA={arab:"[\u0660-\u0669]",arabext:"[\u06F0-\u06F9]",bali:"[\u1B50-\u1B59]",beng:"[\u09E6-\u09EF]",deva:"[\u0966-\u096F]",fullwide:"[\uFF10-\uFF19]",gujr:"[\u0AE6-\u0AEF]",hanidec:"[\u3007|\u4E00|\u4E8C|\u4E09|\u56DB|\u4E94|\u516D|\u4E03|\u516B|\u4E5D]",khmr:"[\u17E0-\u17E9]",knda:"[\u0CE6-\u0CEF]",laoo:"[\u0ED0-\u0ED9]",limb:"[\u1946-\u194F]",mlym:"[\u0D66-\u0D6F]",mong:"[\u1810-\u1819]",mymr:"[\u1040-\u1049]",orya:"[\u0B66-\u0B6F]",tamldec:"[\u0BE6-\u0BEF]",telu:"[\u0C66-\u0C6F]",thai:"[\u0E50-\u0E59]",tibt:"[\u0F20-\u0F29]",latn:"\\d"},i5={arab:[1632,1641],arabext:[1776,1785],bali:[6992,7001],beng:[2534,2543],deva:[2406,2415],fullwide:[65296,65303],gujr:[2790,2799],khmr:[6112,6121],knda:[3302,3311],laoo:[3792,3801],limb:[6470,6479],mlym:[3430,3439],mong:[6160,6169],mymr:[4160,4169],orya:[2918,2927],tamldec:[3046,3055],telu:[3174,3183],thai:[3664,3673],tibt:[3872,3881]},mTe=nA.hanidec.replace(/[\[|\]]/g,"").split("");function hTe(t){let e=parseInt(t,10);if(isNaN(e)){e="";for(let r=0;r<t.length;r++){let n=t.charCodeAt(r);if(t[r].search(nA.hanidec)!==-1)e+=mTe.indexOf(t[r]);else for(let i in i5){let[s,o]=i5[i];n>=s&&n<=o&&(e+=n-s)}}return parseInt(e,10)}else return e}var Zk=new Map;function yTe(){Zk.clear()}function Dn({numberingSystem:t},e=""){let r=t||"latn",n=Zk.get(r);n===void 0&&(n=new Map,Zk.set(r,n));let i=n.get(e);return i===void 0&&(i=new RegExp(`${nA[r]}${e}`),n.set(e,i)),i}var s5=()=>Date.now(),o5="system",a5=null,c5=null,l5=null,u5=60,d5,p5=null,Ye=class{static get now(){return s5}static set now(e){s5=e}static set defaultZone(e){o5=e}static get defaultZone(){return Qs(o5,Jd.instance)}static get defaultLocale(){return a5}static set defaultLocale(e){a5=e}static get defaultNumberingSystem(){return c5}static set defaultNumberingSystem(e){c5=e}static get defaultOutputCalendar(){return l5}static set defaultOutputCalendar(e){l5=e}static get defaultWeekSettings(){return p5}static set defaultWeekSettings(e){p5=eA(e)}static get twoDigitCutoffYear(){return u5}static set twoDigitCutoffYear(e){u5=e%100}static get throwOnInvalid(){return d5}static set throwOnInvalid(e){d5=e}static resetCaches(){$e.resetCache(),Zi.resetCache(),et.resetCache(),yTe()}},Fr=class{constructor(e,r){this.reason=e,this.explanation=r}toMessage(){return this.explanation?`${this.reason}: ${this.explanation}`:this.reason}},eB=[0,31,59,90,120,151,181,212,243,273,304,334],tB=[0,31,60,91,121,152,182,213,244,274,305,335];function gn(t,e){return new Fr("unit out of range",`you specified ${e} (of type ${typeof e}) as a ${t}, which is invalid`)}function iA(t,e,r){let n=new Date(Date.UTC(t,e-1,r));t<100&&t>=0&&n.setUTCFullYear(n.getUTCFullYear()-1900);let i=n.getUTCDay();return i===0?7:i}function rB(t,e,r){return r+(Gd(t)?tB:eB)[e-1]}function nB(t,e){let r=Gd(t)?tB:eB,n=r.findIndex(s=>s<e),i=e-r[n];return{month:n+1,day:i}}function sA(t,e){return(t-e+7)%7+1}function bb(t,e=4,r=1){let{year:n,month:i,day:s}=t,o=rB(n,i,s),a=sA(iA(n,i,s),r),c=Math.floor((o-a+14-e)/7),l;return c<1?(l=n-1,c=zd(l,e,r)):c>zd(n,e,r)?(l=n+1,c=1):l=n,{weekYear:l,weekNumber:c,weekday:a,...Ib(t)}}function f5(t,e=4,r=1){let{weekYear:n,weekNumber:i,weekday:s}=t,o=sA(iA(n,1,e),r),a=fl(n),c=i*7+s-o-7+e,l;c<1?(l=n-1,c+=fl(l)):c>a?(l=n+1,c-=fl(n)):l=n;let{month:u,day:d}=nB(l,c);return{year:l,month:u,day:d,...Ib(t)}}function Kk(t){let{year:e,month:r,day:n}=t,i=rB(e,r,n);return{year:e,ordinal:i,...Ib(t)}}function m5(t){let{year:e,ordinal:r}=t,{month:n,day:i}=nB(e,r);return{year:e,month:n,day:i,...Ib(t)}}function h5(t,e){if(!Q(t.localWeekday)||!Q(t.localWeekNumber)||!Q(t.localWeekYear)){if(!Q(t.weekday)||!Q(t.weekNumber)||!Q(t.weekYear))throw new Xs("Cannot mix locale-based week fields with ISO-based week fields");return Q(t.localWeekday)||(t.weekday=t.localWeekday),Q(t.localWeekNumber)||(t.weekNumber=t.localWeekNumber),Q(t.localWeekYear)||(t.weekYear=t.localWeekYear),delete t.localWeekday,delete t.localWeekNumber,delete t.localWeekYear,{minDaysInFirstWeek:e.getMinDaysInFirstWeek(),startOfWeek:e.getStartOfWeek()}}else return{minDaysInFirstWeek:4,startOfWeek:1}}function gTe(t,e=4,r=1){let n=xb(t.weekYear),i=bn(t.weekNumber,1,zd(t.weekYear,e,r)),s=bn(t.weekday,1,7);return n?i?s?!1:gn("weekday",t.weekday):gn("week",t.weekNumber):gn("weekYear",t.weekYear)}function bTe(t){let e=xb(t.year),r=bn(t.ordinal,1,fl(t.year));return e?r?!1:gn("ordinal",t.ordinal):gn("year",t.year)}function iB(t){let e=xb(t.year),r=bn(t.month,1,12),n=bn(t.day,1,vb(t.year,t.month));return e?r?n?!1:gn("day",t.day):gn("month",t.month):gn("year",t.year)}function sB(t){let{hour:e,minute:r,second:n,millisecond:i}=t,s=bn(e,0,23)||e===24&&r===0&&n===0&&i===0,o=bn(r,0,59),a=bn(n,0,59),c=bn(i,0,999);return s?o?a?c?!1:gn("millisecond",i):gn("second",n):gn("minute",r):gn("hour",e)}function Q(t){return typeof t>"u"}function Zs(t){return typeof t=="number"}function xb(t){return typeof t=="number"&&t%1===0}function vTe(t){return typeof t=="string"}function ETe(t){return Object.prototype.toString.call(t)==="[object Date]"}function oB(){try{return typeof Intl<"u"&&!!Intl.RelativeTimeFormat}catch{return!1}}function aB(){try{return typeof Intl<"u"&&!!Intl.Locale&&("weekInfo"in Intl.Locale.prototype||"getWeekInfo"in Intl.Locale.prototype)}catch{return!1}}function STe(t){return Array.isArray(t)?t:[t]}function y5(t,e,r){if(t.length!==0)return t.reduce((n,i)=>{let s=[e(i),i];return n&&r(n[0],s[0])===n[0]?n:s},null)[1]}function xTe(t,e){return e.reduce((r,n)=>(r[n]=t[n],r),{})}function hl(t,e){return Object.prototype.hasOwnProperty.call(t,e)}function eA(t){if(t==null)return null;if(typeof t!="object")throw new jt("Week settings must be an object");if(!bn(t.firstDay,1,7)||!bn(t.minimalDays,1,7)||!Array.isArray(t.weekend)||t.weekend.some(e=>!bn(e,1,7)))throw new jt("Invalid week settings");return{firstDay:t.firstDay,minimalDays:t.minimalDays,weekend:Array.from(t.weekend)}}function bn(t,e,r){return xb(t)&&t>=e&&t<=r}function wTe(t,e){return t-e*Math.floor(t/e)}function bt(t,e=2){let r=t<0,n;return r?n="-"+(""+-t).padStart(e,"0"):n=(""+t).padStart(e,"0"),n}function Ys(t){if(!(Q(t)||t===null||t===""))return parseInt(t,10)}function sa(t){if(!(Q(t)||t===null||t===""))return parseFloat(t)}function oA(t){if(!(Q(t)||t===null||t==="")){let e=parseFloat("0."+t)*1e3;return Math.floor(e)}}function aA(t,e,r="round"){let n=10**e;switch(r){case"expand":return t>0?Math.ceil(t*n)/n:Math.floor(t*n)/n;case"trunc":return Math.trunc(t*n)/n;case"round":return Math.round(t*n)/n;case"floor":return Math.floor(t*n)/n;case"ceil":return Math.ceil(t*n)/n;default:throw new RangeError(`Value rounding ${r} is out of range`)}}function Gd(t){return t%4===0&&(t%100!==0||t%400===0)}function fl(t){return Gd(t)?366:365}function vb(t,e){let r=wTe(e-1,12)+1,n=t+(e-r)/12;return r===2?Gd(n)?29:28:[31,null,31,30,31,30,31,31,30,31,30,31][r-1]}function wb(t){let e=Date.UTC(t.year,t.month-1,t.day,t.hour,t.minute,t.second,t.millisecond);return t.year<100&&t.year>=0&&(e=new Date(e),e.setUTCFullYear(t.year,t.month-1,t.day)),+e}function g5(t,e,r){return-sA(iA(t,1,e),r)+e-1}function zd(t,e=4,r=1){let n=g5(t,e,r),i=g5(t+1,e,r);return(fl(t)-n+i)/7}function tA(t){return t>99?t:t>Ye.twoDigitCutoffYear?1900+t:2e3+t}function cB(t,e,r,n=null){let i=new Date(t),s={hourCycle:"h23",year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"};n&&(s.timeZone=n);let o={timeZoneName:e,...s},a=new Intl.DateTimeFormat(r,o).formatToParts(i).find(c=>c.type.toLowerCase()==="timezonename");return a?a.value:null}function _b(t,e){let r=parseInt(t,10);Number.isNaN(r)&&(r=0);let n=parseInt(e,10)||0,i=r<0||Object.is(r,-0)?-n:n;return r*60+i}function lB(t){let e=Number(t);if(typeof t=="boolean"||t===""||!Number.isFinite(e))throw new jt(`Invalid unit value ${t}`);return e}function Eb(t,e){let r={};for(let n in t)if(hl(t,n)){let i=t[n];if(i==null)continue;r[e(n)]=lB(i)}return r}function Ud(t,e){let r=Math.trunc(Math.abs(t/60)),n=Math.trunc(Math.abs(t%60)),i=t>=0?"+":"-";switch(e){case"short":return`${i}${bt(r,2)}:${bt(n,2)}`;case"narrow":return`${i}${r}${n>0?`:${n}`:""}`;case"techie":return`${i}${bt(r,2)}${bt(n,2)}`;default:throw new RangeError(`Value format ${e} is out of range for property format`)}}function Ib(t){return xTe(t,["hour","minute","second","millisecond"])}var _Te=["January","February","March","April","May","June","July","August","September","October","November","December"],uB=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],ITe=["J","F","M","A","M","J","J","A","S","O","N","D"];function dB(t){switch(t){case"narrow":return[...ITe];case"short":return[...uB];case"long":return[..._Te];case"numeric":return["1","2","3","4","5","6","7","8","9","10","11","12"];case"2-digit":return["01","02","03","04","05","06","07","08","09","10","11","12"];default:return null}}var pB=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],fB=["Mon","Tue","Wed","Thu","Fri","Sat","Sun"],TTe=["M","T","W","T","F","S","S"];function mB(t){switch(t){case"narrow":return[...TTe];case"short":return[...fB];case"long":return[...pB];case"numeric":return["1","2","3","4","5","6","7"];default:return null}}var hB=["AM","PM"],kTe=["Before Christ","Anno Domini"],ATe=["BC","AD"],RTe=["B","A"];function yB(t){switch(t){case"narrow":return[...RTe];case"short":return[...ATe];case"long":return[...kTe];default:return null}}function OTe(t){return hB[t.hour<12?0:1]}function CTe(t,e){return mB(e)[t.weekday-1]}function jTe(t,e){return dB(e)[t.month-1]}function PTe(t,e){return yB(e)[t.year<0?0:1]}function KTe(t,e,r="always",n=!1){let i={years:["year","yr."],quarters:["quarter","qtr."],months:["month","mo."],weeks:["week","wk."],days:["day","day","days"],hours:["hour","hr."],minutes:["minute","min."],seconds:["second","sec."]},s=["hours","minutes","seconds"].indexOf(t)===-1;if(r==="auto"&&s){let d=t==="days";switch(e){case 1:return d?"tomorrow":`next ${i[t][0]}`;case-1:return d?"yesterday":`last ${i[t][0]}`;case 0:return d?"today":`this ${i[t][0]}`}}let o=Object.is(e,-0)||e<0,a=Math.abs(e),c=a===1,l=i[t],u=n?c?l[1]:l[2]||l[1]:c?i[t][0]:t;return o?`${a} ${u} ago`:`in ${a} ${u}`}function b5(t,e){let r="";for(let n of t)n.literal?r+=n.val:r+=e(n.val);return r}var DTe={D:yb,DD:P5,DDD:K5,DDDD:D5,t:M5,tt:N5,ttt:L5,tttt:q5,T:F5,TT:$5,TTT:U5,TTTT:J5,f:z5,ff:B5,fff:V5,ffff:Y5,F:G5,FF:H5,FFF:W5,FFFF:Q5},qr=class t{static create(e,r={}){return new t(e,r)}static parseFormat(e){let r=null,n="",i=!1,s=[];for(let o=0;o<e.length;o++){let a=e.charAt(o);a==="'"?((n.length>0||i)&&s.push({literal:i||/^\s+$/.test(n),val:n===""?"'":n}),r=null,n="",i=!i):i||a===r?n+=a:(n.length>0&&s.push({literal:/^\s+$/.test(n),val:n}),n=a,r=a)}return n.length>0&&s.push({literal:i||/^\s+$/.test(n),val:n}),s}static macroTokenToFormatOpts(e){return DTe[e]}constructor(e,r){this.opts=r,this.loc=e,this.systemLoc=null}formatWithSystemDefault(e,r){return this.systemLoc===null&&(this.systemLoc=this.loc.redefaultToSystem()),this.systemLoc.dtFormatter(e,{...this.opts,...r}).format()}dtFormatter(e,r={}){return this.loc.dtFormatter(e,{...this.opts,...r})}formatDateTime(e,r){return this.dtFormatter(e,r).format()}formatDateTimeParts(e,r){return this.dtFormatter(e,r).formatToParts()}formatInterval(e,r){return this.dtFormatter(e.start,r).dtf.formatRange(e.start.toJSDate(),e.end.toJSDate())}resolvedOptions(e,r){return this.dtFormatter(e,r).resolvedOptions()}num(e,r=0,n=void 0){if(this.opts.forceSimple)return bt(e,r);let i={...this.opts};return r>0&&(i.padTo=r),n&&(i.signDisplay=n),this.loc.numberFormatter(i).format(e)}formatDateTimeFromString(e,r){let n=this.loc.listingMode()==="en",i=this.loc.outputCalendar&&this.loc.outputCalendar!=="gregory",s=(f,m)=>this.loc.extract(e,f,m),o=f=>e.isOffsetFixed&&e.offset===0&&f.allowZ?"Z":e.isValid?e.zone.formatOffset(e.ts,f.format):"",a=()=>n?OTe(e):s({hour:"numeric",hourCycle:"h12"},"dayperiod"),c=(f,m)=>n?jTe(e,f):s(m?{month:f}:{month:f,day:"numeric"},"month"),l=(f,m)=>n?CTe(e,f):s(m?{weekday:f}:{weekday:f,month:"long",day:"numeric"},"weekday"),u=f=>{let m=t.macroTokenToFormatOpts(f);return m?this.formatWithSystemDefault(e,m):f},d=f=>n?PTe(e,f):s({era:f},"era"),p=f=>{switch(f){case"S":return this.num(e.millisecond);case"u":case"SSS":return this.num(e.millisecond,3);case"s":return this.num(e.second);case"ss":return this.num(e.second,2);case"uu":return this.num(Math.floor(e.millisecond/10),2);case"uuu":return this.num(Math.floor(e.millisecond/100));case"m":return this.num(e.minute);case"mm":return this.num(e.minute,2);case"h":return this.num(e.hour%12===0?12:e.hour%12);case"hh":return this.num(e.hour%12===0?12:e.hour%12,2);case"H":return this.num(e.hour);case"HH":return this.num(e.hour,2);case"Z":return o({format:"narrow",allowZ:this.opts.allowZ});case"ZZ":return o({format:"short",allowZ:this.opts.allowZ});case"ZZZ":return o({format:"techie",allowZ:this.opts.allowZ});case"ZZZZ":return e.zone.offsetName(e.ts,{format:"short",locale:this.loc.locale});case"ZZZZZ":return e.zone.offsetName(e.ts,{format:"long",locale:this.loc.locale});case"z":return e.zoneName;case"a":return a();case"d":return i?s({day:"numeric"},"day"):this.num(e.day);case"dd":return i?s({day:"2-digit"},"day"):this.num(e.day,2);case"c":return this.num(e.weekday);case"ccc":return l("short",!0);case"cccc":return l("long",!0);case"ccccc":return l("narrow",!0);case"E":return this.num(e.weekday);case"EEE":return l("short",!1);case"EEEE":return l("long",!1);case"EEEEE":return l("narrow",!1);case"L":return i?s({month:"numeric",day:"numeric"},"month"):this.num(e.month);case"LL":return i?s({month:"2-digit",day:"numeric"},"month"):this.num(e.month,2);case"LLL":return c("short",!0);case"LLLL":return c("long",!0);case"LLLLL":return c("narrow",!0);case"M":return i?s({month:"numeric"},"month"):this.num(e.month);case"MM":return i?s({month:"2-digit"},"month"):this.num(e.month,2);case"MMM":return c("short",!1);case"MMMM":return c("long",!1);case"MMMMM":return c("narrow",!1);case"y":return i?s({year:"numeric"},"year"):this.num(e.year);case"yy":return i?s({year:"2-digit"},"year"):this.num(e.year.toString().slice(-2),2);case"yyyy":return i?s({year:"numeric"},"year"):this.num(e.year,4);case"yyyyyy":return i?s({year:"numeric"},"year"):this.num(e.year,6);case"G":return d("short");case"GG":return d("long");case"GGGGG":return d("narrow");case"kk":return this.num(e.weekYear.toString().slice(-2),2);case"kkkk":return this.num(e.weekYear,4);case"W":return this.num(e.weekNumber);case"WW":return this.num(e.weekNumber,2);case"n":return this.num(e.localWeekNumber);case"nn":return this.num(e.localWeekNumber,2);case"ii":return this.num(e.localWeekYear.toString().slice(-2),2);case"iiii":return this.num(e.localWeekYear,4);case"o":return this.num(e.ordinal);case"ooo":return this.num(e.ordinal,3);case"q":return this.num(e.quarter);case"qq":return this.num(e.quarter,2);case"X":return this.num(Math.floor(e.ts/1e3));case"x":return this.num(e.ts);default:return u(f)}};return b5(t.parseFormat(r),p)}formatDurationFromString(e,r){let n=this.opts.signMode==="negativeLargestOnly"?-1:1,i=u=>{switch(u[0]){case"S":return"milliseconds";case"s":return"seconds";case"m":return"minutes";case"h":return"hours";case"d":return"days";case"w":return"weeks";case"M":return"months";case"y":return"years";default:return null}},s=(u,d)=>p=>{let f=i(p);if(f){let m=d.isNegativeDuration&&f!==d.largestUnit?n:1,y;return this.opts.signMode==="negativeLargestOnly"&&f!==d.largestUnit?y="never":this.opts.signMode==="all"?y="always":y="auto",this.num(u.get(f)*m,p.length,y)}else return p},o=t.parseFormat(r),a=o.reduce((u,{literal:d,val:p})=>d?u:u.concat(p),[]),c=e.shiftTo(...a.map(i).filter(u=>u)),l={isNegativeDuration:c<0,largestUnit:Object.keys(c.values)[0]};return b5(o,s(c,l))}},gB=/[A-Za-z_+-]{1,256}(?::?\/[A-Za-z0-9_+-]{1,256}(?:\/[A-Za-z0-9_+-]{1,256})?)?/;function yl(...t){let e=t.reduce((r,n)=>r+n.source,"");return RegExp(`^${e}$`)}function gl(...t){return e=>t.reduce(([r,n,i],s)=>{let[o,a,c]=s(e,i);return[{...r,...o},a||n,c]},[{},null,1]).slice(0,2)}function bl(t,...e){if(t==null)return[null,null];for(let[r,n]of e){let i=r.exec(t);if(i)return n(i)}return[null,null]}function bB(...t){return(e,r)=>{let n={},i;for(i=0;i<t.length;i++)n[t[i]]=Ys(e[r+i]);return[n,null,r+i]}}var vB=/(?:([Zz])|([+-]\d\d)(?::?(\d\d))?)/,MTe=`(?:${vB.source}?(?:\\[(${gB.source})\\])?)?`,cA=/(\d\d)(?::?(\d\d)(?::?(\d\d)(?:[.,](\d{1,30}))?)?)?/,EB=RegExp(`${cA.source}${MTe}`),lA=RegExp(`(?:[Tt]${EB.source})?`),NTe=/([+-]\d{6}|\d{4})(?:-?(\d\d)(?:-?(\d\d))?)?/,LTe=/(\d{4})-?W(\d\d)(?:-?(\d))?/,qTe=/(\d{4})-?(\d{3})/,FTe=bB("weekYear","weekNumber","weekDay"),$Te=bB("year","ordinal"),UTe=/(\d{4})-(\d\d)-(\d\d)/,SB=RegExp(`${cA.source} ?(?:${vB.source}|(${gB.source}))?`),JTe=RegExp(`(?: ${SB.source})?`);function ml(t,e,r){let n=t[e];return Q(n)?r:Ys(n)}function zTe(t,e){return[{year:ml(t,e),month:ml(t,e+1,1),day:ml(t,e+2,1)},null,e+3]}function vl(t,e){return[{hours:ml(t,e,0),minutes:ml(t,e+1,0),seconds:ml(t,e+2,0),milliseconds:oA(t[e+3])},null,e+4]}function Bd(t,e){let r=!t[e]&&!t[e+1],n=_b(t[e+1],t[e+2]),i=r?null:Ur.instance(n);return[{},i,e+3]}function Hd(t,e){let r=t[e]?Zi.create(t[e]):null;return[{},r,e+1]}var GTe=RegExp(`^T?${cA.source}$`),BTe=/^-?P(?:(?:(-?\d{1,20}(?:\.\d{1,20})?)Y)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20}(?:\.\d{1,20})?)W)?(?:(-?\d{1,20}(?:\.\d{1,20})?)D)?(?:T(?:(-?\d{1,20}(?:\.\d{1,20})?)H)?(?:(-?\d{1,20}(?:\.\d{1,20})?)M)?(?:(-?\d{1,20})(?:[.,](-?\d{1,20}))?S)?)?)$/;function HTe(t){let[e,r,n,i,s,o,a,c,l]=t,u=e[0]==="-",d=c&&c[0]==="-",p=(f,m=!1)=>f!==void 0&&(m||f&&u)?-f:f;return[{years:p(sa(r)),months:p(sa(n)),weeks:p(sa(i)),days:p(sa(s)),hours:p(sa(o)),minutes:p(sa(a)),seconds:p(sa(c),c==="-0"),milliseconds:p(oA(l),d)}]}var VTe={GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function uA(t,e,r,n,i,s,o){let a={year:e.length===2?tA(Ys(e)):Ys(e),month:uB.indexOf(r)+1,day:Ys(n),hour:Ys(i),minute:Ys(s)};return o&&(a.second=Ys(o)),t&&(a.weekday=t.length>3?pB.indexOf(t)+1:fB.indexOf(t)+1),a}var WTe=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|(?:([+-]\d\d)(\d\d)))$/;function YTe(t){let[,e,r,n,i,s,o,a,c,l,u,d]=t,p=uA(e,i,n,r,s,o,a),f;return c?f=VTe[c]:l?f=0:f=_b(u,d),[p,new Ur(f)]}function QTe(t){return t.replace(/\([^()]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").trim()}var XTe=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\d\d) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\d{4}) (\d\d):(\d\d):(\d\d) GMT$/,ZTe=/^(Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\d\d)-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\d\d) (\d\d):(\d\d):(\d\d) GMT$/,eke=/^(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( \d|\d\d) (\d\d):(\d\d):(\d\d) (\d{4})$/;function v5(t){let[,e,r,n,i,s,o,a]=t;return[uA(e,i,n,r,s,o,a),Ur.utcInstance]}function tke(t){let[,e,r,n,i,s,o,a]=t;return[uA(e,a,r,n,i,s,o),Ur.utcInstance]}var rke=yl(NTe,lA),nke=yl(LTe,lA),ike=yl(qTe,lA),ske=yl(EB),xB=gl(zTe,vl,Bd,Hd),oke=gl(FTe,vl,Bd,Hd),ake=gl($Te,vl,Bd,Hd),cke=gl(vl,Bd,Hd);function lke(t){return bl(t,[rke,xB],[nke,oke],[ike,ake],[ske,cke])}function uke(t){return bl(QTe(t),[WTe,YTe])}function dke(t){return bl(t,[XTe,v5],[ZTe,v5],[eke,tke])}function pke(t){return bl(t,[BTe,HTe])}var fke=gl(vl);function mke(t){return bl(t,[GTe,fke])}var hke=yl(UTe,JTe),yke=yl(SB),gke=gl(vl,Bd,Hd);function bke(t){return bl(t,[hke,xB],[yke,gke])}var E5="Invalid Duration",wB={weeks:{days:7,hours:168,minutes:10080,seconds:10080*60,milliseconds:10080*60*1e3},days:{hours:24,minutes:1440,seconds:1440*60,milliseconds:1440*60*1e3},hours:{minutes:60,seconds:3600,milliseconds:3600*1e3},minutes:{seconds:60,milliseconds:60*1e3},seconds:{milliseconds:1e3}},vke={years:{quarters:4,months:12,weeks:52,days:365,hours:365*24,minutes:365*24*60,seconds:365*24*60*60,milliseconds:365*24*60*60*1e3},quarters:{months:3,weeks:13,days:91,hours:2184,minutes:2184*60,seconds:2184*60*60,milliseconds:2184*60*60*1e3},months:{weeks:4,days:30,hours:720,minutes:720*60,seconds:720*60*60,milliseconds:720*60*60*1e3},...wB},yn=146097/400,ul=146097/4800,Eke={years:{quarters:4,months:12,weeks:yn/7,days:yn,hours:yn*24,minutes:yn*24*60,seconds:yn*24*60*60,milliseconds:yn*24*60*60*1e3},quarters:{months:3,weeks:yn/28,days:yn/4,hours:yn*24/4,minutes:yn*24*60/4,seconds:yn*24*60*60/4,milliseconds:yn*24*60*60*1e3/4},months:{weeks:ul/7,days:ul,hours:ul*24,minutes:ul*24*60,seconds:ul*24*60*60,milliseconds:ul*24*60*60*1e3},...wB},aa=["years","quarters","months","weeks","days","hours","minutes","seconds","milliseconds"],Ske=aa.slice(0).reverse();function Qi(t,e,r=!1){let n={values:r?e.values:{...t.values,...e.values||{}},loc:t.loc.clone(e.loc),conversionAccuracy:e.conversionAccuracy||t.conversionAccuracy,matrix:e.matrix||t.matrix};return new _t(n)}function _B(t,e){var r;let n=(r=e.milliseconds)!=null?r:0;for(let i of Ske.slice(1))e[i]&&(n+=e[i]*t[i].milliseconds);return n}function S5(t,e){let r=_B(t,e)<0?-1:1;aa.reduceRight((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]*r,o=t[i][n],a=Math.floor(s/o);e[i]+=a*r,e[n]-=a*o*r}return i},null),aa.reduce((n,i)=>{if(Q(e[i]))return n;if(n){let s=e[n]%1;e[n]-=s,e[i]+=s*t[n][i]}return i},null)}function x5(t){let e={};for(let[r,n]of Object.entries(t))n!==0&&(e[r]=n);return e}var _t=class t{constructor(e){let r=e.conversionAccuracy==="longterm"||!1,n=r?Eke:vke;e.matrix&&(n=e.matrix),this.values=e.values,this.loc=e.loc||$e.create(),this.conversionAccuracy=r?"longterm":"casual",this.invalid=e.invalid||null,this.matrix=n,this.isLuxonDuration=!0}static fromMillis(e,r){return t.fromObject({milliseconds:e},r)}static fromObject(e,r={}){if(e==null||typeof e!="object")throw new jt(`Duration.fromObject: argument expected to be an object, got ${e===null?"null":typeof e}`);return new t({values:Eb(e,t.normalizeUnit),loc:$e.fromObject(r),conversionAccuracy:r.conversionAccuracy,matrix:r.matrix})}static fromDurationLike(e){if(Zs(e))return t.fromMillis(e);if(t.isDuration(e))return e;if(typeof e=="object")return t.fromObject(e);throw new jt(`Unknown duration argument ${e} of type ${typeof e}`)}static fromISO(e,r){let[n]=pke(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static fromISOTime(e,r){let[n]=mke(e);return n?t.fromObject(n,r):t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static invalid(e,r=null){if(!e)throw new jt("need to specify a reason the Duration is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Uk(n);return new t({invalid:n})}static normalizeUnit(e){let r={year:"years",years:"years",quarter:"quarters",quarters:"quarters",month:"months",months:"months",week:"weeks",weeks:"weeks",day:"days",days:"days",hour:"hours",hours:"hours",minute:"minutes",minutes:"minutes",second:"seconds",seconds:"seconds",millisecond:"milliseconds",milliseconds:"milliseconds"}[e&&e.toLowerCase()];if(!r)throw new hb(e);return r}static isDuration(e){return e&&e.isLuxonDuration||!1}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}toFormat(e,r={}){let n={...r,floor:r.round!==!1&&r.floor!==!1};return this.isValid?qr.create(this.loc,n).formatDurationFromString(this,e):E5}toHuman(e={}){if(!this.isValid)return E5;let r=e.showZeros!==!1,n=aa.map(i=>{let s=this.values[i];return Q(s)||s===0&&!r?null:this.loc.numberFormatter({style:"unit",unitDisplay:"long",...e,unit:i.slice(0,-1)}).format(s)}).filter(i=>i);return this.loc.listFormatter({type:"conjunction",style:e.listStyle||"narrow",...e}).format(n)}toObject(){return this.isValid?{...this.values}:{}}toISO(){if(!this.isValid)return null;let e="P";return this.years!==0&&(e+=this.years+"Y"),(this.months!==0||this.quarters!==0)&&(e+=this.months+this.quarters*3+"M"),this.weeks!==0&&(e+=this.weeks+"W"),this.days!==0&&(e+=this.days+"D"),(this.hours!==0||this.minutes!==0||this.seconds!==0||this.milliseconds!==0)&&(e+="T"),this.hours!==0&&(e+=this.hours+"H"),this.minutes!==0&&(e+=this.minutes+"M"),(this.seconds!==0||this.milliseconds!==0)&&(e+=aA(this.seconds+this.milliseconds/1e3,3)+"S"),e==="P"&&(e+="T0S"),e}toISOTime(e={}){if(!this.isValid)return null;let r=this.toMillis();return r<0||r>=864e5?null:(e={suppressMilliseconds:!1,suppressSeconds:!1,includePrefix:!1,format:"extended",...e,includeOffset:!1},et.fromMillis(r,{zone:"UTC"}).toISOTime(e))}toJSON(){return this.toISO()}toString(){return this.toISO()}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Duration { values: ${JSON.stringify(this.values)} }`:`Duration { Invalid, reason: ${this.invalidReason} }`}toMillis(){return this.isValid?_B(this.matrix,this.values):NaN}valueOf(){return this.toMillis()}plus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e),n={};for(let i of aa)(hl(r.values,i)||hl(this.values,i))&&(n[i]=r.get(i)+this.get(i));return Qi(this,{values:n},!0)}minus(e){if(!this.isValid)return this;let r=t.fromDurationLike(e);return this.plus(r.negate())}mapUnits(e){if(!this.isValid)return this;let r={};for(let n of Object.keys(this.values))r[n]=lB(e(this.values[n],n));return Qi(this,{values:r},!0)}get(e){return this[t.normalizeUnit(e)]}set(e){if(!this.isValid)return this;let r={...this.values,...Eb(e,t.normalizeUnit)};return Qi(this,{values:r})}reconfigure({locale:e,numberingSystem:r,conversionAccuracy:n,matrix:i}={}){let o={loc:this.loc.clone({locale:e,numberingSystem:r}),matrix:i,conversionAccuracy:n};return Qi(this,o)}as(e){return this.isValid?this.shiftTo(e).get(e):NaN}normalize(){if(!this.isValid)return this;let e=this.toObject();return S5(this.matrix,e),Qi(this,{values:e},!0)}rescale(){if(!this.isValid)return this;let e=x5(this.normalize().shiftToAll().toObject());return Qi(this,{values:e},!0)}shiftTo(...e){if(!this.isValid)return this;if(e.length===0)return this;e=e.map(o=>t.normalizeUnit(o));let r={},n={},i=this.toObject(),s;for(let o of aa)if(e.indexOf(o)>=0){s=o;let a=0;for(let l in n)a+=this.matrix[l][o]*n[l],n[l]=0;Zs(i[o])&&(a+=i[o]);let c=Math.trunc(a);r[o]=c,n[o]=(a*1e3-c*1e3)/1e3}else Zs(i[o])&&(n[o]=i[o]);for(let o in n)n[o]!==0&&(r[s]+=o===s?n[o]:n[o]/this.matrix[s][o]);return S5(this.matrix,r),Qi(this,{values:r},!0)}shiftToAll(){return this.isValid?this.shiftTo("years","months","weeks","days","hours","minutes","seconds","milliseconds"):this}negate(){if(!this.isValid)return this;let e={};for(let r of Object.keys(this.values))e[r]=this.values[r]===0?0:-this.values[r];return Qi(this,{values:e},!0)}removeZeros(){if(!this.isValid)return this;let e=x5(this.values);return Qi(this,{values:e},!0)}get years(){return this.isValid?this.values.years||0:NaN}get quarters(){return this.isValid?this.values.quarters||0:NaN}get months(){return this.isValid?this.values.months||0:NaN}get weeks(){return this.isValid?this.values.weeks||0:NaN}get days(){return this.isValid?this.values.days||0:NaN}get hours(){return this.isValid?this.values.hours||0:NaN}get minutes(){return this.isValid?this.values.minutes||0:NaN}get seconds(){return this.isValid?this.values.seconds||0:NaN}get milliseconds(){return this.isValid?this.values.milliseconds||0:NaN}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}equals(e){if(!this.isValid||!e.isValid||!this.loc.equals(e.loc))return!1;function r(n,i){return n===void 0||n===0?i===void 0||i===0:n===i}for(let n of aa)if(!r(this.values[n],e.values[n]))return!1;return!0}},dl="Invalid Interval";function xke(t,e){return!t||!t.isValid?la.invalid("missing or invalid start"):!e||!e.isValid?la.invalid("missing or invalid end"):e<t?la.invalid("end before start",`The end of an interval must be after its start, but you had start=${t.toISO()} and end=${e.toISO()}`):null}var la=class t{constructor(e){this.s=e.start,this.e=e.end,this.invalid=e.invalid||null,this.isLuxonInterval=!0}static invalid(e,r=null){if(!e)throw new jt("need to specify a reason the Interval is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new $k(n);return new t({invalid:n})}static fromDateTimes(e,r){let n=Ld(e),i=Ld(r),s=xke(n,i);return s??new t({start:n,end:i})}static after(e,r){let n=_t.fromDurationLike(r),i=Ld(e);return t.fromDateTimes(i,i.plus(n))}static before(e,r){let n=_t.fromDurationLike(r),i=Ld(e);return t.fromDateTimes(i.minus(n),i)}static fromISO(e,r){let[n,i]=(e||"").split("/",2);if(n&&i){let s,o;try{s=et.fromISO(n,r),o=s.isValid}catch{o=!1}let a,c;try{a=et.fromISO(i,r),c=a.isValid}catch{c=!1}if(o&&c)return t.fromDateTimes(s,a);if(o){let l=_t.fromISO(i,r);if(l.isValid)return t.after(s,l)}else if(c){let l=_t.fromISO(n,r);if(l.isValid)return t.before(a,l)}}return t.invalid("unparsable",`the input "${e}" can't be parsed as ISO 8601`)}static isInterval(e){return e&&e.isLuxonInterval||!1}get start(){return this.isValid?this.s:null}get end(){return this.isValid?this.e:null}get lastDateTime(){return this.isValid&&this.e?this.e.minus(1):null}get isValid(){return this.invalidReason===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}length(e="milliseconds"){return this.isValid?this.toDuration(e).get(e):NaN}count(e="milliseconds",r){if(!this.isValid)return NaN;let n=this.start.startOf(e,r),i;return r!=null&&r.useLocaleWeeks?i=this.end.reconfigure({locale:n.locale}):i=this.end,i=i.startOf(e,r),Math.floor(i.diff(n,e).get(e))+(i.valueOf()!==this.end.valueOf())}hasSame(e){return this.isValid?this.isEmpty()||this.e.minus(1).hasSame(this.s,e):!1}isEmpty(){return this.s.valueOf()===this.e.valueOf()}isAfter(e){return this.isValid?this.s>e:!1}isBefore(e){return this.isValid?this.e<=e:!1}contains(e){return this.isValid?this.s<=e&&this.e>e:!1}set({start:e,end:r}={}){return this.isValid?t.fromDateTimes(e||this.s,r||this.e):this}splitAt(...e){if(!this.isValid)return[];let r=e.map(Ld).filter(o=>this.contains(o)).sort((o,a)=>o.toMillis()-a.toMillis()),n=[],{s:i}=this,s=0;for(;i<this.e;){let o=r[s]||this.e,a=+o>+this.e?this.e:o;n.push(t.fromDateTimes(i,a)),i=a,s+=1}return n}splitBy(e){let r=_t.fromDurationLike(e);if(!this.isValid||!r.isValid||r.as("milliseconds")===0)return[];let{s:n}=this,i=1,s,o=[];for(;n<this.e;){let a=this.start.plus(r.mapUnits(c=>c*i));s=+a>+this.e?this.e:a,o.push(t.fromDateTimes(n,s)),n=s,i+=1}return o}divideEqually(e){return this.isValid?this.splitBy(this.length()/e).slice(0,e):[]}overlaps(e){return this.e>e.s&&this.s<e.e}abutsStart(e){return this.isValid?+this.e==+e.s:!1}abutsEnd(e){return this.isValid?+e.e==+this.s:!1}engulfs(e){return this.isValid?this.s<=e.s&&this.e>=e.e:!1}equals(e){return!this.isValid||!e.isValid?!1:this.s.equals(e.s)&&this.e.equals(e.e)}intersection(e){if(!this.isValid)return this;let r=this.s>e.s?this.s:e.s,n=this.e<e.e?this.e:e.e;return r>=n?null:t.fromDateTimes(r,n)}union(e){if(!this.isValid)return this;let r=this.s<e.s?this.s:e.s,n=this.e>e.e?this.e:e.e;return t.fromDateTimes(r,n)}static merge(e){let[r,n]=e.sort((i,s)=>i.s-s.s).reduce(([i,s],o)=>s?s.overlaps(o)||s.abutsStart(o)?[i,s.union(o)]:[i.concat([s]),o]:[i,o],[[],null]);return n&&r.push(n),r}static xor(e){let r=null,n=0,i=[],s=e.map(c=>[{time:c.s,type:"s"},{time:c.e,type:"e"}]),o=Array.prototype.concat(...s),a=o.sort((c,l)=>c.time-l.time);for(let c of a)n+=c.type==="s"?1:-1,n===1?r=c.time:(r&&+r!=+c.time&&i.push(t.fromDateTimes(r,c.time)),r=null);return t.merge(i)}difference(...e){return t.xor([this].concat(e)).map(r=>this.intersection(r)).filter(r=>r&&!r.isEmpty())}toString(){return this.isValid?`[${this.s.toISO()} \u2013 ${this.e.toISO()})`:dl}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`Interval { start: ${this.s.toISO()}, end: ${this.e.toISO()} }`:`Interval { Invalid, reason: ${this.invalidReason} }`}toLocaleString(e=yb,r={}){return this.isValid?qr.create(this.s.loc.clone(r),e).formatInterval(this):dl}toISO(e){return this.isValid?`${this.s.toISO(e)}/${this.e.toISO(e)}`:dl}toISODate(){return this.isValid?`${this.s.toISODate()}/${this.e.toISODate()}`:dl}toISOTime(e){return this.isValid?`${this.s.toISOTime(e)}/${this.e.toISOTime(e)}`:dl}toFormat(e,{separator:r=" \u2013 "}={}){return this.isValid?`${this.s.toFormat(e)}${r}${this.e.toFormat(e)}`:dl}toDuration(e,r){return this.isValid?this.e.diff(this.s,e,r):_t.invalid(this.invalidReason)}mapEndpoints(e){return t.fromDateTimes(e(this.s),e(this.e))}},ca=class{static hasDST(e=Ye.defaultZone){let r=et.now().setZone(e).set({month:12});return!e.isUniversal&&r.offset!==r.set({month:6}).offset}static isValidIANAZone(e){return Zi.isValidZone(e)}static normalizeZone(e){return Qs(e,Ye.defaultZone)}static getStartOfWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getStartOfWeek()}static getMinimumDaysInFirstWeek({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getMinDaysInFirstWeek()}static getWeekendWeekdays({locale:e=null,locObj:r=null}={}){return(r||$e.create(e)).getWeekendDays().slice()}static months(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e)}static monthsFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null,outputCalendar:s="gregory"}={}){return(i||$e.create(r,n,s)).months(e,!0)}static weekdays(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e)}static weekdaysFormat(e="long",{locale:r=null,numberingSystem:n=null,locObj:i=null}={}){return(i||$e.create(r,n,null)).weekdays(e,!0)}static meridiems({locale:e=null}={}){return $e.create(e).meridiems()}static eras(e="short",{locale:r=null}={}){return $e.create(r,null,"gregory").eras(e)}static features(){return{relative:oB(),localeWeek:aB()}}};function w5(t,e){let r=i=>i.toUTC(0,{keepLocalTime:!0}).startOf("day").valueOf(),n=r(e)-r(t);return Math.floor(_t.fromMillis(n).as("days"))}function wke(t,e,r){let n=[["years",(c,l)=>l.year-c.year],["quarters",(c,l)=>l.quarter-c.quarter+(l.year-c.year)*4],["months",(c,l)=>l.month-c.month+(l.year-c.year)*12],["weeks",(c,l)=>{let u=w5(c,l);return(u-u%7)/7}],["days",w5]],i={},s=t,o,a;for(let[c,l]of n)r.indexOf(c)>=0&&(o=c,i[c]=l(t,e),a=s.plus(i),a>e?(i[c]--,t=s.plus(i),t>e&&(a=t,i[c]--,t=s.plus(i))):t=a);return[t,i,a,o]}function _ke(t,e,r,n){let[i,s,o,a]=wke(t,e,r),c=e-i,l=r.filter(d=>["hours","minutes","seconds","milliseconds"].indexOf(d)>=0);l.length===0&&(o<e&&(o=i.plus({[a]:1})),o!==i&&(s[a]=(s[a]||0)+c/(o-i)));let u=_t.fromObject(s,n);return l.length>0?_t.fromMillis(c,n).shiftTo(...l).plus(u):u}var Ike="missing Intl.DateTimeFormat.formatToParts support";function Oe(t,e=r=>r){return{regex:t,deser:([r])=>e(hTe(r))}}var Tke="\xA0",IB=`[ ${Tke}]`,TB=new RegExp(IB,"g");function kke(t){return t.replace(/\./g,"\\.?").replace(TB,IB)}function _5(t){return t.replace(/\./g,"").replace(TB," ").toLowerCase()}function Mn(t,e){return t===null?null:{regex:RegExp(t.map(kke).join("|")),deser:([r])=>t.findIndex(n=>_5(r)===_5(n))+e}}function I5(t,e){return{regex:t,deser:([,r,n])=>_b(r,n),groups:e}}function lb(t){return{regex:t,deser:([e])=>e}}function Ake(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}function Rke(t,e){let r=Dn(e),n=Dn(e,"{2}"),i=Dn(e,"{3}"),s=Dn(e,"{4}"),o=Dn(e,"{6}"),a=Dn(e,"{1,2}"),c=Dn(e,"{1,3}"),l=Dn(e,"{1,6}"),u=Dn(e,"{1,9}"),d=Dn(e,"{2,4}"),p=Dn(e,"{4,6}"),f=b=>({regex:RegExp(Ake(b.val)),deser:([v])=>v,literal:!0}),y=(b=>{if(t.literal)return f(b);switch(b.val){case"G":return Mn(e.eras("short"),0);case"GG":return Mn(e.eras("long"),0);case"y":return Oe(l);case"yy":return Oe(d,tA);case"yyyy":return Oe(s);case"yyyyy":return Oe(p);case"yyyyyy":return Oe(o);case"M":return Oe(a);case"MM":return Oe(n);case"MMM":return Mn(e.months("short",!0),1);case"MMMM":return Mn(e.months("long",!0),1);case"L":return Oe(a);case"LL":return Oe(n);case"LLL":return Mn(e.months("short",!1),1);case"LLLL":return Mn(e.months("long",!1),1);case"d":return Oe(a);case"dd":return Oe(n);case"o":return Oe(c);case"ooo":return Oe(i);case"HH":return Oe(n);case"H":return Oe(a);case"hh":return Oe(n);case"h":return Oe(a);case"mm":return Oe(n);case"m":return Oe(a);case"q":return Oe(a);case"qq":return Oe(n);case"s":return Oe(a);case"ss":return Oe(n);case"S":return Oe(c);case"SSS":return Oe(i);case"u":return lb(u);case"uu":return lb(a);case"uuu":return Oe(r);case"a":return Mn(e.meridiems(),0);case"kkkk":return Oe(s);case"kk":return Oe(d,tA);case"W":return Oe(a);case"WW":return Oe(n);case"E":case"c":return Oe(r);case"EEE":return Mn(e.weekdays("short",!1),1);case"EEEE":return Mn(e.weekdays("long",!1),1);case"ccc":return Mn(e.weekdays("short",!0),1);case"cccc":return Mn(e.weekdays("long",!0),1);case"Z":case"ZZ":return I5(new RegExp(`([+-]${a.source})(?::(${n.source}))?`),2);case"ZZZ":return I5(new RegExp(`([+-]${a.source})(${n.source})?`),2);case"z":return lb(/[a-z_+-/]{1,256}?/i);case" ":return lb(/[^\S\n\r]/);default:return f(b)}})(t)||{invalidReason:Ike};return y.token=t,y}var Oke={year:{"2-digit":"yy",numeric:"yyyyy"},month:{numeric:"M","2-digit":"MM",short:"MMM",long:"MMMM"},day:{numeric:"d","2-digit":"dd"},weekday:{short:"EEE",long:"EEEE"},dayperiod:"a",dayPeriod:"a",hour12:{numeric:"h","2-digit":"hh"},hour24:{numeric:"H","2-digit":"HH"},minute:{numeric:"m","2-digit":"mm"},second:{numeric:"s","2-digit":"ss"},timeZoneName:{long:"ZZZZZ",short:"ZZZ"}};function Cke(t,e,r){let{type:n,value:i}=t;if(n==="literal"){let c=/^\s+$/.test(i);return{literal:!c,val:c?" ":i}}let s=e[n],o=n;n==="hour"&&(e.hour12!=null?o=e.hour12?"hour12":"hour24":e.hourCycle!=null?e.hourCycle==="h11"||e.hourCycle==="h12"?o="hour12":o="hour24":o=r.hour12?"hour12":"hour24");let a=Oke[o];if(typeof a=="object"&&(a=a[s]),a)return{literal:!1,val:a}}function jke(t){return[`^${t.map(r=>r.regex).reduce((r,n)=>`${r}(${n.source})`,"")}$`,t]}function Pke(t,e,r){let n=t.match(e);if(n){let i={},s=1;for(let o in r)if(hl(r,o)){let a=r[o],c=a.groups?a.groups+1:1;!a.literal&&a.token&&(i[a.token.val[0]]=a.deser(n.slice(s,s+c))),s+=c}return[n,i]}else return[n,{}]}function Kke(t){let e=s=>{switch(s){case"S":return"millisecond";case"s":return"second";case"m":return"minute";case"h":case"H":return"hour";case"d":return"day";case"o":return"ordinal";case"L":case"M":return"month";case"y":return"year";case"E":case"c":return"weekday";case"W":return"weekNumber";case"k":return"weekYear";case"q":return"quarter";default:return null}},r=null,n;return Q(t.z)||(r=Zi.create(t.z)),Q(t.Z)||(r||(r=new Ur(t.Z)),n=t.Z),Q(t.q)||(t.M=(t.q-1)*3+1),Q(t.h)||(t.h<12&&t.a===1?t.h+=12:t.h===12&&t.a===0&&(t.h=0)),t.G===0&&t.y&&(t.y=-t.y),Q(t.u)||(t.S=oA(t.u)),[Object.keys(t).reduce((s,o)=>{let a=e(o);return a&&(s[a]=t[o]),s},{}),r,n]}var Dk=null;function Dke(){return Dk||(Dk=et.fromMillis(1555555555555)),Dk}function Mke(t,e){if(t.literal)return t;let r=qr.macroTokenToFormatOpts(t.val),n=RB(r,e);return n==null||n.includes(void 0)?t:n}function kB(t,e){return Array.prototype.concat(...t.map(r=>Mke(r,e)))}var Sb=class{constructor(e,r){if(this.locale=e,this.format=r,this.tokens=kB(qr.parseFormat(r),e),this.units=this.tokens.map(n=>Rke(n,e)),this.disqualifyingUnit=this.units.find(n=>n.invalidReason),!this.disqualifyingUnit){let[n,i]=jke(this.units);this.regex=RegExp(n,"i"),this.handlers=i}}explainFromTokens(e){if(this.isValid){let[r,n]=Pke(e,this.regex,this.handlers),[i,s,o]=n?Kke(n):[null,null,void 0];if(hl(n,"a")&&hl(n,"H"))throw new Xs("Can't include meridiem when specifying 24-hour format");return{input:e,tokens:this.tokens,regex:this.regex,rawMatches:r,matches:n,result:i,zone:s,specificOffset:o}}else return{input:e,tokens:this.tokens,invalidReason:this.invalidReason}}get isValid(){return!this.disqualifyingUnit}get invalidReason(){return this.disqualifyingUnit?this.disqualifyingUnit.invalidReason:null}};function AB(t,e,r){return new Sb(t,r).explainFromTokens(e)}function Nke(t,e,r){let{result:n,zone:i,specificOffset:s,invalidReason:o}=AB(t,e,r);return[n,i,s,o]}function RB(t,e){if(!t)return null;let n=qr.create(e,t).dtFormatter(Dke()),i=n.formatToParts(),s=n.resolvedOptions();return i.map(o=>Cke(o,t,s))}var Mk="Invalid DateTime",T5=864e13;function Fd(t){return new Fr("unsupported zone",`the zone "${t.name}" is not supported`)}function Nk(t){return t.weekData===null&&(t.weekData=bb(t.c)),t.weekData}function Lk(t){return t.localWeekData===null&&(t.localWeekData=bb(t.c,t.loc.getMinDaysInFirstWeek(),t.loc.getStartOfWeek())),t.localWeekData}function oa(t,e){let r={ts:t.ts,zone:t.zone,c:t.c,o:t.o,loc:t.loc,invalid:t.invalid};return new et({...r,...e,old:r})}function OB(t,e,r){let n=t-e*60*1e3,i=r.offset(n);if(e===i)return[n,e];n-=(i-e)*60*1e3;let s=r.offset(n);return i===s?[n,i]:[t-Math.min(i,s)*60*1e3,Math.max(i,s)]}function ub(t,e){t+=e*60*1e3;let r=new Date(t);return{year:r.getUTCFullYear(),month:r.getUTCMonth()+1,day:r.getUTCDate(),hour:r.getUTCHours(),minute:r.getUTCMinutes(),second:r.getUTCSeconds(),millisecond:r.getUTCMilliseconds()}}function pb(t,e,r){return OB(wb(t),e,r)}function k5(t,e){let r=t.o,n=t.c.year+Math.trunc(e.years),i=t.c.month+Math.trunc(e.months)+Math.trunc(e.quarters)*3,s={...t.c,year:n,month:i,day:Math.min(t.c.day,vb(n,i))+Math.trunc(e.days)+Math.trunc(e.weeks)*7},o=_t.fromObject({years:e.years-Math.trunc(e.years),quarters:e.quarters-Math.trunc(e.quarters),months:e.months-Math.trunc(e.months),weeks:e.weeks-Math.trunc(e.weeks),days:e.days-Math.trunc(e.days),hours:e.hours,minutes:e.minutes,seconds:e.seconds,milliseconds:e.milliseconds}).as("milliseconds"),a=wb(s),[c,l]=OB(a,r,t.zone);return o!==0&&(c+=o,l=t.zone.offset(c)),{ts:c,o:l}}function pl(t,e,r,n,i,s){let{setZone:o,zone:a}=r;if(t&&Object.keys(t).length!==0||e){let c=e||a,l=et.fromObject(t,{...r,zone:c,specificOffset:s});return o?l:l.setZone(a)}else return et.invalid(new Fr("unparsable",`the input "${i}" can't be parsed as ${n}`))}function db(t,e,r=!0){return t.isValid?qr.create($e.create("en-US"),{allowZ:r,forceSimple:!0}).formatDateTimeFromString(t,e):null}function qk(t,e,r){let n=t.c.year>9999||t.c.year<0,i="";if(n&&t.c.year>=0&&(i+="+"),i+=bt(t.c.year,n?6:4),r==="year")return i;if(e){if(i+="-",i+=bt(t.c.month),r==="month")return i;i+="-"}else if(i+=bt(t.c.month),r==="month")return i;return i+=bt(t.c.day),i}function A5(t,e,r,n,i,s,o){let a=!r||t.c.millisecond!==0||t.c.second!==0,c="";switch(o){case"day":case"month":case"year":break;default:if(c+=bt(t.c.hour),o==="hour")break;if(e){if(c+=":",c+=bt(t.c.minute),o==="minute")break;a&&(c+=":",c+=bt(t.c.second))}else{if(c+=bt(t.c.minute),o==="minute")break;a&&(c+=bt(t.c.second))}if(o==="second")break;a&&(!n||t.c.millisecond!==0)&&(c+=".",c+=bt(t.c.millisecond,3))}return i&&(t.isOffsetFixed&&t.offset===0&&!s?c+="Z":t.o<0?(c+="-",c+=bt(Math.trunc(-t.o/60)),c+=":",c+=bt(Math.trunc(-t.o%60))):(c+="+",c+=bt(Math.trunc(t.o/60)),c+=":",c+=bt(Math.trunc(t.o%60)))),s&&(c+="["+t.zone.ianaName+"]"),c}var CB={month:1,day:1,hour:0,minute:0,second:0,millisecond:0},Lke={weekNumber:1,weekday:1,hour:0,minute:0,second:0,millisecond:0},qke={ordinal:1,hour:0,minute:0,second:0,millisecond:0},fb=["year","month","day","hour","minute","second","millisecond"],Fke=["weekYear","weekNumber","weekday","hour","minute","second","millisecond"],$ke=["year","ordinal","hour","minute","second","millisecond"];function mb(t){let e={year:"year",years:"year",month:"month",months:"month",day:"day",days:"day",hour:"hour",hours:"hour",minute:"minute",minutes:"minute",quarter:"quarter",quarters:"quarter",second:"second",seconds:"second",millisecond:"millisecond",milliseconds:"millisecond",weekday:"weekday",weekdays:"weekday",weeknumber:"weekNumber",weeksnumber:"weekNumber",weeknumbers:"weekNumber",weekyear:"weekYear",weekyears:"weekYear",ordinal:"ordinal"}[t.toLowerCase()];if(!e)throw new hb(t);return e}function R5(t){switch(t.toLowerCase()){case"localweekday":case"localweekdays":return"localWeekday";case"localweeknumber":case"localweeknumbers":return"localWeekNumber";case"localweekyear":case"localweekyears":return"localWeekYear";default:return mb(t)}}function Uke(t){if($d===void 0&&($d=Ye.now()),t.type!=="iana")return t.offset($d);let e=t.name,r=rA.get(e);return r===void 0&&(r=t.offset($d),rA.set(e,r)),r}function O5(t,e){let r=Qs(e.zone,Ye.defaultZone);if(!r.isValid)return et.invalid(Fd(r));let n=$e.fromObject(e),i,s;if(Q(t.year))i=Ye.now();else{for(let c of fb)Q(t[c])&&(t[c]=CB[c]);let o=iB(t)||sB(t);if(o)return et.invalid(o);let a=Uke(r);[i,s]=pb(t,a,r)}return new et({ts:i,zone:r,loc:n,o:s})}function C5(t,e,r){let n=Q(r.round)?!0:r.round,i=Q(r.rounding)?"trunc":r.rounding,s=(a,c)=>(a=aA(a,n||r.calendary?0:2,r.calendary?"round":i),e.loc.clone(r).relFormatter(r).format(a,c)),o=a=>r.calendary?e.hasSame(t,a)?0:e.startOf(a).diff(t.startOf(a),a).get(a):e.diff(t,a).get(a);if(r.unit)return s(o(r.unit),r.unit);for(let a of r.units){let c=o(a);if(Math.abs(c)>=1)return s(c,a)}return s(t>e?-0:0,r.units[r.units.length-1])}function j5(t){let e={},r;return t.length>0&&typeof t[t.length-1]=="object"?(e=t[t.length-1],r=Array.from(t).slice(0,t.length-1)):r=Array.from(t),[e,r]}var $d,rA=new Map,et=class t{constructor(e){let r=e.zone||Ye.defaultZone,n=e.invalid||(Number.isNaN(e.ts)?new Fr("invalid input"):null)||(r.isValid?null:Fd(r));this.ts=Q(e.ts)?Ye.now():e.ts;let i=null,s=null;if(!n)if(e.old&&e.old.ts===this.ts&&e.old.zone.equals(r))[i,s]=[e.old.c,e.old.o];else{let a=Zs(e.o)&&!e.old?e.o:r.offset(this.ts);i=ub(this.ts,a),n=Number.isNaN(i.year)?new Fr("invalid input"):null,i=n?null:i,s=n?null:a}this._zone=r,this.loc=e.loc||$e.create(),this.invalid=n,this.weekData=null,this.localWeekData=null,this.c=i,this.o=s,this.isLuxonDateTime=!0}static now(){return new t({})}static local(){let[e,r]=j5(arguments),[n,i,s,o,a,c,l]=r;return O5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static utc(){let[e,r]=j5(arguments),[n,i,s,o,a,c,l]=r;return e.zone=Ur.utcInstance,O5({year:n,month:i,day:s,hour:o,minute:a,second:c,millisecond:l},e)}static fromJSDate(e,r={}){let n=ETe(e)?e.valueOf():NaN;if(Number.isNaN(n))return t.invalid("invalid input");let i=Qs(r.zone,Ye.defaultZone);return i.isValid?new t({ts:n,zone:i,loc:$e.fromObject(r)}):t.invalid(Fd(i))}static fromMillis(e,r={}){if(Zs(e))return e<-T5||e>T5?t.invalid("Timestamp out of range"):new t({ts:e,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new jt(`fromMillis requires a numerical input, but received a ${typeof e} with value ${e}`)}static fromSeconds(e,r={}){if(Zs(e))return new t({ts:e*1e3,zone:Qs(r.zone,Ye.defaultZone),loc:$e.fromObject(r)});throw new jt("fromSeconds requires a numerical input")}static fromObject(e,r={}){e=e||{};let n=Qs(r.zone,Ye.defaultZone);if(!n.isValid)return t.invalid(Fd(n));let i=$e.fromObject(r),s=Eb(e,R5),{minDaysInFirstWeek:o,startOfWeek:a}=h5(s,i),c=Ye.now(),l=Q(r.specificOffset)?n.offset(c):r.specificOffset,u=!Q(s.ordinal),d=!Q(s.year),p=!Q(s.month)||!Q(s.day),f=d||p,m=s.weekYear||s.weekNumber;if((f||u)&&m)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(p&&u)throw new Xs("Can't mix ordinal dates with month/day");let y=m||s.weekday&&!f,b,v,E=ub(c,l);y?(b=Fke,v=Lke,E=bb(E,o,a)):u?(b=$ke,v=qke,E=Kk(E)):(b=fb,v=CB);let S=!1;for(let U of b){let te=s[U];Q(te)?S?s[U]=v[U]:s[U]=E[U]:S=!0}let k=y?gTe(s,o,a):u?bTe(s):iB(s),_=k||sB(s);if(_)return t.invalid(_);let O=y?f5(s,o,a):u?m5(s):s,[N,ee]=pb(O,l,n),q=new t({ts:N,zone:n,o:ee,loc:i});return s.weekday&&f&&e.weekday!==q.weekday?t.invalid("mismatched weekday",`you can't specify both a weekday of ${s.weekday} and a date of ${q.toISO()}`):q.isValid?q:t.invalid(q.invalid)}static fromISO(e,r={}){let[n,i]=lke(e);return pl(n,i,r,"ISO 8601",e)}static fromRFC2822(e,r={}){let[n,i]=uke(e);return pl(n,i,r,"RFC 2822",e)}static fromHTTP(e,r={}){let[n,i]=dke(e);return pl(n,i,r,"HTTP",r)}static fromFormat(e,r,n={}){if(Q(e)||Q(r))throw new jt("fromFormat requires an input string and a format");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0}),[a,c,l,u]=Nke(o,e,r);return u?t.invalid(u):pl(a,c,n,`format ${r}`,e,l)}static fromString(e,r,n={}){return t.fromFormat(e,r,n)}static fromSQL(e,r={}){let[n,i]=bke(e);return pl(n,i,r,"SQL",e)}static invalid(e,r=null){if(!e)throw new jt("need to specify a reason the DateTime is invalid");let n=e instanceof Fr?e:new Fr(e,r);if(Ye.throwOnInvalid)throw new Fk(n);return new t({invalid:n})}static isDateTime(e){return e&&e.isLuxonDateTime||!1}static parseFormatForOpts(e,r={}){let n=RB(e,$e.fromObject(r));return n?n.map(i=>i?i.val:null).join(""):null}static expandFormat(e,r={}){return kB(qr.parseFormat(e),$e.fromObject(r)).map(i=>i.val).join("")}static resetCache(){$d=void 0,rA.clear()}get(e){return this[e]}get isValid(){return this.invalid===null}get invalidReason(){return this.invalid?this.invalid.reason:null}get invalidExplanation(){return this.invalid?this.invalid.explanation:null}get locale(){return this.isValid?this.loc.locale:null}get numberingSystem(){return this.isValid?this.loc.numberingSystem:null}get outputCalendar(){return this.isValid?this.loc.outputCalendar:null}get zone(){return this._zone}get zoneName(){return this.isValid?this.zone.name:null}get year(){return this.isValid?this.c.year:NaN}get quarter(){return this.isValid?Math.ceil(this.c.month/3):NaN}get month(){return this.isValid?this.c.month:NaN}get day(){return this.isValid?this.c.day:NaN}get hour(){return this.isValid?this.c.hour:NaN}get minute(){return this.isValid?this.c.minute:NaN}get second(){return this.isValid?this.c.second:NaN}get millisecond(){return this.isValid?this.c.millisecond:NaN}get weekYear(){return this.isValid?Nk(this).weekYear:NaN}get weekNumber(){return this.isValid?Nk(this).weekNumber:NaN}get weekday(){return this.isValid?Nk(this).weekday:NaN}get isWeekend(){return this.isValid&&this.loc.getWeekendDays().includes(this.weekday)}get localWeekday(){return this.isValid?Lk(this).weekday:NaN}get localWeekNumber(){return this.isValid?Lk(this).weekNumber:NaN}get localWeekYear(){return this.isValid?Lk(this).weekYear:NaN}get ordinal(){return this.isValid?Kk(this.c).ordinal:NaN}get monthShort(){return this.isValid?ca.months("short",{locObj:this.loc})[this.month-1]:null}get monthLong(){return this.isValid?ca.months("long",{locObj:this.loc})[this.month-1]:null}get weekdayShort(){return this.isValid?ca.weekdays("short",{locObj:this.loc})[this.weekday-1]:null}get weekdayLong(){return this.isValid?ca.weekdays("long",{locObj:this.loc})[this.weekday-1]:null}get offset(){return this.isValid?+this.o:NaN}get offsetNameShort(){return this.isValid?this.zone.offsetName(this.ts,{format:"short",locale:this.locale}):null}get offsetNameLong(){return this.isValid?this.zone.offsetName(this.ts,{format:"long",locale:this.locale}):null}get isOffsetFixed(){return this.isValid?this.zone.isUniversal:null}get isInDST(){return this.isOffsetFixed?!1:this.offset>this.set({month:1,day:1}).offset||this.offset>this.set({month:5}).offset}getPossibleOffsets(){if(!this.isValid||this.isOffsetFixed)return[this];let e=864e5,r=6e4,n=wb(this.c),i=this.zone.offset(n-e),s=this.zone.offset(n+e),o=this.zone.offset(n-i*r),a=this.zone.offset(n-s*r);if(o===a)return[this];let c=n-o*r,l=n-a*r,u=ub(c,o),d=ub(l,a);return u.hour===d.hour&&u.minute===d.minute&&u.second===d.second&&u.millisecond===d.millisecond?[oa(this,{ts:c}),oa(this,{ts:l})]:[this]}get isInLeapYear(){return Gd(this.year)}get daysInMonth(){return vb(this.year,this.month)}get daysInYear(){return this.isValid?fl(this.year):NaN}get weeksInWeekYear(){return this.isValid?zd(this.weekYear):NaN}get weeksInLocalWeekYear(){return this.isValid?zd(this.localWeekYear,this.loc.getMinDaysInFirstWeek(),this.loc.getStartOfWeek()):NaN}resolvedLocaleOptions(e={}){let{locale:r,numberingSystem:n,calendar:i}=qr.create(this.loc.clone(e),e).resolvedOptions(this);return{locale:r,numberingSystem:n,outputCalendar:i}}toUTC(e=0,r={}){return this.setZone(Ur.instance(e),r)}toLocal(){return this.setZone(Ye.defaultZone)}setZone(e,{keepLocalTime:r=!1,keepCalendarTime:n=!1}={}){if(e=Qs(e,Ye.defaultZone),e.equals(this.zone))return this;if(e.isValid){let i=this.ts;if(r||n){let s=e.offset(this.ts),o=this.toObject();[i]=pb(o,s,e)}return oa(this,{ts:i,zone:e})}else return t.invalid(Fd(e))}reconfigure({locale:e,numberingSystem:r,outputCalendar:n}={}){let i=this.loc.clone({locale:e,numberingSystem:r,outputCalendar:n});return oa(this,{loc:i})}setLocale(e){return this.reconfigure({locale:e})}set(e){if(!this.isValid)return this;let r=Eb(e,R5),{minDaysInFirstWeek:n,startOfWeek:i}=h5(r,this.loc),s=!Q(r.weekYear)||!Q(r.weekNumber)||!Q(r.weekday),o=!Q(r.ordinal),a=!Q(r.year),c=!Q(r.month)||!Q(r.day),l=a||c,u=r.weekYear||r.weekNumber;if((l||o)&&u)throw new Xs("Can't mix weekYear/weekNumber units with year/month/day or ordinals");if(c&&o)throw new Xs("Can't mix ordinal dates with month/day");let d;s?d=f5({...bb(this.c,n,i),...r},n,i):Q(r.ordinal)?(d={...this.toObject(),...r},Q(r.day)&&(d.day=Math.min(vb(d.year,d.month),d.day))):d=m5({...Kk(this.c),...r});let[p,f]=pb(d,this.o,this.zone);return oa(this,{ts:p,o:f})}plus(e){if(!this.isValid)return this;let r=_t.fromDurationLike(e);return oa(this,k5(this,r))}minus(e){if(!this.isValid)return this;let r=_t.fromDurationLike(e).negate();return oa(this,k5(this,r))}startOf(e,{useLocaleWeeks:r=!1}={}){if(!this.isValid)return this;let n={},i=_t.normalizeUnit(e);switch(i){case"years":n.month=1;case"quarters":case"months":n.day=1;case"weeks":case"days":n.hour=0;case"hours":n.minute=0;case"minutes":n.second=0;case"seconds":n.millisecond=0;break}if(i==="weeks")if(r){let s=this.loc.getStartOfWeek(),{weekday:o}=this;o<s&&(n.weekNumber=this.weekNumber-1),n.weekday=s}else n.weekday=1;if(i==="quarters"){let s=Math.ceil(this.month/3);n.month=(s-1)*3+1}return this.set(n)}endOf(e,r){return this.isValid?this.plus({[e]:1}).startOf(e,r).minus(1):this}toFormat(e,r={}){return this.isValid?qr.create(this.loc.redefaultToEN(r)).formatDateTimeFromString(this,e):Mk}toLocaleString(e=yb,r={}){return this.isValid?qr.create(this.loc.clone(r),e).formatDateTime(this):Mk}toLocaleParts(e={}){return this.isValid?qr.create(this.loc.clone(e),e).formatDateTimeParts(this):[]}toISO({format:e="extended",suppressSeconds:r=!1,suppressMilliseconds:n=!1,includeOffset:i=!0,extendedZone:s=!1,precision:o="milliseconds"}={}){if(!this.isValid)return null;o=mb(o);let a=e==="extended",c=qk(this,a,o);return fb.indexOf(o)>=3&&(c+="T"),c+=A5(this,a,r,n,i,s,o),c}toISODate({format:e="extended",precision:r="day"}={}){return this.isValid?qk(this,e==="extended",mb(r)):null}toISOWeekDate(){return db(this,"kkkk-'W'WW-c")}toISOTime({suppressMilliseconds:e=!1,suppressSeconds:r=!1,includeOffset:n=!0,includePrefix:i=!1,extendedZone:s=!1,format:o="extended",precision:a="milliseconds"}={}){return this.isValid?(a=mb(a),(i&&fb.indexOf(a)>=3?"T":"")+A5(this,o==="extended",r,e,n,s,a)):null}toRFC2822(){return db(this,"EEE, dd LLL yyyy HH:mm:ss ZZZ",!1)}toHTTP(){return db(this.toUTC(),"EEE, dd LLL yyyy HH:mm:ss 'GMT'")}toSQLDate(){return this.isValid?qk(this,!0):null}toSQLTime({includeOffset:e=!0,includeZone:r=!1,includeOffsetSpace:n=!0}={}){let i="HH:mm:ss.SSS";return(r||e)&&(n&&(i+=" "),r?i+="z":e&&(i+="ZZ")),db(this,i,!0)}toSQL(e={}){return this.isValid?`${this.toSQLDate()} ${this.toSQLTime(e)}`:null}toString(){return this.isValid?this.toISO():Mk}[Symbol.for("nodejs.util.inspect.custom")](){return this.isValid?`DateTime { ts: ${this.toISO()}, zone: ${this.zone.name}, locale: ${this.locale} }`:`DateTime { Invalid, reason: ${this.invalidReason} }`}valueOf(){return this.toMillis()}toMillis(){return this.isValid?this.ts:NaN}toSeconds(){return this.isValid?this.ts/1e3:NaN}toUnixInteger(){return this.isValid?Math.floor(this.ts/1e3):NaN}toJSON(){return this.toISO()}toBSON(){return this.toJSDate()}toObject(e={}){if(!this.isValid)return{};let r={...this.c};return e.includeConfig&&(r.outputCalendar=this.outputCalendar,r.numberingSystem=this.loc.numberingSystem,r.locale=this.loc.locale),r}toJSDate(){return new Date(this.isValid?this.ts:NaN)}diff(e,r="milliseconds",n={}){if(!this.isValid||!e.isValid)return _t.invalid("created by diffing an invalid DateTime");let i={locale:this.locale,numberingSystem:this.numberingSystem,...n},s=STe(r).map(_t.normalizeUnit),o=e.valueOf()>this.valueOf(),a=o?this:e,c=o?e:this,l=_ke(a,c,s,i);return o?l.negate():l}diffNow(e="milliseconds",r={}){return this.diff(t.now(),e,r)}until(e){return this.isValid?la.fromDateTimes(this,e):this}hasSame(e,r,n){if(!this.isValid)return!1;let i=e.valueOf(),s=this.setZone(e.zone,{keepLocalTime:!0});return s.startOf(r,n)<=i&&i<=s.endOf(r,n)}equals(e){return this.isValid&&e.isValid&&this.valueOf()===e.valueOf()&&this.zone.equals(e.zone)&&this.loc.equals(e.loc)}toRelative(e={}){if(!this.isValid)return null;let r=e.base||t.fromObject({},{zone:this.zone}),n=e.padding?this<r?-e.padding:e.padding:0,i=["years","months","days","hours","minutes","seconds"],s=e.unit;return Array.isArray(e.unit)&&(i=e.unit,s=void 0),C5(r,this.plus(n),{...e,numeric:"always",units:i,unit:s})}toRelativeCalendar(e={}){return this.isValid?C5(e.base||t.fromObject({},{zone:this.zone}),this,{...e,numeric:"auto",units:["years","months","days"],calendary:!0}):null}static min(...e){if(!e.every(t.isDateTime))throw new jt("min requires all arguments be DateTimes");return y5(e,r=>r.valueOf(),Math.min)}static max(...e){if(!e.every(t.isDateTime))throw new jt("max requires all arguments be DateTimes");return y5(e,r=>r.valueOf(),Math.max)}static fromFormatExplain(e,r,n={}){let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});return AB(o,e,r)}static fromStringExplain(e,r,n={}){return t.fromFormatExplain(e,r,n)}static buildFormatParser(e,r={}){let{locale:n=null,numberingSystem:i=null}=r,s=$e.fromOpts({locale:n,numberingSystem:i,defaultToEN:!0});return new Sb(s,e)}static fromFormatParser(e,r,n={}){if(Q(e)||Q(r))throw new jt("fromFormatParser requires an input string and a format parser");let{locale:i=null,numberingSystem:s=null}=n,o=$e.fromOpts({locale:i,numberingSystem:s,defaultToEN:!0});if(!o.equals(r.locale))throw new jt(`fromFormatParser called with a locale of ${o}, but the format parser was created for ${r.locale}`);let{result:a,zone:c,specificOffset:l,invalidReason:u}=r.explainFromTokens(e);return u?t.invalid(u):pl(a,c,n,`format ${r.format}`,e,l)}static get DATE_SHORT(){return yb}static get DATE_MED(){return P5}static get DATE_MED_WITH_WEEKDAY(){return X1e}static get DATE_FULL(){return K5}static get DATE_HUGE(){return D5}static get TIME_SIMPLE(){return M5}static get TIME_WITH_SECONDS(){return N5}static get TIME_WITH_SHORT_OFFSET(){return L5}static get TIME_WITH_LONG_OFFSET(){return q5}static get TIME_24_SIMPLE(){return F5}static get TIME_24_WITH_SECONDS(){return $5}static get TIME_24_WITH_SHORT_OFFSET(){return U5}static get TIME_24_WITH_LONG_OFFSET(){return J5}static get DATETIME_SHORT(){return z5}static get DATETIME_SHORT_WITH_SECONDS(){return G5}static get DATETIME_MED(){return B5}static get DATETIME_MED_WITH_SECONDS(){return H5}static get DATETIME_MED_WITH_WEEKDAY(){return Z1e}static get DATETIME_FULL(){return V5}static get DATETIME_FULL_WITH_SECONDS(){return W5}static get DATETIME_HUGE(){return Y5}static get DATETIME_HUGE_WITH_SECONDS(){return Q5}};function Ld(t){if(et.isDateTime(t))return t;if(t&&t.valueOf&&Zs(t.valueOf()))return et.fromJSDate(t);if(t&&typeof t=="object")return et.fromObject(t);throw new jt(`Unknown datetime argument: ${t}, of type ${typeof t}`)}var Jke="3.7.2";Jr.DateTime=et;Jr.Duration=_t;Jr.FixedOffsetZone=Ur;Jr.IANAZone=Zi;Jr.Info=ca;Jr.Interval=la;Jr.InvalidZone=gb;Jr.Settings=Ye;Jr.SystemZone=Jd;Jr.VERSION=Jke;Jr.Zone=eo});var KB=h((GUe,PB)=>{"use strict";var ua=jB();ne.prototype.addYear=function(){this._date=this._date.plus({years:1})};ne.prototype.addMonth=function(){this._date=this._date.plus({months:1}).startOf("month")};ne.prototype.addDay=function(){this._date=this._date.plus({days:1}).startOf("day")};ne.prototype.addHour=function(){var t=this._date;this._date=this._date.plus({hours:1}).startOf("hour"),this._date<=t&&(this._date=this._date.plus({hours:1}))};ne.prototype.addMinute=function(){var t=this._date;this._date=this._date.plus({minutes:1}).startOf("minute"),this._date<t&&(this._date=this._date.plus({hours:1}))};ne.prototype.addSecond=function(){var t=this._date;this._date=this._date.plus({seconds:1}).startOf("second"),this._date<t&&(this._date=this._date.plus({hours:1}))};ne.prototype.subtractYear=function(){this._date=this._date.minus({years:1})};ne.prototype.subtractMonth=function(){this._date=this._date.minus({months:1}).endOf("month").startOf("second")};ne.prototype.subtractDay=function(){this._date=this._date.minus({days:1}).endOf("day").startOf("second")};ne.prototype.subtractHour=function(){var t=this._date;this._date=this._date.minus({hours:1}).endOf("hour").startOf("second"),this._date>=t&&(this._date=this._date.minus({hours:1}))};ne.prototype.subtractMinute=function(){var t=this._date;this._date=this._date.minus({minutes:1}).endOf("minute").startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ne.prototype.subtractSecond=function(){var t=this._date;this._date=this._date.minus({seconds:1}).startOf("second"),this._date>t&&(this._date=this._date.minus({hours:1}))};ne.prototype.getDate=function(){return this._date.day};ne.prototype.getFullYear=function(){return this._date.year};ne.prototype.getDay=function(){var t=this._date.weekday;return t==7?0:t};ne.prototype.getMonth=function(){return this._date.month-1};ne.prototype.getHours=function(){return this._date.hour};ne.prototype.getMinutes=function(){return this._date.minute};ne.prototype.getSeconds=function(){return this._date.second};ne.prototype.getMilliseconds=function(){return this._date.millisecond};ne.prototype.getTime=function(){return this._date.valueOf()};ne.prototype.getUTCDate=function(){return this._getUTC().day};ne.prototype.getUTCFullYear=function(){return this._getUTC().year};ne.prototype.getUTCDay=function(){var t=this._getUTC().weekday;return t==7?0:t};ne.prototype.getUTCMonth=function(){return this._getUTC().month-1};ne.prototype.getUTCHours=function(){return this._getUTC().hour};ne.prototype.getUTCMinutes=function(){return this._getUTC().minute};ne.prototype.getUTCSeconds=function(){return this._getUTC().second};ne.prototype.toISOString=function(){return this._date.toUTC().toISO()};ne.prototype.toJSON=function(){return this._date.toJSON()};ne.prototype.setDate=function(t){this._date=this._date.set({day:t})};ne.prototype.setFullYear=function(t){this._date=this._date.set({year:t})};ne.prototype.setDay=function(t){this._date=this._date.set({weekday:t})};ne.prototype.setMonth=function(t){this._date=this._date.set({month:t+1})};ne.prototype.setHours=function(t){this._date=this._date.set({hour:t})};ne.prototype.setMinutes=function(t){this._date=this._date.set({minute:t})};ne.prototype.setSeconds=function(t){this._date=this._date.set({second:t})};ne.prototype.setMilliseconds=function(t){this._date=this._date.set({millisecond:t})};ne.prototype._getUTC=function(){return this._date.toUTC()};ne.prototype.toString=function(){return this.toDate().toString()};ne.prototype.toDate=function(){return this._date.toJSDate()};ne.prototype.isLastDayOfMonth=function(){var t=this._date.plus({days:1}).startOf("day");return this._date.month!==t.month};ne.prototype.isLastWeekdayOfMonth=function(){var t=this._date.plus({days:7}).startOf("day");return this._date.month!==t.month};function ne(t,e){var r={zone:e};if(t?t instanceof ne?this._date=t._date:t instanceof Date?this._date=ua.DateTime.fromJSDate(t,r):typeof t=="number"?this._date=ua.DateTime.fromMillis(t,r):typeof t=="string"&&(this._date=ua.DateTime.fromISO(t,r),this._date.isValid||(this._date=ua.DateTime.fromRFC2822(t,r)),this._date.isValid||(this._date=ua.DateTime.fromSQL(t,r)),this._date.isValid||(this._date=ua.DateTime.fromFormat(t,"EEE, d MMM yyyy HH:mm:ss",r))):this._date=ua.DateTime.local(),!this._date||!this._date.isValid)throw new Error("CronDate: unhandled timestamp: "+JSON.stringify(t));e&&e!==this._date.zoneName&&(this._date=this._date.setZone(e))}PB.exports=ne});var NB=h((BUe,MB)=>{"use strict";function da(t){return{start:t,count:1}}function DB(t,e){t.end=e,t.step=e-t.start,t.count=2}function dA(t,e,r){e&&(e.count===2?(t.push(da(e.start)),t.push(da(e.end))):t.push(e)),r&&t.push(r)}function zke(t){for(var e=[],r=void 0,n=0;n<t.length;n++){var i=t[n];typeof i!="number"?(dA(e,r,da(i)),r=void 0):r?r.count===1?DB(r,i):r.step===i-r.end?(r.count++,r.end=i):r.count===2?(e.push(da(r.start)),r=da(r.end),DB(r,i)):(dA(e,r),r=da(i)):r=da(i)}return dA(e,r),e}MB.exports=zke});var qB=h((HUe,LB)=>{"use strict";var Gke=NB();function Bke(t,e,r){var n=Gke(t);if(n.length===1){var i=n[0],s=i.step;if(s===1&&i.start===e&&i.end===r)return"*";if(s!==1&&i.start===e&&i.end===r-s+1)return"*/"+s}for(var o=[],a=0,c=n.length;a<c;++a){var l=n[a];if(l.count===1){o.push(l.start);continue}var s=l.step;if(l.step===1){o.push(l.start+"-"+l.end);continue}var u=l.start==0?l.count-1:l.count;l.step*u>l.end?o=o.concat(Array.from({length:l.end-l.start+1}).map(function(p,f){var m=l.start+f;return(m-l.start)%l.step===0?m:null}).filter(function(p){return p!=null})):l.end===r-l.step+1?o.push(l.start+"/"+l.step):o.push(l.start+"-"+l.end+"/"+l.step)}return o.join(",")}LB.exports=Bke});var UB=h((VUe,$B)=>{"use strict";var pa=KB(),Hke=qB(),FB=1e4;function L(t,e){this._options=e,this._utc=e.utc||!1,this._tz=this._utc?"UTC":e.tz,this._currentDate=new pa(e.currentDate,this._tz),this._startDate=e.startDate?new pa(e.startDate,this._tz):null,this._endDate=e.endDate?new pa(e.endDate,this._tz):null,this._isIterator=e.iterator||!1,this._hasIterated=!1,this._nthDayOfWeek=e.nthDayOfWeek||0,this.fields=L._freezeFields(t)}L.map=["second","minute","hour","dayOfMonth","month","dayOfWeek"];L.predefined={"@yearly":"0 0 1 1 *","@monthly":"0 0 1 * *","@weekly":"0 0 * * 0","@daily":"0 0 * * *","@hourly":"0 * * * *"};L.constraints=[{min:0,max:59,chars:[]},{min:0,max:59,chars:[]},{min:0,max:23,chars:[]},{min:1,max:31,chars:["L"]},{min:1,max:12,chars:[]},{min:0,max:7,chars:["L"]}];L.daysInMonth=[31,29,31,30,31,30,31,31,30,31,30,31];L.aliases={month:{jan:1,feb:2,mar:3,apr:4,may:5,jun:6,jul:7,aug:8,sep:9,oct:10,nov:11,dec:12},dayOfWeek:{sun:0,mon:1,tue:2,wed:3,thu:4,fri:5,sat:6}};L.parseDefaults=["0","*","*","*","*","*"];L.standardValidCharacters=/^[,*\d/-]+$/;L.dayOfWeekValidCharacters=/^[?,*\dL#/-]+$/;L.dayOfMonthValidCharacters=/^[?,*\dL/-]+$/;L.validCharacters={second:L.standardValidCharacters,minute:L.standardValidCharacters,hour:L.standardValidCharacters,dayOfMonth:L.dayOfMonthValidCharacters,month:L.standardValidCharacters,dayOfWeek:L.dayOfWeekValidCharacters};L._isValidConstraintChar=function(e,r){return typeof r!="string"?!1:e.chars.some(function(n){return r.indexOf(n)>-1})};L._parseField=function(e,r,n){switch(e){case"month":case"dayOfWeek":var i=L.aliases[e];r=r.replace(/[a-z]{3}/gi,function(c){if(c=c.toLowerCase(),typeof i[c]<"u")return i[c];throw new Error('Validation error, cannot resolve alias "'+c+'"')});break}if(!L.validCharacters[e].test(r))throw new Error("Invalid characters, got value: "+r);r.indexOf("*")!==-1?r=r.replace(/\*/g,n.min+"-"+n.max):r.indexOf("?")!==-1&&(r=r.replace(/\?/g,n.min+"-"+n.max));function s(c){var l=[];function u(m){if(m instanceof Array)for(var y=0,b=m.length;y<b;y++){var v=m[y];if(L._isValidConstraintChar(n,v)){l.push(v);continue}if(typeof v!="number"||Number.isNaN(v)||v<n.min||v>n.max)throw new Error("Constraint error, got value "+v+" expected range "+n.min+"-"+n.max);l.push(v)}else{if(L._isValidConstraintChar(n,m)){l.push(m);return}var E=+m;if(Number.isNaN(E)||E<n.min||E>n.max)throw new Error("Constraint error, got value "+m+" expected range "+n.min+"-"+n.max);e==="dayOfWeek"&&(E=E%7),l.push(E)}}var d=c.split(",");if(!d.every(function(m){return m.length>0}))throw new Error("Invalid list value format");if(d.length>1)for(var p=0,f=d.length;p<f;p++)u(o(d[p]));else u(o(c));return l.sort(L._sortCompareFn),l}function o(c){var l=1,u=c.split("/");if(u.length>2)throw new Error("Invalid repeat: "+c);return u.length>1?(u[0]==+u[0]&&(u=[u[0]+"-"+n.max,u[1]]),a(u[0],u[u.length-1])):a(c,l)}function a(c,l){var u=[],d=c.split("-");if(d.length>1){if(d.length<2)return+c;if(!d[0].length){if(!d[1].length)throw new Error("Invalid range: "+c);return+c}var p=+d[0],f=+d[1];if(Number.isNaN(p)||Number.isNaN(f)||p<n.min||f>n.max)throw new Error("Constraint error, got range "+p+"-"+f+" expected range "+n.min+"-"+n.max);if(p>f)throw new Error("Invalid range: "+c);var m=+l;if(Number.isNaN(m)||m<=0)throw new Error("Constraint error, cannot repeat at every "+m+" time.");e==="dayOfWeek"&&f%7===0&&u.push(0);for(var y=p,b=f;y<=b;y++){var v=u.indexOf(y)!==-1;!v&&m>0&&m%l===0?(m=1,u.push(y)):m++}return u}return Number.isNaN(+c)?c:+c}return s(r)};L._sortCompareFn=function(t,e){var r=typeof t=="number",n=typeof e=="number";return r&&n?t-e:!r&&n?1:r&&!n?-1:t.localeCompare(e)};L._handleMaxDaysInMonth=function(t){if(t.month.length===1){var e=L.daysInMonth[t.month[0]-1];if(t.dayOfMonth[0]>e)throw new Error("Invalid explicit day of month definition");return t.dayOfMonth.filter(function(r){return r==="L"?!0:r<=e}).sort(L._sortCompareFn)}};L._freezeFields=function(t){for(var e=0,r=L.map.length;e<r;++e){var n=L.map[e],i=t[n];t[n]=Object.freeze(i)}return Object.freeze(t)};L.prototype._applyTimezoneShift=function(t,e,r){if(r==="Month"||r==="Day"){var n=t.getTime();t[e+r]();var i=t.getTime();n===i&&(t.getMinutes()===0&&t.getSeconds()===0?t.addHour():t.getMinutes()===59&&t.getSeconds()===59&&t.subtractHour())}else{var s=t.getHours();t[e+r]();var o=t.getHours(),a=o-s;a===2?this.fields.hour.length!==24&&(this._dstStart=o):a===0&&t.getMinutes()===0&&t.getSeconds()===0&&this.fields.hour.length!==24&&(this._dstEnd=o)}};L.prototype._findSchedule=function(e){function r(v,E){for(var S=0,k=E.length;S<k;S++)if(E[S]>=v)return E[S]===v;return E[0]===v}function n(v,E){if(E<6){if(v.getDate()<8&&E===1)return!0;var S=v.getDate()%7?1:0,k=v.getDate()-v.getDate()%7,_=Math.floor(k/7)+S;return _===E}return!1}function i(v){return v.length>0&&v.some(function(E){return typeof E=="string"&&E.indexOf("L")>=0})}e=e||!1;var s=e?"subtract":"add",o=new pa(this._currentDate,this._tz),a=this._startDate,c=this._endDate,l=o.getTime(),u=0;function d(v){return v.some(function(E){if(!i([E]))return!1;var S=Number.parseInt(E[0])%7;if(Number.isNaN(S))throw new Error("Invalid last weekday of the month expression: "+E);return o.getDay()===S&&o.isLastWeekdayOfMonth()})}for(;u<FB;){if(u++,e){if(a&&o.getTime()-a.getTime()<0)throw new Error("Out of the timespan range")}else if(c&&c.getTime()-o.getTime()<0)throw new Error("Out of the timespan range");var p=r(o.getDate(),this.fields.dayOfMonth);i(this.fields.dayOfMonth)&&(p=p||o.isLastDayOfMonth());var f=r(o.getDay(),this.fields.dayOfWeek);i(this.fields.dayOfWeek)&&(f=f||d(this.fields.dayOfWeek));var m=this.fields.dayOfMonth.length>=L.daysInMonth[o.getMonth()],y=this.fields.dayOfWeek.length===L.constraints[5].max-L.constraints[5].min+1,b=o.getHours();if(!p&&(!f||y)){this._applyTimezoneShift(o,s,"Day");continue}if(!m&&y&&!p){this._applyTimezoneShift(o,s,"Day");continue}if(m&&!y&&!f){this._applyTimezoneShift(o,s,"Day");continue}if(this._nthDayOfWeek>0&&!n(o,this._nthDayOfWeek)){this._applyTimezoneShift(o,s,"Day");continue}if(!r(o.getMonth()+1,this.fields.month)){this._applyTimezoneShift(o,s,"Month");continue}if(r(b,this.fields.hour)){if(this._dstEnd===b&&!e){this._dstEnd=null,this._applyTimezoneShift(o,"add","Hour");continue}}else if(this._dstStart!==b){this._dstStart=null,this._applyTimezoneShift(o,s,"Hour");continue}else if(!r(b-1,this.fields.hour)){o[s+"Hour"]();continue}if(!r(o.getMinutes(),this.fields.minute)){this._applyTimezoneShift(o,s,"Minute");continue}if(!r(o.getSeconds(),this.fields.second)){this._applyTimezoneShift(o,s,"Second");continue}if(l===o.getTime()){s==="add"||o.getMilliseconds()===0?this._applyTimezoneShift(o,s,"Second"):o.setMilliseconds(0);continue}break}if(u>=FB)throw new Error("Invalid expression, loop limit exceeded");return this._currentDate=new pa(o,this._tz),this._hasIterated=!0,o};L.prototype.next=function(){var e=this._findSchedule();return this._isIterator?{value:e,done:!this.hasNext()}:e};L.prototype.prev=function(){var e=this._findSchedule(!0);return this._isIterator?{value:e,done:!this.hasPrev()}:e};L.prototype.hasNext=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};L.prototype.hasPrev=function(){var t=this._currentDate,e=this._hasIterated;try{return this._findSchedule(!0),!0}catch{return!1}finally{this._currentDate=t,this._hasIterated=e}};L.prototype.iterate=function(e,r){var n=[];if(e>=0)for(var i=0,s=e;i<s;i++)try{var o=this.next();n.push(o),r&&r(o,i)}catch{break}else for(var i=0,s=e;i>s;i--)try{var o=this.prev();n.push(o),r&&r(o,i)}catch{break}return n};L.prototype.reset=function(e){this._currentDate=new pa(e||this._options.currentDate)};L.prototype.stringify=function(e){for(var r=[],n=e?0:1,i=L.map.length;n<i;++n){var s=L.map[n],o=this.fields[s],a=L.constraints[n];s==="dayOfMonth"&&this.fields.month.length===1?a={min:1,max:L.daysInMonth[this.fields.month[0]-1]}:s==="dayOfWeek"&&(a={min:0,max:6},o=o[o.length-1]===7?o.slice(0,-1):o),r.push(Hke(o,a.min,a.max))}return r.join(" ")};L.parse=function(e,r){var n=this;typeof r=="function"&&(r={});function i(s,o){o||(o={}),typeof o.currentDate>"u"&&(o.currentDate=new pa(void 0,n._tz)),L.predefined[s]&&(s=L.predefined[s]);var a=[],c=(s+"").trim().split(/\s+/);if(c.length>6)throw new Error("Invalid cron expression");for(var l=L.map.length-c.length,u=0,d=L.map.length;u<d;++u){var p=L.map[u],f=c[c.length>d?u:u-l];if(u<l||!f)a.push(L._parseField(p,L.parseDefaults[u],L.constraints[u]));else{var m=p==="dayOfWeek"?E(f):f;a.push(L._parseField(p,m,L.constraints[u]))}}for(var y={},u=0,d=L.map.length;u<d;u++){var b=L.map[u];y[b]=a[u]}var v=L._handleMaxDaysInMonth(y);return y.dayOfMonth=v||y.dayOfMonth,new L(y,o);function E(S){var k=S.split("#");if(k.length>1){var _=+k[k.length-1];if(/,/.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `,` special characters are incompatible");if(/\//.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `/` special characters are incompatible");if(/-/.test(S))throw new Error("Constraint error, invalid dayOfWeek `#` and `-` special characters are incompatible");if(k.length>2||Number.isNaN(_)||_<1||_>5)throw new Error("Constraint error, invalid dayOfWeek occurrence number (#)");return o.nthDayOfWeek=_,k[0]}return S}}return i(e,r)};L.fieldsToExpression=function(e,r){function n(p,f,m){if(!f)throw new Error("Validation error, Field "+p+" is missing");if(f.length===0)throw new Error("Validation error, Field "+p+" contains no values");for(var y=0,b=f.length;y<b;y++){var v=f[y];if(!L._isValidConstraintChar(m,v)&&(typeof v!="number"||Number.isNaN(v)||v<m.min||v>m.max))throw new Error("Constraint error, got value "+v+" expected range "+m.min+"-"+m.max)}}for(var i={},s=0,o=L.map.length;s<o;++s){var a=L.map[s],c=e[a];n(a,c,L.constraints[s]);for(var l=[],u=-1;++u<c.length;)l[u]=c[u];if(c=l.sort(L._sortCompareFn).filter(function(p,f,m){return!f||p!==m[f-1]}),c.length!==l.length)throw new Error("Validation error, Field "+a+" contains duplicate values");i[a]=c}var d=L._handleMaxDaysInMonth(i);return i.dayOfMonth=d||i.dayOfMonth,new L(i,r||{})};$B.exports=L});var pA=h((WUe,JB)=>{"use strict";var Tb=UB();function to(){}to._parseEntry=function(e){var r=e.split(" ");if(r.length===6)return{interval:Tb.parse(e)};if(r.length>6)return{interval:Tb.parse(r.slice(0,6).join(" ")),command:r.slice(6,r.length)};throw new Error("Invalid entry: "+e)};to.parseExpression=function(e,r){return Tb.parse(e,r)};to.fieldsToExpression=function(e,r){return Tb.fieldsToExpression(e,r)};to.parseString=function(e){for(var r=e.split(`
`),n={variables:{},expressions:[],errors:{}},i=0,s=r.length;i<s;i++){var o=r[i],a=null,c=o.trim();if(c.length>0){if(c.match(/^#/))continue;if(a=c.match(/^(.*)=(.*)$/))n.variables[a[1]]=a[2];else{var l=null;try{l=to._parseEntry("0 "+c),n.expressions.push(l.interval)}catch(u){n.errors[c]=u}}}}return n};to.parseFile=function(e,r){require("fs").readFile(e,function(n,i){if(n){r(n);return}return r(null,to.parseString(i.toString()))})};JB.exports=to});var ro=h(kb=>{"use strict";Object.defineProperty(kb,"__esModule",{value:!0});kb.QueueBase=void 0;var Vke=require("events"),El=Dr(),Wke=Id(),Yke=Md(),Qke=Qc(),Xke=jy(),fA=class extends Vke.EventEmitter{constructor(e,r={connection:{}},n=Yke.RedisConnection,i=!1){if(super(),this.name=e,this.opts=r,this.closed=!1,this.hasBlockingConnection=!1,this.hasBlockingConnection=i,this.opts=Object.assign({prefix:"bull"},r),!e)throw new Error("Queue name must be provided");if(e.includes(":"))throw new Error("Queue name cannot contain :");this.connection=new n(r.connection,{shared:(0,El.isRedisInstance)(r.connection),blocking:i,skipVersionCheck:r.skipVersionCheck,skipWaitingForReady:r.skipWaitingForReady}),(0,El.forwardConnectionError)(this,this.connection),this.connection.on("close",()=>{this.closing||this.emit("ioredis:close")});let s=new Xke.QueueKeys(r.prefix);this.qualifiedName=s.getQueueQualifiedName(e),this.keys=s.getKeys(e),this.toKey=o=>s.toKey(e,o),this.createScripts()}get client(){return this.connection.client}createScripts(){this.scripts=(0,Wke.createScripts)(this)}get redisVersion(){return this.connection.redisVersion}get databaseType(){return this.connection.databaseType}get Job(){return Qke.Job}emit(e,...r){try{return super.emit(e,...r)}catch(n){try{return super.emit("error",n)}catch(i){return console.error(i),!1}}}waitUntilReady(){return this.client}base64Name(){return Buffer.from(this.name).toString("base64")}clientName(e=""){let r=this.base64Name();return`${this.opts.prefix}:${r}${e}`}async close(){this.closing||(this.closing=this.connection.close()),await this.closing,this.closed=!0}disconnect(){return this.connection.disconnect()}async checkConnectionError(e,r=El.DELAY_TIME_5){try{return await e()}catch(n){if((0,El.isNotConnectionError)(n)&&this.emit("error",n),!this.closing&&r)await(0,El.delay)(r);else return}}trace(e,r,n,i,s){return(0,El.trace)(this.opts.telemetry,e,this.name,r,n,i,s)}};kb.QueueBase=fA});var Rb=h(fa=>{"use strict";Object.defineProperty(fa,"__esModule",{value:!0});fa.defaultRepeatStrategy=fa.JobScheduler=void 0;var Zke=(nr(),Pt(rr)),eAe=pA(),Ab=Qc(),tAe=ro(),Vd=_r(),rAe=Dr(),mA=class extends tAe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||fa.defaultRepeatStrategy}async upsertJobScheduler(e,r,n,i,s,{override:o,producerId:a}){let{every:c,limit:l,pattern:u,offset:d}=r;if(u&&c)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(!u&&!c)throw new Error("Either .pattern or .every options must be defined for this repeatable job");if(r.immediately&&r.startDate)throw new Error("Both .immediately and .startDate options are defined for this repeatable job");r.immediately&&r.every&&console.warn("Using option immediately with every does not affect the job's schedule. Job will run immediately anyway.");let p=r.count?r.count+1:1;if(typeof r.limit<"u"&&p>r.limit)return;let f=Date.now(),{endDate:m}=r;if(m&&f>new Date(m).getTime())return;let y=s.prevMillis||0;f=y<f?f:y;let{immediately:b}=r,v=Zke.__rest(r,["immediately"]),E,S=c&&d?d:null;if(u&&(E=await this.repeatStrategy(f,r,n),E<f&&(E=f)),E||c)return this.trace(Vd.SpanKind.PRODUCER,"add",`${this.name}.${n}`,async(k,_)=>{var O,N;let ee=s.telemetry;if(_){let U=(O=s.telemetry)===null||O===void 0?void 0:O.omitContext,te=((N=s.telemetry)===null||N===void 0?void 0:N.metadata)||!U&&_;(te||U)&&(ee={metadata:te,omitContext:U})}let q=this.getNextJobOpts(E,e,Object.assign(Object.assign({},s),{repeat:v,telemetry:ee}),p,S);if(o){E<f&&(E=f);let[U,te]=await this.scripts.addJobScheduler(e,E,JSON.stringify(typeof i>"u"?{}:i),Ab.Job.optsAsJSON(s),{name:n,startDate:r.startDate?new Date(r.startDate).getTime():void 0,endDate:m?new Date(m).getTime():void 0,tz:r.tz,pattern:u,every:c,limit:l,offset:S},Ab.Job.optsAsJSON(q),a),Ge=typeof te=="string"?parseInt(te,10):te,T=new this.Job(this,n,i,Object.assign(Object.assign({},q),{delay:Ge}),U);return T.id=U,k?.setAttributes({[Vd.TelemetryAttributes.JobSchedulerId]:e,[Vd.TelemetryAttributes.JobId]:T.id}),T}else{let U=await this.scripts.updateJobSchedulerNextMillis(e,E,JSON.stringify(typeof i>"u"?{}:i),Ab.Job.optsAsJSON(q),a);if(U){let te=new this.Job(this,n,i,q,U);return te.id=U,k?.setAttributes({[Vd.TelemetryAttributes.JobSchedulerId]:e,[Vd.TelemetryAttributes.JobId]:te.id}),te}}})}getNextJobOpts(e,r,n,i,s){var o,a;let c=this.getSchedulerNextJobId({jobSchedulerId:r,nextMillis:e}),l=Date.now(),u=e+s-l,d=Object.assign(Object.assign({},n),{jobId:c,delay:u<0?0:u,timestamp:l,prevMillis:e,repeatJobKey:r});return d.repeat=Object.assign(Object.assign({},n.repeat),{offset:s,count:i,startDate:!((o=n.repeat)===null||o===void 0)&&o.startDate?new Date(n.repeat.startDate).getTime():void 0,endDate:!((a=n.repeat)===null||a===void 0)&&a.endDate?new Date(n.repeat.endDate).getTime():void 0}),d}async removeJobScheduler(e){return this.scripts.removeJobScheduler(e)}async getSchedulerData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return this.transformSchedulerData(r,i,n)}transformSchedulerData(e,r,n){if(r&&Object.keys(r).length>0){let i={key:e,name:r.name,next:n};return r.ic&&(i.iterationCount=parseInt(r.ic)),r.limit&&(i.limit=parseInt(r.limit)),r.startDate&&(i.startDate=parseInt(r.startDate)),r.endDate&&(i.endDate=parseInt(r.endDate)),r.tz&&(i.tz=r.tz),r.pattern&&(i.pattern=r.pattern),r.every&&(i.every=parseInt(r.every)),r.offset&&(i.offset=parseInt(r.offset)),(r.data||r.opts)&&(i.template=this.getTemplateFromJSON(r.data,r.opts)),i}if(e.includes(":"))return this.keyToData(e,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async isJobScheduler(e){return await(await this.client).hexists(`${this.keys.repeat}:${e}`,"ic")===1}async getScheduler(e){let[r,n]=await this.scripts.getJobScheduler(e);return this.transformSchedulerData(e,r?(0,rAe.array2obj)(r):null,n?parseInt(n):null)}getTemplateFromJSON(e,r){let n={};return e&&(n.data=JSON.parse(e)),r&&(n.opts=Ab.Job.optsFromJSON(r)),n}async getJobSchedulers(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getSchedulerData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getSchedulersCount(){let e=this.keys.repeat;return(await this.client).zcard(e)}getSchedulerNextJobId({nextMillis:e,jobSchedulerId:r}){return`repeat:${r}:${e}`}};fa.JobScheduler=mA;var nAe=(t,e)=>{let{pattern:r}=e,n=new Date(t),i=e.startDate&&new Date(e.startDate),s=i>n?i:n,o=(0,eAe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:s}));try{return e.immediately?new Date().getTime():o.next().getTime()}catch{}};fa.defaultRepeatStrategy=nAe});var yA=h(Cb=>{"use strict";Object.defineProperty(Cb,"__esModule",{value:!0});Cb.LockManager=void 0;var iAe=Gh(),Ob=_r(),hA=class{constructor(e,r){this.worker=e,this.opts=r,this.trackedJobs=new Map,this.closed=!1}start(){this.closed||this.opts.lockRenewTime>0&&this.startLockExtenderTimer()}async extendLocks(e){await this.worker.trace(Ob.SpanKind.INTERNAL,"extendLocks",this.worker.name,async r=>{r?.setAttributes({[Ob.TelemetryAttributes.WorkerId]:this.opts.workerId,[Ob.TelemetryAttributes.WorkerName]:this.opts.workerName,[Ob.TelemetryAttributes.WorkerJobsToExtendLocks]:e});try{let n=e.map(o=>{var a;return((a=this.trackedJobs.get(o))===null||a===void 0?void 0:a.token)||""}),i=await this.worker.extendJobLocks(e,n,this.opts.lockDuration);if(i.length>0){this.worker.emit("lockRenewalFailed",i);for(let o of i)this.worker.emit("error",new Error(`could not renew lock for job ${o}`))}let s=e.filter(o=>!i.includes(o));s.length>0&&this.worker.emit("locksRenewed",{count:s.length,jobIds:s})}catch(n){this.worker.emit("error",n)}})}startLockExtenderTimer(){clearTimeout(this.lockRenewalTimer),this.closed||(this.lockRenewalTimer=setTimeout(async()=>{let e=Date.now(),r=[];for(let n of this.trackedJobs.keys()){let i=this.trackedJobs.get(n),{ts:s,token:o,abortController:a}=i;if(!s){this.trackedJobs.set(n,{token:o,ts:e,abortController:a});continue}s+this.opts.lockRenewTime/2<e&&(this.trackedJobs.set(n,{token:o,ts:e,abortController:a}),r.push(n))}r.length&&await this.extendLocks(r),this.startLockExtenderTimer()},this.opts.lockRenewTime/2))}async close(){this.closed||(this.closed=!0,this.lockRenewalTimer&&(clearTimeout(this.lockRenewalTimer),this.lockRenewalTimer=void 0),this.trackedJobs.clear())}trackJob(e,r,n,i=!1){let s=i?new iAe.AbortController:void 0;return!this.closed&&e&&this.trackedJobs.set(e,{token:r,ts:n,abortController:s}),s}untrackJob(e){this.trackedJobs.delete(e)}getActiveJobCount(){return this.trackedJobs.size}isRunning(){return!this.closed&&this.lockRenewalTimer!==void 0}cancelJob(e,r){let n=this.trackedJobs.get(e);return n?.abortController?(n.abortController.abort(r),!0):!1}cancelAllJobs(e){for(let r of this.trackedJobs.values())r.abortController&&r.abortController.abort(e)}getTrackedJobIds(){return Array.from(this.trackedJobs.keys())}};Cb.LockManager=hA});var BB=h(Pb=>{"use strict";Object.defineProperty(Pb,"__esModule",{value:!0});Pb.QueueEvents=void 0;var zB=(nr(),Pt(rr)),jb=Dr(),sAe=ro(),GB=Kd(),gA=class extends sAe.QueueBase{constructor(e,r={connection:{}},n){var{connection:i,autorun:s=!0}=r,o=zB.__rest(r,["connection","autorun"]);super(e,Object.assign(Object.assign({},o),{connection:(0,jb.isRedisInstance)(i)?((0,GB.isIRedisClient)(i)?i:(0,GB.createIORedisClient)(i)).duplicate():i}),n,!0),this.running=!1,this.blocking=!1,this.opts=Object.assign({blockingTimeout:1e4},this.opts),s&&this.run().catch(a=>this.emit("error",a))}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}async run(){if(this.running)throw new Error("Queue Events is already running.");try{this.running=!0;let e=await this.client;try{await e.clientSetName(this.clientName(jb.QUEUE_EVENT_SUFFIX))}catch(r){if(!jb.clientCommandMessageReg.test(r.message)&&!this.closing)throw r}await this.consumeEvents(e)}catch(e){throw this.running=!1,e}}async consumeEvents(e){let r=this.opts,n=this.keys.events,i=r.lastEventId||"$";for(;!this.closing;){this.blocking=!0;let s=await this.checkConnectionError(()=>e.xread([{key:n,id:i}],{BLOCK:r.blockingTimeout}));if(this.blocking=!1,s){let a=s[0][1];for(let c=0;c<a.length;c++){i=a[c][0];let l=(0,jb.array2obj)(a[c][1]);switch(l.event){case"progress":l.data=JSON.parse(l.data);break;case"completed":l.returnvalue=JSON.parse(l.returnvalue);break;case"delayed":l.delay=Number(l.delay);break}let{event:u}=l,d=zB.__rest(l,["event"]);u==="drained"?this.emit(u,i):(this.emit(u,d,i),d.jobId&&this.emit(`${u}:${d.jobId}`,d,i))}}}}async close(){return this.closing||(this.closing=(async()=>{try{(await this.client).disconnect(),await this.connection.close(this.blocking)}finally{this.closed=!0}})()),this.closing}};Pb.QueueEvents=gA});var HB=h(Kb=>{"use strict";Object.defineProperty(Kb,"__esModule",{value:!0});Kb.QueueEventsProducer=void 0;var oAe=(nr(),Pt(rr)),aAe=ro(),bA=class extends aAe.QueueBase{constructor(e,r={connection:{}},n){super(e,Object.assign({blockingConnection:!1},r),n),this.opts=r}async publishEvent(e,r=1e3){let n=await this.client,i=this.keys.events,{eventName:s}=e,o=oAe.__rest(e,["eventName"]),a=Object.assign({event:s},o);await n.xadd(i,"*",a,{MAXLEN:r,approximate:!0})}async close(){this.closing||(this.closing=this.connection.close()),await this.closing}};Kb.QueueEventsProducer=bA});var xA=h(Db=>{"use strict";Object.defineProperty(Db,"__esModule",{value:!0});Db.QueueGetters=void 0;var cAe=(nr(),Pt(rr)),lAe=ro(),vA=Dr(),EA=_r();function VB(t){return String(t).replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n")}var SA=class extends lAe.QueueBase{getJob(e){return this.Job.fromId(this,e)}commandByType(e,r,n){return e.map(i=>{i=i==="waiting"?"wait":i;let s=this.toKey(i);switch(i){case"completed":case"failed":case"delayed":case"prioritized":case"repeat":case"waiting-children":return n(s,r?"zcard":"zrange");case"active":case"wait":case"paused":return n(s,r?"llen":"lrange")}})}sanitizeJobTypes(e){let r=typeof e=="string"?[e]:e;if(Array.isArray(r)&&r.length>0){let n=[...r];return n.indexOf("waiting")!==-1&&n.push("paused"),[...new Set(n)]}return["active","completed","delayed","failed","paused","prioritized","waiting","waiting-children"]}async count(){return await this.getJobCountByTypes("waiting","paused","delayed","prioritized","waiting-children")}async getRateLimitTtl(e){return this.scripts.getRateLimitTtl(e)}async getDebounceJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getDeduplicationJobId(e){return(await this.client).get(`${this.keys.de}:${e}`)}async getGlobalConcurrency(){let r=await(await this.client).hget(this.keys.meta,"concurrency");return r?Number(r):null}async getGlobalRateLimit(){let e=await this.client,[r,n]=await e.hmget(this.keys.meta,"max","duration");return r&&n?{max:Number(r),duration:Number(n)}:null}async getJobCountByTypes(...e){let r=await this.getJobCounts(...e);return Object.values(r).reduce((n,i)=>n+i,0)}async getJobCounts(...e){let r=this.sanitizeJobTypes(e),n=await this.scripts.getCounts(r),i={};return n.forEach((s,o)=>{i[r[o]]=s||0}),i}async recordJobCountsMetric(...e){var r;let n=await this.getJobCounts(...e),i=(r=this.opts.telemetry)===null||r===void 0?void 0:r.meter;if(i&&typeof i.createGauge=="function"){let s=i.createGauge(EA.MetricNames.QueueJobsCount,{description:"Number of jobs in the queue by state",unit:"{jobs}"});for(let[o,a]of Object.entries(n))s.record(a,{[EA.TelemetryAttributes.QueueName]:this.name,[EA.TelemetryAttributes.QueueJobsState]:o})}return n}getJobState(e){return this.scripts.getState(e)}async getMeta(){let r=await(await this.client).hgetall(this.keys.meta),{concurrency:n,max:i,duration:s,paused:o,"opts.maxLenEvents":a}=r,l=cAe.__rest(r,["concurrency","max","duration","paused","opts.maxLenEvents"]);return n&&(l.concurrency=Number(n)),a&&(l.maxLenEvents=Number(a)),i&&(l.max=Number(i)),s&&(l.duration=Number(s)),l.paused=o==="1",l}getCompletedCount(){return this.getJobCountByTypes("completed")}getFailedCount(){return this.getJobCountByTypes("failed")}getDelayedCount(){return this.getJobCountByTypes("delayed")}getActiveCount(){return this.getJobCountByTypes("active")}getPrioritizedCount(){return this.getJobCountByTypes("prioritized")}async getCountsPerPriority(e){let r=[...new Set(e)],n=await this.scripts.getCountsPerPriority(r),i={};return n.forEach((s,o)=>{i[`${r[o]}`]=s||0}),i}getWaitingCount(){return this.getJobCountByTypes("waiting")}getWaitingChildrenCount(){return this.getJobCountByTypes("waiting-children")}getWaiting(e=0,r=-1){return this.getJobs(["waiting"],e,r,!0)}getWaitingChildren(e=0,r=-1){return this.getJobs(["waiting-children"],e,r,!0)}getActive(e=0,r=-1){return this.getJobs(["active"],e,r,!0)}getDelayed(e=0,r=-1){return this.getJobs(["delayed"],e,r,!0)}getPrioritized(e=0,r=-1){return this.getJobs(["prioritized"],e,r,!0)}getCompleted(e=0,r=-1){return this.getJobs(["completed"],e,r,!1)}getFailed(e=0,r=-1){return this.getJobs(["failed"],e,r,!1)}async getDependencies(e,r,n,i){let s=this.toKey(r=="processed"?`${e}:processed`:`${e}:dependencies`),{items:o,total:a,jobs:c}=await this.scripts.paginate(s,{start:n,end:i,fetchJobs:!0});return{items:o,jobs:c,total:a}}async getRanges(e,r=0,n=1,i=!1){let s=[];this.commandByType(e,!1,(c,l)=>{switch(l){case"lrange":s.push("lrange");break;case"zrange":s.push("zrange");break}});let o=await this.scripts.getRanges(e,r,n,i),a=[];return o.forEach((c,l)=>{let u=c||[];i&&s[l]==="lrange"?a=a.concat(u.reverse()):a=a.concat(u)}),[...new Set(a)]}async getJobs(e,r=0,n=-1,i=!1){let s=this.sanitizeJobTypes(e);return(await this.scripts.getJobs(s,r,n,i)).reduce((a,c)=>{for(let[l,u]of c||[])a.push(this.Job.fromJSON(this,(0,vA.array2obj)(u),l));return a},[])}async getJobLogs(e,r=0,n=-1,i=!0){let o=(await this.client).multi(),a=this.toKey(e+":logs");i?o.lrange(a,r,n):o.lrange(a,-(n+1),-(r+1)),o.llen(a);let c=await o.exec();return i||c[0][1].reverse(),{logs:c[0][1],count:c[1][1]}}async baseGetClients(e){let r=await this.client;try{if(r.isCluster&&typeof r.nodes=="function"){let n=r.nodes(),i=[];for(let o=0;o<n.length;o++){let a=n[o],c=typeof a.clientList=="function"?await a.clientList():await a.client("LIST"),l=this.parseClientList(c,e);i.push(l)}return i.reduce((o,a)=>o.length>a.length?o:a,[])}else{let n=await r.clientList();return this.parseClientList(n,e)}}catch(n){if(!vA.clientCommandMessageReg.test(n.message))throw n;return[{name:"GCP does not support client list"}]}}getWorkers(){let e=`${this.clientName()}`,r=`${this.clientName()}:w:`,n=i=>i&&(i===e||i.startsWith(r));return this.baseGetClients(n)}async getWorkersCount(){return(await this.getWorkers()).length}async getQueueEvents(){let e=`${this.clientName()}${vA.QUEUE_EVENT_SUFFIX}`;return this.baseGetClients(r=>r===e)}async getMetrics(e,r=0,n=-1){let[i,s,o]=await this.scripts.getMetrics(e,r,n);return{meta:{count:parseInt(i[0]||"0",10),prevTS:parseInt(i[1]||"0",10),prevCount:parseInt(i[2]||"0",10)},data:s.map(a=>+a||0),count:o}}parseClientList(e,r){let n=e.split(/\r?\n/),i=[];return n.forEach(s=>{let o={};s.split(" ").forEach(function(l){let u=l.indexOf("="),d=l.substring(0,u),p=l.substring(u+1);o[d]=p});let c=o.name;r(c)&&(o.name=this.name,o.rawname=c,i.push(o))}),i}async exportPrometheusMetrics(e){let r=await this.getJobCounts(),n=[];n.push("# HELP bullmq_job_count Number of jobs in the queue by state"),n.push("# TYPE bullmq_job_count gauge");let i=VB(this.name),s=e?Object.keys(e).reduce((c,l)=>`${c}, ${l}="${VB(e[l])}"`,""):"";for(let[c,l]of Object.entries(r))n.push(`bullmq_job_count{queue="${i}", state="${c}"${s}} ${l}`);let[o,a]=await Promise.all([this.getMetrics("completed"),this.getMetrics("failed")]);return n.push("# HELP bullmq_job_completed_total Total number of completed jobs"),n.push("# TYPE bullmq_job_completed_total counter"),n.push(`bullmq_job_completed_total{queue="${i}"${s}} ${o.meta.count}`),n.push("# HELP bullmq_job_failed_total Total number of failed jobs"),n.push("# TYPE bullmq_job_failed_total counter"),n.push(`bullmq_job_failed_total{queue="${i}"${s}} ${a.meta.count}`),n.join(`
`)}};Db.QueueGetters=SA});var Mb=h(ma=>{"use strict";Object.defineProperty(ma,"__esModule",{value:!0});ma.getNextMillis=ma.Repeat=void 0;var uAe=(nr(),Pt(rr)),dAe=pA(),pAe=require("crypto"),fAe=ro(),wA=class extends fAe.QueueBase{constructor(e,r,n){super(e,r,n),this.repeatStrategy=r.settings&&r.settings.repeatStrategy||ma.getNextMillis,this.repeatKeyHashAlgorithm=r.settings&&r.settings.repeatKeyHashAlgorithm||"md5"}async updateRepeatableJob(e,r,n,{override:i}){var s,o;let a=Object.assign({},n.repeat);(s=a.pattern)!==null&&s!==void 0||(a.pattern=a.cron),delete a.cron;let c=a.count?a.count+1:1;if(typeof a.limit<"u"&&c>a.limit)return;let l=Date.now(),{endDate:u}=a;if(u&&l>new Date(u).getTime())return;let d=n.prevMillis||0;l=d<l?l:d;let p=await this.repeatStrategy(l,a,e),{every:f,pattern:m}=a,y=!!((f||m)&&a.immediately),b=y&&f?l-p:void 0;if(p){!d&&n.jobId&&(a.jobId=n.jobId);let v=WB(e,a),E=(o=n.repeat.key)!==null&&o!==void 0?o:this.hash(v),S;if(i)S=await this.scripts.addRepeatableJob(E,p,{name:e,endDate:u?new Date(u).getTime():void 0,tz:a.tz,pattern:m,every:f},v);else{let O=await this.client;S=await this.scripts.updateRepeatableJobMillis(O,E,p,v)}let{immediately:k}=a,_=uAe.__rest(a,["immediately"]);return this.createNextJob(e,p,S,Object.assign(Object.assign({},n),{repeat:Object.assign({offset:b},_)}),r,c,y)}}async createNextJob(e,r,n,i,s,o,a){let c=this.getRepeatJobKey(e,r,n,s),l=Date.now(),u=r+(i.repeat.offset?i.repeat.offset:0)-l,d=Object.assign(Object.assign({},i),{jobId:c,delay:u<0||a?0:u,timestamp:l,prevMillis:r,repeatJobKey:n});return d.repeat=Object.assign(Object.assign({},i.repeat),{count:o}),this.Job.create(this,e,s,d)}getRepeatJobKey(e,r,n,i){return n.split(":").length>2?this.getRepeatJobId({name:e,nextMillis:r,namespace:this.hash(n),jobId:i?.id}):this.getRepeatDelayedJobId({customKey:n,nextMillis:r})}async removeRepeatable(e,r,n){var i;let s=WB(e,Object.assign(Object.assign({},r),{jobId:n})),o=(i=r.key)!==null&&i!==void 0?i:this.hash(s),a=this.getRepeatJobId({name:e,nextMillis:"",namespace:this.hash(s),jobId:n??r.jobId,key:r.key});return this.scripts.removeRepeatable(a,s,o)}async removeRepeatableByKey(e){let r=this.keyToData(e),n=this.getRepeatJobId({name:r.name,nextMillis:"",namespace:this.hash(e),jobId:r.id});return this.scripts.removeRepeatable(n,"",e)}async getRepeatableData(e,r,n){let i=await e.hgetall(this.toKey("repeat:"+r));return i?{key:r,name:i.name,endDate:parseInt(i.endDate)||null,tz:i.tz||null,pattern:i.pattern||null,every:i.every||null,next:n}:this.keyToData(r,n)}keyToData(e,r){let n=e.split(":"),i=n.slice(4).join(":")||null;return{key:e,name:n[0],id:n[1]||null,endDate:parseInt(n[2])||null,tz:n[3]||null,pattern:i,next:r}}async getRepeatableJobs(e=0,r=-1,n=!1){let i=await this.client,s=this.keys.repeat,o=n?await i.zrange(s,e,r,{WITHSCORES:!0}):await i.zrevrange(s,e,r,{WITHSCORES:!0}),a=[];for(let c=0;c<o.length;c+=2)a.push(this.getRepeatableData(i,o[c],parseInt(o[c+1])));return Promise.all(a)}async getRepeatableCount(){return(await this.client).zcard(this.toKey("repeat"))}hash(e){return(0,pAe.createHash)(this.repeatKeyHashAlgorithm).update(e).digest("hex")}getRepeatDelayedJobId({nextMillis:e,customKey:r}){return`repeat:${r}:${e}`}getRepeatJobId({name:e,nextMillis:r,namespace:n,jobId:i,key:s}){return`repeat:${s??this.hash(`${e}${i||""}${n}`)}:${r}`}};ma.Repeat=wA;function WB(t,e){let r=e.endDate?new Date(e.endDate).getTime():"",n=e.tz||"",i=e.pattern,s=i||String(e.every)||"",o=e.jobId?e.jobId:"";return`${t}:${o}:${r}:${n}:${s}`}var mAe=(t,e)=>{let r=e.pattern;if(r&&e.every)throw new Error("Both .pattern and .every options are defined for this repeatable job");if(e.every)return Math.floor(t/e.every)*e.every+(e.immediately?0:e.every);let n=e.startDate&&new Date(e.startDate)>new Date(t)?new Date(e.startDate):new Date(t),i=(0,dAe.parseExpression)(r,Object.assign(Object.assign({},e),{currentDate:n}));try{return e.immediately?new Date().getTime():i.next().getTime()}catch{}};ma.getNextMillis=mAe});var YB=h(Nb=>{"use strict";Object.defineProperty(Nb,"__esModule",{value:!0});Nb.Queue=void 0;var hAe=Qc(),yAe=xA(),gAe=Mb(),de=_r(),bAe=Rb(),vAe=Ay(),EAe=Dr(),_A=class extends yAe.QueueGetters{constructor(e,r,n){var i;super(e,Object.assign({},r),n),this.token=(0,EAe.randomUUID)(),this.libName="bullmq",this.jobsOpts=(i=r?.defaultJobOptions)!==null&&i!==void 0?i:{},this.waitUntilReady().then(s=>{if(!this.closing&&!r?.skipMetasUpdate)return s.hset(this.keys.meta,this.metaValues)}).catch(s=>{})}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}get defaultJobOptions(){return Object.assign({},this.jobsOpts)}get metaValues(){var e,r,n,i;return{"opts.maxLenEvents":(i=(n=(r=(e=this.opts)===null||e===void 0?void 0:e.streams)===null||r===void 0?void 0:r.events)===null||n===void 0?void 0:n.maxLen)!==null&&i!==void 0?i:1e4,version:`${this.libName}:${vAe.version}`}}async getVersion(){return await(await this.client).hget(this.keys.meta,"version")}get repeat(){return new Promise(async e=>{this._repeat||(this._repeat=new gAe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._repeat.on("error",this.emit.bind(this,"error"))),e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{this._jobScheduler||(this._jobScheduler=new bAe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:await this.client})),this._jobScheduler.on("error",this.emit.bind(this,"error"))),e(this._jobScheduler)})}async setGlobalConcurrency(e){return(await this.client).hset(this.keys.meta,{concurrency:e})}async setGlobalRateLimit(e,r){return(await this.client).hset(this.keys.meta,{max:e,duration:r})}async removeGlobalConcurrency(){return(await this.client).hdel(this.keys.meta,"concurrency")}async removeGlobalRateLimit(){return(await this.client).hdel(this.keys.meta,"max","duration")}async add(e,r,n){return this.trace(de.SpanKind.PRODUCER,"add",`${this.name}.${e}`,async(i,s)=>{var o;if(s&&!(!((o=n?.telemetry)===null||o===void 0)&&o.omitContext)){let c={metadata:s};n=Object.assign(Object.assign({},n),{telemetry:c})}let a=await this.addJob(e,r,n);return i?.setAttributes({[de.TelemetryAttributes.JobName]:e,[de.TelemetryAttributes.JobId]:a.id}),a})}async addJob(e,r,n){if(n&&n.repeat){if(n.repeat.endDate&&+new Date(n.repeat.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.repeat).updateRepeatableJob(e,r,Object.assign(Object.assign({},this.jobsOpts),n),{override:!0})}else{let i=n?.jobId;if(i=="0"||i?.startsWith("0:"))throw new Error("JobId cannot be '0' or start with 0:");let s=Object.assign(Object.assign(Object.assign({},this.jobsOpts),n),{jobId:i}),o=await this.Job.create(this,e,r,s);return this.emit("waiting",o),o}}async addBulk(e){return this.trace(de.SpanKind.PRODUCER,"addBulk",this.name,async(r,n)=>(r&&r.setAttributes({[de.TelemetryAttributes.BulkNames]:e.map(i=>i.name),[de.TelemetryAttributes.BulkCount]:e.length}),await this.Job.createBulk(this,e.map(i=>{var s,o,a,c,l,u;let d=(s=i.opts)===null||s===void 0?void 0:s.telemetry;if(n){let f=(a=(o=i.opts)===null||o===void 0?void 0:o.telemetry)===null||a===void 0?void 0:a.omitContext,m=((l=(c=i.opts)===null||c===void 0?void 0:c.telemetry)===null||l===void 0?void 0:l.metadata)||!f&&n;(m||f)&&(d={metadata:m,omitContext:f})}let p=Object.assign(Object.assign(Object.assign({},this.jobsOpts),i.opts),{jobId:(u=i.opts)===null||u===void 0?void 0:u.jobId,telemetry:d});return{name:i.name,data:i.data,opts:p}}))))}async upsertJobScheduler(e,r,n){var i,s;if(r.endDate&&+new Date(r.endDate)<Date.now())throw new Error("End date must be greater than current timestamp");return(await this.jobScheduler).upsertJobScheduler(e,r,(i=n?.name)!==null&&i!==void 0?i:e,(s=n?.data)!==null&&s!==void 0?s:{},Object.assign(Object.assign({},this.jobsOpts),n?.opts),{override:!0})}async pause(){await this.trace(de.SpanKind.INTERNAL,"pause",this.name,async()=>{await this.scripts.pause(!0),this.emit("paused")})}async close(){await this.trace(de.SpanKind.INTERNAL,"close",this.name,async()=>{this.closing||this._repeat&&await this._repeat.close(),await super.close()})}async rateLimit(e){await this.trace(de.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[de.TelemetryAttributes.QueueRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}async resume(){await this.trace(de.SpanKind.INTERNAL,"resume",this.name,async()=>{await this.scripts.pause(!1),this.emit("resumed")})}async isPaused(){return await(await this.client).hexists(this.keys.meta,"paused")===1}isMaxed(){return this.scripts.isMaxed()}async getRepeatableJobs(e,r,n){return(await this.repeat).getRepeatableJobs(e,r,n)}async getJobScheduler(e){return(await this.jobScheduler).getScheduler(e)}async getJobSchedulers(e,r,n){return(await this.jobScheduler).getJobSchedulers(e,r,n)}async getJobSchedulersCount(){return(await this.jobScheduler).getSchedulersCount()}async removeRepeatable(e,r,n){return this.trace(de.SpanKind.INTERNAL,"removeRepeatable",`${this.name}.${e}`,async i=>(i?.setAttributes({[de.TelemetryAttributes.JobName]:e,[de.TelemetryAttributes.JobId]:n}),!await(await this.repeat).removeRepeatable(e,r,n)))}async removeJobScheduler(e){return!await(await this.jobScheduler).removeJobScheduler(e)}async removeDebounceKey(e){return this.trace(de.SpanKind.INTERNAL,"removeDebounceKey",`${this.name}`,async r=>(r?.setAttributes({[de.TelemetryAttributes.JobKey]:e}),await(await this.client).del(`${this.keys.de}:${e}`)))}async removeDeduplicationKey(e){return this.trace(de.SpanKind.INTERNAL,"removeDeduplicationKey",`${this.name}`,async r=>(r?.setAttributes({[de.TelemetryAttributes.DeduplicationKey]:e}),(await this.client).del(`${this.keys.de}:${e}`)))}async removeRateLimitKey(){return(await this.client).del(this.keys.limiter)}async removeRepeatableByKey(e){return this.trace(de.SpanKind.INTERNAL,"removeRepeatableByKey",`${this.name}`,async r=>(r?.setAttributes({[de.TelemetryAttributes.JobKey]:e}),!await(await this.repeat).removeRepeatableByKey(e)))}async remove(e,{removeChildren:r=!0}={}){return this.trace(de.SpanKind.INTERNAL,"remove",this.name,async n=>{n?.setAttributes({[de.TelemetryAttributes.JobId]:e,[de.TelemetryAttributes.JobOptions]:JSON.stringify({removeChildren:r})});let i=await this.scripts.remove(e,r);return i===1&&this.emit("removed",e),i})}async updateJobProgress(e,r){await this.trace(de.SpanKind.INTERNAL,"updateJobProgress",this.name,async n=>{n?.setAttributes({[de.TelemetryAttributes.JobId]:e,[de.TelemetryAttributes.JobProgress]:JSON.stringify(r)}),await this.scripts.updateProgress(e,r),this.emit("progress",e,r)})}async addJobLog(e,r,n){return hAe.Job.addJobLog(this,e,r,n)}async drain(e=!1){await this.trace(de.SpanKind.INTERNAL,"drain",this.name,async r=>{r?.setAttributes({[de.TelemetryAttributes.QueueDrainDelay]:e}),await this.scripts.drain(e)})}async clean(e,r,n="completed"){return this.trace(de.SpanKind.INTERNAL,"clean",this.name,async i=>{let s=r||1/0,o=Math.min(1e4,s),a=Date.now()-e,c=0,l=[],u=n==="waiting"?"wait":n;for(;c<s;){let d=await this.scripts.cleanJobsInSet(u,a,o);if(this.emit("cleaned",d,u),c+=d.length,l.push(...d),d.length<o)break}return i?.setAttributes({[de.TelemetryAttributes.QueueGrace]:e,[de.TelemetryAttributes.JobType]:n,[de.TelemetryAttributes.QueueCleanLimit]:s,[de.TelemetryAttributes.JobIds]:l}),l})}async obliterate(e){await this.trace(de.SpanKind.INTERNAL,"obliterate",this.name,async()=>{await this.pause();let r=0;do r=await this.scripts.obliterate(Object.assign({force:!1,count:1e3},e));while(r)})}async retryJobs(e={}){await this.trace(de.SpanKind.PRODUCER,"retryJobs",this.name,async r=>{r?.setAttributes({[de.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.retryJobs(e.state,e.count,e.timestamp);while(n)})}async promoteJobs(e={}){await this.trace(de.SpanKind.INTERNAL,"promoteJobs",this.name,async r=>{r?.setAttributes({[de.TelemetryAttributes.QueueOptions]:JSON.stringify(e)});let n=0;do n=await this.scripts.promoteJobs(e.count);while(n)})}async trimEvents(e){return this.trace(de.SpanKind.INTERNAL,"trimEvents",this.name,async r=>(r?.setAttributes({[de.TelemetryAttributes.QueueEventMaxLength]:e}),await(await this.client).xtrim(this.keys.events,"MAXLEN",e,{approximate:!0})))}async removeDeprecatedPriorityKey(){return(await this.client).del(this.toKey("priority"))}async removeOrphanedJobs(e=1e3,r=0){let n=await this.client,i=new Set(Object.keys(this.keys)),s=Object.keys(this.keys).filter(d=>d!==""),o=["logs","dependencies","processed","failed","unsuccessful","lock"],a=this.qualifiedName+":",c=a+"*",l=0,u="0";do{let[d,p]=await n.scan(u,{MATCH:c,COUNT:e});u=d;let f=new Set;for(let y of p){let b=y.slice(a.length);if(i.has(b))continue;let v=b.indexOf(":");if(v!==-1){let S=b.slice(0,v);if(i.has(S))continue}let E=v===-1?b:b.slice(0,v);if(v!==-1){let S=b.slice(v+1);if(!o.includes(S))continue}f.add(E)}if(f.size===0)continue;let m=await this.scripts.removeOrphanedJobs([...f],s,o);if(l+=m||0,r>0&&l>=r)break}while(u!=="0");return l}};Nb.Queue=_A});var TA=h(IA=>{"use strict";Object.defineProperty(IA,"__esModule",{value:!0});var vt=_r(),SAe=(t,e)=>async function(n,i,s){let o,a,c,l;try{let u=new Promise((d,p)=>{(async()=>{try{c=(m,y)=>{p(new Error("Unexpected exit code: "+m+" signal: "+y))},o=await e.retain(t),o.on("exit",c),a=async m=>{var y,b,v,E,S,k;try{switch(m.cmd){case vt.ParentCommand.Completed:d(m.value);break;case vt.ParentCommand.Failed:case vt.ParentCommand.Error:{let _=new Error;Object.assign(_,(y=m.value)!==null&&y!==void 0?y:m.err),p(_);break}case vt.ParentCommand.Progress:await n.updateProgress(m.value);break;case vt.ParentCommand.Log:await n.log(m.value);break;case vt.ParentCommand.MoveToDelayed:await n.moveToDelayed((b=m.value)===null||b===void 0?void 0:b.timestamp,(v=m.value)===null||v===void 0?void 0:v.token);break;case vt.ParentCommand.MoveToWait:await n.moveToWait((E=m.value)===null||E===void 0?void 0:E.token);break;case vt.ParentCommand.MoveToWaitingChildren:{let _=await n.moveToWaitingChildren((S=m.value)===null||S===void 0?void 0:S.token,(k=m.value)===null||k===void 0?void 0:k.opts);o.send({requestId:m.requestId,cmd:vt.ChildCommand.MoveToWaitingChildrenResponse,value:_})}break;case vt.ParentCommand.Update:await n.updateData(m.value);break;case vt.ParentCommand.GetChildrenValues:{let _=await n.getChildrenValues();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetChildrenValuesResponse,value:_})}break;case vt.ParentCommand.GetIgnoredChildrenFailures:{let _=await n.getIgnoredChildrenFailures();o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetIgnoredChildrenFailuresResponse,value:_})}break;case vt.ParentCommand.GetDependenciesCount:{let _=await n.getDependenciesCount(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesCountResponse,value:_})}break;case vt.ParentCommand.GetDependencies:{let _=await n.getDependencies(m.value);o.send({requestId:m.requestId,cmd:vt.ChildCommand.GetDependenciesResponse,value:_})}break}}catch(_){p(_)}},o.on("message",a),o.send({cmd:vt.ChildCommand.Start,job:n.asJSONSandbox(),token:i}),s&&(l=()=>{try{o.send({cmd:vt.ChildCommand.Cancel,value:s.reason})}catch{}},s.aborted?l():s.addEventListener("abort",l,{once:!0}))}catch(m){p(m)}})()});return await u,u}finally{s&&l&&s.removeEventListener("abort",l),o&&(o.off("message",a),o.off("exit",c),o.exitCode===null&&o.signalCode===null&&e.release(o))}};IA.default=SAe});var e9=h((qb,ZB)=>{"use strict";Object.defineProperty(qb,"__esModule",{value:!0});qb.Worker=void 0;var Lb=require("fs"),xAe=require("url"),Wd=require("path"),wAe=Gh(),es=Dr(),_Ae=ro(),IAe=Mb(),TAe=HI(),kAe=Md(),QB=Kd(),AAe=TA(),RAe=$I(),ha=ly(),pe=_r(),OAe=Rb(),CAe=yA(),jAe=10;function XB(t){return t.status==="ready"||t.status==="connect"&&(0,es.isRedisCluster)(t)}var kA=class extends _Ae.QueueBase{static RateLimitError(){return new ha.RateLimitError}constructor(e,r,n,i){if(super(e,Object.assign(Object.assign({drainDelay:5,concurrency:1,lockDuration:3e4,maximumRateLimitDelay:3e4,maxStalledCount:1,stalledInterval:3e4,autorun:!0,runRetryDelay:15e3},n),{blockingConnection:!0}),i),this.abortDelayController=null,this.blockUntil=0,this.drained=!1,this.limitUntil=0,this.processorAcceptsSignal=!1,this.stalledCheckerRunning=!1,this.waiting=null,this.running=!1,this.mainLoopRunning=null,!n||!n.connection)throw new Error("Worker requires a connection");if(typeof this.opts.maxStalledCount!="number"||this.opts.maxStalledCount<0)throw new Error("maxStalledCount must be greater or equal than 0");if(typeof this.opts.maxStartedAttempts=="number"&&this.opts.maxStartedAttempts<0)throw new Error("maxStartedAttempts must be greater or equal than 0");if(typeof this.opts.stalledInterval!="number"||this.opts.stalledInterval<=0)throw new Error("stalledInterval must be greater than 0");if(typeof this.opts.drainDelay!="number"||this.opts.drainDelay<=0)throw new Error("drainDelay must be greater than 0");if(this.concurrency=this.opts.concurrency,this.opts.lockRenewTime=this.opts.lockRenewTime||this.opts.lockDuration/2,this.id=(0,es.randomUUID)(),this.createLockManager(),r){if(typeof r=="function")this.processFn=r,this.processorAcceptsSignal=r.length>=3;else{if(r instanceof xAe.URL){if(!Lb.existsSync(r))throw new Error(`URL ${r} does not exist in the local file system`);r=r.href}else{let d=r+([".js",".ts",".flow",".cjs",".mjs"].includes(Wd.extname(r))?"":".js");if(!Lb.existsSync(d))throw new Error(`File ${d} does not exist`)}let o=Wd.dirname(ZB.filename||__CM_FILENAME__),a=Wd.join(o,"main-worker.js"),c=Wd.join(o,"main.js"),l=this.opts.useWorkerThreads?a:c;try{Lb.statSync(l)}catch{let d=this.opts.useWorkerThreads?"main-worker.js":"main.js";l=Wd.join(process.cwd(),`dist/cjs/classes/${d}`),Lb.statSync(l)}this.childPool=new TAe.ChildPool({mainFile:l,useWorkerThreads:this.opts.useWorkerThreads,workerForkOptions:this.opts.workerForkOptions,workerThreadsOptions:this.opts.workerThreadsOptions}),this.createSandbox(r),this.processorAcceptsSignal=!0}this.opts.autorun&&this.run().catch(o=>this.emit("error",o))}let s=this.clientName()+(this.opts.name?`:w:${this.opts.name}`:"");this.blockingConnection=new kAe.RedisConnection((0,es.isRedisInstance)(n.connection)?((0,QB.isIRedisClient)(n.connection)?n.connection:(0,QB.createIORedisClient)(n.connection)).duplicate({connectionName:s}):Object.assign(Object.assign({},n.connection),{connectionName:s}),{shared:!1,blocking:!0,skipVersionCheck:n.skipVersionCheck}),(0,es.forwardConnectionError)(this,this.blockingConnection),this.blockingConnection.on("ready",()=>setTimeout(()=>this.emit("ready"),0))}createLockManager(){this.lockManager=new CAe.LockManager(this,{lockRenewTime:this.opts.lockRenewTime,lockDuration:this.opts.lockDuration,workerId:this.id,workerName:this.opts.name})}createSandbox(e){this.processFn=(0,AAe.default)(e,this.childPool).bind(this)}async extendJobLocks(e,r,n){return this.scripts.extendLocks(e,r,n)}emit(e,...r){return super.emit(e,...r)}off(e,r){return super.off(e,r),this}on(e,r){return super.on(e,r),this}once(e,r){return super.once(e,r),this}callProcessJob(e,r,n){return this.processFn(e,r,n)}createJob(e,r){return this.Job.fromJSON(this,e,r)}async waitUntilReady(){return await super.waitUntilReady(),this.blockingConnection.client}cancelJob(e,r){return this.lockManager.cancelJob(e,r)}cancelAllJobs(e){this.lockManager.cancelAllJobs(e)}set concurrency(e){if(typeof e!="number"||e<1||!isFinite(e))throw new Error("concurrency must be a finite number greater than 0");this._concurrency=e}get concurrency(){return this._concurrency}get repeat(){return new Promise(async e=>{if(!this._repeat){let r=await this.client;this._repeat=new IAe.Repeat(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._repeat.on("error",this.emit.bind(this,"error"))}e(this._repeat)})}get jobScheduler(){return new Promise(async e=>{if(!this._jobScheduler){let r=await this.client;this._jobScheduler=new OAe.JobScheduler(this.name,Object.assign(Object.assign({},this.opts),{connection:r})),this._jobScheduler.on("error",this.emit.bind(this,"error"))}e(this._jobScheduler)})}async run(){if(!this.processFn)throw new Error("No process function is defined.");if(this.running)throw new Error("Worker is already running.");try{if(this.running=!0,this.closing||this.paused)return;await this.startStalledCheckTimer(),this.opts.skipLockRenewal||this.lockManager.start();let e=await this.client,r=await this.blockingConnection.client;this.mainLoopRunning=this.mainLoop(e,r),await this.mainLoopRunning}finally{this.running=!1}}async waitForRateLimit(){var e;let r=this.limitUntil;if(r>Date.now()){(e=this.abortDelayController)===null||e===void 0||e.abort(),this.abortDelayController=new wAe.AbortController;let n=this.getRateLimitDelay(r-Date.now());await this.delay(n,this.abortDelayController),this.drained=!1,this.limitUntil=0}}async mainLoop(e,r){let n=new RAe.AsyncFifoQueue,i=0;for(;!this.closing&&!this.paused||n.numTotal()>0;){for(;!this.closing&&!this.paused&&!this.waiting&&n.numTotal()<this._concurrency&&!this.isRateLimited();){let o=`${this.id}:${i++}`,a=this.retryIfFailed(()=>this._getNextJob(e,r,o,{block:!0}),{delayInMs:this.opts.runRetryDelay,onlyEmitError:!0});if(n.add(a),this.waiting&&n.numTotal()>1||!await a&&n.numTotal()>1||this.blockUntil)break}let s;do s=await n.fetch();while(!s&&n.numQueued()>0);if(s){let o=s.token;n.add(this.processJob(s,o,()=>n.numTotal()<=this._concurrency))}else n.numQueued()===0&&await this.waitForRateLimit()}}async getNextJob(e,{block:r=!0}={}){let n=await this.getTracedNextJob(e,{block:r});for(;n;){let i=this.getUnrecoverableErrorMessage(n);if(!i)break;await this.handleFailed(new ha.UnrecoverableError(i),n,e,()=>!1),n=await this.getTracedNextJob(e,{block:r})}return n}async getTracedNextJob(e,{block:r=!0}={}){var n,i;let s=await this._getNextJob(await this.client,await this.blockingConnection.client,e,{block:r});return this.trace(pe.SpanKind.INTERNAL,"getNextJob",this.name,async o=>(o?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.QueueName]:this.name,[pe.TelemetryAttributes.WorkerName]:this.opts.name,[pe.TelemetryAttributes.WorkerOptions]:JSON.stringify({block:r}),[pe.TelemetryAttributes.JobId]:s?.id}),s),(i=(n=s?.opts)===null||n===void 0?void 0:n.telemetry)===null||i===void 0?void 0:i.metadata)}async _getNextJob(e,r,n,{block:i=!0}={}){if(this.paused||this.closing)return;let s;if(this.drained&&i&&!this.limitUntil&&!this.waiting){this.waiting=this.waitForJob(r,this.blockUntil);try{this.blockUntil=await this.waiting,(this.blockUntil<=0||this.blockUntil-Date.now()<1)&&(s=await this.moveToActive(e,n,this.opts.name))}finally{this.waiting=null}}else this.isRateLimited()||(s=await this.moveToActive(e,n,this.opts.name));return s}async rateLimit(e){await this.trace(pe.SpanKind.INTERNAL,"rateLimit",this.name,async r=>{r?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerRateLimit]:e}),await this.client.then(n=>n.set(this.keys.limiter,Number.MAX_SAFE_INTEGER,{PX:e}))})}get minimumBlockTimeout(){return this.blockingConnection.capabilities.canBlockFor1Ms?.001:.002}isRateLimited(){return this.limitUntil>Date.now()}async moveToActive(e,r,n){let[i,s,o,a]=await this.scripts.moveToActive(e,r,n);return this.updateDelays(o,a),this.nextJobFromJobData(i,s,r)}async waitForJob(e,r){if(this.paused)return 1/0;let n;try{if(!this.closing&&!this.isRateLimited()){let i=this.getBlockTimeout(r);if(i>0){i=this.blockingConnection.capabilities.canDoubleTimeout?i:Math.ceil(i);let s=!1,o=new Promise(c=>{n=setTimeout(()=>{s=!0,c(null)},i*1e3+1e3)});this.updateDelays();let a=await Promise.race([e.bzpopmin(this.keys.marker,i),o]);if(s&&!this.closing&&(XB(e)||await this.blockingConnection.reconnect(),XB(e)&&!this.closing&&(await this.blockingConnection.disconnect(!0),this.closing||await this.blockingConnection.reconnect())),a){let[,c,l]=a;if(c){let u=parseInt(l);return r&&u>r?r:u}}}return 0}}catch(i){if((0,es.isNotConnectionError)(i)&&this.emit("error",i),!this.closing&&e.status==="end")try{await e.connect()}catch(s){e.status==="end"&&(0,es.isNotConnectionError)(s)&&this.emit("error",s)}this.closing||await this.delay()}finally{clearTimeout(n)}return 1/0}getBlockTimeout(e){let r=this.opts;if(e){let n=e-Date.now();return n<=0?n:n<this.minimumBlockTimeout*1e3?this.minimumBlockTimeout:Math.min(n/1e3,jAe)}else return Math.max(r.drainDelay,this.minimumBlockTimeout)}getRateLimitDelay(e){return Math.min(e,this.opts.maximumRateLimitDelay)}async delay(e,r){await(0,es.delay)(e||es.DELAY_TIME_1,r)}updateDelays(e=0,r=0){let n=Math.max(e,0);n>0?this.limitUntil=Date.now()+n:this.limitUntil=0,this.blockUntil=Math.max(r,0)||0}async nextJobFromJobData(e,r,n){if(!e)this.drained||(this.emit("drained"),this.drained=!0);else{this.drained=!1;let i=this.createJob(e,r);i.token=n;try{await this.retryIfFailed(async()=>{let s=!!i.repeatJobKey,o=s&&i.repeatJobKey.split(":").length>=5,a=s&&!o;o&&(a=await(await this.jobScheduler).isJobScheduler(i.repeatJobKey)),a?await(await this.jobScheduler).upsertJobScheduler(i.repeatJobKey,i.opts.repeat,i.name,i.data,i.opts,{override:!1,producerId:i.id}):i.opts.repeat&&await(await this.repeat).updateRepeatableJob(i.name,i.data,i.opts,{override:!1})},{delayInMs:this.opts.runRetryDelay})}catch(s){let o=s instanceof Error?s.message:String(s),a=new Error(`Failed to add repeatable job for next iteration: ${o}`);this.emit("error",a);return}return this.emit("active",i,"waiting"),i}}async processJob(e,r,n=()=>!0){var i,s;let o=(s=(i=e.opts)===null||i===void 0?void 0:i.telemetry)===null||s===void 0?void 0:s.metadata;return this.trace(pe.SpanKind.CONSUMER,"process",this.name,async a=>{a?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name,[pe.TelemetryAttributes.JobId]:e.id,[pe.TelemetryAttributes.JobName]:e.name});let c=this.lockManager.trackJob(e.id,r,e.processedOn,this.processorAcceptsSignal);try{let l=this.getUnrecoverableErrorMessage(e);if(l)return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(new ha.UnrecoverableError(l),e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a});let u=await this.callProcessJob(e,r,c?c.signal:void 0);return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleCompleted(u,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a})}catch(l){return await this.retryIfFailed(()=>(this.lockManager.untrackJob(e.id),this.handleFailed(l,e,r,n,a)),{delayInMs:this.opts.runRetryDelay,span:a,onlyEmitError:!0})}finally{this.lockManager.untrackJob(e.id);let l=Date.now();a?.setAttributes({[pe.TelemetryAttributes.JobFinishedTimestamp]:l,[pe.TelemetryAttributes.JobAttemptFinishedTimestamp]:e.finishedOn||l,[pe.TelemetryAttributes.JobProcessedTimestamp]:e.processedOn})}},o)}getUnrecoverableErrorMessage(e){if(e.deferredFailure)return e.deferredFailure;if(this.opts.maxStartedAttempts&&this.opts.maxStartedAttempts<e.attemptsStarted)return"job started more than allowable limit"}async handleCompleted(e,r,n,i=()=>!0,s){if(!this.connection.closing){let o=await r.moveToCompleted(e,n,i()&&!(this.closing||this.paused));if(this.emit("completed",r,e,"active"),s?.addEvent("job completed",{[pe.TelemetryAttributes.JobResult]:JSON.stringify(e)}),s?.setAttributes({[pe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(o)){let[a,c,l,u]=o;return this.updateDelays(l,u),this.nextJobFromJobData(a,c,n)}}}async handleFailed(e,r,n,i=()=>!0,s){if(!this.connection.closing){if(e.message===ha.RATE_LIMIT_ERROR){let c=await this.moveLimitedBackToWait(r,n);this.limitUntil=c>0?Date.now()+c:0;return}let o=i()&&!(this.closing||this.paused);if(e instanceof ha.DelayedError||e.name=="DelayedError"||e instanceof ha.WaitingError||e.name=="WaitingError"||e instanceof ha.WaitingChildrenError||e.name=="WaitingChildrenError"){if(!o)return;let c=await this.client;return this.moveToActive(c,n,this.opts.name)}let a=await r.moveToFailed(e,n,o);if(this.emit("failed",r,e,"active"),s?.addEvent("job failed",{[pe.TelemetryAttributes.JobFailedReason]:e.message}),s?.setAttributes({[pe.TelemetryAttributes.JobAttemptsMade]:r.attemptsMade}),Array.isArray(a)){let[c,l,u,d]=a;return this.updateDelays(u,d),this.nextJobFromJobData(c,l,n)}}}async pause(e){await this.trace(pe.SpanKind.INTERNAL,"pause",this.name,async r=>{var n;r?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name,[pe.TelemetryAttributes.WorkerDoNotWaitActive]:e}),this.paused||(this.paused=!0,e||await this.whenCurrentJobsFinished(),(n=this.stalledCheckStopper)===null||n===void 0||n.call(this),this.emit("paused"))})}resume(){(!this.running||this.paused)&&this.trace(pe.SpanKind.INTERNAL,"resume",this.name,e=>{e?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name}),this.paused=!1,this.running?this.startStalledCheckTimer().catch(r=>{this.emit("error",r)}):this.processFn&&this.run(),this.emit("resumed")}).catch(e=>{this.emit("error",e)})}isPaused(){return!!this.paused}isRunning(){return this.running}async close(e=!1){return this.closing?this.closing:(this.closing=(async()=>{await this.trace(pe.SpanKind.INTERNAL,"close",this.name,async r=>{var n,i;r?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name,[pe.TelemetryAttributes.WorkerForceClose]:e}),this.emit("closing","closing queue"),(n=this.abortDelayController)===null||n===void 0||n.abort();let s=[()=>e||this.whenCurrentJobsFinished(!1),()=>this.lockManager.close(),()=>{var o;return(o=this.childPool)===null||o===void 0?void 0:o.clean()},()=>this.blockingConnection.close(e),()=>this.connection.close(e)];for(let o of s)try{await o()}catch(a){this.emit("error",a)}(i=this.stalledCheckStopper)===null||i===void 0||i.call(this),this.closed=!0,this.emit("closed")})})(),await this.closing)}async startStalledCheckTimer(){this.opts.skipStalledCheck||!this.closing&&!this.stalledCheckerRunning&&await this.trace(pe.SpanKind.INTERNAL,"startStalledCheckTimer",this.name,async e=>{e?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name}),this.stalledCheckerRunning=!0,this.stalledChecker().catch(r=>{this.emit("error",r)}).finally(()=>{this.stalledCheckerRunning=!1})})}async stalledChecker(){for(;!(this.closing||this.paused);)await this.checkConnectionError(()=>this.moveStalledJobsToWait()),await new Promise(e=>{let r=setTimeout(e,this.opts.stalledInterval);this.stalledCheckStopper=()=>{clearTimeout(r),e()}})}async whenCurrentJobsFinished(e=!0){this.mainLoopRunning?(await this.blockingConnection.disconnect(!0),await this.mainLoopRunning):e=!1,e&&await this.blockingConnection.reconnect()}async retryIfFailed(e,r){var n;let i=0,s=r.maxRetries||1/0;do try{return await e()}catch(o){if((n=r.span)===null||n===void 0||n.recordException(o.message),(0,es.isNotConnectionError)(o)){if(!this.paused&&!this.closing&&this.emit("error",o),r.onlyEmitError)return;throw o}else if(r.delayInMs&&!this.closing&&!this.closed&&await this.delay(r.delayInMs,this.abortDelayController),i+1>=s)throw o}while(++i<s)}async moveStalledJobsToWait(){await this.trace(pe.SpanKind.INTERNAL,"moveStalledJobsToWait",this.name,async e=>{let r=await this.scripts.moveStalledJobsToWait();e?.setAttributes({[pe.TelemetryAttributes.WorkerId]:this.id,[pe.TelemetryAttributes.WorkerName]:this.opts.name,[pe.TelemetryAttributes.WorkerStalledJobs]:r}),r.forEach(n=>{e?.addEvent("job stalled",{[pe.TelemetryAttributes.JobId]:n}),this.emit("stalled",n,"active")})})}moveLimitedBackToWait(e,r){return e.moveToWait(r)}};qb.Worker=kA});var t9=h(Ue=>{"use strict";Object.defineProperty(Ue,"__esModule",{value:!0});var Qe=(nr(),Pt(rr));Qe.__exportStar($I(),Ue);Qe.__exportStar(UI(),Ue);Qe.__exportStar(zI(),Ue);Qe.__exportStar(HI(),Ue);Qe.__exportStar(N3(),Ue);Qe.__exportStar(ly(),Ue);Qe.__exportStar(BG(),Ue);Qe.__exportStar(Kd(),Ue);Qe.__exportStar(VG(),Ue);Qe.__exportStar(QG(),Ue);Qe.__exportStar(r5(),Ue);Qe.__exportStar(Qc(),Ue);Qe.__exportStar(Rb(),Ue);Qe.__exportStar(yA(),Ue);Qe.__exportStar(ro(),Ue);Qe.__exportStar(BB(),Ue);Qe.__exportStar(HB(),Ue);Qe.__exportStar(xA(),Ue);Qe.__exportStar(jy(),Ue);Qe.__exportStar(YB(),Ue);Qe.__exportStar(Md(),Ue);Qe.__exportStar(Mb(),Ue);Qe.__exportStar(TA(),Ue);Qe.__exportStar(W1(),Ue);Qe.__exportStar(e9(),Ue)});var n9=h(r9=>{"use strict";Object.defineProperty(r9,"__esModule",{value:!0})});var s9=h(i9=>{"use strict";Object.defineProperty(i9,"__esModule",{value:!0})});var a9=h(o9=>{"use strict";Object.defineProperty(o9,"__esModule",{value:!0})});var l9=h(c9=>{"use strict";Object.defineProperty(c9,"__esModule",{value:!0})});var d9=h(u9=>{"use strict";Object.defineProperty(u9,"__esModule",{value:!0})});var f9=h(p9=>{"use strict";Object.defineProperty(p9,"__esModule",{value:!0})});var h9=h(m9=>{"use strict";Object.defineProperty(m9,"__esModule",{value:!0})});var g9=h(y9=>{"use strict";Object.defineProperty(y9,"__esModule",{value:!0})});var v9=h(b9=>{"use strict";Object.defineProperty(b9,"__esModule",{value:!0})});var S9=h(E9=>{"use strict";Object.defineProperty(E9,"__esModule",{value:!0})});var w9=h(x9=>{"use strict";Object.defineProperty(x9,"__esModule",{value:!0})});var I9=h(_9=>{"use strict";Object.defineProperty(_9,"__esModule",{value:!0})});var k9=h(T9=>{"use strict";Object.defineProperty(T9,"__esModule",{value:!0})});var R9=h(A9=>{"use strict";Object.defineProperty(A9,"__esModule",{value:!0})});var C9=h(O9=>{"use strict";Object.defineProperty(O9,"__esModule",{value:!0})});var P9=h(j9=>{"use strict";Object.defineProperty(j9,"__esModule",{value:!0})});var D9=h(K9=>{"use strict";Object.defineProperty(K9,"__esModule",{value:!0})});var N9=h(M9=>{"use strict";Object.defineProperty(M9,"__esModule",{value:!0})});var q9=h(Fb=>{"use strict";Object.defineProperty(Fb,"__esModule",{value:!0});Fb.ClientType=void 0;var L9;(function(t){t.blocking="blocking",t.normal="normal"})(L9||(Fb.ClientType=L9={}))});var $9=h(F9=>{"use strict";Object.defineProperty(F9,"__esModule",{value:!0})});var J9=h(U9=>{"use strict";Object.defineProperty(U9,"__esModule",{value:!0})});var G9=h(z9=>{"use strict";Object.defineProperty(z9,"__esModule",{value:!0})});var H9=h(B9=>{"use strict";Object.defineProperty(B9,"__esModule",{value:!0})});var W9=h(V9=>{"use strict";Object.defineProperty(V9,"__esModule",{value:!0})});var Q9=h(Y9=>{"use strict";Object.defineProperty(Y9,"__esModule",{value:!0})});var Z9=h(X9=>{"use strict";Object.defineProperty(X9,"__esModule",{value:!0})});var tH=h(eH=>{"use strict";Object.defineProperty(eH,"__esModule",{value:!0})});var nH=h(rH=>{"use strict";Object.defineProperty(rH,"__esModule",{value:!0})});var sH=h(iH=>{"use strict";Object.defineProperty(iH,"__esModule",{value:!0})});var aH=h(oH=>{"use strict";Object.defineProperty(oH,"__esModule",{value:!0})});var lH=h(cH=>{"use strict";Object.defineProperty(cH,"__esModule",{value:!0})});var dH=h(uH=>{"use strict";Object.defineProperty(uH,"__esModule",{value:!0})});var fH=h(pH=>{"use strict";Object.defineProperty(pH,"__esModule",{value:!0})});var hH=h(mH=>{"use strict";Object.defineProperty(mH,"__esModule",{value:!0})});var yH=h(Ee=>{"use strict";Object.defineProperty(Ee,"__esModule",{value:!0});var Ie=(nr(),Pt(rr));Ie.__exportStar(n9(),Ee);Ie.__exportStar(s9(),Ee);Ie.__exportStar(a9(),Ee);Ie.__exportStar(l9(),Ee);Ie.__exportStar(d9(),Ee);Ie.__exportStar(f9(),Ee);Ie.__exportStar(h9(),Ee);Ie.__exportStar(g9(),Ee);Ie.__exportStar(v9(),Ee);Ie.__exportStar(S9(),Ee);Ie.__exportStar(w9(),Ee);Ie.__exportStar(I9(),Ee);Ie.__exportStar(k9(),Ee);Ie.__exportStar(R9(),Ee);Ie.__exportStar(C9(),Ee);Ie.__exportStar(P9(),Ee);Ie.__exportStar(D9(),Ee);Ie.__exportStar(N9(),Ee);Ie.__exportStar(q9(),Ee);Ie.__exportStar($9(),Ee);Ie.__exportStar(J9(),Ee);Ie.__exportStar(G9(),Ee);Ie.__exportStar(H9(),Ee);Ie.__exportStar(W9(),Ee);Ie.__exportStar(Q9(),Ee);Ie.__exportStar(Z9(),Ee);Ie.__exportStar(tH(),Ee);Ie.__exportStar(nH(),Ee);Ie.__exportStar(sH(),Ee);Ie.__exportStar(aH(),Ee);Ie.__exportStar(lH(),Ee);Ie.__exportStar(dH(),Ee);Ie.__exportStar(fH(),Ee);Ie.__exportStar(hH(),Ee)});var bH=h(gH=>{"use strict";Object.defineProperty(gH,"__esModule",{value:!0})});var EH=h(vH=>{"use strict";Object.defineProperty(vH,"__esModule",{value:!0})});var xH=h(SH=>{"use strict";Object.defineProperty(SH,"__esModule",{value:!0})});var _H=h(wH=>{"use strict";Object.defineProperty(wH,"__esModule",{value:!0})});var TH=h(IH=>{"use strict";Object.defineProperty(IH,"__esModule",{value:!0})});var AH=h(kH=>{"use strict";Object.defineProperty(kH,"__esModule",{value:!0})});var OH=h(RH=>{"use strict";Object.defineProperty(RH,"__esModule",{value:!0})});var jH=h(CH=>{"use strict";Object.defineProperty(CH,"__esModule",{value:!0})});var KH=h(PH=>{"use strict";Object.defineProperty(PH,"__esModule",{value:!0})});var MH=h(DH=>{"use strict";Object.defineProperty(DH,"__esModule",{value:!0})});var LH=h(NH=>{"use strict";Object.defineProperty(NH,"__esModule",{value:!0})});var qH=h(zr=>{"use strict";Object.defineProperty(zr,"__esModule",{value:!0});var Ln=(nr(),Pt(rr));Ln.__exportStar(bH(),zr);Ln.__exportStar(EH(),zr);Ln.__exportStar(xH(),zr);Ln.__exportStar(_H(),zr);Ln.__exportStar(TH(),zr);Ln.__exportStar(AH(),zr);Ln.__exportStar(OH(),zr);Ln.__exportStar(jH(),zr);Ln.__exportStar(KH(),zr);Ln.__exportStar(MH(),zr);Ln.__exportStar(LH(),zr)});var $H=h(FH=>{"use strict";Object.defineProperty(FH,"__esModule",{value:!0})});var UH=h(ts=>{"use strict";Object.defineProperty(ts,"__esModule",{value:!0});var ya=(nr(),Pt(rr));ya.__exportStar(t9(),ts);ya.__exportStar(_r(),ts);ya.__exportStar(yH(),ts);ya.__exportStar(qH(),ts);ya.__exportStar(Dr(),ts);ya.__exportStar($H(),ts);ya.__exportStar(Id(),ts)});var Sl,PAe,$b,JH=R(()=>{"use strict";Sl=tt(UH(),1);fe();PAe=300*1e3,$b=class t{name;config;concurrency;lockDurationMs;defaultJobOptions;queueFactory;workerFactory;queue=null;worker=null;queueEvents=null;started=!1;counters={stalled:0,errored:0};listeners=[];jobStartTimes=new Map;recentlyStalled=new Map;static STALLED_DEDUPE_WINDOW_MS=3e4;constructor(e){this.name=e.name,this.config=e.config,this.concurrency=e.concurrency??1,this.lockDurationMs=e.lockDurationMs??PAe,this.defaultJobOptions=e.defaultJobOptions??{attempts:3,backoff:{type:"exponential",delay:5e3},removeOnComplete:{age:10080*60,count:1e3},removeOnFail:{age:720*60*60,count:1e3}},this.queueFactory=e.queueFactory,this.workerFactory=e.workerFactory}getQueue(){if(this.queue)return this.queue;let e={connection:this.config.connection,prefix:this.config.prefix,defaultJobOptions:this.defaultJobOptions};return this.queue=this.queueFactory?this.queueFactory(this.name,e):new Sl.Queue(this.name,e),this.queue}async addToQueue(e,r,n){await this.getQueue().add(this.name,r,{...this.defaultJobOptions,...n,jobId:e})}async add(e,r,n){if(e.includes(":"))throw new Error(`server job ID must not contain ':' (got ${e})`);try{await this.addToQueue(e,r,n)}catch(i){let s=i instanceof Error?i:new Error(String(i));throw this.toRedisUnavailableError(s)}}async getJob(e){try{return await this.getQueue().getJob(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async remove(e){try{await this.getQueue().remove(e)}catch(r){let n=r instanceof Error?r:new Error(String(r));throw this.toRedisUnavailableError(n)}}async readCounts(){let e=await this.getQueue().getJobCounts("waiting","active","delayed","failed","completed");return{waiting:e.waiting??0,active:e.active??0,delayed:e.delayed??0,failed:e.failed??0,completed:e.completed??0}}async getCounts(){try{return await this.readCounts()}catch(e){let r=e instanceof Error?e:new Error(String(e));throw this.toRedisUnavailableError(r)}}notifyStalled(e,r){if(this.recentlyStalled.has(e)){x.debug?.("QUEUE",`[generation] job=${e} stalled (suppressed duplicate from ${r})`,{queue:this.name,jobId:e,source:r});return}let n=setTimeout(()=>{this.recentlyStalled.delete(e)},t.STALLED_DEDUPE_WINDOW_MS);typeof n.unref=="function"&&n.unref(),this.recentlyStalled.set(e,n),this.counters.stalled+=1,x.warn("QUEUE",`[generation] job=${e} stalled${r==="queue-events"?" (queue-events)":""}`,{queue:this.name,jobId:e,source:r});for(let i of this.listeners)try{i.onStalled?.(e)}catch{}}notifyQueueError(e,r){this.counters.errored+=1,x.warn("QUEUE",`${this.name} ${r} error`,{error:e instanceof Error?e.message:String(e)});for(let n of this.listeners)try{n.onError?.(e)}catch{}}start(e){if(this.started)throw new Error(`ServerJobQueue ${this.name} is already started`);let r={connection:this.config.connection,prefix:this.config.prefix,autorun:!1,concurrency:this.concurrency,lockDuration:this.lockDurationMs},n=this.workerFactory?this.workerFactory(this.name,e,r):new Sl.Worker(this.name,e,r);if(n.on("error",i=>this.notifyQueueError(i,"worker")),typeof n.on=="function"){let i=n;i.on("active",s=>{s.id&&this.jobStartTimes.set(s.id,Date.now())}),i.on("completed",(s,o)=>{let a=s.id?this.jobStartTimes.get(s.id):void 0,c=a?Date.now()-a:0;s.id&&this.jobStartTimes.delete(s.id);let l=s.data?.source_type??"?";x.info("QUEUE",`[generation] job=${s.id??"?"} source_type=${l} duration=${c}ms`,{queue:this.name,jobId:s.id??null,sourceType:l,durationMs:c});for(let u of this.listeners)try{u.onCompleted?.(s.id??"?",c,o)}catch{}}),i.on("failed",(s,o)=>{s?.id&&this.jobStartTimes.delete(s.id);let a=s?.data?.source_type??"?",c=s?.attemptsMade??0;x.warn("QUEUE",`[generation] job=${s?.id??"?"} source_type=${a} attempts=${c} reason=${o.message}`,{queue:this.name,jobId:s?.id??null,sourceType:a,attemptsMade:c,reason:o.message});for(let l of this.listeners)try{l.onFailed?.(s?.id,c,o.message)}catch{}}),i.on("progress",(s,o)=>{x.debug?.("QUEUE",`[generation] job=${s.id??"?"} progress`,{queue:this.name,jobId:s.id??null,progress:o})}),i.on("stalled",s=>this.notifyStalled(s,"worker"))}if(n.run(),this.worker=n,!this.workerFactory)try{let i=new Sl.QueueEvents(this.name,{connection:this.config.connection,prefix:this.config.prefix});i.on("stalled",({jobId:s})=>this.notifyStalled(s,"queue-events")),i.on("error",s=>this.notifyQueueError(s,"queue-events")),this.queueEvents=i}catch(i){x.warn("QUEUE",`${this.name} failed to start QueueEvents listener`,{error:i instanceof Error?i.message:String(i)})}this.started=!0}observe(e){this.listeners.push(e)}getLifecycleCounters(){return{...this.counters}}isStarted(){return this.started}async close(){let e=[];if(this.queueEvents){try{await this.queueEvents.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));x.warn("QUEUE",`${this.name} failed to close QueueEvents`,{queue:this.name},n),e.push(n)}this.queueEvents=null}if(this.worker){try{await this.worker.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));x.warn("QUEUE",`${this.name} failed to close worker`,{queue:this.name},n),e.push(n)}this.worker=null,this.started=!1}if(this.queue){try{await this.queue.close()}catch(r){let n=r instanceof Error?r:new Error(String(r));x.warn("QUEUE",`${this.name} failed to close queue`,{queue:this.name},n),e.push(n)}this.queue=null}for(let r of this.recentlyStalled.values())clearTimeout(r);if(this.recentlyStalled.clear(),e.length>0)throw e[0]}toRedisUnavailableError(e){let r=e instanceof Error?e.message:String(e);return new Error(`ServerJobQueue ${this.name} requires Redis/Valkey when CLAUDE_MEM_QUEUE_ENGINE=bullmq: ${r}`)}}});var AA,ga,RA=R(()=>{"use strict";JH();wh();fe();AA=["event","summary"],ga=class{constructor(e,r){this.config=e;if(e.engine!=="bullmq")throw new Error(`ActiveServerQueueManager requires CLAUDE_MEM_QUEUE_ENGINE=bullmq (got ${e.engine}); do not instantiate when bullmq is not selected.`);this.queues=r??this.buildQueues(e)}config;kind="queue-manager";queues;closed=!1;getQueue(e){let r=this.queues.get(e);if(!r)throw new Error(`unknown server generation job kind: ${e}`);return r}start(e,r){this.getQueue(e).start(r)}getHealth(){if(this.closed)return{status:"errored",reason:"queue-manager closed"};let e=AA.map(r=>({kind:r,name:Mc[r]}));return{status:"active",reason:"BullMQ-backed queue manager wired",details:{engine:this.config.engine,mode:this.config.mode,host:this.config.host,port:this.config.port,prefix:this.config.prefix,lanes:e}}}async getLaneMetrics(){let e=[];for(let r of AA){let n=this.queues.get(r);if(!n)continue;let i=n.getLifecycleCounters();try{e.push(await this.readLaneMetric(r,n,i.stalled))}catch(s){let o=s instanceof Error?s:new Error(String(s));x.warn("QUEUE","failed to read lane counts; reporting lane as unavailable",{kind:r,name:Mc[r]},o),e.push({kind:r,name:Mc[r],waiting:0,active:0,completed:0,failed:0,delayed:0,stalled:i.stalled,unavailable:!0,unavailableReason:o.message})}}return e}async readLaneMetric(e,r,n){let i=await r.getCounts();return{kind:e,name:Mc[e],waiting:i.waiting,active:i.active,completed:i.completed,failed:i.failed,delayed:i.delayed,stalled:n,unavailable:!1}}async close(){if(this.closed)return;this.closed=!0;let e=[];for(let r of this.queues.values())try{await r.close()}catch(n){let i=n instanceof Error?n:new Error(String(n));x.warn("QUEUE","error closing server job queue",{},i),e.push(i)}if(e.length>0)throw x.warn("QUEUE","errors closing server queue manager",{count:e.length,first:e[0].message}),e[0]}buildQueues(e){let r=new Map;for(let n of AA)r.set(n,new $b({name:Mc[n],config:e}));return r}}});var OA,Yd,Gb,zH,Jb,Ub,zb,GH=R(()=>{"use strict";OA=tt(Ef(),1),Yd=tt(require("path"),1),Gb=require("fs");Hn();fe();zH=(()=>{let t=go();return[Yd.default.join(t,"ui","viewer.html"),Yd.default.join(t,"plugin","ui","viewer.html")]})(),Jb=zH.find(t=>(0,Gb.existsSync)(t))??null,Ub=Jb?(0,Gb.readFileSync)(Jb):null;Jb?x.info("SYSTEM","Cached viewer.html at boot (server runtime)",{path:Jb,bytes:Ub.byteLength}):x.warn("SYSTEM","viewer.html not found for server runtime",{candidates:zH});zb=class{setupRoutes(e){let r=go();e.use(OA.default.static(Yd.default.join(r,"ui"))),e.use(OA.default.static(Yd.default.join(r,"plugin","ui"))),e.get("/",(n,i)=>{if(!Ub){i.status(503).json({error:"ViewerUnavailable",message:"Viewer UI not found at any expected location"});return}i.setHeader("Content-Type","text/html; charset=utf-8"),i.send(Ub)})}static hasViewerHtml(){return Ub!==null}}});var Bb,Qd,KAe,no,Hb=R(()=>{"use strict";Bb=require("fs"),Qd=require("path");fe();Hn();KAe=/^[a-z0-9]+(?:-[a-z0-9]+)*(?:--[a-z0-9]+(?:-[a-z0-9]+)*)?$/,no=class t{static instance=null;activeMode=null;activeModeId=null;modeDirs;constructor(){let e=go(),r=[...process.env.CLAUDE_MEM_MODES_DIR?[process.env.CLAUDE_MEM_MODES_DIR]:[],(0,Qd.join)(Le.dataDir(),"modes"),(0,Qd.join)(e,"modes"),(0,Qd.join)(e,"..","plugin","modes")];this.modeDirs=[...new Set(r)]}static getInstance(){return t.instance||(t.instance=new t),t.instance}parseInheritance(e){let r=e.split("--");if(r.length===1)return{hasParent:!1,parentId:"",overrideId:""};if(r.length>2)throw new Error(`Invalid mode inheritance: ${e}. Only one level of inheritance supported (parent--override)`);return{hasParent:!0,parentId:r[0],overrideId:e}}isPlainObject(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}deepMerge(e,r){let n={...e};for(let i in r){let s=r[i],o=e[i];this.isPlainObject(s)&&this.isPlainObject(o)?n[i]=this.deepMerge(o,s):n[i]=s}return n}loadModeFile(e){if(!KAe.test(e))throw new Error(`Invalid mode ID: ${e}`);let r=this.modeDirs.map(i=>(0,Qd.join)(i,`${e}.json`)).find(i=>(0,Bb.existsSync)(i));if(!r)throw new Error(`Mode file not found: ${e}.json (searched: ${this.modeDirs.join(", ")})`);let n=(0,Bb.readFileSync)(r,"utf-8");return JSON.parse(n)}loadMode(e){let r=this.parseInheritance(e);if(!r.hasParent)try{let c=this.loadModeFile(e);return this.activeMode=c,this.activeModeId=e,x.debug("SYSTEM",`Loaded mode: ${c.name} (${e})`,void 0,{types:c.observation_types.map(l=>l.id),concepts:c.observation_concepts.map(l=>l.id)}),c}catch(c){if(c instanceof Error?x.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{message:c.message}):x.warn("WORKER",`Mode file not found: ${e}, falling back to 'code'`,{error:String(c)}),e==="code")throw new Error("Critical: code.json mode file missing");return this.loadMode("code")}let{parentId:n,overrideId:i}=r,s;try{s=this.loadMode(n)}catch(c){c instanceof Error?x.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{message:c.message}):x.warn("WORKER",`Parent mode '${n}' not found for ${e}, falling back to 'code'`,{error:String(c)}),s=this.loadMode("code")}let o;try{o=this.loadModeFile(i),x.debug("SYSTEM",`Loaded override file: ${i} for parent ${n}`)}catch(c){return c instanceof Error?x.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{message:c.message}):x.warn("WORKER",`Override file '${i}' not found, using parent mode '${n}' only`,{error:String(c)}),this.activeMode=s,s}if(!o)return x.warn("SYSTEM",`Invalid override file: ${i}, using parent mode '${n}' only`),this.activeMode=s,s;let a=this.deepMerge(s,o);return this.activeMode=a,this.activeModeId=e,x.debug("SYSTEM",`Loaded mode with inheritance: ${a.name} (${e} = ${n} + ${i})`,void 0,{parent:n,override:i,types:a.observation_types.map(c=>c.id),concepts:a.observation_concepts.map(c=>c.id)}),a}getActiveMode(){if(!this.activeMode)throw new Error("No mode loaded. Call loadMode() first.");return this.activeMode}getActiveModeId(){if(!this.activeModeId)throw new Error("No mode loaded. Call loadMode() first.");return this.activeModeId}getObservationTypes(){return this.getActiveMode().observation_types}getTypeIcon(e){return this.getObservationTypes().find(n=>n.id===e)?.emoji||"\u{1F4DD}"}getWorkEmoji(e){return this.getObservationTypes().find(n=>n.id===e)?.work_emoji||"\u{1F4DD}"}}});function BH(t){return{id:t.id,name:t.name,metadata:ht(t.metadata),createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}function DAe(t){return{teamId:t.team_id,userId:t.user_id,role:t.role,metadata:ht(t.metadata),createdAtEpoch:De(t.created_at),updatedAtEpoch:De(t.updated_at)}}var ba,Vb=R(()=>{"use strict";wn();ba=class{constructor(e){this.client=e}client;async create(e){let r=e.id??Ze(),n=await se(this.client,`
INSERT INTO teams (id, name, metadata)
VALUES ($1, $2, $3::jsonb)
RETURNING *
`,[r,e.name,JSON.stringify(e.metadata??{})]);return BH(n)}async addMember(e){let r=await se(this.client,`
INSERT INTO team_members (team_id, user_id, role, metadata)
VALUES ($1, $2, $3, $4::jsonb)
ON CONFLICT (team_id, user_id) DO UPDATE SET
role = excluded.role,
metadata = excluded.metadata,
updated_at = now()
RETURNING *
`,[e.teamId,e.userId,e.role,JSON.stringify(e.metadata??{})]);return DAe(r)}async getByIdForUser(e){let r=await se(this.client,`
SELECT teams.*
FROM teams
INNER JOIN team_members ON team_members.team_id = teams.id
WHERE teams.id = $1 AND team_members.user_id = $2
`,[e.id,e.userId]);return r?BH(r):null}}});async function Wb(t){if(LAe(t)){let e=await t.connect();try{await Wb(e)}finally{e.release()}return}await t.query("BEGIN");try{await NAe(t),await t.query("COMMIT")}catch(e){let r=e instanceof Error?e:new Error(String(e));throw x.error("SYSTEM","postgres schema bootstrap failed, rolling back",{},r),await t.query("ROLLBACK"),e}}async function NAe(t){await t.query(qAe),await t.query(`
INSERT INTO server_beta_schema_migrations (version, description)
VALUES ($1, $2)
ON CONFLICT (version) DO NOTHING
`,[Xd,"phase 1 postgres observation storage foundation"])}function LAe(t){let e=t;return typeof e.connect=="function"&&typeof e.release!="function"&&typeof e.totalCount=="number"&&typeof e.idleCount=="number"&&typeof e.waitingCount=="number"}var Xd,MAe,qAe,CA=R(()=>{"use strict";fe();Xd=1,MAe=["server_beta_schema_migrations","teams","projects","team_members","api_keys","audit_log","server_sessions","agent_events","observation_generation_jobs","observations","observation_sources","observation_generation_job_events","usage_events","rate_limit_counters"];qAe=`
CREATE TABLE IF NOT EXISTS server_beta_schema_migrations (
version INTEGER PRIMARY KEY,
description TEXT NOT NULL,
applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS teams (
id TEXT PRIMARY KEY,
name TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE TABLE IF NOT EXISTS projects (
id TEXT PRIMARY KEY,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
name TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (id, team_id)
);
CREATE TABLE IF NOT EXISTS team_members (
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
user_id TEXT NOT NULL,
role TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
PRIMARY KEY (team_id, user_id)
);
CREATE TABLE IF NOT EXISTS api_keys (
id TEXT PRIMARY KEY,
key_hash TEXT NOT NULL UNIQUE,
team_id TEXT REFERENCES teams(id) ON DELETE CASCADE,
project_id TEXT REFERENCES projects(id) ON DELETE CASCADE,
actor_id TEXT NOT NULL,
scopes JSONB NOT NULL DEFAULT '[]'::jsonb,
revoked_at TIMESTAMPTZ,
expires_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (project_id IS NULL OR team_id IS NOT NULL),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS audit_log (
id TEXT PRIMARY KEY,
team_id TEXT REFERENCES teams(id) ON DELETE SET NULL,
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
actor_id TEXT,
api_key_id TEXT REFERENCES api_keys(id) ON DELETE SET NULL,
action TEXT NOT NULL,
resource_type TEXT NOT NULL,
resource_id TEXT,
details JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (project_id IS NULL OR team_id IS NOT NULL),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE SET NULL
);
CREATE TABLE IF NOT EXISTS server_sessions (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
external_session_id TEXT,
idempotency_key TEXT,
content_session_id TEXT,
agent_id TEXT,
agent_type TEXT,
platform_source TEXT,
generation_status TEXT NOT NULL DEFAULT 'idle',
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
started_at TIMESTAMPTZ NOT NULL DEFAULT now(),
ended_at TIMESTAMPTZ,
last_generated_at TIMESTAMPTZ,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS agent_events (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
source_adapter TEXT NOT NULL,
source_event_id TEXT,
idempotency_key TEXT NOT NULL,
event_type TEXT NOT NULL,
payload JSONB NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
occurred_at TIMESTAMPTZ NOT NULL,
received_at TIMESTAMPTZ NOT NULL DEFAULT now(),
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (idempotency_key),
UNIQUE (id, project_id, team_id),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observation_generation_jobs (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
agent_event_id TEXT REFERENCES agent_events(id) ON DELETE CASCADE,
source_type TEXT NOT NULL CHECK (source_type IN ('agent_event', 'session_summary', 'observation_reindex')),
source_id TEXT NOT NULL,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
job_type TEXT NOT NULL,
status TEXT NOT NULL CHECK (status IN ('queued', 'processing', 'completed', 'failed', 'cancelled')),
idempotency_key TEXT NOT NULL UNIQUE,
bullmq_job_id TEXT UNIQUE,
attempts INTEGER NOT NULL DEFAULT 0,
max_attempts INTEGER NOT NULL DEFAULT 3,
next_attempt_at TIMESTAMPTZ,
locked_at TIMESTAMPTZ,
locked_by TEXT,
completed_at TIMESTAMPTZ,
failed_at TIMESTAMPTZ,
cancelled_at TIMESTAMPTZ,
last_error JSONB,
payload JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
CHECK (
(source_type = 'agent_event' AND agent_event_id IS NOT NULL AND source_id = agent_event_id)
OR
(source_type = 'session_summary' AND agent_event_id IS NULL AND server_session_id IS NOT NULL AND source_id = server_session_id)
OR
(source_type = 'observation_reindex' AND agent_event_id IS NULL)
),
FOREIGN KEY (agent_event_id, project_id, team_id) REFERENCES agent_events(id, project_id, team_id) ON DELETE CASCADE,
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observations (
id TEXT PRIMARY KEY,
project_id TEXT NOT NULL REFERENCES projects(id) ON DELETE CASCADE,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
server_session_id TEXT REFERENCES server_sessions(id) ON DELETE SET NULL,
kind TEXT NOT NULL DEFAULT 'observation',
content TEXT NOT NULL,
content_search TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', content)) STORED,
generation_key TEXT,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
embedding JSONB,
created_by_job_id TEXT REFERENCES observation_generation_jobs(id) ON DELETE SET NULL,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now(),
FOREIGN KEY (project_id, team_id) REFERENCES projects(id, team_id) ON DELETE CASCADE
);
CREATE TABLE IF NOT EXISTS observation_sources (
id TEXT PRIMARY KEY,
observation_id TEXT NOT NULL REFERENCES observations(id) ON DELETE CASCADE,
agent_event_id TEXT REFERENCES agent_events(id) ON DELETE CASCADE,
generation_job_id TEXT REFERENCES observation_generation_jobs(id) ON DELETE SET NULL,
source_type TEXT NOT NULL CHECK (source_type IN ('agent_event', 'session_summary', 'observation_reindex', 'manual')),
source_id TEXT NOT NULL,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
UNIQUE (observation_id, source_type, source_id),
UNIQUE (source_type, source_id, generation_job_id, observation_id),
CHECK (
(source_type = 'agent_event' AND agent_event_id IS NOT NULL AND source_id = agent_event_id)
OR
(source_type <> 'agent_event' AND agent_event_id IS NULL)
)
);
CREATE TABLE IF NOT EXISTS observation_generation_job_events (
id TEXT PRIMARY KEY,
generation_job_id TEXT NOT NULL REFERENCES observation_generation_jobs(id) ON DELETE CASCADE,
event_type TEXT NOT NULL CHECK (event_type IN ('queued', 'enqueued', 'processing', 'retry_scheduled', 'completed', 'failed', 'cancelled')),
status_after TEXT NOT NULL CHECK (status_after IN ('queued', 'processing', 'completed', 'failed', 'cancelled')),
attempt INTEGER NOT NULL DEFAULT 0,
details JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_agent_events_project_session ON agent_events(project_id, server_session_id, occurred_at);
ALTER TABLE server_sessions ADD COLUMN IF NOT EXISTS idempotency_key TEXT;
ALTER TABLE server_sessions DROP CONSTRAINT IF EXISTS server_sessions_project_id_external_session_id_key;
-- #2560 \u2014 platform_source on agent_events (consistent with server_sessions and
-- the plan-09 scoping): which platform produced the event (claude-code,
-- opencode, cursor, ...). Idempotent so an existing DB upgrades in place.
ALTER TABLE agent_events ADD COLUMN IF NOT EXISTS platform_source TEXT;
CREATE INDEX IF NOT EXISTS idx_agent_events_platform_source
ON agent_events(team_id, project_id, platform_source, occurred_at)
WHERE platform_source IS NOT NULL;
CREATE INDEX IF NOT EXISTS idx_server_sessions_platform_source
ON server_sessions(team_id, project_id, platform_source, started_at)
WHERE platform_source IS NOT NULL;
ALTER TABLE observations ADD COLUMN IF NOT EXISTS content_search TSVECTOR GENERATED ALWAYS AS (to_tsvector('english', content)) STORED;
ALTER TABLE observations DROP CONSTRAINT IF EXISTS observations_generation_key_key;
ALTER TABLE observation_generation_jobs DROP CONSTRAINT IF EXISTS observation_generation_jobs_source_type_source_id_job_type_key;
CREATE UNIQUE INDEX IF NOT EXISTS idx_server_sessions_project_idempotency
ON server_sessions(project_id, idempotency_key)
WHERE idempotency_key IS NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_server_sessions_external_session_legacy
ON server_sessions(project_id, external_session_id)
WHERE external_session_id IS NOT NULL AND platform_source IS NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_server_sessions_external_session_platform
ON server_sessions(project_id, platform_source, external_session_id)
WHERE external_session_id IS NOT NULL AND platform_source IS NOT NULL;
DROP INDEX IF EXISTS idx_server_sessions_content_session;
-- Supports platform-aware session linkage lookup on the /v1/events ingest path.
CREATE INDEX IF NOT EXISTS idx_server_sessions_content_session_platform
ON server_sessions(team_id, project_id, platform_source, content_session_id, started_at DESC)
WHERE content_session_id IS NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_observations_generation_key_scope
ON observations(team_id, project_id, generation_key)
WHERE generation_key IS NOT NULL;
CREATE UNIQUE INDEX IF NOT EXISTS idx_observation_jobs_source_scope
ON observation_generation_jobs(team_id, project_id, source_type, source_id, job_type);
CREATE INDEX IF NOT EXISTS idx_projects_team ON projects(team_id, id);
CREATE INDEX IF NOT EXISTS idx_agent_events_team_project ON agent_events(team_id, project_id, occurred_at);
CREATE INDEX IF NOT EXISTS idx_observations_project_session ON observations(project_id, server_session_id, created_at);
CREATE INDEX IF NOT EXISTS idx_observations_team_project ON observations(team_id, project_id, created_at);
CREATE INDEX IF NOT EXISTS idx_observations_content_search ON observations USING GIN (content_search);
CREATE INDEX IF NOT EXISTS idx_observation_sources_event ON observation_sources(agent_event_id);
CREATE INDEX IF NOT EXISTS idx_observation_sources_source ON observation_sources(source_type, source_id);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_status_next_attempt ON observation_generation_jobs(status, next_attempt_at, created_at);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_team_project ON observation_generation_jobs(team_id, project_id, status, created_at);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_event ON observation_generation_jobs(agent_event_id);
CREATE INDEX IF NOT EXISTS idx_observation_jobs_source ON observation_generation_jobs(source_type, source_id);
CREATE INDEX IF NOT EXISTS idx_observation_job_events_job_created ON observation_generation_job_events(generation_job_id, created_at);
CREATE INDEX IF NOT EXISTS idx_audit_log_scope_created ON audit_log(project_id, team_id, created_at);
-- Usage metering: append-only per-team usage, aggregated for quotas + billing.
-- kind is open-ended ('request', 'tokens_in', 'tokens_out', 'observation', ...).
CREATE TABLE IF NOT EXISTS usage_events (
id TEXT PRIMARY KEY,
team_id TEXT NOT NULL REFERENCES teams(id) ON DELETE CASCADE,
project_id TEXT REFERENCES projects(id) ON DELETE SET NULL,
kind TEXT NOT NULL,
quantity BIGINT NOT NULL DEFAULT 1,
metadata JSONB NOT NULL DEFAULT '{}'::jsonb,
created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_usage_events_team_created ON usage_events(team_id, created_at);
CREATE INDEX IF NOT EXISTS idx_usage_events_team_kind_created ON usage_events(team_id, kind, created_at);
-- Fixed-window rate-limit counters. subject_id is the api key id (per-key limit).
CREATE TABLE IF NOT EXISTS rate_limit_counters (
subject_id TEXT NOT NULL,
window_start TIMESTAMPTZ NOT NULL,
count BIGINT NOT NULL DEFAULT 0,
PRIMARY KEY (subject_id, window_start)
);
CREATE INDEX IF NOT EXISTS idx_rate_limit_counters_window ON rate_limit_counters(window_start);
`});var Yb={};io(Yb,{PostgresAgentEventsRepository:()=>Xr,PostgresAuthRepository:()=>Nt,PostgresDataDeletionRepository:()=>cc,PostgresObservationGenerationJobEventsRepository:()=>Wt,PostgresObservationGenerationJobRepository:()=>dt,PostgresObservationRepository:()=>Zr,PostgresObservationSourcesRepository:()=>xo,PostgresProjectsRepository:()=>_n,PostgresRateLimitRepository:()=>$o,PostgresServerSessionsRepository:()=>zt,PostgresTeamsRepository:()=>ba,PostgresUsageRepository:()=>Kr,SERVER_POSTGRES_SCHEMA_VERSION:()=>Xd,SERVER_POSTGRES_TABLES:()=>MAe,bootstrapServerPostgresSchema:()=>Wb,buildAgentEventIdempotencyKey:()=>XM,buildObservationGenerationJobIdempotencyKey:()=>eN,buildObservationGenerationKey:()=>fS,buildServerSessionIdempotencyKey:()=>g$,closePostgresPool:()=>ele,createPostgresPool:()=>em,createPostgresStorageRepositories:()=>FAe,getPostgresDatabaseUrl:()=>XL,getSharedPostgresPool:()=>gx,parsePostgresConfig:()=>yu,withPostgresTransaction:()=>In});function FAe(t){return{teams:new ba(t),projects:new _n(t),auth:new Nt(t),sessions:new zt(t),agentEvents:new Xr(t),observations:new Zr(t),observationSources:new xo(t),observationGenerationJobs:new dt(t),observationGenerationJobEvents:new Wt(t),usage:new Kr(t),rateLimits:new $o(t)}}var Zd=R(()=>{"use strict";Qa();Oi();fs();su();Xa();js();Vb();Uo();xh();Qa();Oi();Zf();bx();fs();su();Ao();Xa();xh();CA();js();Vb();Uo()});function HH(t){return process.platform==="win32"?Math.round(t*jA.WINDOWS_MULTIPLIER):t}var jA,VH=R(()=>{"use strict";jA={HEALTH_CHECK:3e3,API_REQUEST:3e4,HOOK_READINESS_WAIT:1e4,POST_SPAWN_WAIT:15e3,READINESS_WAIT:3e4,PORT_IN_USE_WAIT:3e3,POWERSHELL_COMMAND:1e4,WINDOWS_MULTIPLIER:1.5}});var Qb,PA,ep,$Ae,tp,WH=R(()=>{"use strict";Qb=require("fs"),PA=require("path"),ep=require("os");VH();Xl();$Ae="security_alert",tp=class{static DEFAULTS={CLAUDE_MEM_MODEL:"claude-haiku-4-5-20251001",CLAUDE_MEM_CONTEXT_OBSERVATIONS:"50",CLAUDE_MEM_WORKER_PORT:String(37700+(process.getuid?.()??77)%100),CLAUDE_MEM_WORKER_HOST:"127.0.0.1",CLAUDE_MEM_API_TIMEOUT_MS:String(HH(jA.API_REQUEST)),CLAUDE_MEM_SKIP_TOOLS:"ListMcpResourcesTool,SlashCommand,Skill,TodoWrite,AskUserQuestion",CLAUDE_MEM_PROVIDER:"claude",CLAUDE_MEM_CLAUDE_AUTH_METHOD:"subscription",CLAUDE_MEM_GEMINI_API_KEY:"",CLAUDE_MEM_GEMINI_MODEL:"gemini-flash-latest",CLAUDE_MEM_GEMINI_RATE_LIMITING_ENABLED:"true",CLAUDE_MEM_OPENROUTER_API_KEY:"",CLAUDE_MEM_OPENROUTER_MODEL:"xiaomi/mimo-v2-flash:free",CLAUDE_MEM_OPENROUTER_BASE_URL:"",CLAUDE_MEM_OPENROUTER_SITE_URL:"",CLAUDE_MEM_OPENROUTER_APP_NAME:"claude-mem",CLAUDE_MEM_DATA_DIR:(0,PA.join)((0,ep.homedir)(),".claude-mem"),CLAUDE_MEM_LOG_LEVEL:"INFO",CLAUDE_MEM_PYTHON_VERSION:"3.13",CLAUDE_CODE_PATH:"",CLAUDE_MEM_CLAUDE_CONFIG_DIR:"",CLAUDE_MEM_MODE:"code",CLAUDE_MEM_CONTEXT_SHOW_READ_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_WORK_TOKENS:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_AMOUNT:"false",CLAUDE_MEM_CONTEXT_SHOW_SAVINGS_PERCENT:"true",CLAUDE_MEM_CONTEXT_FULL_COUNT:"0",CLAUDE_MEM_CONTEXT_FULL_FIELD:"narrative",CLAUDE_MEM_CONTEXT_SESSION_COUNT:"10",CLAUDE_MEM_CONTEXT_SHOW_LAST_SUMMARY:"true",CLAUDE_MEM_CONTEXT_SHOW_LAST_MESSAGE:"false",CLAUDE_MEM_CONTEXT_SHOW_TERMINAL_OUTPUT:"true",CLAUDE_MEM_WELCOME_HINT_ENABLED:"true",CLAUDE_MEM_FOLDER_CLAUDEMD_ENABLED:"false",CLAUDE_MEM_FOLDER_USE_LOCAL_MD:"false",CLAUDE_MEM_TRANSCRIPTS_ENABLED:"true",CLAUDE_MEM_TRANSCRIPTS_CONFIG_PATH:(0,PA.join)((0,ep.homedir)(),".claude-mem","transcript-watch.json"),CLAUDE_MEM_CODEX_TRANSCRIPT_INGESTION:"false",CLAUDE_MEM_MAX_CONCURRENT_AGENTS:"2",CLAUDE_MEM_OBSERVER_MAX_CONVERSATION_CHARS:"400000",CLAUDE_MEM_HOOK_FAIL_LOUD_THRESHOLD:"3",CLAUDE_MEM_EXCLUDED_PROJECTS:"",CLAUDE_MEM_FOLDER_MD_EXCLUDE:"[]",CLAUDE_MEM_FOLDER_MD_SKELETON_DENYLIST:"[]",CLAUDE_MEM_SEMANTIC_INJECT:"false",CLAUDE_MEM_SEMANTIC_INJECT_LIMIT:"5",CLAUDE_MEM_TIER_ROUTING_ENABLED:"true",CLAUDE_MEM_TIER_SIMPLE_MODEL:"haiku",CLAUDE_MEM_TIER_SUMMARY_MODEL:"",CLAUDE_MEM_TIER_FAST_MODEL:"haiku",CLAUDE_MEM_TIER_SMART_MODEL:"sonnet",CLAUDE_MEM_CHROMA_ENABLED:"true",CLAUDE_MEM_CHROMA_MODE:"local",CLAUDE_MEM_CHROMA_HOST:"127.0.0.1",CLAUDE_MEM_CHROMA_PORT:"8000",CLAUDE_MEM_CHROMA_SSL:"false",CLAUDE_MEM_CHROMA_API_KEY:"",CLAUDE_MEM_CHROMA_TENANT:"default_tenant",CLAUDE_MEM_CHROMA_DATABASE:"default_database",CLAUDE_MEM_CHROMA_PREWARM_TIMEOUT_MS:"120000",CLAUDE_MEM_CHROMA_MAX_PENDING_MUTATIONS:"5000",CLAUDE_MEM_CLOUD_SYNC_TOKEN:"",CLAUDE_MEM_CLOUD_SYNC_USER_ID:"",CLAUDE_MEM_CLOUD_SYNC_HUB_URL:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_ID:"",CLAUDE_MEM_CLOUD_SYNC_DEVICE_NAME:(0,ep.hostname)(),CLAUDE_MEM_CLOUD_SYNC_WS:"true",CLAUDE_MEM_CLOUD_SYNC_CONTENT_BATCH_SIZE:"40",CLAUDE_MEM_CLOUD_SYNC_REQUEST_TIMEOUT_MS:"90000",CLAUDE_MEM_TV_TOKEN:"",CLAUDE_MEM_PRO_TRIAL_EMAIL:"",CLAUDE_MEM_PRO_TRIAL_AT:"",CLAUDE_MEM_PRO_TRIAL_STATE:"",CLAUDE_MEM_PRO_TRIAL_ENDS_AT:"",CLAUDE_MEM_PRO_PLAN:"",CLAUDE_MEM_PRO_FALLBACK_AT:"",CLAUDE_MEM_PRO_MEMORY_KEY:"",CLAUDE_MEM_PRO_MEMORY_BASE_URL:"",CLAUDE_MEM_PRO_MEMORY_MODEL:"",CLAUDE_MEM_TELEGRAM_ENABLED:"true",CLAUDE_MEM_TELEGRAM_BOT_TOKEN:"",CLAUDE_MEM_TELEGRAM_CHAT_ID:"",CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:"security_alert,sensitive",CLAUDE_MEM_TELEGRAM_TRIGGER_CONCEPTS:"",CLAUDE_MEM_GROK_BOT_AWARENESS_ENABLED:"true",CLAUDE_MEM_GROK_BOT_AWARENESS_AGENT_IDS:"521e962d-2ec3-4488-bfbc-54d5209ce118,95601360-61f7-4fd9-bb3a-2c976b2b85c0",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_GROK_BOT_AWARENESS_TRIGGER_CONCEPTS:"",CLAUDE_MEM_CCS_ALIGN_ENABLED:"true",CLAUDE_MEM_CCS_ALIGN_VIEWER_IDS:"ccs-align",CLAUDE_MEM_CCS_ALIGN_TRIGGER_TYPES:"decision,bugfix,security_alert,sensitive",CLAUDE_MEM_CCS_ALIGN_PATCH_SHADOWS:"false",CLAUDE_MEM_QUEUE_ENGINE:"sqlite",CLAUDE_MEM_REDIS_URL:"",CLAUDE_MEM_REDIS_HOST:"127.0.0.1",CLAUDE_MEM_REDIS_PORT:"6379",CLAUDE_MEM_REDIS_MODE:"external",CLAUDE_MEM_QUEUE_REDIS_PREFIX:`claude_mem_${process.env.CLAUDE_MEM_WORKER_PORT??String(37700+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_AUTH_MODE:"api-key",CLAUDE_MEM_RUNTIME:"worker",CLAUDE_MEM_SERVER_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_API_KEY:"",CLAUDE_MEM_SERVER_PROJECT_ID:"",CLAUDE_MEM_SERVER_BETA_URL:`http://127.0.0.1:${process.env.CLAUDE_MEM_SERVER_PORT??String(37877+(process.getuid?.()??77)%100)}`,CLAUDE_MEM_SERVER_BETA_API_KEY:"",CLAUDE_MEM_SERVER_BETA_PROJECT_ID:""};static getAllDefaults(){return{...this.DEFAULTS}}static get(e){let r=process.env[e]??this.DEFAULTS[e];return e==="CLAUDE_MEM_WORKER_HOST"?this.normalizeWorkerHost(r):r}static normalizeWorkerHost(e){return e==="localhost"?"127.0.0.1":e}static finalizeSettings(e,r){let n=r?this.applyEnvOverrides(e):e;return n.CLAUDE_MEM_WORKER_HOST=this.normalizeWorkerHost(n.CLAUDE_MEM_WORKER_HOST),n}static getInt(e){let r=this.get(e);return parseInt(r,10)}static applyEnvOverrides(e){let r={...e};for(let n of Object.keys(this.DEFAULTS))process.env[n]!==void 0&&(r[n]=process.env[n]);return r}static loadFromFile(e,r=!0){try{if(!(0,Qb.existsSync)(e)){let l=this.getAllDefaults();try{za(e,l),console.warn("[SETTINGS] Created settings file with defaults:",e)}catch(u){console.warn("[SETTINGS] Failed to create settings file, using in-memory defaults:",e,u instanceof Error?u.message:String(u))}return this.finalizeSettings(l,r)}let n=(0,Qb.readFileSync)(e,"utf-8"),i=yo(n),s=i,o=i.env&&typeof i.env=="object"&&!Array.isArray(i.env),a=o&&Object.keys(i).some(l=>l!=="env");if(o&&(s=i.env,!a))try{za(e,s),console.warn("[SETTINGS] Migrated settings file from nested to flat schema:",e)}catch(l){console.warn("[SETTINGS] Failed to auto-migrate settings file:",e,l instanceof Error?l.message:String(l))}if(s.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES===$Ae){s={...s,CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES:this.DEFAULTS.CLAUDE_MEM_TELEGRAM_TRIGGER_TYPES};try{za(e,a?{...i,env:s}:s),console.warn("[SETTINGS] Migrated Telegram trigger types off the legacy default:",e)}catch(l){console.warn("[SETTINGS] Failed to migrate Telegram trigger types:",e,l instanceof Error?l.message:String(l))}}let c={...this.DEFAULTS};for(let l of Object.keys(this.DEFAULTS))s[l]!==void 0&&(c[l]=s[l]);return this.finalizeSettings(c,r)}catch(n){console.warn("[SETTINGS] Failed to load settings, using defaults:",e,n instanceof Error?n.message:String(n));let i=this.getAllDefaults();return this.finalizeSettings(i,r)}}}});function UAe(){let t=xl("CLAUDE_MEM_QUEUE_ENGINE").trim().toLowerCase();if(t==="sqlite"||t==="bullmq")return t;throw new Error(`Invalid CLAUDE_MEM_QUEUE_ENGINE=${t}; expected sqlite or bullmq`)}function XH(){let t=UAe(),e=JAe(xl("CLAUDE_MEM_REDIS_MODE")),r=xl("CLAUDE_MEM_REDIS_URL").trim()||null,n=xl("CLAUDE_MEM_REDIS_HOST").trim()||"127.0.0.1",i=zAe(xl("CLAUDE_MEM_REDIS_PORT")),s=GAe(xl("CLAUDE_MEM_QUEUE_REDIS_PREFIX")),o=r?HAe(r):BAe(n,i);return{engine:t,mode:e,url:r,host:r?YH(r).host:n,port:r?YH(r).port:i,prefix:s,connection:o}}function xl(t){if(process.env[t]!==void 0)return process.env[t];if((0,QH.existsSync)($E)){let e=tp.loadFromFile($E,!1)[t];if(e!==void 0)return e}return tp.get(t)}function JAe(t){let e=t.trim().toLowerCase();if(e==="external"||e==="managed"||e==="docker")return e;throw new Error(`Invalid CLAUDE_MEM_REDIS_MODE=${t}; expected external, managed, or docker`)}function zAe(t){let e=Number.parseInt(t,10);if(!Number.isInteger(e)||e<=0||e>65535)throw new Error(`Invalid CLAUDE_MEM_REDIS_PORT=${t}; expected a TCP port`);return e}function GAe(t){return(t.trim()||"claude_mem").replace(/[^a-zA-Z0-9_-]/g,"_")}function BAe(t,e){return{host:t,port:e,maxRetriesPerRequest:null,connectTimeout:1e3,lazyConnect:!0}}function HAe(t){let e=new URL(t);if(e.protocol!=="redis:"&&e.protocol!=="rediss:")throw new Error("CLAUDE_MEM_REDIS_URL must use redis:// or rediss://");let r=e.pathname.length>1?Number.parseInt(e.pathname.slice(1),10):void 0;if(r!==void 0&&(!Number.isInteger(r)||r<0))throw new Error(`Invalid Redis database in CLAUDE_MEM_REDIS_URL: ${e.pathname}`);return{host:e.hostname||"127.0.0.1",port:e.port?Number.parseInt(e.port,10):6379,username:e.username?decodeURIComponent(e.username):void 0,password:e.password?decodeURIComponent(e.password):void 0,db:r,tls:e.protocol==="rediss:"?{}:void 0,maxRetriesPerRequest:null,connectTimeout:1e3,lazyConnect:!0}}function YH(t){let e=new URL(t);return{host:e.hostname||"127.0.0.1",port:e.port?Number.parseInt(e.port,10):6379}}var QH,ZH=R(()=>{"use strict";QH=require("fs");WH();Hn()});function Xb(t){let e=Object.fromEntries(rV.map(i=>[i,0]));eV.lastIndex=0;let r=0,n=t.replace(eV,(i,s)=>(e[s]=(e[s]??0)+1,r+=1,""));return r>tV&&x.warn("SYSTEM","tag count exceeds limit",void 0,{tagCount:r,maxAllowed:tV,contentLength:t.length}),{stripped:n.trim(),counts:e}}var rV,eV,tV,VAe,HJe,VJe,KA=R(()=>{"use strict";fe();rV=["private","claude-mem-context","system_instruction","system-instruction","persisted-output","system-reminder"],eV=new RegExp(`<(${rV.join("|")})\\b[^>]*>[\\s\\S]*?</\\1>`,"g"),tV=100;VAe=["task-notification"],HJe=new RegExp(`^\\s*<(${VAe.join("|")})\\b[^>]*>(?:(?!<\\1\\b|</\\1\\b)[\\s\\S])*</\\1>\\s*$`),VJe=256*1024});function wl(t,e={}){let r=e.mode??WAe(),n=!1,i=!0,s=[];for(let m of t.events){let y=sV(m);y.hadPrivate&&(n=!0),y.body.length>0&&(i=!1,s.push(y.body))}let o=t.events.length>0&&i,a=t.project.serverSessionId?`
<server_session_id>${rs(t.project.serverSessionId)}</server_session_id>`:"",c=t.project.projectName?`
<project_name>${rs(t.project.projectName)}</project_name>`:"",l=YAe(r),u=t.job.sourceType==="session_summary",d=["You are reviewing a complete agent session. Return a single","<summary>...</summary> XML block describing the arc of the session. If the","session contains nothing worth recording (e.g., everything was scrubbed by","privacy filters or the activity was trivial), return a single self-closing","<skip_summary /> tag and nothing else. Do not include any prose outside the XML.","","Schema for the <summary> block (at least one of the first five is required):","<summary>"," <request>what the user asked for</request>"," <investigated>what was explored, and how</investigated>"," <learned>durable findings worth remembering later</learned>"," <completed>what was actually done</completed>"," <next_steps>what is left open</next_steps>"," <notes>anything else worth keeping</notes>","</summary>"],p=["You are observing an agent at work. Return one or more","<observation>...</observation> XML blocks summarizing durable, useful","discoveries from the events above. If the events contain nothing worth","recording (e.g., everything was scrubbed by privacy filters or the","activity was trivial), return a single self-closing <skip_summary />","tag and nothing else. Do not include any prose outside the XML.","","Schema for each <observation> block:",l];return{prompt:["<server_beta_observation_request>",` <project_id>${rs(t.project.projectId)}</project_id>`,` <team_id>${rs(t.project.teamId)}</team_id>`+a+c,` <generation_job_id>${rs(t.job.id)}</generation_job_id>`," <agent_events>",s.length>0?s.join(`
`):" <!-- empty after privacy stripping -->"," </agent_events>","</server_beta_observation_request>","",...u?d:p].join(`
`),hadPrivateContent:n,skippedAll:o}}function sV(t){let e=typeof t.payload=="string"?t.payload:JSON.stringify(t.payload??{},null,2),r=Xb(e),n=(r.counts.private??0)>0,i=r.stripped.length>iV?r.stripped.slice(0,iV)+`
[...truncated]`:r.stripped;return i.trim().length===0?{body:"",hadPrivate:n}:{body:[" <agent_event>",` <id>${rs(t.id)}</id>`,` <event_type>${rs(t.eventType)}</event_type>`,` <source_adapter>${rs(t.sourceAdapter)}</source_adapter>`,` <occurred_at>${new Date(t.occurredAtEpoch).toISOString()}</occurred_at>`," <payload>",rs(i)," </payload>"," </agent_event>"].join(`
`),hadPrivate:n}}function oV(t){let{body:e}=sV(t);return e.length===0?0:Buffer.byteLength(e,"utf8")+1}function WAe(){try{return no.getInstance().getActiveMode()}catch(t){let e=t instanceof Error?t:new Error(String(t));return x.warn("SDK","Failed to load active mode; using fallback observation types",{fallbackTypes:nV.map(r=>r.id)},e),{observation_types:nV}}}function YAe(t){return["<observation>",` <type>[ ${t.observation_types.map(r=>r.id).join(" | ")} ]</type>`," <title>...</title>"," <subtitle>...</subtitle>"," <facts><fact>...</fact></facts>"," <narrative>...</narrative>"," <concepts><concept>...</concept></concepts>"," <files_read><file>...</file></files_read>"," <files_modified><file>...</file></files_modified>","</observation>"].join(`
`)}function rs(t){return t.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&apos;")}var nV,iV,rp=R(()=>{"use strict";Hb();KA();fe();nV=[{id:"discovery"},{id:"progress"},{id:"blocker"},{id:"decision"}],iV=16*1024});function Zb(t){if(!t)return;let e=Number(t);if(!Number.isNaN(e)&&e>=0)return Math.floor(e*1e3);let r=Date.parse(t);if(!Number.isNaN(r)){let n=r-Date.now();return n>0?n:0}}function _l(t){let{status:e,providerLabel:r}=t,i=(t.bodyText??"").toLowerCase(),s=t.headers?Zb(t.headers.get("retry-after")):void 0,o=e===void 0?t.cause:new Error(`${r} HTTP error (status ${e})`);if(i.includes("quota exceeded")||i.includes("insufficient credits")||i.includes("insufficient_quota")||i.includes("resource_exhausted")||i.includes("key limit exceeded")||i.includes("limit exceeded")&&e!==429||i.includes("negative credit")||e===402)return new Ce(`${r} quota exhausted${e!==void 0?` (status ${e})`:""}`,{kind:"quota_exhausted",cause:o});if(e===429)return new Ce(`${r} rate limit (429)`,{kind:"rate_limit",cause:o,...s!==void 0?{retryAfterMs:s}:{}});if(e===401||e===403)return new Ce(`${r} auth error (status ${e})`,{kind:"auth_invalid",cause:o});if(e===400||e===404)return new Ce(`${r} bad request (status ${e})`,{kind:"unrecoverable",cause:o});if(e!==void 0&&e>=500&&e<600)return new Ce(`${r} upstream error (status ${e})`,{kind:"transient",cause:o});if(e===void 0){let a=t.cause instanceof Error?t.cause.message:String(t.cause);return new Ce(`${r} network error: ${a}`,{kind:"transient",cause:t.cause})}return new Ce(`${r} API error (status ${e})`,{kind:"unrecoverable",cause:o})}var Ce,np=R(()=>{"use strict";Ce=class extends Error{kind;retryAfterMs;cause;constructor(e,r){super(e),this.name="ServerClassifiedProviderError",this.kind=r.kind,this.cause=r.cause,r.retryAfterMs!==void 0&&(this.retryAfterMs=r.retryAfterMs)}}});function QAe(t){let e=t.match(/^\s*```(?:xml)?\s*\n([\s\S]*?)\n```\s*$/i);return e?e[1]:t}function DA(t,e){if(typeof t!="string"||!t.trim())return{valid:!1};t=QAe(t);let r=/<skip_summary(?:\s+reason="([^"]*)")?\s*\/>/.exec(t);if(r)return{valid:!0,observations:[],summary:{request:null,investigated:null,learned:null,completed:null,next_steps:null,notes:null,skipped:!0,skip_reason:r[1]??null}};let n=/<(observation|summary)\b/i.exec(t);if(!n)return{valid:!1};if(n[1].toLowerCase()==="observation"){let o=eRe(t,e);return o.length===0?{valid:!1}:{valid:!0,observations:o,summary:null}}let s=tRe(t,e);return s?{valid:!0,observations:[],summary:s}:{valid:!1}}function eRe(t,e){let r=[],n=/<observation>([\s\S]*?)<\/observation>/g,i;for(;(i=n.exec(t))!==null;){let s=i[1],o=gi(s,"type"),a=nRe(gi(s,"title")),c=gi(s,"subtitle"),l=gi(s,"narrative"),u=ev(s,"facts","fact"),d=ev(s,"concepts","concept"),p=ev(s,"files_read","file"),f=ev(s,"files_modified","file"),y=no.getInstance().getActiveMode().observation_types.map(_=>_.id),b=y[0],v=b;o?(v=o,y.includes(o)||x.error("PARSER",`Invalid observation type: ${o}, preserving emitted type`,{correlationId:e})):x.error("PARSER",`Observation missing type field, defaulting to the first declared type: "${b}"`,{correlationId:e});let E=d.map(_=>{let O=_.indexOf(":");return(O===-1?_:_.slice(0,O)).trim()}).filter(_=>_!==""&&_!==v),S=a,k=l;if(E.length!==d.length&&x.debug("PARSER","Removed observation type from concepts array",{correlationId:e,type:v,originalConcepts:d,cleanedConcepts:E}),!a&&!l&&u.length===0&&E.length===0){let _=iRe(s);if(!_){x.warn("PARSER","Skipping empty observation (all content fields null)",{correlationId:e,type:v});continue}let O=sRe(_);S=O.title,k=O.narrative,x.warn("PARSER","Salvaged unstructured observation prose as narrative",{correlationId:e,type:v,chars:_.length})}r.push({type:v,title:S,subtitle:c,facts:u,narrative:k,concepts:E,files_read:p,files_modified:f})}return r}function tRe(t,e){let n=/<summary>([\s\S]*?)<\/summary>/.exec(t);if(!n)return null;let i=n[1],s=gi(i,"request"),o=gi(i,"investigated"),a=gi(i,"learned"),c=gi(i,"completed"),l=gi(i,"next_steps"),u=gi(i,"notes");return!s&&!o&&!a&&!c&&!l?(x.warn("PARSER","Summary block has no sub-tags \u2014 rejecting false positive",{correlationId:e}),null):{request:s,investigated:o,learned:a,completed:c,next_steps:l,notes:u}}function nRe(t){if(t===null)return null;let e=rRe.exec(t);if(!e)return t;let r=e[1].trim();return r===""?t:r}function gi(t,e){let n=new RegExp(`<${e}>([\\s\\S]*?)</${e}>`).exec(t);if(!n)return null;let i=n[1].trim();return i===""?null:i}function ev(t,e,r){let n=[],s=new RegExp(`<${e}>([\\s\\S]*?)</${e}>`).exec(t);if(!s)return n;let o=s[1],a=new RegExp(`<${r}>([\\s\\S]*?)</${r}>`,"g"),c;for(;(c=a.exec(o))!==null;){let l=c[1].trim();l&&n.push(l)}return n}function iRe(t){if(/<\/?(summary|skip_summary)\b/i.test(t))return null;let e=t.replace(/<(type|title|subtitle|narrative|facts|concepts|files_read|files_modified)(?:\s*\/>|>[\s\S]*?<\/\1>)/g," ").replace(/<[^>]+>/g," ").replace(/\r\n/g,`
`).split(`
`).map(r=>r.trim()).filter(r=>r!=="").join(`
`).trim();return e===""?null:e}function sRe(t){let e=t.split(`
`).map(c=>c.trim()).filter(c=>c!==""),r=e[0]??t.trim(),n=Array.from(ZAe.segment(r),c=>c.segment),i=n.length>XAe,s=i?`${n.slice(0,aV).join("")}...`:r,a=(i?[n.slice(aV).join("").trim(),...e.slice(1)]:e.slice(1)).filter(c=>c!=="").join(`
`).trim();return{title:s,narrative:a===""?null:a}}var XAe,aV,ZAe,rRe,cV=R(()=>{"use strict";fe();Hb();XAe=120,aV=117,ZAe=new Intl.Segmenter(void 0,{granularity:"grapheme"});rRe=/^\[\*\*title\*\*:\s*([\s\S]+?)\s*\]$/});async function lV(t){let{job:e,rawText:r}=t,n=DA(r,e.id);if(!n.valid)return{kind:"parse_error",jobId:e.id,reason:"parser rejected response"};let i=n.observations??[],o=n.summary?.skipped===!0||i.length===0,a=await dV(t,i.map(c=>({kind:c.type??"observation",content:pV(c),metadata:{title:c.title,subtitle:c.subtitle,facts:c.facts,narrative:c.narrative,concepts:c.concepts,files_read:c.files_read,files_modified:c.files_modified}})),o);if(a.kind==="completed"&&process.env.CLAUDE_MEM_USAGE_METERING==="1")try{await oRe(t,a.observations.length)}catch(c){x.warn("SYSTEM","usage metering record failed (post-commit)",{jobId:t.job.id,error:c instanceof Error?c.message:String(c)})}return a}async function ip(t){await In(t.pool,async e=>{let r=new dt(e),n=new Wt(e),i=await r.getByIdForScope({id:t.job.id,projectId:t.job.projectId,teamId:t.job.teamId});if(!i||i.status==="completed"||i.status==="cancelled")return;let s=t.retryable&&i.attempts<i.maxAttempts,o=s?"queued":"failed";await r.transitionStatus({id:i.id,projectId:i.projectId,teamId:i.teamId,status:o,lastError:{reason:t.reason,classification:t.classification??null},...s?{nextAttemptAt:new Date(Date.now()+lRe(i.attempts))}:{}}),await n.append({generationJobId:i.id,projectId:i.projectId,teamId:i.teamId,eventType:s?"retry_scheduled":"failed",statusAfter:o,attempt:i.attempts,details:{reason:t.reason,classification:t.classification??null,workerId:t.workerId??null}})})}async function uV(t){let{job:e,rawText:r}=t;if(e.sourceType!=="session_summary")return{kind:"parse_error",jobId:e.id,reason:"session summary processor invoked on non-summary job"};let n=DA(r,e.id);if(!n.valid)return{kind:"parse_error",jobId:e.id,reason:"parser rejected summary response"};let i=n.summary??null,s=i?.skipped===!0,o=!i&&!s?n.observations:[],a=i?cRe(i):o.map(u=>pV(u)).join(`
`),c=s||a.trim().length===0,l=c?[]:[{kind:"summary",content:a,metadata:{request:i?.request??null,investigated:i?.investigated??null,learned:i?.learned??null,completed:i?.completed??null,next_steps:i?.next_steps??null,notes:i?.notes??null}}];return dV(t,l,c)}async function dV(t,e,r){let{job:n}=t;return In(t.pool,async i=>{let s=new Zr(i),o=new xo(i),a=new dt(i),c=new Wt(i),l=new Nt(i),u=await a.getByIdForScope({id:n.id,projectId:n.projectId,teamId:n.teamId});if(!u)throw new Error(`generation job ${n.id} not found in scope`);if(u.status==="completed"||u.status==="cancelled"||u.status==="failed")return x.info("SYSTEM","generation job already in terminal status; skipping persistence",{jobId:u.id,status:u.status}),{kind:"completed",jobId:u.id,observations:[],privateContentDetected:r};let d=await aRe(i,u.serverSessionId,u.id),p=[];for(let m=0;m<e.length;m++){let{kind:y,content:b,metadata:v}=e[m];if(!b||b.trim().length===0)continue;let E=Xb(b);if(!E.stripped||E.stripped.trim().length===0)continue;let S=fS({generationJobId:u.id,parsedObservationIndex:m,content:E.stripped}),k=await s.create({projectId:u.projectId,teamId:u.teamId,serverSessionId:u.serverSessionId,kind:y,content:E.stripped,generationKey:S,metadata:{...v,project:d,provider:t.providerLabel,model:t.modelId??null},createdByJobId:u.id});p.push(k),await o.addSource({observationId:k.id,projectId:u.projectId,teamId:u.teamId,sourceType:u.sourceType,sourceId:u.sourceId,agentEventId:u.agentEventId??null,generationJobId:u.id,metadata:{provider:t.providerLabel,parsedObservationIndex:m,source_adapter:t.sourceAdapter??null,actor_id:t.actorId??null,api_key_id:t.apiKeyId??null}});let _={teamId:u.teamId,projectId:u.projectId,actorId:t.actorId??null,apiKeyId:t.apiKeyId??null,action:"observation.created",resourceType:"observation",resourceId:k.id,details:{generationJobId:u.id,sourceType:u.sourceType,sourceId:u.sourceId,provider:t.providerLabel,model:t.modelId??null,sourceAdapter:t.sourceAdapter??null,parsedObservationIndex:m,kind:y}};try{await l.createAuditLog(_)}catch(O){x.warn("SYSTEM","audit_log observation.created insert failed",{observationId:k.id,error:O instanceof Error?O.message:String(O)})}}await a.transitionStatus({id:u.id,projectId:u.projectId,teamId:u.teamId,status:"completed"}),await c.append({generationJobId:u.id,projectId:u.projectId,teamId:u.teamId,eventType:"completed",statusAfter:"completed",attempt:u.attempts,details:{provider:t.providerLabel,model:t.modelId??null,observationCount:p.length,privateContentDetected:r,workerId:t.workerId??null,sourceType:u.sourceType}});let f={teamId:u.teamId,projectId:u.projectId,actorId:t.actorId??null,apiKeyId:t.apiKeyId??null,action:"generation_job.completed",resourceType:"observation_generation_job",resourceId:u.id,details:{generationJobId:u.id,provider:t.providerLabel,model:t.modelId??null,observationCount:p.length,observationIds:p.map(m=>m.id),sourceAdapter:t.sourceAdapter??null,sourceType:u.sourceType}};try{await l.createAuditLog(f)}catch(m){x.warn("SYSTEM","audit log insert failed during generation",{jobId:u.id,error:m instanceof Error?m.message:String(m)})}return{kind:"completed",jobId:u.id,observations:p,privateContentDetected:r}})}async function oRe(t,e){let r=new Kr(t.pool);t.tokensUsed&&t.tokensUsed>0&&await r.record({teamId:t.job.teamId,projectId:t.job.projectId,kind:"tokens",quantity:t.tokensUsed,metadata:{jobId:t.job.id,provider:t.providerLabel,model:t.modelId??null}}),e>0&&await r.record({teamId:t.job.teamId,projectId:t.job.projectId,kind:"observation",quantity:e,metadata:{jobId:t.job.id}})}async function aRe(t,e,r){if(!e)return null;let n=await t.query("SELECT metadata->>'project' AS project FROM server_sessions WHERE id = $1",[e]);return n.rows.length===0?(x.debug("SYSTEM","session row not found during project lookup; observation will have project: null",{jobId:r,serverSessionId:e}),null):n.rows[0]?.project??null}function cRe(t){let e=[];return t.request&&e.push(`Request: ${t.request}`),t.investigated&&e.push(`Investigated: ${t.investigated}`),t.learned&&e.push(`Learned: ${t.learned}`),t.completed&&e.push(`Completed: ${t.completed}`),t.next_steps&&e.push(`Next steps: ${t.next_steps}`),t.notes&&e.push(`Notes: ${t.notes}`),e.join(`
`).trim()}function pV(t){let e=[];return t.title&&e.push(t.title),t.subtitle&&e.push(t.subtitle),t.narrative&&e.push(t.narrative),t.facts&&t.facts.length>0&&e.push(t.facts.map(r=>`- ${r}`).join(`
`)),e.length===0&&t.concepts&&t.concepts.length>0&&e.push(`Concepts: ${t.concepts.join(", ")}`),e.join(`
`).trim()}function lRe(t){let e=5e3*Math.pow(5,Math.max(0,t));return Math.min(e,600*1e3)}var fV=R(()=>{"use strict";cV();fe();su();fs();Oi();Uo();Ao();KA()});function uRe(t){return oV(t)}function dRe(t){let e=c=>uRe(c),r=0;for(let c of t)r+=e(c);if(r<=MA)return t;let n=MA/2,i=[],s=0;for(let c of t){let l=e(c);if(s+l>n)break;i.push(c),s+=l}let o=[],a=0;for(let c=t.length-1;c>=i.length;c-=1){let l=t[c],u=e(l);if(a+u>MA-s)break;o.unshift(l),a+=u}return[...i,...o]}var tv,MA,rv,mV=R(()=>{"use strict";fe();Qa();rp();fs();Xa();Oi();wh();np();fV();js();tv=class extends Error{reason;constructor(e,r){super(r),this.reason=e}},MA=Number.parseInt(process.env.CLAUDE_MEM_SUMMARY_INPUT_BUDGET_BYTES??"",10)||6e5;rv=class{constructor(e){this.options=e}options;async process(e){let r=`bullmq:${e.id??"?"}`,n=e.data?.request_id??null,i;try{i=E$(e.data)}catch(a){if(a instanceof ld)x.error("SYSTEM","rejecting malformed job payload at execution",{correlationId:r,issues:a.issues});else{let c=a instanceof Error?a:new Error(String(a));x.error("SYSTEM","unexpected error validating job payload",{correlationId:r},c)}throw a}let s=await this.loadCanonicalOutbox(i.generation_job_id);if(!s)return x.info("SYSTEM","job row not found by id; nothing to do",{correlationId:r,generationJobId:i.generation_job_id}),{jobId:i.generation_job_id,status:"completed",observationCount:0};if(s.teamId!==i.team_id||s.projectId!==i.project_id){let a=new tv("scope_mismatch",`BullMQ payload team/project does not match outbox row (jobId=${i.generation_job_id})`);throw await this.auditScopeViolation(i,s,a,r),await ip({pool:this.options.pool,job:s,reason:a.message,classification:"scope_mismatch",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),a}if(i.api_key_id&&await this.isApiKeyRevoked(i.api_key_id)){let c=new tv("revoked_key",`api key ${i.api_key_id} is revoked; refusing to generate for outbox ${s.id}`);throw await this.auditRevokedKey(i,s,c,r),await ip({pool:this.options.pool,job:s,reason:c.message,classification:"revoked_key",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),c}let o=await this.lockOutbox(i.generation_job_id,i.team_id,i.project_id);if(!o)return x.info("SYSTEM","job no longer exists or is in terminal status; nothing to do",{correlationId:r,generationJobId:i.generation_job_id}),{jobId:i.generation_job_id,status:"completed",observationCount:0};x.info("SYSTEM","[generation] job locked for processing",{correlationId:r,jobId:o.id,bullmqJobId:e.id??null,requestId:n,sourceType:o.sourceType,attempt:o.attempts}),await this.auditEvent({teamId:o.teamId,projectId:o.projectId,apiKeyId:i.api_key_id,actorId:i.actor_id,action:"generation_job.processing",resourceId:o.id,details:{sourceType:o.sourceType,sourceId:o.sourceId,sourceAdapter:i.source_adapter,attempt:o.attempts,correlationId:r,requestId:n}});try{return await this.generateAndPersist(e,i,o,r,n)}catch(a){let c=a instanceof Ce?a:null,l=c?c.kind==="transient"||c.kind==="rate_limit":!1;throw await ip({pool:this.options.pool,job:o,reason:a instanceof Error?a.message:String(a),classification:c?.kind??"unknown",retryable:l,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),a}}async generateAndPersist(e,r,n,i,s){let o=await this.loadEvents(n,r),a=await this.loadProject(n),c=await this.options.provider.generate({job:n,events:o,project:{projectId:n.projectId,teamId:n.teamId,serverSessionId:n.serverSessionId,projectName:a?.name??null}}),l={pool:this.options.pool,job:n,rawText:c.rawText,modelId:c.modelId,providerLabel:c.providerLabel,tokensUsed:c.tokensUsed,apiKeyId:r.api_key_id,actorId:r.actor_id,sourceAdapter:r.source_adapter,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}},u=n.sourceType==="session_summary"?await uV(l):await lV(l);if(u.kind==="parse_error")throw await ip({pool:this.options.pool,job:n,reason:u.reason,classification:"parse_error",retryable:!1,...this.options.workerId!==void 0?{workerId:this.options.workerId}:{}}),new Error(`generation parse error: ${u.reason}`);return x.info("SYSTEM","generation completed",{correlationId:i,jobId:u.jobId,bullmqJobId:e.id??null,requestId:s,observationCount:u.observations.length,privateContentDetected:u.privateContentDetected}),{jobId:u.jobId,status:"completed",observationCount:u.observations.length}}async loadCanonicalOutbox(e){let n=(await this.options.pool.query("SELECT * FROM observation_generation_jobs WHERE id = $1",[e])).rows[0];return n?{id:n.id,projectId:n.project_id,teamId:n.team_id,agentEventId:n.agent_event_id,sourceType:n.source_type,sourceId:n.source_id,serverSessionId:n.server_session_id,jobType:n.job_type,status:n.status,idempotencyKey:n.idempotency_key,bullmqJobId:n.bullmq_job_id,attempts:n.attempts,maxAttempts:n.max_attempts,nextAttemptAtEpoch:n.next_attempt_at?.getTime()??null,lockedAtEpoch:n.locked_at?.getTime()??null,lockedBy:n.locked_by,completedAtEpoch:n.completed_at?.getTime()??null,failedAtEpoch:n.failed_at?.getTime()??null,cancelledAtEpoch:n.cancelled_at?.getTime()??null,lastError:n.last_error&&typeof n.last_error=="object"?n.last_error:null,payload:n.payload&&typeof n.payload=="object"&&!Array.isArray(n.payload)?n.payload:{},createdAtEpoch:n.created_at.getTime(),updatedAtEpoch:n.updated_at.getTime()}:null}async isApiKeyRevoked(e){let n=(await this.options.pool.query("SELECT revoked_at, expires_at FROM api_keys WHERE id = $1",[e])).rows[0];return!!(!n||n.revoked_at||n.expires_at&&n.expires_at.getTime()<=Date.now())}async auditScopeViolation(e,r,n,i){x.error("SYSTEM","BullMQ payload scope mismatch \u2014 refusing to generate",{correlationId:i,generationJobId:e.generation_job_id,payloadTeamId:e.team_id,payloadProjectId:e.project_id,canonicalTeamId:r.teamId,canonicalProjectId:r.projectId}),await this.auditEvent({teamId:r.teamId,projectId:r.projectId,apiKeyId:e.api_key_id,actorId:e.actor_id,action:"generation_job.scope_violation",resourceId:r.id,details:{reason:"scope_mismatch",message:n.message,payloadTeamId:e.team_id,payloadProjectId:e.project_id,canonicalTeamId:r.teamId,canonicalProjectId:r.projectId,sourceAdapter:e.source_adapter,correlationId:i}})}async auditRevokedKey(e,r,n,i){x.warn("SYSTEM","api key revoked between enqueue and execute \u2014 refusing to generate",{correlationId:i,generationJobId:e.generation_job_id,apiKeyId:e.api_key_id}),await this.auditEvent({teamId:r.teamId,projectId:r.projectId,apiKeyId:e.api_key_id,actorId:e.actor_id,action:"generation_job.revoked_key",resourceId:r.id,details:{reason:"revoked_key",message:n.message,sourceAdapter:e.source_adapter,correlationId:i}})}async auditEvent(e){try{await this.insertAuditLog(e)}catch(r){x.warn("SYSTEM","audit_log insert failed in ProviderObservationGenerator",{action:e.action,error:r instanceof Error?r.message:String(r)})}}async insertAuditLog(e){await new Nt(this.options.pool).createAuditLog({teamId:e.teamId,projectId:e.projectId,actorId:e.actorId,apiKeyId:e.apiKeyId,action:e.action,resourceType:"observation_generation_job",resourceId:e.resourceId,details:e.details??{}})}async lockOutbox(e,r,n){let i=new dt(this.options.pool),s=await i.getByIdForScope({id:e,projectId:n,teamId:r});return!s||s.status==="completed"||s.status==="cancelled"||s.status==="failed"?null:s.status==="processing"?(x.info("SYSTEM","generation job already in processing; skipping duplicate worker run",{jobId:s.id,lockedBy:s.lockedBy,lockedAtEpoch:s.lockedAtEpoch,attempts:s.attempts}),null):await i.transitionStatus({id:s.id,projectId:s.projectId,teamId:s.teamId,status:"processing",lockedBy:this.options.workerId??"server-beta-worker"})}async loadEvents(e,r){let n=new Xr(this.options.pool);if(e.sourceType==="session_summary"){if(!e.serverSessionId)return[];let s=await new zt(this.options.pool).listUnprocessedEvents({serverSessionId:e.serverSessionId,projectId:e.projectId,teamId:e.teamId});return dRe(s)}if(e.sourceType!=="agent_event")return[];if(r.kind==="event"){let i=await n.getByIdForScope({id:r.agent_event_id,projectId:e.projectId,teamId:e.teamId});return i?[i]:[]}return[]}async loadProject(e){return await new _n(this.options.pool).getByIdForTeam(e.projectId,e.teamId)}}});var sp,hV=R(()=>{"use strict";fe();Oi();mV();sp=class{constructor(e){this.options=e;this.workerId=e.workerId??`server-${process.pid}`,this.generator=e.generatorFactory?e.generatorFactory(e.pool,e.provider,this.workerId):new rv({pool:e.pool,provider:e.provider,workerId:this.workerId})}options;kind="generation-worker-manager";started=!1;closed=!1;generator;workerId;start(){if(this.started)return;let e=async r=>{try{return await this.generator.process(r)}catch(n){throw x.warn("SYSTEM","observation generator failed",{jobId:r.id,kind:r.data.kind,error:n instanceof Error?n.message:String(n)}),n}};this.options.queueManager.start("event",e),this.options.queueManager.start("summary",e);for(let r of["event","summary"])try{this.options.queueManager.getQueue(r).observe({onStalled:i=>{this.auditStalledJob(i,r)}})}catch(n){x.warn("SYSTEM",`failed to wire stalled observer for ${r} lane`,{error:n instanceof Error?n.message:String(n)})}this.started=!0}async auditStalledJob(e,r){try{await this.writeStalledJobAuditRow(e,r)}catch(n){x.warn("SYSTEM","failed to audit stalled generation_job",{bullmqJobId:e,error:n instanceof Error?n.message:String(n)})}}async writeStalledJobAuditRow(e,r){let i=(await this.options.pool.query("SELECT id, team_id, project_id FROM observation_generation_jobs WHERE bullmq_job_id = $1 LIMIT 1",[e])).rows[0];if(!i)return;await new Nt(this.options.pool).createAuditLog({teamId:i.team_id,projectId:i.project_id,actorId:null,apiKeyId:null,action:"generation_job.stalled",resourceType:"observation_generation_job",resourceId:i.id,details:{lane:r,bullmqJobId:e}})}getHealth(){return this.closed?{status:"errored",reason:"generation-worker-manager closed"}:{status:this.started?"active":"disabled",reason:this.started?"BullMQ Worker attached to event queue with ProviderObservationGenerator":"wired but not started",details:{provider:this.options.provider.providerLabel,workerId:this.workerId}}}async close(){this.closed||(this.closed=!0)}}});function NA(t){let e=t.status,r=t.bodyText??"",n=r.toLowerCase(),i=t.headers?Zb(t.headers.get("retry-after")):void 0;if(n.includes("overloaded"))return new Ce(`Anthropic overloaded${e!==void 0?` (status ${e})`:""}`,{kind:"transient",cause:t.cause});if(e===401||e===403||n.includes("invalid api key"))return new Ce(`Anthropic auth invalid${e!==void 0?` (status ${e})`:""}`,{kind:"auth_invalid",cause:t.cause});if(e===429)return new Ce("Anthropic rate limit (429)",{kind:"rate_limit",cause:t.cause,...i!==void 0?{retryAfterMs:i}:{}});if(n.includes("quota exceeded"))return new Ce("Anthropic quota exhausted",{kind:"quota_exhausted",cause:t.cause});if(n.includes("prompt is too long")||n.includes("context window")||n.includes("max_tokens"))return new Ce("Anthropic context overflow",{kind:"unrecoverable",cause:t.cause});if(e===529)return new Ce("Anthropic overloaded (529)",{kind:"transient",cause:t.cause});if(e!==void 0&&e>=500&&e<600)return new Ce(`Anthropic upstream error (status ${e})`,{kind:"transient",cause:t.cause});if(e===400)return new Ce("Anthropic bad request (400)",{kind:"unrecoverable",cause:t.cause});if(e===void 0){let s=t.cause instanceof Error?t.cause.message:String(t.cause);return new Ce(`Anthropic network error: ${s}`,{kind:"transient",cause:t.cause})}return new Ce(`Anthropic API error: ${e}${r?` - ${r.substring(0,200)}`:""}`,{kind:"unrecoverable",cause:t.cause})}async function yRe(t){try{return await t.text()}catch(e){let r=e instanceof Error?e:new Error(String(e));return x.warn("SDK","Failed to read Anthropic error response body",{provider:"claude",status:t.status},r),""}}var pRe,fRe,mRe,hRe,nv,yV=R(()=>{"use strict";fe();np();rp();pRe="https://api.anthropic.com/v1/messages",fRe="2023-06-01",mRe="claude-sonnet-5",hRe=mRe,nv=class{providerLabel="claude";apiKey;model;maxOutputTokens;fetchImpl;constructor(e){if(!e.apiKey)throw new Ce("Anthropic API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??hRe,this.maxOutputTokens=e.maxOutputTokens??4096,this.fetchImpl=e.fetchImpl??fetch}async generate(e,r){let{prompt:n,skippedAll:i}=wl(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s;try{s=await this.postMessages(n,r)}catch(d){let p=d instanceof Error?d:new Error(String(d));throw NA({cause:p})}if(!s.ok){let d=await yRe(s);throw NA({status:s.status,bodyText:d,headers:s.headers,cause:new Error(`Anthropic API error: ${s.status} - ${d}`)})}let o;try{o=await s.json()}catch(d){let p=d instanceof Error?d:new Error(String(d));throw new Ce("Anthropic returned invalid JSON",{kind:"parse_error",cause:p})}if(o.error)throw NA({status:s.status,bodyText:`${o.error.type??""} ${o.error.message??""}`,headers:s.headers,cause:new Error(`Anthropic API error: ${o.error.type} - ${o.error.message}`)});let c=(Array.isArray(o.content)?o.content:[]).filter(d=>d?.type==="text"&&typeof d.text=="string").map(d=>d.text).join(`
`).trim();c||x.warn("SDK","Anthropic returned empty content array",{provider:"claude",model:this.model});let l=o.usage??{},u=typeof l.input_tokens=="number"||typeof l.output_tokens=="number"?(l.input_tokens??0)+(l.output_tokens??0):void 0;return{rawText:c,...u!==void 0?{tokensUsed:u}:{},providerLabel:this.providerLabel,modelId:this.model}}postMessages(e,r){return this.fetchImpl(pRe,{method:"POST",headers:{"Content-Type":"application/json","x-api-key":this.apiKey,"anthropic-version":fRe},body:JSON.stringify({model:this.model,max_tokens:this.maxOutputTokens,temperature:.3,messages:[{role:"user",content:e}]}),signal:r})}}});function vRe(t){let e=t.toLowerCase();return e.includes("api key not valid")||e.includes("api_key_invalid")||e.includes("api key expired")||e.includes("invalid api key")?"api_key":e.includes("please ensure that multiturn requests alternate")||e.includes("alternate between user and model")||e.includes("first content should be with role")||e.includes("contents")&&e.includes("role")&&(e.includes("user")||e.includes("model"))?"role_sequence":e.includes("context limit")||e.includes("context length")||e.includes("too many tokens")||e.includes("input is too long")||e.includes("prompt is too long")||e.includes("request payload size exceeds")||e.includes("token")&&(e.includes("exceed")||e.includes("maximum")||e.includes("limit"))?"context_limit":e.includes("model not found")||e.includes("model_unsupported")||e.includes("unsupported model")||e.includes("not supported for generatecontent")||e.includes("not supported by this model")||e.includes("model")&&e.includes("not supported")||e.includes("models/")&&e.includes("not found")?"model_unsupported":"unknown_bad_request"}function ERe(t){let e=t.toLowerCase();return e.includes("quota exceeded")||e.includes("insufficient credits")||e.includes("insufficient_quota")||e.includes("resource_exhausted")}function LA(t){let e=t.status,r=t.bodyText??"";if(e===400&&!ERe(r)){let n=vRe(r);return new Ce(`Gemini bad request: ${n}`,{kind:"unrecoverable",cause:new Error("Gemini HTTP error (status 400)")})}return _l({...t,providerLabel:"Gemini"})}async function SRe(t){try{return await t.text()}catch(e){let r=e instanceof Error?e:new Error(String(e));return x.warn("SDK","Failed to read Gemini error response body",{provider:"gemini",status:t.status},r),""}}var gRe,bRe,iv,gV=R(()=>{"use strict";fe();np();rp();gRe="https://generativelanguage.googleapis.com/v1beta/models",bRe="gemini-flash-latest";iv=class{providerLabel="gemini";apiKey;model;maxOutputTokens;fetchImpl;constructor(e){if(!e.apiKey)throw new Ce("Gemini API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??bRe,this.maxOutputTokens=e.maxOutputTokens??4096,this.fetchImpl=e.fetchImpl??fetch}async generate(e,r){let{prompt:n,skippedAll:i}=wl(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s=`${gRe}/${encodeURIComponent(this.model)}:generateContent?key=${encodeURIComponent(this.apiKey)}`,o;try{o=await this.postGenerateContent(s,n,r)}catch(u){let d=u instanceof Error?u:new Error(String(u));throw LA({cause:d})}if(!o.ok){let u=await SRe(o);throw LA({status:o.status,bodyText:u,headers:o.headers,cause:new Error(`Gemini HTTP error (status ${o.status})`)})}let a;try{a=await o.json()}catch(u){let d=u instanceof Error?u:new Error(String(u));throw new Ce("Gemini returned invalid JSON",{kind:"parse_error",cause:d})}if(a.error)throw LA({status:o.status,bodyText:`${a.error.status??""} ${a.error.message??""}`,headers:o.headers,cause:new Error(`Gemini HTTP error (status ${o.status})`)});let c=a.candidates?.[0]?.content?.parts?.[0]?.text?.trim()??"";c||x.warn("SDK","Gemini returned empty content",{provider:"gemini",model:this.model});let l=typeof a.usageMetadata?.totalTokenCount=="number"?a.usageMetadata.totalTokenCount:void 0;return{rawText:c,...l!==void 0?{tokensUsed:l}:{},providerLabel:this.providerLabel,modelId:this.model}}postGenerateContent(e,r,n){return this.fetchImpl(e,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({contents:[{role:"user",parts:[{text:r}]}],generationConfig:{temperature:.3,maxOutputTokens:this.maxOutputTokens}}),signal:n})}}});function vV(t){let e=(t??"").trim();if(!e)return xRe;let r=e.replace(/\/+$/,"");return r.toLowerCase().endsWith(bV)?r:`${r}${bV}`}var xRe,bV,EV=R(()=>{"use strict";xRe="https://openrouter.ai/api/v1/chat/completions",bV="/chat/completions"});function SV(t,e){return{"HTTP-Referer":t||qA,"X-OpenRouter-Title":e||FA,"X-OpenRouter-Categories":wRe}}var qA,FA,wRe,xV=R(()=>{"use strict";qA="https://github.com/thedotmack/claude-mem",FA="Claude-Mem",wRe="cli-agent,creative-writing"});function _Re(t,e){let r;try{let o=JSON.parse(e);o.error&&typeof o.error=="object"&&!Array.isArray(o.error)&&(r=o.error)}catch{}let n=typeof r?.message=="string"?r.message:e,i=/unsupported\s+parameter[\s\S]*max_tokens[\s\S]*(?:use|replace)[\s\S]*max_completion_tokens/i.test(n),s=r?.param==="max_tokens"&&/max_completion_tokens/i.test(e)&&(r.code==="unsupported_parameter"||r.code===400||r.code==="400");return(t===400||t>=200&&t<300&&!!r)&&(i||s)}async function wV(t,e,r,n,i){let s={...n,max_tokens:i},o=await t(e,{...r,body:JSON.stringify(s)});if(o.status!==400&&(o.status<200||o.status>=300||o.status===204||o.status===205))return o;let a="",c=o;try{let d=new Uint8Array(await o.clone().arrayBuffer());a=new TextDecoder().decode(d),c=new Response(o.body===null?null:d,{status:o.status,statusText:o.statusText,headers:o.headers})}catch{return o}if(!_Re(o.status,a))return c;let{max_tokens:l,...u}=n;return t(e,{...r,body:JSON.stringify({...u,max_completion_tokens:i})})}var _V=R(()=>{"use strict"});async function TRe(t){try{return await t.text()}catch(e){let r=e instanceof Error?e:new Error(String(e));return x.warn("SDK","Failed to read OpenRouter error response body",{provider:"openrouter"},r),""}}var IRe,sv,IV=R(()=>{"use strict";EV();xV();_V();fe();np();rp();IRe="anthropic/claude-3.5-sonnet",sv=class{providerLabel="openrouter";apiKey;model;apiUrl;maxOutputTokens;siteUrl;appName;fetchImpl;constructor(e){if(!e.apiKey)throw new Ce("OpenRouter API key not configured",{kind:"auth_invalid",cause:new Error("apiKey is required")});this.apiKey=e.apiKey,this.model=e.model??IRe,this.apiUrl=vV(e.baseUrl),this.maxOutputTokens=e.maxOutputTokens??4096,this.siteUrl=e.siteUrl??qA,this.appName=e.appName??FA,this.fetchImpl=e.fetchImpl??fetch}async generate(e,r){let{prompt:n,skippedAll:i}=wl(e);if(i)return{rawText:'<skip_summary reason="all_events_private" />',providerLabel:this.providerLabel,modelId:this.model};let s;try{s=await this.postChatCompletion(n,r)}catch(l){let u=l instanceof Error?l:new Error(String(l));throw _l({cause:u,providerLabel:"OpenRouter"})}if(!s.ok){let l=await TRe(s);throw _l({status:s.status,bodyText:l,headers:s.headers,cause:new Error(`OpenRouter API error: ${s.status} - ${l}`),providerLabel:"OpenRouter"})}let o;try{o=await s.json()}catch(l){let u=l instanceof Error?l:new Error(String(l));throw new Ce("OpenRouter returned invalid JSON",{kind:"parse_error",cause:u})}if(o.error)throw _l({status:s.status,bodyText:`${o.error.code??""} ${o.error.message??""}`,headers:s.headers,cause:new Error(`OpenRouter API error: ${o.error.code} - ${o.error.message}`),providerLabel:"OpenRouter"});let a=o.choices?.[0]?.message?.content?.trim()??"";a||x.warn("SDK","OpenRouter returned empty content",{provider:"openrouter",model:this.model});let c=typeof o.usage?.total_tokens=="number"?o.usage.total_tokens:void 0;return{rawText:a,...c!==void 0?{tokensUsed:c}:{},providerLabel:this.providerLabel,modelId:this.model}}postChatCompletion(e,r){return wV(this.fetchImpl,this.apiUrl,{method:"POST",headers:{Authorization:`Bearer ${this.apiKey}`,...SV(this.siteUrl,this.appName),"Content-Type":"application/json"},signal:r},{model:this.model,messages:[{role:"user",content:e}],temperature:.3},this.maxOutputTokens)}}});var ov,av,Il,TV=R(()=>{"use strict";ov=class{constructor(e){this.reason=e}reason;getHealth(){return{status:"disabled",reason:this.reason}}async close(){}},av=class extends ov{kind="queue-manager"},Il=class extends ov{kind="generation-worker-manager"}});var $A={};io($A,{createServerService:()=>kRe,detectDockerEnvironment:()=>AV,loadServerMode:()=>OV,resolveServerMaxOutputTokens:()=>cv,validateServerEnv:()=>RV});function AV(t=process.env){if(t.CLAUDE_MEM_DOCKER==="1"||t.CLAUDE_MEM_DOCKER==="true")return!0;try{if((0,kV.existsSync)("/.dockerenv"))return!0}catch{}return!1}function RV(t={}){let e=t.env??process.env,r=t.isDocker??AV(e),n=[],i=(e.CLAUDE_MEM_RUNTIME??"").trim();i?i!=="server"&&i!=="server-beta"&&r&&n.push(`CLAUDE_MEM_RUNTIME=${i} is invalid in Docker; the server image only runs CLAUDE_MEM_RUNTIME=server (or legacy CLAUDE_MEM_RUNTIME=server-beta).`):r&&x.warn("SYSTEM","CLAUDE_MEM_RUNTIME unset; server container assumes runtime=server");let s=(e.CLAUDE_MEM_AUTH_MODE??"api-key").trim();r&&(s==="local-dev"&&n.push("CLAUDE_MEM_AUTH_MODE=local-dev is not allowed in Docker. Set CLAUDE_MEM_AUTH_MODE=api-key and create a key with `claude-mem server api-key create`."),(e.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="1"||e.CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS==="true")&&n.push("CLAUDE_MEM_ALLOW_LOCAL_DEV_BYPASS is not allowed in Docker. Loopback bypass cannot be enforced inside a container; remove the variable."));let o=(e.CLAUDE_MEM_QUEUE_ENGINE??"").trim().toLowerCase();r&&(o?o!=="bullmq"&&n.push(`CLAUDE_MEM_QUEUE_ENGINE=${o} is not allowed in Docker. Only "bullmq" is supported (no in-process queues across container boundaries).`):n.push('CLAUDE_MEM_QUEUE_ENGINE is required in Docker; set it to "bullmq".'));let a=!!(e.CLAUDE_MEM_SERVER_DATABASE_URL??"").trim();a||n.push("CLAUDE_MEM_SERVER_DATABASE_URL is required to start the server (Postgres connection string).");let c=!!(e.CLAUDE_MEM_REDIS_URL??"").trim();if(o==="bullmq"&&!c&&n.push("CLAUDE_MEM_REDIS_URL is required when CLAUDE_MEM_QUEUE_ENGINE=bullmq."),n.length>0){let l=["server startup configuration is invalid:",...n.map(u=>` - ${u}`)].join(`
`);throw new Error(l)}return{isDocker:r,runtime:i||"server",authMode:s,queueEngine:o||"disabled",hasDatabaseUrl:a,hasRedisUrl:c}}function OV(){let t=no.getInstance();t.loadMode("code"),t.getActiveMode(),x.info("SYSTEM","Server mode loaded",{mode:"code"})}async function kRe(t={}){t.skipEnvValidation||RV(),OV();let e=t.pool??gx({requireDatabaseUrl:!0}),r=await jRe(e,t.bootstrapSchema??!0),n=t.queueManager??CRe(),i=t.generationDisabled??(process.env.CLAUDE_MEM_GENERATION_DISABLED==="1"||process.env.CLAUDE_MEM_GENERATION_DISABLED==="true"),s=t.generationWorkerManager??(i?new Il("CLAUDE_MEM_GENERATION_DISABLED is set; this server runs HTTP only. A separate `claude-mem server worker start` process consumes the BullMQ queues."):ARe(e,n,t.generationProvider)),o={runtime:"server-beta",postgres:{pool:e,bootstrap:r},authMode:t.authMode??PRe(process.env.CLAUDE_MEM_AUTH_MODE),queueManager:n,generationWorkerManager:s};return s instanceof sp&&s.start(),new op({graph:o})}function ARe(t,e,r){if(!(e instanceof ga))return new Il("queue manager is disabled; set CLAUDE_MEM_QUEUE_ENGINE=bullmq to enable provider generation.");let n=r??RRe();return n?new sp({pool:t,queueManager:e,provider:n}):new Il("no server generation provider configured; set CLAUDE_MEM_SERVER_PROVIDER and the matching API key to enable.")}function RRe(){let t=(process.env.CLAUDE_MEM_SERVER_PROVIDER??"").trim().toLowerCase();if(!t)return null;try{return ORe(t)}catch(e){let r=e instanceof Error?e:new Error(String(e));return x.warn("SYSTEM","server: failed to construct generation provider from env; generation disabled",{provider:t},r),null}}function cv(){let t=process.env.CLAUDE_MEM_SERVER_MAX_OUTPUT_TOKENS;if(!t)return;let e=Number(t);if(!Number.isInteger(e)||e<=0){x.warn("SYSTEM","server: ignoring invalid CLAUDE_MEM_SERVER_MAX_OUTPUT_TOKENS",{value:t});return}return e}function ORe(t){if(t==="claude"||t==="anthropic"){let e=process.env.ANTHROPIC_API_KEY??process.env.CLAUDE_MEM_ANTHROPIC_API_KEY??"";if(!e)return null;let r={apiKey:e};process.env.CLAUDE_MEM_SERVER_MODEL&&(r.model=process.env.CLAUDE_MEM_SERVER_MODEL);let n=cv();return n!==void 0&&(r.maxOutputTokens=n),new nv(r)}if(t==="gemini"){let e=process.env.GEMINI_API_KEY??process.env.CLAUDE_MEM_GEMINI_API_KEY??"";if(!e)return null;let r={apiKey:e};process.env.CLAUDE_MEM_SERVER_MODEL&&(r.model=process.env.CLAUDE_MEM_SERVER_MODEL);let n=cv();return n!==void 0&&(r.maxOutputTokens=n),new iv(r)}if(t==="openrouter"){let e=process.env.OPENROUTER_API_KEY??process.env.CLAUDE_MEM_OPENROUTER_API_KEY??"";if(!e)return null;let r={apiKey:e};process.env.CLAUDE_MEM_SERVER_MODEL&&(r.model=process.env.CLAUDE_MEM_SERVER_MODEL);let n=process.env.CLAUDE_MEM_OPENROUTER_BASE_URL??process.env.OPENROUTER_BASE_URL;n&&(r.baseUrl=n);let i=cv();return i!==void 0&&(r.maxOutputTokens=i),new sv(r)}return null}function CRe(){let t=XH();return t.engine!=="bullmq"?new av(`Queue engine is "${t.engine}"; set CLAUDE_MEM_QUEUE_ENGINE=bullmq to activate the server queue manager.`):new ga(t)}async function jRe(t,e){if(!e)return{initialized:!1,schemaVersion:null,appliedAt:null};await Wb(t);let n=(await t.query(`
SELECT version, applied_at
FROM server_beta_schema_migrations
WHERE version = $1
`,[Xd])).rows[0];return{initialized:n?.version===Xd,schemaVersion:typeof n?.version=="number"?n.version:null,appliedAt:n?.applied_at?new Date(n.applied_at).toISOString():null}}function PRe(t){return t==="local-dev"||t==="disabled"?t:"api-key"}var kV,UA=R(()=>{"use strict";kV=require("fs");fe();Hb();Zd();CA();ZH();RA();hV();yV();gV();IV();CV();TV()});var $V={};io($V,{HOOK_API_KEY_SCOPES:()=>MV,bootstrapServerApiKey:()=>NV,createRawApiKey:()=>LV,hashApiKey:()=>qV,persistServerSettings:()=>DRe,rotateServerApiKey:()=>KRe});async function NV(t={}){let e=t.closePool??t.pool===void 0,r=t.pool??FV();try{let n=await MRe(r),i=await NRe(r,n),s=LV(),o=qV(s),a=new Nt(r),c=await a.createApiKey({keyHash:o,teamId:n,projectId:i,actorId:KV,scopes:[...MV]});return await a.createAuditLog({teamId:n,projectId:i,actorId:KV,apiKeyId:c.id,action:"api_key.create",resourceType:"api_key",resourceId:c.id,details:{source:"server-bootstrap"}}),{rawKey:s,apiKeyId:c.id,teamId:n,projectId:i}}finally{e&&await r.end().catch(()=>{})}}async function KRe(t={}){let e=t.pool===void 0,r=t.pool??FV();try{return t.previousApiKeyId&&await r.query("UPDATE api_keys SET revoked_at = now() WHERE id = $1 AND revoked_at IS NULL",[t.previousApiKeyId]),await NV({pool:r,closePool:!1})}finally{e&&await r.end().catch(()=>{})}}function DRe(t,e){let r=(0,DV.dirname)(t);(0,va.existsSync)(r)||(0,va.mkdirSync)(r,{recursive:!0});let n={};if((0,va.existsSync)(t))try{n=rM(t)}catch(s){let o=s instanceof Error?s:new Error(String(s));x.warn("HOOK","Failed to read existing settings file; starting fresh",{settingsPath:t},o),n={}}let i=n.env&&typeof n.env=="object"?n.env:n;i.CLAUDE_MEM_SERVER_API_KEY=e.apiKey,i.CLAUDE_MEM_SERVER_PROJECT_ID=e.projectId,e.serverBaseUrl&&(i.CLAUDE_MEM_SERVER_URL=e.serverBaseUrl),za(t,n);try{(0,va.chmodSync)(t,384)}catch{}}function LV(){return`cmem_${(0,lv.randomBytes)(32).toString("base64url")}`}function qV(t){return(0,lv.createHash)("sha256").update(t).digest("hex")}async function MRe(t){let e=await t.query("SELECT id FROM teams WHERE name = $1 LIMIT 1",[jV]);return e.rows[0]?e.rows[0].id:(await new ba(t).create({name:jV,metadata:{source:"local-hook-bootstrap"}})).id}async function NRe(t,e){let r=await t.query("SELECT id FROM projects WHERE team_id = $1 AND name = $2 LIMIT 1",[e,PV]);return r.rows[0]?r.rows[0].id:(await new _n(t).create({teamId:e,name:PV,metadata:{source:"local-hook-bootstrap"}})).id}function FV(){let t=yu({requireDatabaseUrl:!0});if(!t)throw new Error("Cannot bootstrap server API key: CLAUDE_MEM_SERVER_DATABASE_URL is not set.");return em(t)}var lv,va,DV,jV,PV,KV,MV,UV=R(()=>{"use strict";lv=require("crypto"),va=require("fs"),DV=require("path");fe();Xl();Ao();Zf();Oi();Xa();Vb();jV="local-hook-team",PV="local-hook-project",KV="system:local-hook-bootstrap",MV=Object.freeze(["events:write","sessions:write","observations:read","jobs:read"])});var HRe={};io(HRe,{ServerService:()=>op,assertServerRuntimeForCli:()=>BA,migrateServerPostgresApiKeyScopes:()=>XV,runServerApiKeyCli:()=>zA,runServerGenerationWorker:()=>eW,runServerJobsCli:()=>ZV,runServerServiceCli:()=>dv,startCommandWantsDaemon:()=>QV});module.exports=Pt(HRe);async function YV(t){let e=t.queueManager;if(!(e instanceof ga))return[];try{return await e.getLaneMetrics()}catch{return[]}}function FRe(t){let e=t.getHttpServer()?.address();return e&&typeof e!="string"?e.port:null}function QV(t){return t.some(e=>e==="--daemon"||e==="-d")}async function dv(t=process.argv.slice(2)){let e=t[0]??"--daemon",r=tW(),n=process.env.CLAUDE_MEM_SERVER_HOST??WV;if(e==="worker"){let i=(t[1]??"--daemon").toLowerCase();if(i==="start"||i==="--daemon"||i==="run"){await eW();return}console.error("Usage: server-service worker start"),process.exit(1)}if(e==="server"&&t[1]?.toLowerCase()==="api-key"){await zA(t.slice(2));return}if(e==="server"&&t[1]?.toLowerCase()==="keys"){await zA(["list","--active",...t.slice(2)]);return}if(e==="server"&&t[1]?.toLowerCase()==="jobs"){await ZV(t.slice(2));return}switch(e){case"start":{let i=uv();if(ds(i)){console.log(JSON.stringify({status:"ready",runtime:Ea,pid:i.pid,port:i.port}));return}if(QV(t.slice(1))){let o=URe(r);o===void 0&&(console.error("Failed to spawn server daemon."),process.exit(1)),console.log(JSON.stringify({status:"starting",runtime:Ea,pid:o,port:r}));return}await JV(r,n);return}case"stop":{let i=uv();if(!ds(i)){GA(),console.log("Server is not running");return}if(process.platform==="win32")try{await Vn(i.pid)}catch(s){console.error(`Failed to stop server (PID ${i.pid}): ${s instanceof Error?s.message:String(s)}`),console.error("The server may still be running \u2014 leaving its PID file in place."),process.exit(1)}else process.kill(i.pid,"SIGTERM");await BRe(i.pid,qRe),Rt(i.pid)&&(console.error(`Server PID ${i.pid} did not exit; leaving its PID file in place.`),process.exit(1)),GA(),console.log("Server stopped");return}case"restart":{await dv(["stop"]),await dv(["start","--daemon"]);return}case"status":{let i=zRe(),s=uv();i&&ds(s)?(console.log("Server is running"),console.log(` PID: ${i.pid}`),console.log(` Port: ${i.port}`),console.log(` Runtime: ${i.runtime}`),console.log(` Started: ${i.startedAt}`)):console.log("Server is not running");return}case"--daemon":{await JV(r,n);return}default:console.error("Usage: server-service start [--daemon] | stop | restart | status"),console.error(" start run the server in the foreground (default; systemd Type=simple)"),console.error(" start --daemon detach and run as a background daemon"),console.error(" stop stop a running daemon"),console.error(" restart stop then start (daemon)"),console.error(" status print runtime status"),console.error(" server api-key create|list|revoke|migrate-scopes manage Postgres API keys"),console.error(" server keys alias for api-key list --active (no secrets)"),console.error(" server jobs [list|inspect <id>] list/inspect generation jobs"),process.exit(1)}}async function JV(t,e){let r=uv();(ds(r)||await GRe(t,e))&&process.exit(0);let{createServerService:n}=await Promise.resolve().then(()=>(UA(),$A)),i=await n(),s=async()=>{await i.stop(),process.exit(0)};process.once("SIGTERM",s),process.once("SIGINT",s),await i.start()}function BA(t,e=process.env){let r=(e.CLAUDE_MEM_RUNTIME??"").trim().toLowerCase();if(r&&r!=="server"&&r!=="server-beta")throw new Error(`\`server ${t}\` is a server runtime command, but CLAUDE_MEM_RUNTIME=${r}. Set CLAUDE_MEM_RUNTIME=server (and CLAUDE_MEM_SERVER_DATABASE_URL) to run server operations, or use the worker CLI (\`worker-service ...\`) for the worker runtime.`);if(!(e.CLAUDE_MEM_SERVER_DATABASE_URL??"").trim())throw new Error(`CLAUDE_MEM_SERVER_DATABASE_URL is required for \`server ${t}\`. This command talks to the server Postgres backend; export the connection string before running it.`)}async function zA(t){let e=t[0]?.toLowerCase(),r=HA(t.slice(1));try{BA("api-key")}catch(l){console.error(l instanceof Error?l.message:String(l)),process.exit(1)}if(e==="migrate-scopes"){await XV(t.slice(1));return}let{getSharedPostgresPool:n}=await Promise.resolve().then(()=>(Zd(),Yb)),{PostgresAuthRepository:i}=await Promise.resolve().then(()=>(Oi(),rN)),{createHash:s,randomBytes:o}=await import("crypto"),a=n({requireDatabaseUrl:!0}),c=new i(a);if(e==="create"){let l=(r.scope??r.scopes??"memories:read").split(",").map(y=>y.trim()).filter(Boolean),u=r.team??null,d=r.project??null;if(!u||!d){let{bootstrapServerApiKey:y}=await Promise.resolve().then(()=>(UV(),$V)),b=await y({pool:a,closePool:!1});u=b.teamId,d=b.projectId}let p=`cmem_${o(24).toString("hex")}`,f=s("sha256").update(p).digest("hex"),m=await c.createApiKey({keyHash:f,teamId:u,projectId:d,scopes:l,actorId:"system:server-cli"});console.log(JSON.stringify({id:m.id,key:p,name:r.name??"server-api-key",teamId:u,projectId:d,scopes:l},null,2));return}if(e==="list"){let l=r.team??null,u=Number.parseInt(r.limit??"100",10),d=Number.parseInt(r.offset??"0",10),p=Number.isFinite(u)&&u>0&&u<=500?u:100,f=Number.isFinite(d)&&d>=0?d:0,m=[],y=[];r.active&&m.push("revoked_at IS NULL AND (expires_at IS NULL OR expires_at > now())"),l&&(y.push(l),m.push(`team_id = $${y.length}`));let b=m.length>0?`WHERE ${m.join(" AND ")}`:"";y.push(p,f);let v=await a.query(`SELECT id, team_id, project_id, scopes, revoked_at, expires_at, last_used_at, created_at
FROM api_keys
${b}
ORDER BY created_at DESC
LIMIT $${y.length-1} OFFSET $${y.length}`,y);console.log(JSON.stringify({teamId:l,limit:p,offset:f,count:v.rows.length,keys:v.rows.map(E=>({id:E.id,teamId:E.team_id,projectId:E.project_id,scopes:E.scopes,status:E.revoked_at?"revoked":"active",lastUsedAt:E.last_used_at?.toISOString()??null,expiresAt:E.expires_at?.toISOString()??null,createdAt:E.created_at.toISOString()}))},null,2));return}if(e==="revoke"){let l=t[1];l||(console.error("Usage: server-service server api-key revoke <id>"),process.exit(1)),(await a.query(`UPDATE api_keys SET revoked_at = now()
WHERE id = $1 AND revoked_at IS NULL
RETURNING id`,[l])).rowCount===0&&(console.error(`API key not found or already revoked: ${l}`),process.exit(1)),console.log(JSON.stringify({id:l,status:"revoked"},null,2));return}console.error(`Unknown server api-key subcommand: ${e??"(none)"}`),console.error("Usage: server-service server api-key create|list|revoke|migrate-scopes"),process.exit(1)}async function XV(t){let e=t[0]&&!t[0].startsWith("--")?t[0]:void 0,r=HA(t);e||(console.error("Usage: server-service server api-key migrate-scopes <id> [--scope a,b]"),process.exit(1));let n=(r.scope??r.scopes??$Re.join(",")).split(",").map(a=>a.trim()).filter(Boolean),{getSharedPostgresPool:i}=await Promise.resolve().then(()=>(Zd(),Yb));(await i({requireDatabaseUrl:!0}).query(`UPDATE api_keys
SET scopes = $2::jsonb, updated_at = now()
WHERE id = $1 AND revoked_at IS NULL
RETURNING id, scopes`,[e,JSON.stringify(n)])).rowCount===0&&(console.error(`API key not found or revoked: ${e}`),process.exit(1)),console.log(JSON.stringify({id:e,scopes:n,status:"scopes-migrated"},null,2))}async function ZV(t){try{BA("jobs")}catch(p){console.error(p instanceof Error?p.message:String(p)),process.exit(1)}let e=(t[0]&&!t[0].startsWith("--")?t[0]:"list").toLowerCase(),{getSharedPostgresPool:r}=await Promise.resolve().then(()=>(Zd(),Yb)),n=r({requireDatabaseUrl:!0});if(e==="inspect"){let p=t[1];p||(console.error("Usage: server-service server jobs inspect <id>"),process.exit(1));let f=await n.query(`SELECT id, project_id, team_id, source_type, source_id, status, attempts,
max_attempts, created_at, completed_at, failed_at, last_error, payload
FROM observation_generation_jobs WHERE id = $1`,[p]);f.rowCount===0&&(console.error(`Generation job not found: ${p}`),process.exit(1)),console.log(JSON.stringify(f.rows[0],null,2));return}let i=HA(e==="list"?t.slice(1):t),s=i.status??null,o=Number.parseInt(i.limit??"50",10),c=[Number.isFinite(o)&&o>0&&o<=500?o:50],l="";s&&(c.unshift(s),l="WHERE status = $1");let u=c.length,d=await n.query(`SELECT id, project_id, team_id, source_type, status, attempts, created_at
FROM observation_generation_jobs
${l}
ORDER BY created_at DESC
LIMIT $${u}`,c);console.log(JSON.stringify({status:s??"any",count:d.rows.length,jobs:d.rows.map(p=>({id:p.id,projectId:p.project_id,teamId:p.team_id,sourceType:p.source_type,status:p.status,attempts:p.attempts,createdAt:p.created_at.toISOString()}))},null,2))}function HA(t){return(0,VV.parseArgs)({args:t,options:{scope:{type:"string"},scopes:{type:"string"},team:{type:"string"},project:{type:"string"},name:{type:"string"},limit:{type:"string"},offset:{type:"string"},status:{type:"string"},active:{type:"boolean"}},strict:!1,allowPositionals:!0}).values}async function eW(){let{validateServerEnv:t,createServerService:e}=await Promise.resolve().then(()=>(UA(),$A));t(),delete process.env.CLAUDE_MEM_GENERATION_DISABLED;let r=await e(),n=r.getRuntimeState();x.info("SYSTEM","Server generation worker started (no HTTP)",{pid:process.pid,queue:n.boundaries.queueManager,generation:n.boundaries.generationWorkerManager}),console.log(JSON.stringify({status:"worker-running",runtime:Ea,pid:process.pid}));let i=!1,s=async()=>{if(!i){i=!0;try{await r.stop()}finally{process.exit(0)}}};process.once("SIGTERM",s),process.once("SIGINT",s),await new Promise(()=>{})}function tW(){let t=Number.parseInt(process.env.CLAUDE_MEM_SERVER_PORT??"",10);return Number.isInteger(t)&&t>0?t:LRe+(process.getuid?.()??77)%100}function URe(t){let e=typeof __CM_FILENAME__<"u"?__CM_FILENAME__:(0,HV.fileURLToPath)(VRe.url);(0,Vt.mkdirSync)(Le.dataDir(),{recursive:!0});let r=(0,zV.spawn)(process.execPath,[e,"--daemon"],{detached:!0,stdio:"ignore",windowsHide:!0,cwd:Le.dataDir(),env:{...Ha(process.env),CLAUDE_MEM_SERVER_PORT:String(t)}});return r.unref(),r.pid}function JRe(t){(0,Vt.mkdirSync)((0,BV.dirname)(Le.serverRuntime()),{recursive:!0});let e={pid:t.pid,port:t.port,startedAt:t.startedAt,startToken:Ti(t.pid)??void 0};(0,Vt.writeFileSync)(Le.serverPid(),JSON.stringify(e,null,2)),(0,Vt.writeFileSync)(Le.serverPort(),`${t.port}
`),(0,Vt.writeFileSync)(Le.serverRuntime(),JSON.stringify(t,null,2))}function uv(){if(!(0,Vt.existsSync)(Le.serverPid()))return null;try{return JSON.parse((0,Vt.readFileSync)(Le.serverPid(),"utf-8"))}catch(t){let e=t instanceof Error?t:new Error(String(t));return x.warn("SYSTEM","Failed to read server PID file",{path:Le.serverPid()},e),null}}function zRe(){if(!(0,Vt.existsSync)(Le.serverRuntime()))return null;try{return JSON.parse((0,Vt.readFileSync)(Le.serverRuntime(),"utf-8"))}catch(t){let e=t instanceof Error?t:new Error(String(t));return x.warn("SYSTEM","Failed to read server runtime state file",{path:Le.serverRuntime()},e),null}}function GA(){(0,Vt.rmSync)(Le.serverPid(),{force:!0}),(0,Vt.rmSync)(Le.serverPort(),{force:!0}),(0,Vt.rmSync)(Le.serverRuntime(),{force:!0})}async function GRe(t,e){return new Promise(r=>{let n=GV.default.connect({port:t,host:e});n.once("connect",()=>{n.destroy(),r(!0)}),n.once("error",()=>r(!1))})}async function BRe(t,e){let r=Date.now()+e;for(;Date.now()<r;){if(!ds({pid:t,port:0,startedAt:""}))return;await new Promise(n=>setTimeout(n,100))}}var zV,Vt,GV,BV,HV,VV,VRe,Ea,WV,LRe,qRe,JA,op,$Re,CV=R(()=>{zV=require("child_process"),Vt=require("fs"),GV=tt(require("net"),1),BV=require("path"),HV=require("url"),VV=require("util");WM();Hn();fe();vo();eu();tu();q$();KI();$$();RA();GH();VRe={},Ea="server-beta",WV="127.0.0.1",LRe=37877,qRe=15e3,JA=class{constructor(e){this.graph=e}graph;setupRoutes(e){e.get("/healthz",(r,n)=>{n.json({status:"ok",runtime:Ea})}),e.get("/v1/info",async(r,n)=>{let i=await YV(this.graph);n.json({name:"claude-mem-server",runtime:Ea,authMode:this.graph.authMode,postgres:{initialized:this.graph.postgres.bootstrap.initialized,schemaVersion:this.graph.postgres.bootstrap.schemaVersion},boundaries:{queueManager:this.graph.queueManager.getHealth(),generationWorkerManager:this.graph.generationWorkerManager.getHealth()},queueLanes:i})})}};op=class{graph;host;requestedPort;boundPort=null;persistRuntimeState;server=null;stopping=!1;constructor(e){this.graph=e.graph,this.host=e.host??process.env.CLAUDE_MEM_SERVER_HOST??WV,this.requestedPort=e.port??tW(),this.persistRuntimeState=e.persistRuntimeState??!0}async start(){if(this.server)return;let e=new Cf({securityHeaders:!0,getInitializationComplete:()=>this.graph.postgres.bootstrap.initialized,getMcpReady:()=>!0,onShutdown:()=>this.stop(),onRestart:async()=>{await this.stop(),await this.start()},workerPath:"",runtime:Ea,getAiStatus:()=>({provider:"disabled",authMethod:this.graph.authMode,lastInteraction:null}),getQueueHealth:async()=>{let i=this.graph.queueManager.getHealth(),s=i.details??{};if(i.status!=="active"||s.engine!=="bullmq")return null;let o=await YV(this.graph);return{engine:"bullmq",redis:{status:"ok",mode:String(s.mode??"unknown"),host:String(s.host??"127.0.0.1"),port:typeof s.port=="number"?s.port:6379,prefix:String(s.prefix??"claude_mem")},lanes:o.map(a=>({kind:a.kind,name:a.name,waiting:a.waiting,active:a.active,completed:a.completed,failed:a.failed,delayed:a.delayed,stalled:a.stalled,unavailable:a.unavailable,...a.unavailableReason?{unavailableReason:a.unavailableReason}:{}}))}}});e.registerRoutes(new JA(this.graph));let r=new Th({pool:this.graph.postgres.pool,queueManager:this.graph.queueManager,authMode:this.graph.authMode==="disabled"?"api-key":this.graph.authMode});e.registerRoutes(r);let n=this.graph.authMode==="disabled"?"api-key":this.graph.authMode;e.registerRoutes(new Rh({pool:this.graph.postgres.pool,ingestEvents:r.getIngestEventsService(),authMode:n})),e.registerRoutes(new Oh({pool:this.graph.postgres.pool,endSession:r.getEndSessionService(),authMode:n})),e.registerRoutes(new zb),e.finalizeRoutes(),await e.listen(this.requestedPort,this.host),this.server=e,this.boundPort=FRe(e)??this.requestedPort,this.persistRuntimeState&&JRe(this.runtimeState()),x.info("SYSTEM","Server started",{host:this.host,port:this.boundPort,pid:process.pid})}async stop(){if(!this.stopping){this.stopping=!0;try{if(this.server){try{await this.server.close()}catch(e){let r=e instanceof Error?e:new Error(String(e));if(r.code!=="ERR_SERVER_NOT_RUNNING")throw e;x.warn("SYSTEM","Server was already stopped when close was requested",{},r)}this.server=null}await Promise.all([this.graph.queueManager.close(),this.graph.generationWorkerManager.close()]),await this.graph.postgres.pool.end()}finally{this.persistRuntimeState&&GA(),this.boundPort=null,this.stopping=!1,x.info("SYSTEM","Server stopped")}}}getRuntimeState(){return this.runtimeState()}runtimeState(){return{runtime:Ea,pid:process.pid,port:this.boundPort??this.requestedPort,host:this.host,startedAt:new Date().toISOString(),bootstrap:this.graph.postgres.bootstrap,boundaries:{queueManager:this.graph.queueManager.getHealth(),generationWorkerManager:this.graph.generationWorkerManager.getHealth()}}}};$Re=["memories:read","memories:write"];(process.argv[1]?.endsWith("ServerService.ts")||process.argv[1]?.endsWith("server-service.cjs")||process.argv[1]?.endsWith("ServerBetaService.ts")||process.argv[1]?.endsWith("server-beta-service.cjs"))&&dv().catch(t=>{console.error(t instanceof Error?t.message:String(t)),process.exit(1)})});CV();0&&(module.exports={ServerService,assertServerRuntimeForCli,migrateServerPostgresApiKeyScopes,runServerApiKeyCli,runServerGenerationWorker,runServerJobsCli,runServerServiceCli,startCommandWantsDaemon});
/*! Bundled license information:
depd/index.js:
(*!
* depd
* Copyright(c) 2014-2018 Douglas Christopher Wilson
* MIT Licensed
*)
statuses/index.js:
(*!
* statuses
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
toidentifier/index.js:
(*!
* toidentifier
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
http-errors/index.js:
(*!
* http-errors
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
bytes/index.js:
(*!
* bytes
* Copyright(c) 2012-2014 TJ Holowaychuk
* Copyright(c) 2015 Jed Watson
* MIT Licensed
*)
unpipe/index.js:
(*!
* unpipe
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
raw-body/index.js:
(*!
* raw-body
* Copyright(c) 2013-2014 Jonathan Ong
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
ee-first/index.js:
(*!
* ee-first
* Copyright(c) 2014 Jonathan Ong
* MIT Licensed
*)
on-finished/index.js:
(*!
* on-finished
* Copyright(c) 2013 Jonathan Ong
* Copyright(c) 2014 Douglas Christopher Wilson
* MIT Licensed
*)
content-type/dist/index.js:
content-type/dist/index.js:
content-type/index.js:
content-type/dist/index.js:
(*!
* content-type
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
mime-db/index.js:
(*!
* mime-db
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015-2022 Douglas Christopher Wilson
* MIT Licensed
*)
mime-types/index.js:
(*!
* mime-types
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
media-typer/index.js:
(*!
* media-typer
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
type-is/index.js:
(*!
* type-is
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
body-parser/lib/read.js:
body-parser/lib/types/raw.js:
body-parser/lib/types/text.js:
body-parser/index.js:
(*!
* body-parser
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
body-parser/lib/types/json.js:
body-parser/lib/types/urlencoded.js:
(*!
* body-parser
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
encodeurl/index.js:
(*!
* encodeurl
* Copyright(c) 2016 Douglas Christopher Wilson
* MIT Licensed
*)
escape-html/index.js:
(*!
* escape-html
* Copyright(c) 2012-2013 TJ Holowaychuk
* Copyright(c) 2015 Andreas Lubbe
* Copyright(c) 2015 Tiancheng "Timothy" Gu
* MIT Licensed
*)
parseurl/index.js:
(*!
* parseurl
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
finalhandler/index.js:
(*!
* finalhandler
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
express/lib/view.js:
express/lib/application.js:
express/lib/request.js:
express/lib/express.js:
express/index.js:
(*!
* express
* Copyright(c) 2009-2013 TJ Holowaychuk
* Copyright(c) 2013 Roman Shtylman
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
etag/index.js:
(*!
* etag
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
forwarded/index.js:
(*!
* forwarded
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
proxy-addr/index.js:
(*!
* proxy-addr
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
express/lib/utils.js:
express/lib/response.js:
(*!
* express
* Copyright(c) 2009-2013 TJ Holowaychuk
* Copyright(c) 2014-2015 Douglas Christopher Wilson
* MIT Licensed
*)
router/lib/layer.js:
router/lib/route.js:
router/index.js:
(*!
* router
* Copyright(c) 2013 Roman Shtylman
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
negotiator/lib/accept.js:
(*!
* negotiator
* Copyright(c) 2026 Blake Embrey
* MIT Licensed
*)
negotiator/index.js:
(*!
* negotiator
* Copyright(c) 2012 Federico Romero
* Copyright(c) 2012-2014 Isaac Z. Schlueter
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
accepts/index.js:
(*!
* accepts
* Copyright(c) 2014 Jonathan Ong
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
fresh/index.js:
(*!
* fresh
* Copyright(c) 2012 TJ Holowaychuk
* Copyright(c) 2016-2017 Douglas Christopher Wilson
* MIT Licensed
*)
range-parser/index.js:
(*!
* range-parser
* Copyright(c) 2012-2014 TJ Holowaychuk
* Copyright(c) 2015-2016 Douglas Christopher Wilson
* MIT Licensed
*)
content-disposition/index.js:
(*!
* content-disposition
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
cookie/index.js:
(*!
* cookie
* Copyright(c) 2012-2014 Roman Shtylman
* Copyright(c) 2015 Douglas Christopher Wilson
* MIT Licensed
*)
send/index.js:
(*!
* send
* Copyright(c) 2012 TJ Holowaychuk
* Copyright(c) 2014-2022 Douglas Christopher Wilson
* MIT Licensed
*)
vary/index.js:
(*!
* vary
* Copyright(c) 2014-2017 Douglas Christopher Wilson
* MIT Licensed
*)
serve-static/index.js:
(*!
* serve-static
* Copyright(c) 2010 Sencha Inc.
* Copyright(c) 2011 TJ Holowaychuk
* Copyright(c) 2014-2016 Douglas Christopher Wilson
* MIT Licensed
*)
*/
//# sourceMappingURL=server-service.cjs.map